温度显示系统设计1一设计思路温度显示系统的总体设计原理是:首先利用模数转换芯片ADC0809实现由模拟量转化为数字量,通常要经历采样,量化,编码三个步骤,将温度模拟量转换为数字量。再将转换出来的数字量通过CPU系统总线送给可编程并行通信接口芯片8255来实现读写操作,然后将数据通过LED数码显示管来显示出当前温度。具体做法是为了实现精确的表示出当前的温度值,显示温度的百位,十位,个位。我们先在数据段开辟一显示缓冲区,用来存储当前温度,初始化我们所要应用的芯片8255,ADC0809后,主程序开始,为了将温度模拟量转化为数字量,启动AD采样,读AD采样结果,将结果送变量。为了显示温度的百位,十位,个位,将样值分离,在通过8255的A口进行段选,B口进行位选。为了得到良好的显示效果,本程序调用了一段精确的延时程序,使各位在时间显示上有短暂的间隔。最后通过LED数码管显示出来,通过调节滑动变阻器改变温度,再显示,有此循环,就形成了精确的温度显示系统。温度显示系统设计2二源程序清单与原理图SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSPUBLICVALUE;设置全局变量以便变量监视DATASEGMENTVALUEDB?TNUMDB3FH,06H,5BH,4FH,66H,6DH,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,0BFH,79H,71HBTDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,0606HMOVAX,10000000B0UTDX,AXSTART1:MOVDX,640HOUTDX,AXCALLDALLYINAL,DXMOVVALUE,ALMOVAH,0TESTBT,1JNZS1ANDAL,0FHMOVBX,0EHJMPS2S1:RORAX,1RORAX,1RORAX,1RORAX,1ANDAL,0FHMOVBX,0DHS2:MOVSI,OFFSETTNUMANDAX,0FHADDSI,AXMOVAL,[SI]MOVDX,602HOUTDX,ALMOVAL,BL温度显示系统设计3MOVDX,600HINCBTOUTDX,ALJMPSTART1DALLY:PUSHCXPUSHAXMOVCX,1HA5:MOVAX,0800HA6:DECAXJNZA6LOOPA5POPAXPOPCXRETCODEENDSENDSTART温度显示系统设计4三设计图3.1设计系统框图温度显示系统总框图,如图2.1所示。图3.1系统框图CPU系统总线8255芯片A/D采样值LED数码管显示温度显示系统设计53.2温度显示硬件接线图在实验箱上按照温度显示硬件接线图将传输线对应连接起来,芯片82555中PB0至PB7口与LED数码管的A至Dp相连,是为了实现七段数码管的段选,PA0至PA2与LED的X6至X4相连,是为了实现位选,X4为百位的显示、X5为十位的显示、X6为个位的显示,如图2.2所示。图3.2温度显示接线图温度显示系统设计63.3设计流程图总体设计程序流程图,如图3.3所示。触发模拟信号8255初始化AD转换器采样采集后将结果存入AL中结果按10进制整理出来将结果输入8255中传入LED数码管调用DISPDLY延时子程序改变温度值图2.3总体设计流程图温度显示系统设计7四元器件功能简介4.1可编程并行通信接口芯片82554.1.18255简介8255是一种通用的可编程并行通信接口芯片,能够方便的在8088/8086微机系统中实现并行输入/输出,通过变成选择多种功能方式。由于此次实验设计是通过在实验箱上的小键盘来输入数据,而对这一数据的采集与判断就要利用该芯片来完成。利用其三个可独立的输入输出端口不仅可以判断出键盘的按键位置还可以输入其对应的高低电平来使对应的LED闪亮。可以说此芯片也是这次设计中很重要的一个环节。图4.1可编程并行通信接口芯片8255的内部结构温度显示系统设计8PA3PA2PA1PA0RDCSGNDA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB282554.1.28255硬件引脚图图4.28255硬件引脚图A1上的不同编码可分别寻址上述3个口和一个控制寄存器,具体规定如下:A1A0选择00A口01B口10C口14023933843753663573483393210311130122913281427152616251724182319222021PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VccPB7PB6PB5PB4PB3温度显示系统设计911控制寄存器通常A0,A1分别接系统总线A0和A1,它们与一起来决定8255的接口地址。RESET为复位输入信号。此端上的高电平可使8255复位。复位后,8255的A口,B口和C口均被定为输入状态。PA0~PA7为A口的8条输入输出信号线。该口的这8条线是工作输入、输出还是双向(输入、输出)方式可由软件编程来决定。PB0~PB7为B口的8条输入输出信号线。利用软件编程可指定这8条线是输入还是输出。PC0~PC78条线根据工作方式可作为数据的输入或输出线,也可以用作控制信号的输出或状态信号的输入线。表4.18255的各种操作功能组合A1A0RDWRCS操作功能00010端口A数据总线01010端口B数据总线10010端口C数据总线00100数据总线端口A01100数据总线端口B10100数据总线端口C11100数据总线控制寄存器11010非法操作(控制口不能读)XX110数据总线浮空XXXX1未选中82554.1.38255控制字8255有两种控制字:方式控制字和口按位置位/复位控制字。由于着两个命令都是送到的同一个控制端口,故为了让其能识别是哪个命令,采用特征位的方法。若写入的控制字的最高位是1,则是工作方式选择控制字;若写入的控制字是0,则是口的按位置位/复位控制字。1、方式控制字其作用是指定3个并行端口(A、B、C)是作输入还是作输出端口以及选择8255的工作方式。表4.28255方式控制字温度显示系统设计10D7D6D5D4D3D2D1D0标志位=1写方式字=0C口控制字A组工作方式选择00=方式001=方式11X=方式2A口1=输入0=输出C口(高4位)1=输入0=输出B组工作方式选择0=方式01方式1B口1=输入0=输出C口(低4位)1=输入0=输出2、C口按位置位/复位控制字该控制字的作用是指定口的8位中的任意一位置成高电平输出或低电平输出。它的格式及每位的定义如表:表4.38255的C口按位置位/复位控制字D7=0D6D5D4D3D2D0标志位不用(一般置0)C口的选择000=C口位0001=C口位1010=C口位2011=C口位3100=C口位4101=C口位5110=C口位6111=C口位71=置位0=复位8255有很强的功能,能够工作在各种工作方式下。在应用过程中,可以利用软件编程来指定8255的工作方式。也就是说,只要将不要的控制字装入芯片中的控制寄存器,即可确定8255的工作方式。当控制字bit7=1是,控制字的bit6-bit0用来控制B组,包括B口的8位和C口的低4位。当控制字的bit7=0时,指定该控制字仅对C口进行位操作——按位置位或复位操作。对C口按位置/复位操作的控制字格式如图2所示。如前面所叙,在必要时,可利用C口的按位置/复位控制字来使C口的某一位输出0或1。例如,在设计程序中的程序片段MOVDX,0646HMOVAL,0A0HOUTDX,AL;初始化控制字,A组位方式1输出MOVDX,0640H温度显示系统设计11MOVAL,0FFHOUTDX,AL;A口赋值4.1.48255的工作方式8255的工作方式有3种,由方式控制字来指定它的每个端口工作于何种方式。由于此次设计只涉及到方式0,故只对方式0的工作过程予以简述。表4.48255方式0之下的输入输出组合A组B组A口(PA0—PA7)C口(PC4—PC7)B口(PB0—PB7)C口(PC0—PC3)入入入入入入入出入入出入入入出出入出入入入出入出入出出入入出出出出入入入出入入出出入出入出入出出出出入入出出入出出出出入出出出出1、方式0(基本输入/输出方式)基本的输入/输出是指外设始终作好了准备,随时可以提供或者接受数据。A、B、C三个端口均可以采用这种工作方式,A、B口工作在方式0下可由方式控制字设定,C端口作为数据输入/输出哭只能工作于方式0,无须设定。方式0的任一端口可独立实现数据的输入或输出,输入输出的方向由方式控制字分别定义。多用于在无条件传送时提供24位数据的输入或输出。但A、B两断口在单独定义8位数据的输入或输出时可以利用C端口高半字节(A组),低半字节(B组)作为控制输出或状态输入的支持,且可以自行定义,无固定搭配的限制,此时A、B两端口可分别以查询方式工作。2、方式0的基本功能温度显示系统设计12若A口、B口都工作在方式0,则此时8255可以有2个8位的数据输入/输出(A口、B口),2个4位口(C口上半部、下半部),而且A口、B口、C口上半部、C口下半部共有16种不同的组合方式;输出是锁存的,输入只有缓冲而无锁存功能。CPU和8255A口、B口之间传送数据只能用程控方式(既无条件或查询方式),不能用中断方式。3、方式0的特点系统没有指定C口的某些线作为专门的信号联络线和状态位,但是用户可以自定义C口的某些线作为信号联络线。CPU根据查询到的C口状态来了接数据传送过程,以确定是否对A口或B口进行数据读写。在实验中,我是利用A、B口来输出信号,用C口来输入信号,通过8255的控制字使LED发光的,通过开关来强制控制C口来给LED显示发出对应的显示电平。这样就可完成实际交通中出现的紧急状况。4.2ADC0809芯片的内部结构及引脚4.2.1ADC0809外部引线ADC0809转换器由一个8路单端模拟信号多路开关电路、地址锁存与译码电路、A/D转换器和三态输出锁存缓冲器组成,其引脚图,如图3.3所示。D0~D7——输出数据线;IN0~IN7——8路模拟电压输入端;ADDA,ADDB,ADDC——路地址输入;ADDA——最低位,ADDC—最高位;STALT——启动信号输入端,下降沿有效;ALE——路地址锁存信号,用来锁存ADDA`ADDC的地址输入,上升沿有效;EOC——变换结束状态信号,高电平表示一次变换已结束;OE——读允许信号,高电平有效;CLK——时钟输入端;REF(+),REF(-)——参考电压输入端;VCC——5V电源输入;温度显示系统设计13GND——地。图4.3ADC0809引脚图ADC0809由两部分组成:模拟多路开关和A/D转换器。其核心是8位A/D转换器,它采用逐次逼近法,对8路模拟开关的一路进行转换。模拟多路包括8路模拟开关和3位锁存器与译码器,根据3位输入地址(ADDA.ADDB.ADDC)选择8路模拟输入当中的一路送到A/D转换器,如图3.4所示。图4.4ADC0809内部结构图温度显示系统设计144.2.2ADC0809工作方式ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址译码选通8路模拟输入之一到比较器。STALT上升沿将逐次逼近储存器复位,下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变成高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用做申请中断。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上,如表4-3所示。表4-5ADC0809工作方式表ADDC、ADDB、ADDA000001010011100101110111选中通道IN0IN1IN2IN3IN4IN5IN6IN7温度显示系统设计15设计总结本次设计是在王老师悉心指导下完成的,从课设的选题、思路、撰写和最后的定稿,李老师都花费了不少的时间和精力,给予了我们最