沈阳工程学院微机原理及应用课程设计11设计思路1.1设计原理本次课程设计的内容为模拟热水器温度控制系统设计与实现。利用AD0809芯片将模拟量的温度转换为数字量,然后将AD采样到的结果进行制式的转换并将结果显示在数码管上。采样的结果与设定的温度限值进行比较,若超温了则让超温指示灯亮。根据需要,需选择的芯片有AD0809A/D变换芯片,8255可编程并行接口。通过应用模数转换器ADC0809将从模拟电阻上采集的数据通过端口IN0输入,在A/D的转换下,获得8位二进制的数字量(D7—D0),然后输入到8088系统总线上,进而输入到可编程并行接口8255上,选择工作方式0方式,把数据输入到七段数码管上,然后显示出数字信息。同时应用比较程序,设定温度值。如果在小于30值时则使8255C输出00FH值信号让显示灯始终,显示绿色,表示温度过低。如果温度超过100值则使8255C口输出0F0H值信号让显示灯提示,显示红色灯,表示温度过高。如果温度在30至100以内则使8255C口无输出信号让显示灯熄灭,表示温度在正常范围内。1.2设计环境及设备PC机一台、windows98系统、实验箱,导线若干。8255并口:用做接口芯片,与数码管相连。ADC0809:用于将模拟量转化为数字量。数码管:三个LED用于分别显示百十个位的温度值。LED:用作警报灯,大体表示是否当前值在安全范围内。沈阳工程学院微机原理及应用课程设计21.3设计框图图1.1设计系统框图ADC0809电阻值模拟温度并转化成数字量系统总线主控模块数码管显示单元显示出当前温度值LED信号灯发出警报8255输入输出,数据比较沈阳工程学院微机原理及应用课程设计32设计流程图2.1主程序流程图图2.1主程序流程图初始化利用阻值变化模拟温度A/D转换系统8088系统总线8255读取数据数码管显示温度温度比较大于100时亮红灯小于30时亮绿灯沈阳工程学院微机原理及应用课程设计42.2主要程序流程图图2.2分离并显示百十个位程序流程图数字量除以100商[SI]余数AH除以10商[SI+1]余数[SI+2]8255输入输出数码管显示单元沈阳工程学院微机原理及应用课程设计53设计所用芯片3.18086简介由于此系统最终要在西安唐都科教仪器出品的32位微机教学实验系统TD-PITE/PITC上进行实验,故设计硬件配置时采用Intel8086,整个实验的硬件配置都以此为原则进行设计选用。Intel8086是16位的微处理器(理论学习中为8088,其内部总线为16位,外部总线为8位,故称为准16位微处理器),它采用HMOS工艺40条引脚封装。8086工作时使用5V电源,时钟频率5MHz(8086-1为10MHz,8086-2为8MHz)它有20根地址线,故可寻址的内存空间为1MB。3.1.18086主要特性Intel8086/8088CPU是Intel公司推出的高性能的微处理器,具体如下主要特性:(1)8086CPU数据总线为16位,8088CUP数据总线为8位。(2)地址总线都是20位,低16位用于数据总线复用,可直接寻址为1MB的存储空间。(3)有16位的端口地址,可以寻址64KB的I/O端口。(4)有99条基本指令,指令功能强大。(5)有9种基本寻址方式。(6)可以处理内部和外部中断,外部中断源多达256个。(7)兼容性好,与80*86,8085在源程序一级兼容。(8)8086/8088标准主频为5MHz,8086/8088-2主频为8MH。(9)支持单处理器或多处理器系统工作。3.1.28086CPU寄存器结构8086CPU中有14个16位的寄存器,其中有4个16位的通用寄存器,2个16位指针寄存器,2个16位变址寄存器,1个16位指令指针及1个16位标志寄存器。通用寄存器包括累加器AX,基址寄存器BX,计数寄存器CX,数据寄存器DX四个寄存器,位于CPU的EU中,每个数据寄存器可存放16位操作数,也可拆成两个8位寄存器,用来存放8位操作数。指针和变址寄存器包括:堆栈指针SP、基址指针BP、源变址寄存器SI、和目的变址寄存器DI四个16位寄存器,可以来存放数据和地址。段寄存器包括:代码段寄存器CS,数据段寄存器DS,附加段寄存器ES,堆栈段寄存器SS。沈阳工程学院微机原理及应用课程设计63.28255简介8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图6-4所示:图3.18255内部结构及引脚具体的各引脚功能如下:D0~D7为双向数据信号线,用来传送数据和控制字。RD为读信号线,与其它信号线一起实现对8255接口的读操作通常接系统总线的IOR信号。WR为写信号线,与其它信号一起实现对8255的写操作,通常接系统总线的IOW。CS为片选信号线,当它为低电平(有效)时,才能选中该8255芯片,也才能对8255进行操作。A0,A1为口地址选择信号线。8255内部有3个口;A口,B口,C口,还有一个控制寄存器,它们可由程序寻址。A0,A1上的不同编码可分别寻址上述3个口和一个控制寄存器,具体规定如下:表3.18255的寻址方式A1A0选择00A口01B口沈阳工程学院微机原理及应用课程设计710C口11控制寄存器通常A0,A1分别接系统总线A0和A1,它们与CS一起来决定8255的接口地址。RESET为复位输入信号。此端上的高电平可使8255复位。复位后,8255的A口,B口,C口均被定为输入状态。PA0~PA7为A口的8条输入输出信号线。PB0~PB7为B口的8条输入输出信号线。PC0~PC78条线根据其工作方式可作为数据的输入或输出线,也可以用作控制信号的输出或状态信号的输入线。8255可编程外围接口芯片是InTEL公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255工作方式控制字和C口按位置位/复位控制字格式如图3.2所示:图3.2置位/复位控制字格式8255的寻址:8255占外设编址的4个地址,即A口,B口,C口和控制寄存器各占一个外设接口地址。对同一个地址分别可以进行读写操作。例如,读A口可将A口的数据读出;写A口可将CPU的数据写入A口并输出沈阳工程学院微机原理及应用课程设计8表3.2在方式0下,8255的16种输入输出组合A组B组A口(PA0---PA7)C口(PC4---PC7)B口(PB0---PB7)C口(PC0---PC3)入入入入入入入出入入出入入入出出入出入入入出入出入出出入入出出出出入入入出入入出出入出入出入出出出出入入出出入出出出出入出出出出3.3ADC0809主要功能ADC0809具有8个通道的模拟输入线(IN0~IN7),可在程序控制下对任意通道进行A/D转换,获得8位二进制数字量(D7~D0)。模拟输入部分有8路多路开关,可由3位地址输入ADDA、ADDB、ADDC的不同组合来选择,ALE为地址锁存信号,高电平有效,锁存这三条地址输入信号。主体部分是采用逐次逼近式的A/D转换电路,由CLK控制的内部电路的工作,START为启动命令,高电平有效,启动ADC0809内部的A/D转换,当转换完成,输出信号EOC有效,OE为输出允许信号,高电平有效,打开输出三态缓冲器,把转换后的结果送DB。ADC0809的内部结构和引脚如图3.3所示:沈阳工程学院微机原理及应用课程设计9图3.3内部结构和引脚ADC0809的一个显著特点是,其芯片内部集成了一个8选1的模拟门,且利用ADDA~ADDC三个信号的编码来选择相应的模拟输入。由于ADC0809输出数字信号是经由OE控制的三态门完成的,故ADC0809可以直接与系统总线连接,占用8个接口地址。它也可以像AD574那样经可编程并行接口8255与总线连接。工作过程:1、当模拟量送至某一输入通道INi后,CPU将标识该通道编码的三位地址信号经数据线或地址线输入到ADDC、ADDB、ADDA引脚上。2、地址锁存允许ALE锁存这三位地址信号,启动命令START启动A/D转换。3、转换开始,EOC变低电平,转换结束,EOC变为高电平。EOC可作为中断请求信号。转换结束后,可通过执行IN指令,设法在输出允许OE脚上形成一个正脉冲,打开三态缓冲器把转换的结果输入到DB,一次A/D转换便完成了。3.4七段LED显示器及其接口七段LED显示器:由七个发光段构成,每段均为1个LED二极管。通过控制不同段的点亮和熄灭,显示出16进制数字或字符。七段LED显示器有共阳极和共阴极两种结构,如图6-3所示的七段LED实际上包含8个LED(7段字形加上小数点DP)。1位LED显示器有1根位选线和8根段选线,段选线控制字符的选择,位选线控制显示位的亮和暗。沈阳工程学院微机原理及应用课程设计10图3.4七段LED显示器沈阳工程学院微机原理及应用课程设计114模拟热水器温控系统硬件接线图图4.1模拟热水器硬件接线图D0D1D2D3D4D5D6D7A0A1WRRDCSXD0XD1XD2XD3XD4XD5XD6XD7XA1XA2IOW#IOR#IOY0XD0XD1XD2XD3XD4XD5XD6XD7IOW#IOR#IOY1CLKPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PC0PC1PC2PC3PC4PC5PC6PC7D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7WRRDCSCLKABCDEFGDPX1X2X3IN0ABC+5V10K8255单元系统总线数码管显示单元LED显示ADC0809单元沈阳工程学院微机原理及应用课程设计125源程序清单及注释MY8255_AEQU0600HMY8255_BEQU0602HMY8255_CEQU0604HMY8255_CONEQU0606HSSTACKSEGMENTSTACKDW16DUP(?)SSTACKENDSDATASEGMENTDTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HVALUEDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:SSTACKSTART:MOVAX,DATA;初始化数据段MOVDS,AXMOVAL,80H;确定A,B端口输出MOVDX,MY8255_CON;初始化8255OUTDX,ALLP:MOVDX,640H;ADC0809采集数据OUTDX,ALCALLADDLY;调用ADDLY函数INAL,DXMOVVALUE,ALMOVSI,1000;MOVAH,00HMOVBL,100;分离百位数DIVBL;数字量除以100MOV[SI],AL;获得百位数沈阳工程学院微机原理及应用课程设计13MOVAL,AHMOVAH,00HMOVBL,10;分离十位数DIVBL;得到的余数除以十MOV[SI+1],AL;获得十位数MOV[SI+2],AH;获得个位数MOVBX,OFFSETDTABLE;显示部分MOVDI,0000HMOVAL,[SI];百位数的显示ANDAX,00FFHADDBX,AX;百位数在16位键盘上偏移MOVAL,[BX]MOVDX,MY8255_AOUTDX,ALMOVAL,0FBHMOVDX,MY8255_BOUTDX,ALCALLDISPDLYMOVBX,OFFSETDTABL