基于8086微处理器的温度控制系统.doc_第1页
基于8086微处理器的温度控制系统.doc_第2页
基于8086微处理器的温度控制系统.doc_第3页
基于8086微处理器的温度控制系统.doc_第4页
基于8086微处理器的温度控制系统.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录一、系统方案选取分析2二、系统硬件选择和设计31、系统扩展接口的选择32、温度传感器与AD转换器的选择33、显示接口芯片34、键盘输入3三、单元模块设计33.1温度控制与检测系统33.1.1 温度控制43.1.2 温度测量43.2 8086微处理器及其体系结构53.3 ADC0809与8255的连接53.4 8279的功能介绍63.5 LED显示器73.6键盘83.7报警部分电路连接8四、系统软件设计84.1系统流程图94.2、程序14六、小结23七、参考文献24摘 要:本文介绍了一种基于8086微处理器的温度控制系统,采用温度传感器AD590采集温度数据,用CPU控制温度值稳定在预设温度。当温度低于预设温度值时系统启动电加热器,当这个温度高于预设温度值时断开电加热器并报警。系统操作简便、自动化程度高、扩展方便且具有良好的人机交互的能力。该系统取得了较为满意的控制效果。可应用在一些精度要求不太高的系统中。为了降低整个系统的成本,在满足性能的要求下,选择低成本器件,简化系统设计。关键词:微处理器 温度传感器 A/D转换器 报警一、 系统方案选取分析设计一种温度监测系统将温度控制到某一设定值,并保持稳定。同时还可以根据实际需要重新设置温度并进行重新控制调节,使温度达到或超过一新的设定值,则产生报警信号进行报警。这里的重新设置和控制可以进行无限多次,当然这个设置值得在某一最大值范围之内,这里把最大值设为68。当设置温度大于68时,体统就会产生报警信号,蜂鸣器则开始报警。另外温度经过温度传感器后通过微处理器显示。 温度设定电压跟随器运算放大电路温度传感器AD转换器微处理器加热控制电路报警译码显示图 1.1系统原理框图二、 系统硬件选择和设计1、系统扩展接口的选择本次设计采用的是8086微处理器,选择8255A可编程并行接口作为系统的扩展接口,8255A的通用性强,适应灵活,通过它CPU可直接与外设相连接。2、温度传感器与AD转换器的选择本系统选用温度传感器AD590构成测温系统。AD590是一种电压输入、电流输出型集成温度传感器,测温范围为-55150,非线性误差在0。30,其输出电流与温度成正比,温度没升高1K(K为开尔文温度),输出电流就增加1uA。其输出电流I=(273+T)uA。本设计中串联电阻的阻值选用2K,所以输出电压V+=(2730 + 10T)MV.另外,为满足系统输入模拟量进行处理的功能,对其再扩展一片ADC0809,以进行模拟数字量转化。3、显示接口芯片为满足本次设计温度显示的需要,我们选择了8279芯片,INTEL8279芯片是一种通用的可编程的键盘、显示接口器件,单个芯片就能完成键盘键入和LED显示控制两种功能。4、键盘输入为满足输入设定温度我们采用四乘四矩阵键盘。三、单元模块设计本系统采用的是8086微处理器,选择8255A可编程并行接口作为系统的扩展接口,8255A的通用性强,适应灵活,通过它CPU可直接与外设相连接。温度控制系统对温度进行检测,然后通过A/D转换器(ADC0809)转换成数字信号输入主机。使用Intel8279可编程序的键盘、显示接口功能,完成键盘输入和显示控制两种功能。3.1温度控制与检测系统温度信息由温度传感器测量并转换成微安级的电流信号,经过运算放大电路将温度传感器输出的小信号进行跟随放大,输入到A/D转换器(ADC0809)转换成数字信号输入主机。数据经过标度转换后,一方面通过数码管将温度显示出来;另一方面,将该温度值与设定的温度值进行比较,调整电加热的开通情况,从而控制温度。在断开电加热时,温度仍然异常,报警器发出声音报警,提示采取相应的调整措施。3.1.1 温度控制当PC6为高电平时,三极管导通,继电器吸合,向加热系统输出12V电压加热;反之,输入低电平,三极管截止,继电器断开,停止加热。二极管的作用是吸收继电器端开时产生的浪涌电压。如图3.1所示。图3.1.1 温度控制3.1.2 温度测量AD590是AD公司生产的一种精度和线度较好的双端集成传感器,其输出电流与绝对温度有关,对于电源电压从5-10V变化只引起1uA最大电流的变化或1摄氏度等效误差。AD590输出的电流:I=(273+T)uA(T为摄氏温度)。因此测量的电压V为(273+T)uA10K=(2.73+T/100)V,为了将电压测量出来,又务必使电流I不分流出来。使用电压跟随器使其输出电压V2等于V 。由于一般电源供应多器件之后,电源是带杂波的,因此使用稳压二极管作为稳压元件,再利用可变电阻分压,其输出电压V1需调至2.73V。差动放大器其输出V0 为(100K/10K)(V2-V1)=T/10,如果现在为摄氏28,输出电压为2.8V。输出电压接AD转换器,那么AD转换输出的数字量就和摄氏温度成线性比例的关系。图3.1.2 温度测量 3.2 8086微处理器及其体系结构 8255的数据口D0-D7与CPU的6根控制线相连接,控制8255A内部的各种操作。控制线RESET用来使8255A复位。CS和地址线A1及A0用于芯片选择和通道寻址。分别与8086的高位地址线A19,A1,A0相连接。图 3.2 8086的可编程外设接口电路3.3 ADC0809与8255的连接模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。为了减少输入噪声其他通道直接接地。ADC0809的数据线D0-D7与8255的PB0-PB7相连接。其片选CS与8086的地址/数据总线AD14相连接。图3.3 ADC0809与8255的连接3.4 8279的功能介绍 Intel8279是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n键同时按下实行保护。显示部分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可以显示多达16位的字符或数字。INTEL 8279的逻辑符号如图7-28所示。它用于8085、MCS-51系统。它最多可外接8X8的键盘及16X8的七段数码显示器。图3.4 8279的逻辑符号3.5 LED显示器工作原理:发光二极管组成的显示器事单片机应用产品中最常用的廉价输出设备。它由若干个发光二极管按一定的规律排列而成。当某一个发光二极管导通时,相应的一个点或一个比划被点亮,控制不同组合的二极管导通,就能显示出多种字符。显示器的工作方式有两种,一种是静态显示:当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止。另一种事本次设计中采用的动态显示方式:所谓动态显示即一位一位轮流的点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。但由于时间间隔很小,我们就可以看到完整的显示了。 图 3.5 数据显示部分3.6 键盘键盘在本实验中的作用由于本设计需要向系统输入一个温度设定值,所以键盘起到了输入温度设定值的作用。 图3.6键盘连接部分3.7 报警部分电路连接 图3.7 报警部分电路四、 系统软件设计本设计的目的是以8086微处理器为控制器,将温度传感器输出的小信号经过放大和低通滤波后,送至A/D转换器;微控制器实时采集、显示温度值(要求以摄氏度显示),同时系统还应可设定、控制温度值,实现温度超值后报警的功能。4.1系统流程图主程序通过开始界面,显示提示信息,调用温度子程序,设置温度。通过模数转换器采集AD值并求其平均值。调用BCD码转换子程序将其转换为十进制温度值;调用显示子程序,如果温度低于实际温度,就加热,反之则报警。在此过程中,还可以重复设置温度值。其流程图如图4.1所示。N开始系统初始化显示提示信息调用温度值设置子程序实际温度低于给定值PA0=1加热8255 PC6口=1开始报警8255 PC7口=1显示提示信息调用温度值设置子程序重新设置温度并将PA0拨到0 以进行重新调节返回采集AD值并求其平均值调用BCD码转换子程序将其转换为十进制温度值调用显示子程序YYNNN有键按下 图 4.1主程序流程图2BCD码转换子程序设定温度为0摄氏度时变换放大电路送出的模拟量为0.0V,此时A/D输出的数字量为00H;温度为68时变换器送出对应电压4.98V,此时A/D输出的数字量为FFH,即每0.3对应1LSB的变化量,对应电压值为19.5mV。报警温度设定为68,此时,输出电压约为5.0V左右。其流程图如图4.2所示。通过移位得到组合BCD码 BCD码转换子程序将采集得到的平均值乘以0.3 转换为温度值返回对其进行非压缩BCD码乘法调整图4.2 BCD码转换子程序3.显示子程序采用动态显示方式,其流程图如图4.3所示。4.温度值设置子程序问了避免加热温度过高,在程序设计中加了一条,即设定值不能大于68,否则就认为有错系统报警。其流程图如图4.4所示。得到温度值各位上的数通过查表指令得到对应的数码管的断码温度值设置子程序键入温度值十位上的数值将它存于DI键入温度值个位上的数值将它存于DI+1将十位上的数值左移四位并与个位上的数值既得温度值设置温度大于68将温度值存于DI+1返回声音报警并显示错误信息返回显示温度值十位上的数值延时返回显示子程序NY图 4.4温度值设置先将十进制温度值(AL)送到(BL)通过查表指令得到对应的数码管的断码显示温度值个位上的数值延时取出(BL)中的温度值得到温度值十位上的数值图4.3显示子程序5、扫描按键子函数流程图 开始写入8279控制字有键按下?NONO KEYYES读FIFO/ROM,键号转化为键值并输出RET图4.5 按键扫描流程图结束第 24 页 共 24 页4.2、程序CSAD EQU 209HZ8279 EQU 212HD8279 EQU 210HLEDMOD EQU 00H; 左边输入,八位显示外部译码八位显示LEDFEQ EQU 38H; 扫描频率LEDCLS EQU 0C1H; 清除显示RAMZ8255 EQU 21BHZ8255A EQU 218HZ8255C EQU 21AHCOUNT EQU 8DATA SEGMENTDATA1 DB 4 DUP(?)MESS1 DB ENTER ANY KEY TO BEGIN! ,0DH,0AH, $MESS2 DB 10, 13, ENTER ANY KEY CAN EXIT TO DOS! ,0DH,0AH, $MESS3 DB 10, 13, INPUT THE TEMPERATURE VALUE:, $MESS4 DB 10, 13, INPUT VALUE ERROR!,0DH,0AH, $ MESS5 DB 10, 13, INPUT A NEW TEMPERATURE VALUE:, $MESS6 DB 10, 13, * LET PA0=0 TO ADJUST THE TEMPERATURE VALUE!*,0DH,0AH, $ MESS7 DB 10, 13, * LET PA0=1 TO INPUT A NEW TEMPERATURE VALUE!*, 0DH,0AH, $LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39HDATA ENDSSTACK SEGMENT SRACKSTA DW 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS: CODE,DS: DATA,ES: DATA,SS: STACKSTART: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AH,09H ; 显示提示信息一 MOV DX, OFFSET MESS1 INT 21HMOV AH,09H ; 显示提示信息六 MOV DX, OFFSET MESS6 INT 21H MOV AH,09H ; 显示提示信息七 MOV DX, OFFSET MESS7 INT 21H MOV AH,08H INT 21H MOV AH,09H ; 显示提示信息三 MOV DX, OFFSET MESS3 INT 21H CALL input ; 输入设置的温度值存DATA1OK: MOV DX, Z8255 ; 设置A口为输入,C口为输出 MOV AL, 92H OUT DX, AL MOV DX, Z8255C MOV AL, 00H OUT DX, AL CALL delay CALL delay MOV DX, Z8279 ; 初始化8279 MOV AL, LEDMOD OUT DX, AL MOV AH, 09H ; 显示提示信息二 MOV DX, OFFSET MESS2 INT 21HBEGIN: MOV BX, 0 MOV CL, COUNT MOV CH, 0BB: MOV DX, CSAD ; 启动A/D MOV AX, 0 OUT DX, AL CALL delay IN AL, DX ; 采样A/D值 ADC BX, AX ; 求平均值LOOP BB MOV AX, BX RCR AX, 1 RCR AX, RCR AX, 1 CALL changtoBCD ; 转化为十进制的温度值 MOV DI, OFFSET DATA1 MOV DI+3 , AL CALL DIS MOV DI, OFFSET DATA1 MOV BL, DI+2 ; 取输入值 MOV AL, DI+3 ; 取实际值 CMP AL, BL ; 实际值与输入值比较 JB UP ; 小于则加热 MOV DX, Z82555A ; 否则读开关量 IN AL, DX AND AL, 01H JZ DOWN ; PA0=0 则停止加热 MOV AH, 09H; PA0=1 则设置新的温度值,并将PA0切换到0进行新的控制调节 MOV DX, OFFSET MESS5 INT 21H CALL input JMP BEGINUP: MOV AL, 40H JMP AADOWN: MOV AL, 00HAA: MOV DX, Z8255C OUT DX, AL MOV AH, 0BH ; 坚持键盘状态,有键按下则返回DOC INT 21H CMP AL, 0 JZ CC MOV AX, 4C00H INT 21HCC: JMP BEGINDelay PROC NEAR ; 延时子程序 PUSH CX MOV CX, 0F00H LOOP $ POP CX RET Delay ENDPInput PROC MEAR ;温度值的设置子程序 LEA DI,buffer2;利用buffer2读入键盘输入值KeyA:CALLSCAN_KEY JNCKeyA STOSB;读入第一个键值(温度的十位)KeyB:CALLSCAN_KEY JNCKeyB STOSB;读入第二个键值(温度个位) CALLDIS PROC;调用显示函数 MOV DI, OFFSET DATA1 MOV DI, AL MOV BH, AL MOV AH, 1L INT 21H MOV DI+1, AL MOV BL, AL AND BH, 0FH RCL BH, 1 RCL BH, 1 RCL BH, 1RCL BH, 1 AND BH, 0FH OR BL, BH MOV AL, BL CMP AL, 76H ; 输入温度大于76则显示错误提示信息 JA erro MOV DI+2, AL RET Input ENDPSCAN_KEY PROC NEAR MOV DX,CMD_8279 IN AL,DX;读状态READ_FIFO: ANDAL,7 ;(判断是否为0.与7相与操作,有键按下不为0) JZ NO_KEY ;是否有键按下READ: MOV AL,40H OUT DX,AL ;读FIFO RAM MOV DX,DATA_8279 IN AL,DX ANDAL,3FH STC;有键SCAN_KEY1:RETNO_KEY: CLC ;(CF置0) ;无键按下,清CY JMP SCAN_KEY1SCAN_KEY ENDPERR: MOV AH, 09H ; 显示错误提示信息 MOV DX, OFFSET MESS4 INT 21H MOV AX, 4C00H INT 21H MOV DX, OFFDBH MOV AL, 21AH OUT DX, AL CALL delay RETChange toBCD PROC NEAR ; BCD码转换子程序MOV BL, 3 MUL BL MOV BL, 10 DIV BL AAM ; 非压缩BCD码乘法调整指令 MOV BL, AL MOV AL, AH MOV CL, 04H ROR AL, CL XOR AL, BL RET Change toBCD ENDPDIS PROC NEAR ; 显示子程序 MOV BL, AL MOV AL, 0FH PUSH AX MOV DX , Z8279 MOV AL , 90H OUT DX, AL POP AX PUSH BX LEA BX, LED XLAT POP BX MOV DX, D8279 OUT DX, AL CALL delay MOV AL, BL MOV CL, 04H ROR AL, CL AND AL, 0FH LEA BX, LED XLAT MOV DX, D8279 OUT DX, AL CA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论