《温度控制系统设计》报告.docx
《《温度控制系统设计》报告.docx》由会员分享,可在线阅读,更多相关《《温度控制系统设计》报告.docx(17页珍藏版)》请在冰豆网上搜索。
《温度控制系统设计》报告
计算机硬件技术课程设计
实践报告
学院:
自动化工程学院
班级:
2012153
姓名:
徐建红
学号:
20102600
2015年1月21日
1、设计题目
温度控制系统的设计
2、开发目的
利用8086微处理器设计出符合下面要求的系统:
1)采用温度传感器AD590采集温度数据,CPU控制温度值稳定在预设温度。
2)当温度低于预设温度值时系统自动启动电加热器,温度高于预设温度值时断开电加热器,数码管上输出的数字就是对应于所测量的实际温度。
3)根据实际需要设置温度并进行重新控制调节,使温度达到设定值并保持稳定,最大值为76.8℃,温度大于76.8℃时,系统会报错并退出系统。
3、设计方案
图1-1系统原理框图
因为温度传感器在仿真中无法使用,故用一滑动变阻器代替。
四、硬件原理图
本系统在8086微处理器为核心的基础上,在扩展8255A,ADC0809,8279,AD590,LED数码管,继电器等器件,从而构成整个硬件系统。
8086CPU的编程结构及引脚
8086CPU包括两大部分:
EU和BIU
BIU不断地从存储器取指令送入IPQ,EU不断地从IPQ取出指令执行;EU和BIU构成了一个简单的2工位流水线;指令预取队列IPQ是实现流水线操作的关键(类似于工厂流水线的传送带)。
AD7~AD0:
三态,地址/数据复用线。
ALE有效时为地址的低8位。
地址信号有效时为输出,传送数据信号时为双向。
A19~A16:
三态,输出。
高4位地址信号,与状态信号S6-S3分时复用。
A15~A8:
三态,输出。
输出8位地址信号。
WR:
三态,输出。
写命令信号;
RD:
三态,输出。
读命令信号;
IO/M:
三态,输出。
指出当前访问的是存储器还是I/O接口。
高:
I/O接口,低:
内存
DEN:
三态,输出。
低电平时,表示DB上的数据有效;
RESET:
输入,为高时,CPU执行复位;
ALE:
三态,输出。
高:
AB地址有效;
DT/R:
三态,输出。
数据传送方向,高:
CPU输出,低:
CPU输入
8255A
8255A
主要功能:
含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存/缓冲能力。
可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
主要引脚:
连接外设端的引脚:
PA0~PA7、PB0~PB7、PC0~PC7(分别对应A、B、C三个8位输入/输出端口)三个端口可通过编程分别指定为输入或输出口。
其中,C口即可用作独立的输入/输出口,也可用作A、B口的握手联络信号(控制信号输出或状态信号输入)。
ADC0809
ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
8279键盘、显示接口电路
Intel8279是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。
键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n键同时按下实行保护。
显示部分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可以显示多达16位的字符或数字。
LED显示器工作原理
发光二极管组成的显示器事单片机应用产品中最常用的廉价输出设备。
它由若干个发光二极管按一定的规律排列而成。
当某一个发光二极管导通时,相应的一个点或一个比划被点亮,控制不同组合的二极管导通,就能显示出多种字符。
五、系统流程图
1、主程序
通过开始界面,显示提示信息,调用温度子程序,设置温度。
通过模数转换器采集A\D值并求其平均值。
调用BCD码转换子程序将其转换为十进制温度值;调用显示子程序,如果温度高于实际温度,就加热,反之拨动开关关闭,停止加热。
在此过程中,还可以重复设置温度值。
其流程图如图5-1所示。
2、BCD码转换子程序
设定温度为0摄氏度时变换放大电路送出的模拟量为0.0V,此时A/D输出的数字量为00H;温度为76.5℃时变换器送出对应电压4.98V,此时A/D输出的数字量为FFH,即每0.3℃对应1LSB的变化量,对应电压值为19.5mV。
报警温度设定为76.8℃,此时,输出电压约为5.0V左右。
其流程图如图5-2所示。
图5-2
3.显示子程序
采用动态显示方式,其流程图如图5-3所示。
4.温度值设置子程序
为了避免加热温度过高,在程序设计中加了一条,即设定值不能大于76.8℃,否则就认为有错系统报警。
其流程图如图5-4所示。
图5-3
六、程序清单
CSADEQU209H
Z8279EQU212H
D8279EQU210H
LEDMODEQU00H;左边输入,八位显示外部译码八位显示
LEDFEQEQU38H;扫描频率
LEDCLSEQU0C1H;清除显示RAM
Z8255EQU21BH
Z8255AEQU218H
Z8255CEQU21AH
COUNTEQU8
DATASEGMENT
DATA1DB4DUP(?
)
MESS1DB‘ENTERANYKEYTOBEGIN!
’,0DH,0AH,’$’
MESS2DB10,13,’ENTERANYKEYCANEXITTODOS!
’,0DH,0AH,’$’
MESS3DB10,13,’INPUTTHETEMPERATUREVALUE:
’,’$’
MESS4DB10,13,’INPUTVALUEERROR!
’,0DH,0AH,’$’
MESS5DB10,13,’INPUTANEWTEMPERATUREVALUE:
’,’$’
MESS6DB10,13,’***LETPA0=0TOADJUSTTHETEMPERATUREVALUE!
***’,0DH,0AH,’$’
MESS7DB10,13,’***LETPA0=1TOINPUTANEWTEMPERATUREVALUE!
***’,0DH,0AH,’$’
LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H
DATAENDS
STACKSEGMENTSRACK
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAH,09H;显示提示信息1
MOVDX,OFFSETMESS1
INT21H
MOVAH,09H;显示提示信息6
MOVDX,OFFSETMESS6
INT21H
MOVAH,09H;显示提示信息7
MOVDX,OFFSETMESS7
INT21H
MOVAH,08H
INT21H
MOVAH,09H;显示提示信息3
MOVDX,OFFSETMESS3
INT21H
CALLinput;输入设置的温度值存DATA1
OK:
MOVDX,Z8255;设置A口为输入,C口为输出
MOVAL,92H
OUTDX,AL
MOVDX,Z8255C
MOVAL,00H
OUTDX,AL
CALLdelay
CALLdelay
MOVDX,Z8279;初始化8279
MOVAL,LEDMOD
OUTDX,AL
MOVAH,09H;显示提示信息2
MOVDX,OFFSETMESS2
INT21H
BEGIN:
MOVBX,0
MOVCL,COUNT
MOVCH,0
BB:
MOVDX,CSAD;启动A/D
MOVAX,0
OUTDX,AL
CALLdelay
INAL,DX;采样A/D值
ADCBX,AX;求平均值
LOOPBB
MOVAX,BX
RCRAX,1
RCRAX,
RCRAX,1
CALLchangtoBCD;转化为十进制的温度值
MOVDI,OFFSETDATA1
MOV[DI+3],AL
CALLDIS
MOVDI,OFFSETDATA1
MOVBL,[DI+2];取输入值
MOVAL,[DI+3];取实际值
CMPAL,BL;实际值与输入值比较
JBUP;小于则加热
MOVDX,Z82555A;否则读开关量
INAL,DX
ANDAL,01H
JZDOWN;PA0=0则停止加热
MOVAH,09H;PA0=1则设置新的温度值,并将PA0切换到0进行新的控制调节
MOVDX,OFFSETMESS5
INT21H
CALLinput
JMPBEGIN
UP:
MOVAL,40H
JMPAA
DOWN:
MOVAL,00H
AA:
MOVDX,Z8255C
OUTDX,AL
MOVAH,0BH;坚持键盘状态,有键按下则返回DOS
INT21H
CMPAL,0
JZCC
MOVAX,4C00H
INT21H
CC:
JMPBEGIN
delayPROCNEAR;延时子程序
PUSHCX
MOVCX,0F00H
LOOP$
POPCX
RET
delayENDP
inputPROCMEAR;温度值的设置子程序
MOVAH,1H
INT21H
MOVDI,OFFSETDATA1
MOV[DI],AL
MOVBH,AL
MOVAH,1L
INT21H
MOV[DI+1],AL
MOVBL,AL
ANDBH,0FH
RCLBH,1
RCLBH,1
RCLBH,1
RCLBH,1
ANDBH,0FH
ORBL,BH
MOVAL,BL
CMPAL,76H;输入温度大于76则显示错误提示信息
JAERR
MOV[DI+2],AL
RET
inputENDP
ERR:
MOVAH,09H;显示错误提示信息
MOVDX,OFFSETMESS4
INT21H
MOVAX,4C00H
INT21H
ChangetoBCDPROCNEAR;BCD码转换子程序
MOVBL,3
MULBL
MOVBL,10
DIVBL
AAM;非压缩BCD码乘法调整指令
MOVBL,AL
MOVAL,AH
MOVCL,04H
RORAL,CL
XORAL,BL
RET
ChangetoBCDENDP
DISPROCNEAR;显示子程序
MOVBL,AL
MOVAL,0FH
PUSHAX
MOVDX,Z8279
MOVAL,90H
OUTDX,AL
POPAX
PUSHBX
LEABX,LED
XLAT
POPBX
MOVDX,D8279
OUTDX,AL
CALLdelay
MOVAL,BL
MOVCL,04H
RORAL,CL
ANDAL,0FH
LEABX,LED
XLAT
MOVDX,D8279
OUTDX,AL
CALLdelay
CALLdelay
RET
DISENDP
CODEENDS
ENDSTART
七、程序运行结果分析
通过前一部分的介绍说明,我们对系统的工作情况有了大体的了解。
为了进一步了解系统的工作过程,这里介绍一下系统调试过程及调试过程中出现的一些具体的问题。
我们的实验调试软件运行于DOC环境下,其步骤如下:
一、根据硬件图和原理图连接好线路。
二、在PC机上敲入程序,并对其进行的查错,编译,连接,最后生成可执行文件。
三、接上电源,敲入可执行文件的文件名,系统就开始了工作过程。
1)这是DOC屏幕上会出现的一些提示信息,如
’ENTERANYKEYTOBEGIN!
’
’***LETPA0=0TOADJUSTTHETEMPERATUREVALUE!
***’
’***LETPA0=1TOINPUTA
NEWTEMPERATUREVALUE!
***’
这里后两条只作注释用。
2)然后敲任意一个键,系统就开始进行温度测量和显示,屏幕上就会显示
’INPUTTHETEMPERATURE:
’
在这一条信息之后敲入一温度值。
注意这里敲入的温度值不能大于76摄氏度,否则屏幕将会显示’INPUTVALUEERROR!
’并返回DOC。
(以后重新设定温度时也是如此)
3)在正常情况下,敲入设定温度后系统就开始进行控制调节,当实际温度小鱼设定值时,系统就开始进行加热,如果不加改变,它就会加热一直稳定到设定的温度值;如果这是想重新设置一温度,只要把8255的PA0读取拨动开关拨到1,屏幕上就会显示:
‘INPUTANEWTEMPERATURE:
’
这里又得注意一下,在敲入一个新的设定温度之前,得先把PA0读取拨动开关拨到0,否则,在敲完设定温度之后,屏幕上又会显示同样一条信息。
因为它是根据PA0是0还是1来决定是去重新输入设定温度还是去调节温度。
如果不先把PA0拨为0,它就是一直让你输入却不进行调节。
另外,这里温度值的设定的次数没有限制。
八、总结