单片机温度控制
- 格式:doc
- 大小:204.97 KB
- 文档页数:14
工程实训报告单片机温度控制系统设计班级:学号:姓名:实训日期:2008年11月24日至2008年12月12日第1章单片机温度系统概述1.1 引言在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。
例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。
采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。
因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。
1.2 设计摘要本文介绍了基于单片机AT89C51 的温度控制系统的设计方案与软硬件实现。
采用温度传感器DS18B20 采集温度数据,液晶显示屏LCM1602 显示温度数据,AT24C02B 存储温度上下限设定值,按键设置温度上下限并可改变加热器与致冷器的温控状态,当温度低于设定的下限时,单片机启动加热器加热,同时点亮绿色发光二极管,当温度高于设定的上限时,单片机启动致冷器降温,同时点亮红色发光二极管。
给出了系统总体框架、程序流程图和Proteus 仿真结果,并在硬件平台上实现了所设计的功能。
1.3 系统总体设计系统主要包括单片机控制模块,温度采集模块,温度显示模块,温度上下限调整模块,电机驱动模块和外部存储模块等六大部分。
系统总体框架如图1 所示。
第2章硬件电路设计2.1 单片机控制模块控制模块是整个设计方案的核心,它控制了温度的采集、处理与显示、温度上下限值的设定与温度越限时电机的启动。
本文选用AT89C51 作为控制器件。
它是美国ATMEL 公司生产的8 位Flash ROM 单片机。
其最突出的优点是片内ROM 为Flash ROM,可方便地擦写1000 次以上,价格低廉,而且其指令丰富,编译工具多,仿真环境好。
因此被广泛地应用于各种控制领域。
本控制系统中AT89C51 与外围设备的连接关系如图2 所示:由图2 可知,温度数据采集模块中温度传感器DS18B20 的DQ 端接P1.7;显示模块LCM1602的DB0~DB7 数据端口接P0.0~P0.7,数据命令选择端RS 接P2.0,读写选择端接P2.1,使能信号接P2.2;温度上下限调整模块包括模式切换、增加温度上下限值、减少温度上下限值、温控开关等四个功能,它们分别接P1.0~P1.3;外部存储模块为AT24C02B,其SCK、SDA 分别接P2.3 与P2.4;电机控制电路与P3.6 和P3.7 相连;XTAL1、XTAL2 接振荡电路,RST 接复位电路,EA 接高电平,LCM1602 上的VO、RST 接电源+5V,GND 接地。
2.2温度数据采集模块温度由DALLAS 公司生产的一线式数字温度传感器DS18B20 采集。
DS18B20 测温范围为-55°C~+125°C,测温分辨率可达0.0625°C,被测温度用符号扩展的16 位补码形式串行输出。
CPU 只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
DS18B20 内部有一个9 字节的高速存储器用于存储温度值。
其中前两个字节是测得的温度数据,第1 字节的内容是温度的低八位,第2 字节是温度的高八位,第3 和第4 字节是温度上限 TH 与温度下限 TL 的易失性拷贝,第5 字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新,第6、7、8 这三个字节用于内部计算,第9个字节是冗余检验字节,可用来保证通信的正确性。
当温度转换命令发出后,经转换所得的温度值以二字节补码形式存放在此存储器的第1 和第2 个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,其中高5 位是符号位,中间7 位是整数位,最低4 位是小数位。
DS18B20 最大的特点是单总线数据传输方式,因此对读写的数据位有着严格的时序要求。
时序包括:初始化时序、读时序、写时序。
每一次命令和数据的传输都是从单片机启动写时序开始,如果要求DS18B20 回送数据,在进行写命令后,单片机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20 的时序及命令请参考文献[1]。
2.3 LCM1602LCM1602 是2 行×16 个字符的字符型LCD 显示器,它由32 个字符点阵块组成,每个字符点阵块由5×7 或5×10 个点阵组成,可以显示ASCII 码表中的所有可视的字符。
它内置了字符产生器ROM (Character Generator ROM,CGROM)、字符产生器RAM (CharacterGenerator RAM, CGRAM)和显示数据RAM(Data Display RAM, DDRAM)。
CGROM 中内置了192个常用字符的字模,CGRAM 包含8 个字节的RAM,可存放用户自定义的字符,DDRAM 就是用来寄存待显示的字符代码。
DDRAM 地址与显示位置的对应关系以及LCM1602 的指令与读写时序可参考文献[2]。
2.4外部存储模块外部存储模块采用美国ATMEL 公司生产的低功耗CMOS 型E2PROM 器件AT24C02B,它内含256×8 位存储空间,具有工作电压宽(2.5~5.5 V)、擦写次数多(大于10000 次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。
它采用了I2C 总线规程,使主/从机双向通信。
主机通过SCL 引脚产生串行时钟信号并发出控制字,控制总线数据传送的开始、方向和停止。
无论是主机还是从机,接收到一个字节后必须发出一个确认信号。
AT24C02B 占用很少的资源和I/O 线,并且支持在线编程,数据实时存取十分方便。
AT24C02B 的读写时序及控制字见参考文献[3]。
2.5 温度上下限设置模块温度上下限设置模块包括四个按键:(1)模式切换键:进行模式之间的切换,模式包括设置温度上限模式、设置温度下限模式,每次按下该键就在这两种模式之间切换。
(2)温度上下限增加键:增加温度上下限的值。
(3)温度上下限减少键:减少温度上下限的值。
(4)温控开关键:是温控与非温控之间的切换键。
它用于设置是否进行温度控制即是否让越界的温度值触发加热器或致冷器的启动。
2.6 控制电路模块该部分电路有光耦合元件4N25、继电器、三极管,若干电阻等构成。
这部分电路的主要作用是光电隔离,即消除后级电机对前级单片机的影响。
三极管使用的是9013,9013是NPN 型的,把其集电极接+5V 电压,射极接继电器。
当单片机引脚给出低电位时,4N25内部的发光二极管亮,使其内部的三极管导通,继而通过第4 引脚上的10K 电阻分得电压。
当4N25 给其基极提供足够的电压时9013 导通。
继电器的常开开关闭合,电机上电工作。
第3章系统软件设计主程序调用了5 个子程序,分别是LCD 显示程序、按键扫描及处理程序、温度采集程序、温度越界判决程序、AT24C02B 读写程序。
LCD 显示程序,用于温度等数据的实时显示;按键扫描及处理程序,实现按键识别、按键输入及相关处理;温度采集程序负责把DS18B20所采集的现场温度读入到指定的数组中;温度越界判决程序,对现场温度与设定的温度上下限进行比较,若温度越界,并且当温控开关处于开启状态时,启动加热器或致冷器工作;AT24C02B 读写程序,存储和调用设定的温度上下限值。
图3 为系统主程序与按键扫描程序的流程图。
有关温度采集的程序及流程图可参考文献[4]。
第4章试验结果及结论PROTEUS 仿真:按照图2 所示电路原理图,在Proteus 里面建立元器件连接关系。
根据设计功能要求在Keil μVision3 环境下编写C 语言程序,并编译连接生成十六进制的hex 文件,把此文件加载到单片机,就可以进行Proteus 仿真了。
图4 是当温度低于所设定的下限值并且温控开关处于激活状态时,绿色二极管亮,同时加热器启动的仿真结果。
第5章结束语本文详细讲述了系统设计方案,并给出了相关程序流程。
本设计应用性比较强,可以应用在仓库温度、大棚温度、机房温度等的监控。
另外,如果把本设计方案扩展为多点温度控制,加上上位机,则可以实现远程温度监控系统,将具有更大的应用价值。
本文的创新点在于详细设计了基于单片机AT89C51 的温度监控系统,进行了Proteus 仿真,所设计程序已经在硬件平台上成功运行.此系统可广泛用于温度在DS18B20 测温范围之内的场合,有良好的应用前景。
附录图4源程序ORG 00HSTART:ANL P1,#00H;显示00JB P3.4 ,$ ;T0=0?有键按下?CALL DELAY1 ;消除抖动JNB P3.4 ,$;T0=1?放下?MOV R0 ,#00;计温指针初值L1: MOV A , R0 ;计温指针载入ACC MOV P1 , A ;输出至P1显示MOV R5 , #10 ;延时1秒A1:MOV R6 , #200D1:MOV R7 , #248 ;0.5毫秒JNB P3.4 ,L2 ;第2次按下T0?DJNZ R7,$DJNZ R6,D1DJNZ R5,A1INC ADA AMOV R0 , AJMP L1L2:CALL DELAY1 ;第2次按消除抖动JB P3.4 ,L3 ;放开了没?是则;跳至L3停止JMP L2L3: MOV A ,R0CALL CHANGEMOV 31H , A ;下限温度存入31HJB P3.5 ,$ ;T1=0?有键按下?CALL DELAY1 ;消除抖动JNB P3.5 ,$ ;T1=1?放开?MOV R0 ,#00 ;计温指针初值L4:MOV A ,RO ;计温指针载入ACC MOV P1 , A ;显示00MOV R5 ,#10 ;延时1秒A2:MOV R6 ,#200D2:MOV R7 ,#248 ;0.5毫秒JNB P3.5 ,L5 ;第二次按下T1?DJNZ R7 ,$DJNZ R6 ,D2DJNZ R5 , A2ADD A , #01HDA AMOV R0 , AJMP L4L5:CALL DELAY1 ;第2次按消除抖动JB P3.5 ,L6 ;放开了?是则跳至L6 JMP L5L6:MOV A, RO ;CALL CHANGEMOV 30H ,A ;上限温度存入30HDELAY1:MOV R6 ,#60 ;30毫秒D3:MOV R7 , #248DJNZ R7 , $DJNZ R6 , D3RETCHANGE:MOV B ,#5MUL ABJNO D4SETB CD4:RRC ARETMOV 32H ,#0FFH ;32H旧温度寄存;器初值AAA:MOVX @R0 , A;使BUS为高阻抗;并令ADC0804开始转换WAIT:JB P2.0 ,ADC ;检测转换完成否 JMP WAITADC:MOVX A ,@RO ;将转换好的值送入;累加器MOV 33H ,A ;将现在温度值存入33H CLR C ;C=0SUBB A ,32HJC TDOWN ;C=0取入值较大,表示;温度上升,C=1表示下降TUP:MOV A, 33H ;将现在温度值存入A CLR CSUBB A ,30H ;与上限温度作比较JC LOOP ;C=1时表示比上限小须;加热,C=0表示比上限大,停止加热SETB P2.1JMP LOOPTDOWN:MOV A ,33H ;将现在温度值存入A CLR CSUBB A ,31H ;与下限温度作比较JNC LOOP ;C=1时表示比下限小,须;加热,C=0表示比下限大CLR P2.1 ;令P2.1动作LOOP:MOV 32H ,33HCLR AMOV R4 ,#0FFH ;延时DJNZ R4 ,$JMP AAAEND参考文献[1] 周润景,张丽娜.基于PROTEUS 的电路及单片机系统设计与仿真[M].北京:航空航天大学出版 ,2006.P321~P326[2]王忠飞,胥芳.MCS-51 单片机原理及嵌入式系统应用[M].西安:西安电子科技大学出版社,2007.P268-273[3] Microchip 24C01B/02B 8 位PIC®单片机产品手册[ED/OL],/publish/data/2007/2/data_14_27926.html.[4]赵娜,赵刚,于珍珠等.基于51 单片机的温度测量系统[J]. 微计算机信息,2007,1-2:146-148。