版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《微机原理与接口技术》课程设计报告题 目学 院专 业2015 年12 月22 日电子学院通信工程目 录1. 311.1 31.2 31.3 `` 342.18255A42.2LED72.382.4ADC080992.510123.1 123.2 143.3 15284.1 284.2 284.3 284.4 2829291.设计一个简易的光照强度测量仪, 由光照强度产生的模拟电压信号转换为数字信号, 然后转换为照度(单位是勒克斯)显示在 LED上;校准照度测量器:在一定的光强度下,产生 200数字量的电压,以此对应关系(照度—电压)将其它光强度转换为勒克斯值,显示在 LED上。21.1题义需求分析光照强度测量仪主要根据光敏电阻的特性制作的。 光敏电阻值随受到的光照强度的变化而变化(光照强度越大,电阻值越小) 。将光敏电阻接入电路中,不同光照强度导致光敏电阻值变化,于是光敏电阻上的电压发生变化,导致电路的输出电压也相应变化。根据电压 -光照度函数关系,由电压计算得到光照强度值,然后以可视化界面形式输出(即PC机和LED数码管显示),以供用户查看结果。其中光敏电阻的特性是光敏电阻随受到的光照强度的变化电阻值发生变化, 光照强度越强电阻越小,在分压电路中获得电压越低。 根据这一特性,结合光照强度和输出的模拟电压之间的关系,可以得到某一光强度下的对应的模拟电压。将模拟电压通过 AD转化器转换为数字电压,以便于计算机处理。然后再将数字电压转换成光照度。1.2.解决问题方法及思路1.2.1 硬件部分程序设计中用到的硬件是光敏电阻、 ADC0809、8255A和七段LED数码管。提出问题:1)为什么接口使用8255A而不是8279?2)为什么显示装置使用LED七段数码管而不是LCD?3)为什么选用光敏电阻?解决问题:1.2.1.1 接口芯片选用 8255A而不是8279是由于8255A在本程序中使用软件控制很容易实现且不需要用到小键盘,具体如表 1—1所示。器件名称特点8255A芯片8255芯片是可编程的并行接口芯片,不需要附加外部电路便可和大多数并行传输数据的外部设备相连,数据的各位同时传送,使用十分方便。8279A芯片8279芯片可以实现对键盘/显示器的自动扫描,以减轻CPU负担,具有显示稳定,程序简单,不会出现误动作等。表1—1 8255A 与8279A性能比较表1.2.1.2 本实验选择的显示设备是七段 LED数码管,没有选择 LCD的原因如表 1—2所示。与LCD相比,LED在亮度,功耗可视角度和刷新速率等方面更具有优势,其最显LED著的特点是使用寿命长光电转换效能高,绿色环保。LCD占用空间小,功耗低,低辐射,能降低视觉疲劳,但会出现闪烁现象。LCD表1—2LCD与LED性能比较表1.2.1.3本实验选用的是光敏电阻,因为光敏电阻上的光照强度与输出电压成线性关系,得到的模拟电压也成线性关系。1.2.2 软件部分根据硬件需求采用 8255A芯片,采用汇编语言, 8255A芯片的 PA、PB、PC三口的工作方式为方式0,将8255的PA口接发光二极管,PB口作为段选码,PC口作位选码,用软件编程实现从C口读入信息,通过8个LED数码管循环显示光照强度。硬件设计32.1.选择芯片8255A2.1.1 芯片8255A在本设计中的作用芯片8255A通过数据口从 CPU接受转换得到的光照度数据,通过 B口输出作为位选,实现LED数码管的动态显示,通过 A口将数值输出到 LED数码管。2.1.2 芯片8255A的功能分析2.1.2.18255 引脚图8255是可编程并行接口,内部有 3个相互独立的 8位数据端口,即 A口、B口和C口。三个端口都可以作为输入端口或输出端口。 A口有三种工作方式:即方式 0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。8255的工作只有当片选CS有效时才能进行,而控制逻辑端口实现对其他端口的控制。2.1.2.2CPU 接口(数据总线缓冲器和读 /写控制逻辑)数据总线缓冲器 :这是一个 8位双向三态缓冲器,三态是由读 /写控制逻辑控制的。这个缓冲器是 8255A与CPU数据总线的接口。所有数据的输入/输出,以及CPU用输出指令向8255A发出的控制字和用输入指令从8255A读入的外设状态信息,都是通过这个缓冲器传递的。读/写控制逻辑:它与CPU的6根控制线相连,控制8255A内部的各种操作。控制线RESET用来使8255A复位。和地址线A1及A0用于芯片选择和通道寻址。控制线和用来决定8位内部和外部数据总线上信息传送的方向, 即控制把 CPU的控制命令或输出的数据送到相应的通道, 或把状态信息或输入数据送到 CPU。8255A的读/写控制逻辑的作用, 是从CPU的地址和控制总线上接受输入的信号,转变成各种命令送到 A组或B组控制电路进行相应的操作。2.1.2.38255A 的引脚信号与外设相连的PA7~PA0:A口数据信号线。PB7~PB0:B口数据信号线。PC7~PC0:C口数据信号线。与CPU相连的RESET:复位信号。当此信号来时,所有寄存器都被清除。同时三个数据端口被自动置为输入端口。D7~D0:它们是 8255A的数据线和系统总线相连。CS:片选信号。在系统中,一般根据全部接口芯片来分配若于低位地址(比如 A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平, 于8255A被选中。只有当有效时,读信号写才对 8255进行读写。RD:读信号。当此信号有效时, CPU可从8255A中读取数据。WR:写信号。当此信号有效时, CPU可向8255A中写入数据。A1、A0:端口选择信号。 8255A内部有3个数据端口和 1个控制端口,共 4个端口。规定当A1、A0:为00时,选中A端口;为01时,选中B端口;为10时,选中C端口;为11时,选中控制口。8255的基本操作如下表 2-1所示。4表2—18255的基本操作2.1.2.4 芯片8255A的技术参数,如下表 2—2所示:参数说明:输入最低电压: min=-0.5V,max=0.8V输入最高电压: 2.0V输出最低电压: 0.45V输出最高电压: 2.4V5表2—28255A的技术参数2.1.2.5 8255A工作方式控制字A口、B口为输出模式,工作于方式 0。CPU中的数据经由数据线路到达 8255A,再由A口、B口分别段选、位选后输出到 LED。详细控制字见表 2—3。表2—38255A的工作方式控制字方式0的工作特点这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。其功能为:①两个8位通道:通道 A、B。两个四位通道:通道 C高4位和低四位;②任何一个通道可以作输入 /输出;③输出是锁存的;④输入是不锁存的;6⑤在方式 0时各个通道的输入 /输出可有 16种不同的组合。2.2 选择LED七段数码管2.2.1 LED七段数码管在实验中的作用LED发光二级管( Light-EmittingDiode ),在本设计中采用 7段发光二级管作为终端显示。物理构造:LED发光二级管,采用砷化镓、镓铝砷和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。2.2.2 LED七段数码管的功能分析工作原理:当在发光二极管 PN结上加正向电压时, PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到 N区,N区的电子注入到 P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。数字成像:七段 LED显示器可以控制在哪几个数位上,哪几个发光二极管亮,从而显示数字。如果发光二极管共阳极,则输入为 0时亮,为 1时不亮,反之如果发光共阴极,则输入1时亮,0时不亮。在本实验中选用了共阴极。所谓共阴极是指将各 LED二极管的阴极连接在一起(一般相连接地)各阳极接到相应器件引脚上。发光二极管是一种外加电压超过额定电压时发生击穿,并因此能产生可发光的器件,数码显示器通常由多个发光二极管来组成七段或八段笔画显示器,当段组合发光时,便会显示某一个数码管或字符,七段代码的各位用作 a—g和DP的输入。COM为8个发光二极管的公共引线, 实验中COM引线接内部 8个二极管的阴极,abcdefg(dp)则为8个发光二极管的阳极的引线。实验中LED管采用动态显示: 3个LED显示器按固定的时间间隔显示一段时间 (1.25ms),利用人眼视觉滞后,感觉 3个LED显示器同时点亮且无闪烁感。2.2.3 LED七段数码管的技术参数表2—4LED显示的技术参数主要参数:此时的驱动电流为 25mA。发光二极管的压降一般为 1.5~2.0V,其工作电流一般取 10~20mA为宜。发光二极管的发光颜色有:红色光、黄色光、绿色光、红外光等。发光二极管应用电路有四种,即直流驱动电路、交流驱动电路、脉冲驱动电路、变色发光驱动电路。由于8255A的最大驱动电流为 4.0mA,而LED的工作电流一般为 10~20mA,所以需要加一个驱动器 74LS244。2.2.4 LED七段显示器的功能分析7表2—5LED真值表LED数字显示原理:如下图2—6为LED数码管及其框图图2—6LED显示器上面两图分别为外形图和原理图,当七段数码管点亮其中几段可显示数字和简单的西文字符,将七段数码管负极连接到一起称为公共端,而发光二极管的正极则分别由引脚引出,便于控制哪个发光二极管点亮, 在右图中如果在 COM端接低电平,而在其他引出线上施加不同的电平,则对高电平的发光二极管就会点亮, 由于将8个发光二极管负极全部连接在一起,称为共阴极数码管,还有将 8个发光二极管的正极连接在一起,故称之为共阳极数码管。本次实验用的数码管需动态扫描显示,其接口电路将所有数码管的笔画控制段与 a~h同名端连在一起,接到一个并行端口,每个公共极 COM端由独立的 I/O线控制,CPU向字模输出口送出字形码时, 所有数码管接收到相同的字形码, 究竟哪个数码管显示, 取决于每个LED的COM端,所谓动态扫描,就是显示一位信息时, 其他位不能显示, 必须采用分时方法,轮流控制 COM端。2.3 选择光敏电阻82.3.1 光敏电阻在本设计中的作用光敏电阻在实验中是用来提供模拟电压的,通过光照度的变化改变电阻值,提供变化的模拟电压。2.3.2 光敏电阻的功能分析物理构造:光敏电阻又称光导管,它几乎都是用半导体材料制成的光电器件。 光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也可以加交流电压。无光照时,光敏电阻值(暗电阻)很大,电路中电流(暗电流)很小。当光敏电阻受到一定波长范围的光照时, 它的阻值(亮电阻)急剧减少,电路中电流迅速增大。一般希望暗电阻越大越好,亮电阻越小越好,此时光敏电阻的灵敏度高。实际光敏电阻的暗电阻值一般在兆欧级,亮电阻在几千欧以下。光敏电阻的原理结构: 它是涂于玻璃底板上的一薄层半导体物质, 半导体的两端装有金属电极,金属电极与引出线端相连接,光敏电阻就通过引出线端接入电路。 为了防止周围介质的影响,在半导体光敏层上覆盖了一层漆膜, 漆膜的成分应使它在光敏层最敏感的波长范围内透射率最大。工作原理:光敏电阻接有一个稳定电压,当光照度变化时,光敏电阻的阻值会改变,通过比例放大器输出电阻的压降。2.3.3 光敏电阻的技术参数亮阻约为2K欧,暗阻大于1M欧,外观直径5毫米,最高承受电压直流120V,最大功耗100mW上升响应时间20ms,下降响应时间30ms。实验中光敏电阻电路输出的电压范围为0-5V。光敏电阻电路图如下:2.4 选择芯片ADC08092.4.1 ADC0809在本设计中的作用ADC0809接收光敏电阻电路传送的模拟电压,将模拟电压转换为数字电压, 传送给CPU进行数据转换, CPU将数字电压通过电压与光照度的比例关系转换为光照度。2.4.2 ADC0809的功能分析物理构造:ADC0809是CMOS单片型逐次逼近式 A/D转换器,内部结构由 8路模拟开关、地址锁存与译码器、比较器、 8位开关树型 D/A转换器、逐次逼近数码寄存器、时序及控制逻辑和三态输出锁存器组成。工作原理:首先输入 3位地址,并使 ALE=1,将地址存入地址锁存器中。此地址经译码选通 8路模拟输入之一到比较器。 START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后 EOC输出信号变低,指示转换正在进行。直到 A/D转换完成,EOC变为高电平,9指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。2.4.3 ADC0809的技术参数ADC0809是8路8位A/D转换器,即分辨率8位。具有转换起停控制端。转换时间为100μs单个+5V电源供电模拟输入电压范围0~+5V,不需零点和满刻度校准。工作温度范围为-40~+85摄氏度低功耗,约15mW。2.4.4 ADC0809主要信号引脚的功能说明。见图 2—7。图2—7引脚图ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。IN7~IN0——8路模拟量输入端。D7~D0——8位数字量输出端。ADDA、ADDB、ADDC——3位地址输入线,用于选通 8路模拟输入中的一路ALE——地址锁存允许信号,输入,高电平有效。对应 ALE上跳沿,A、B、C地址状态送入地址锁存器中。START——转换启动信号。。A/D转换启动脉冲输入端, 输入一个正脉冲(至少100ns宽)使其启动。START上升沿时,复位 ADC0809;START下降沿时启动芯片,开始进行 A/D转换;在A/D转换期间,START应保持低电平。EOC——A/D转换结束信号,输出,当 A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE——数据输出允许信号,输入,高电平有效 (OE=0,输出数据线呈高阻; OE=1,输出转换得到的数据)。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK——时钟脉冲输入端。要求时钟频率不高于 640KHZ,通常使用频率为 500KHz的时钟信号。REF(+)、REF(-)——基准电压。参考电源、参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为 Vref(+)=+5V,Vref(-)=-5V 。Vcc——电源,单一+ 5V。GND——接地。2.5 硬件总逻辑图及其说明10硬件总逻辑图如下图 2—8所示:图2—8硬件总逻辑图芯片8255A的数据线D0~D7与主机低八位数据线相连,8255A的RD线、WR线、A0、A1、RESET分别与主机的RD线、WR线、A0、A1、RESET线连接。8255A的A口控制LED的段选,B口控制位选.11光敏电路如下:在单片机上的接口连接如下:控制程序设计3.1 控制程序设计思路说明初始化8255芯片,设置工作方式控制字为89(100010001B),即A、B口为输出,分别控制LED的段选、位选,C口输入。下图为控制字:以采样五十次为一周期,求得五十次采样的总值。然后除以50,得到采样50次的平均值,存入LastAD。在每一次采样过程中,都在PC机和LED上输出上一周期采样转化得到的光照强度(单位:勒克斯)。具体转化过程为:采样得到的模拟值经过 AD转化后为电压值, 电压范围为 0-5V。而考虑到实际生活中, 一般照明为200lux,重点照明为300lux,所以实验中可显示的光照强度为0-500lux。于是参考两者之间的线性关系,定下入下图的关系:12图2—9电压-光照度函数133.2 程序流程图开始初始化8255CX=50采样,计算采样总值百位数/整数部分入BUF/BUFFER+4,十位数/第一位小数入BUF+1/BUFFER+6,个位数/第二位小数入BUF+2/BUFFER+7。调用DOS的9号功能在 PC机上输出电压。采样平均值送 8255,8255的PA口段选、PB口位选。在LED上输出一位数据,位选数据DATA2左移一位。重复三次为一个周期。然后还原DATA2=0FEH。延时,i--Ni=0?继续下一次采样
Y计算采样平均值程序强制关闭结束图3-1程序流程图143.3控制程序.MODELTINY;8255端口初始化COM_ADDR EQU 0E003HTC_ADDR EQU 0E002H;PCO端口ADDR_0809EQU 0F000HWR_COM_AD_LEQU 0D004H;写左半屏指令地址WR_COM_AD_REQU 0D000H;写右半屏指令地址WR_DATA_AD_LEQU0D006H;写左半屏数据地址WR_DATA_AD_REQU0D002H;写右半屏数据地址RD_BUSY_AD EQU0D001H;查找地址RD_DATA_AD EQU0D003H;读数据地址X EQU 0B8H;起始显示行基址Y EQU 040H;起始显示列基址FirstLineEQU 0C0H;起始显示行EXTRNDisplay8:NEAR;.STACK SEGMENT STACKDW100 DUP(?).STACK ENDS.DATABUFFER DB 8DUP(?)LastAD DB 0 ;上一次AD转换值CHUSHI DB 0KKKKKK DB 0;太阳图标Line1_1 DB0021H,0042H,00E4H,0010H,0048H,0024H,0044H,0007H,0044H,0024H,0048H,0010H,00E4H,0042H,0021H,0000HDB022H,011H,08BH,044H,028H,011H,012H,072H,012H,011H,028H,044H,08BH,011H,022H,000HLine2_1 DB080H,048H,0E8H,0E8H,0FCH,0E8H,03CH,028H,000H,002H,003H,006H,0FEH,05EH,05FH,05FHLine2_2 DB0E8H,040H,030H,0DCH,050H,0B0H,090H,010H,05EH,05FH,05FH,0FEH,00EH,002H,002H,003HLine2_3 DB000H,000H,000H,0C0H,030H,028H,020H,020H,000H,002H,003H,002H,0FEH,046H,046H,046H15Line2_4 DB0FCH,020H,020H,020H,020H,030H,000H,000H,047H,046H,046H,0FEH,002H,002H,003H,002HLine2_5 DB000H,00CH,01EH,0FFH,0FFH,01EH,00CH,000H,000H,000H,020H,077H,077H,020H,000H,000HLine3_1 DB000H,040H,042H,044H,05CH,0C8H,040H,07FH,040H,0C0H,050H,04EH,044H,060H,040H,000HDB000H,080H,040H,020H,018H,007H,000H,000H,000H,03FH,040H,040H,040H,040H,078H,000HLine3_2 DB000H,0F2H,012H,012H,01EH,000H,0C0H,05EH,052H,0F2H,052H,052H,05EH,0C0H,000H,000HDB000H,001H,041H,081H,07FH,000H,087H,084H,084H,0FFH,044H,044H,054H,0E7H,040H,000HLine3_3 DB080H,081H,08EH,004H,000H,010H,050H,090H,010H,010H,010H,0FFH,010H,010H,010H,000HDB040H,020H,01FH,020H,020H,040H,040H,043H,041H,048H,050H,04FH,040H,040H,040H,000HLine3_4 DB004H,004H,004H,004H,074H,054H,055H,056H,054H,054H,074H,004H,004H,004H,004H,000HDB000H,0FFH,001H,001H,03DH,025H,025H,025H,025H,025H,03DH,041H,081H,07FH,000H,000HLine4_1 DB040H,020H,0F0H,00CH,007H,002H,0FCH,044H,044H,042H,0FEH,043H,043H,042H,040H,000HDB000H,000H,07FH,000H,000H,000H,07FH,020H,010H,028H,043H,00CH,010H,020H,078H,000HLine5_1 DB000H,002H,002H,0C2H,002H,002H,002H,002H,0FEH,082H,082H,082H,082H,082H,002H,000HDB020H,020H,020H,03FH,020H,020H,020H,020H,03FH,020H,020H,020H,020H,020H,020H,000HLine5_2 DB16020H,018H,008H,009H,0EEH,0AAH,0A8H,0AFH,0A8H,0A8H,0ECH,00BH,02AH,018H,008H,000HDB000H,000H,03EH,002H,002H,002H,002H,0FFH,002H,002H,012H,022H,01EH,000H,000H,000H.CODESTART: MOV AX,@.DATAMOV DS,AXNOPMOV DX,COM_ADDRMOV AL,80HOUT DX,ALMOV AL,05HMOV DX,TC_ADDROUT DX,ALXOR AL,AL ;XOR是异或,实现 AL的清零操作JMP START6START1:MOVCX,50;采样50次MOVBX,0;累计五十次的采样值START2:CALLAD0809XORAH,AHADDBX,AXLOOPSTART2MOVAX,50XCHGAX,BX;交换AX和BX的值DIVBL;五十次的平均值CMPAL,LastAD;若AL等于上一次AD转换值,则数码管上值不变JZSTART3START6:MOVLastAD,ALCALLDisplay_DataLEASI,BUFFERMOVAL,BUFFER+2CALLDisplay8ANDAL,7FHMOVCHUSHI,ALMOVDL,03HCMPCHUSHI,DLJNBBAOJING_LOWJMPZHENGCHANG;光强判断BAOJING_TOP:MOVDX,TC_ADDRMOV AL,02HOUT DX,AL17CALL LCDSHOWTOPJMP START3BAOJING_LOW: MOV DX,TC_ADDRMOV AL,00HOUT DX,ALCALL LCDSHOWLOWJMP START3ZHENGCHANG: MOV DX,TC_ADDRMOV AL,05H ;最低位是,1不报警OUT DX,ALCALL LCDSHOWOKSTART3: CALL DLTimeJMP START1;***********************************;;ADC0809初始化程序AD0809 PROC NEARPUSH CXMOV AL,0MOV DX,ADDR_0809OUT DX,ALMOV CX,200LOOP $ ;延时,等待AD转换完成MOV DX,ADDR_0809IN AL,DXPOP CXRETAD0809 ENDP;***********************************;;显示程序DISPLAY_DATAPROCNEARMOVDL,ALMOVAH,0MOVBL,2MULBLMOVBL,10DIVBLMOVBUFFER+4,AHMOVAH,0DIVBLMOVBUFFER+5,AHMOVBUFFER+6,AL18MOVAL,DLXORAH,AHMOVBL,51;255/51(16进制的1=1/52V)DIVBLORAL,80H;加上小数点MOVBUFFER+2,ALMOVAL,10MULAHDIVBLMOVBUFFER+1,AL;第一位小数MOVAL,10MULAHDIVBLMOVBUFFER,AL;第二位小数MOVbuffer+3,10HMOVbuffer+7,10H;消隐RETDISPLAY_DATAENDP;**********************************;;延时程序DLTime PROC NEARMOV CX,30000LOOP $RETDLTime ENDP;**********************************;;显示太阳图标和“警告!!!及”“光强过高”LCDSHOWTOP PROC NEARCALL LCD_INITCALL DLTimeCALL DisLine1CALL DLTimeCALL DisLine2CALL DLTimeCALL DisLine3CALL DLTimeRETLCDSHOWTOP ENDP;********************************;;显示太阳图标和“警告!!!”及“光强过低”LCDSHOWLOW PROC NEARCALL LCD_INITCALL DLTimeCALL DisLine119CALL DLTimeCALL DisLine2CALL DLTimeCALL DisLine4CALL DLTimeLCDSHOWLOW ENDP;***********************************;;显示太阳图标和“光强正常”LCDSHOWOK PROC NEARCALL LCD_INITCALL DLTimeCALL DisLine1CALL DLTimeCALL DisLine5CALL DLTimeRETLCDSHOWOK ENDP;********************************;;显示太阳图标DisLine1PROCNEARLEASI,Line1_1MOVAL,2;A-起始显示行地址,第2行MOVAH,50;B-起始显示列地址,第32列,以下同CALLWordDISLRETDisLine1ENDPDisLine2PROCNEARLEASI,Line2_2MOVAL,4MOVAH,16CALLByteDISL;左半屏,显示一个字节子程序LEASI,Line2_3MOVAL,4MOVAH,24CALLByteDISLLEASI,Line2_4MOVAL,4MOVAH,40CALLByteDISLLEASI,Line2_5MOVAL,4MOVAH,48CALLByteDISL20LEASI,Line2_5MOVAL,4MOVAH,56CALLByteDISLLEASI,Line2_5MOVAL,4MOVAH,0CALLByteDISR;右半屏字节显示数据LEASI,Line2_5MOVAL,4MOVAH,8CALLByteDISRLEASI,Line2_5MOVAL,4MOVAH,16CALLByteDISRLEASI,Line2_5MOVAL,4MOVAH,24CALLByteDISRLEASI,Line2_5MOVAL,4MOVAH,32CALLByteDISRLEASI,Line2_5MOVAL,4MOVAH,40CALLByteDISRRETDisLine2ENDP;***************************************;;显示“光强过高”DisLine3PROCNEARLEASI,Line3_1MOVAL,6;A-起始显示行地址,第6行MOVAH,32;B-起始显示列地址,第32列,以下同CALLWordDISL;左半屏,显示一个字节子程序LEASI,Line3_2MOVAL,6MOVAH,48CALLWordDISLLEASI,Line3_3MOVAL,6MOVAH,021CALL WordDISR ;右半屏,显示一个字子程序LEA SI,Line3_4MOV AL,6MOV AH,16CALL WordDISRRETDisLine3 ENDP;****************************************;;显示“光强过低”DisLine4PROCNEARLEASI,Line3_1MOVAL,6;A-起始显示行地址,第6行MOVAH,32;B-起始显示列地址,第32列,以下同CALLWordDISL;右半屏,显示一个字子程序LEASI,Line3_2MOVAL,6MOVAH,48CALLWordDISLLEASI,Line3_3MOVAL,6MOVAH,0CALLWordDISR;右半屏,显示一个字子程序LEASI,Line4_1MOVAL,6MOVAH,16CALLWordDISRRETDisLine4ENDP;****************************************;;显示“光强正常”DisLine5 PROC NEARLEA SI,Line3_1MOV AL,5 ;A-起始显示行地址,第六行MOV AH,32 ;B-起始显示列地址,第 32列,以下同CALL WordDISL ;左半屏,显示一个字子程序LEA SI,Line3_2MOV AL,5MOV AH,48CALL WordDISLLEA SI,Line5_1MOV AL,5MOV AH,0CALL WordDISR ;右半屏,显示一个字子程序LEA SI,Line5_222MOV AL,5MOV AH,16CALL WordDISRRETDisLine5 ENDP;**************************************;;液晶初始化LCD_INITPROCNEARMOVAL,3EH;初始化左半屏,关显示CALLWRComL;写指令子程序MOVAL,FirstLine;设置起始显示行,第0行CALLWRComLMOVAL,3EH;初始化左半屏,关显示CALLWRComR;写指令子程序MOVAL,FirstLine;设置起始显示行,第0行CALLWRComRCALLLCDClear;清屏MOVAL,3FH;开显示CALLWRComLMOVAL,3FH;开显示CALLWRComRRETLCD_INITENDP;***********************************;;清屏LCDClear PROC NEAR;清左半屏MOVAL,0;MOVAH,0;LCDClearL1:PUSHAXMOVCX,64CALLSETXYL;LCDClearL2:MOVAL,0CALLWRDATALLOOPLCDClearL2POPAXINCAXCMPAL,8;共8行JNZLCDClearL1;MOVAL,0;MOVAH,0;LCDClearR1:PUSHAXMOVCX,64CALLSETXYR23LCDClearR2:XORAL,ALCALLWRDATARLOOPLCDClearR2POPAXINCALCMPAL,8;JNZLCDClearR1RETLCDClearENDP;*************************************;;****************;;;ByteDisL PROC NEARMOV CX,8CALL DispLRETByteDisL ENDP;*****************************;WordDisL PROC NEARMOVCX,16;显示16字节数据,应于显示一个汉字CALLDispLRETWordDisLENDP;*****************************;DispLPROCNEARPUSHAXPUSHCXCALLSETXYL;设置起始显示行列地址CALLDisplayL;显示上半行数据POPCXPOPAXINCALCALLSETXYL;设置起始显示行列地址CALLDisplayL;显示下半行数据RETDispLENDP;*****************************;;右半屏显示一个字节/字;AL-起始显示行序数X(0-7);AH-起始显示列序数Y(0-63);SI-显示子数据首地址ByteDisRPROCNEARMOVCX,8;显示8个字节数据CALLDispR24RETByteDisR ENDP;*****************************;WordDisR PROC NEARMOVCX,16;显示16字节数据,用于显示一个汉字CALLDispRRETWordDisRENDP;*******************************;DispRPROCNEARPUSHAXPUSHCXCALLSETXYR;设置起始显示行列地址CALLDisplayR;显示上半行数据POPCXPOPAXINCALCALLSETXYR;设置起始显示行列地址CALLDisplayR;显示下半行数据RETDispRENDP;*******************************;LineDisLPROCNEARMOV CX,64CALL SETXYL ;设置起始显示行列CALL DisplayL;显示数据RETLineDisL ENDP;********************************;;显示右半屏一行图形,AL-X起始行地址序数(0-7),AH-Y起始列地址序数(0-63)LineDisR PROC NEARMOV CX,64CALL SETXYR ;设置起始显示行列CALL DisplayR;显示数据RETLineDisR ENDP;******************************;DisplayL PROC NEARLODSBCALL WRDataL ;写左半屏数据LOOP DisplayLRETDisplayL ENDP;********************************;25;基本控制;*********************************;;显示右半屏数据,R7-显示数据个数DisplayR PROC NEARLODSBCALL WRDataR ;写左半屏数据LOOP DisplayRRETDisplayR ENDP;*******************************;;设置左半屏起始显示行列地址,AL-X起始行序数(0-7),AH-Y起始列序数(0-63)SETXYL PROC NEAROR AL,X ;行地址=行序数+行基址CALL WRComLMOV AL,AHOR AL,Y ;列地址=列序数+列基址CALL WRComLRETSETXYL ENDP;********************************;;设置右半屏起始显示行列地址,AL-X起始行序数(0-7),AH-Y起始列序数(0-63)SETXYR PROC NEAROR AL,X ;行地址=行序数+行基址CALL WRComRMOV AL,AHOR AL,Y ;列地址=列序数+列基址CALL WRComRRETSETXYR ENDP;*********************************;;写左半屏控制指令,A-写入指令WRComL PROC NEARMOV DX,WR_COM_AD_LOUT DX,ALWRComL1: MOV DX,RD_BUSY_ADIN AL,DXTEST AL,80H ;检查液晶显示是否处于忙状态JNZ WRComL1RETWRComL ENDP;*********************************;;写右半屏控制指令,A-写入指令WRComR PROC NEARMOV DX,WR_COM_AD_R26OUT DX,ALWRComR1: MOV DX,RD_BUSY_ADIN AL,DXTEST AL,80H ;检查液晶显示是否处于忙状态JNZ WRComR1RETWRComR ENDP;*********************************;;写左半屏数据,A-写入数据WRDataL PROC NEARMOV DX,WR_DATA_AD_LOUT DX,ALWRDataL1: MOV DX,RD_BUSY_ADIN AL,DXTEST AL,80H ;检查液晶显示是否处于忙状态JNZ WRDataL1RETWRDataL ENDP;********************************;;写右半屏数据,A-写入数据WRDataR PROC NEARMOV DX,WR_DATA_AD_ROUT DX,ALWRDataR1: MOV DX,RD_BUSY_ADIN AL,DXTEST AL,80H ;检查液晶显示是否处于忙状态JNZ WRDataR1RETWRDataR ENDP;*******************************;END START27上机调试过程4.1硬件调试1)按照预习报告上的硬件总逻辑图接线,注意段选线线与位选择线均不能接反,否则显示在LED显示器上的是乱码或显示顺序是反的,连线松动常导致LED显示器上显示不出数字,所以硬件调试时一定要确保连线的紧度。2)ADC0809中,有多路通道可以进行A/D转换。因此实验一开始就需要解决通道选择问题。我将ES-PCI的A0,A1,A2分别与ADC0809的ADDA,ADDB,ADDC相连,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年税务师题库含答案(达标题)
- 2024年设备监理师考试题库及参考答案【巩固】
- 2024年考点 化学使世界变得更加绚丽多彩 (解析版)
- 第18课 社会主义的发展与挫折(分层作业)(解析版)
- 第2单元 古代欧洲文明(B卷·能力提升练)(解析版)
- 手术后硬膜外镇痛的效能与安全
- 2024年度天津市公共营养师之二级营养师能力检测试卷B卷附答案
- “十三五”重点项目-食用松香甘油酯项目节能评估报告(节能专)
- 鬃毛加工、制刷及清扫工具的制造行业分析报告
- 2025年中国牡荆油行业市场全景评估及发展战略研究报告
- (八省联考)河南省2025年高考综合改革适应性演练 化学试卷(含答案)
- 2025年八省联考高考语文作文真题及参考范文
- 科研伦理与学术规范(研究生)期末试题库及答案
- 机械设备租赁合同范本简单版(9篇)
- 美甲顾客档案表Excel模板
- 公安警察工作总结汇报PPT模板
- 城市生活垃圾分选系统设计
- 外国文学专题作业答案
- 绿色施工管理体系与管理制度管理办法(新版)
- 机动车交通事故快速处理协议书(最新格式)
- 最新拉链厂安全操作规程
评论
0/150
提交评论