配色: 字号:
基于单片机的温度控制器设计
2012-05-04 | 阅:  转:  |  分享 
  
技术参数和设计任务:1、利用单片机AT89S51实现对温度物理量的控制,以实现对温度控制的目的;2、为达到电源输出5V电压目标,完成电源电路的设计;3、为达到数码管显示目标,完成显示电路的设计;4、为达到键盘控制的目标,完成键盘电路的设计;5、为达到检测温度的目标,完成检测电路的设计;6、完成报警设计;7、进行软件设计[分配系统资源,编写系统初始化和主程序模块;编写数字调节器软件模块;编写A/D转换器处理程序模块;编写输出控制程序模块;其它程序模块(数字滤波、显示与键盘等处理程)等等。

一、本课程设计系统概述1、系统原理温度传感器DS18B20从设备环境的不同位置采集温度,单片机AT89S51获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备(),当采集的温度经处理后低于设定温度的下时,单片机通过三极管驱动继电器开启升温设备()。当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。存储温度变化时的历史数据,以便观察整个温度的控制过程及监控温度的变化全过程AT89S51单片机为主控核心设计的一个温度控制系统,低温时可控制加热设备,高温时控制风扇,超出设定最高温度值时蜂鸣器发出声响报警。



图1总体硬件方框图

3、文字说明控制方案(1)温度测量部分方案

DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125,可编程为9~12位A/D转换精度,测温分辨率可达00625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B20非常用于远距离多点温度检测系统AT89S51是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

电源空闲标志:电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。

存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。

程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89S51假如接至Vcc(电源+),程序首先执行从地址0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。

数据存储器:在AT89S51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。

看门狗定时器(WDT):WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看狗复位SFR(WDTRST)构成。外部复位时,WDT默认为关闭状态,要打开WDT,必按顺序将01H和0E1H写到WDTRST寄存器,当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。引脚图详见图3



图3AT89S51单片机引脚图

二、各单元硬件设计(1)键盘单元单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。键开关状态的可靠输入:为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响对照图示的44键盘,说明线反转法工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。

键盘共有16个按键,用于方便设定温度。



…,数字按键,输入数字0----9;



设置的确认,修改设置温度时进行确认;



设置的清除,修改设置温度时进行删除;

开启电源



关闭电源



显示及设置转换到温度点1,按此按键后,显示预设置温度的数码管闪烁;



显示及设置转换到温度点2,按此按键后,显示预设置温度的数码管闪烁;



表3系统键盘的按键分布表

P2.0 0 1 2 3 P2.1 4 5 6 7 P2.2 8 9 F1 F2 P2.3 清除 开启 关闭 确定 P2.4 P2.5 P2.6 P2.7













(2)温度控制及超温和超温警报单元当采集的温度经处理后超过规定温度上限时,单片机通过P1.4输出控制信号驱动三极管D1,使继电器K1开启降温设备():当采集的温度经处理后低于设定温度下限时,单片机通过P1.5输出控制信号驱动三极管D2,使继电器K2开启升温设备()。当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。

图4单片机控制信号

其原理是:当继电器突然断电时,继电器产生很大的反向电流。二极管的作用是将反向电流分流,使流过三级管8050的电流比较小,达到保护三极管8050的作用。

(5)七段数码管显示单元本部分电路主要使用七段数码管和移位寄存器芯片74LS164。单片机通过I2C总线将要显示的数据信号传送到移位寄存器芯片74LS164寄存,再由移位寄存器控制数码管的显示,从而实现移位寄存点亮数码管显示

当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。串行数据输入端(A,B)可控制数据。当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态,逻辑封装图如图5:



图5逻辑封装图

引出端符号:CLOCK时钟输入端;CLEAR同步清除输入端(低电平有效);A,B串行数据输入端;QA-QH输出端。真值表:表4

表4系统真值表

Input Output Clear Clock A B QA QB … QH L X X X L L … L H L X X QAD QBD … QHD H ↑ H H H QAN … QGN H ↑ L X L QAN … QGN H ↑ X L L QAN … QGN



图6数码管实际连线图

(6)接口通讯单元max232资料简介该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接

图7通讯接口连线图

(7)电源输入部分控制系统主控制部分电源需要用5V直流电源供电,其电路如图10所示,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。本电路使用集成稳压芯片7805解决了电源稳压问题。如图8

图8电源部分连线图

三、软件设计(1)程序结构分析

键盘扫描电路及按键处理程序:键盘的输入按键的识别及进入相应的程序。

温度信号处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。

数码管显示程序:向数码的显示送数,控制系统的显示部分。

继电器控制程序:控制继电器动作

串口通讯程序:实现PC机与单片机通讯,将温度数据传送给PC机。

(2)主程序





图9主程序图

程序开始的时候先设置初始化,然后就控制数码管显示当前温度。接着就判断F1、F2按键是否被按下。按下F1进入温度控制点1的程序、按下F2进入温度控制点2的程序。程序控制设置温度的两个数码管闪烁的,此时键盘输入有效。有按键按下的时候进入按键处理程序。按下“确定”按键后,程序进入判断程序和继电器控制程序。继电器动作后,程序回到显示当前程序,并开始循环。

(3)程序代码

主程序:

ORG0000H;DS18B20.ASMDS18SLEQU41H;用于保存读出温度的低8位DS18SHEQU40H;用于保存读出温度的高8位DS18FIGEQU8H;是否检测到DS18B20标志位A_BIT1EQU31H;数码管个位数存放内存位置B_BIT1EQU32H;数码管十位数存放内存位置D_BIT1EQU35H?;数码管百位数存放内存位置DS18CD1EQU42H;DS18CD1-DS18CD8暂存64位ROMDS18CD2EQU43H;从低到高DS18CD3EQU44HDS18CD4EQU45HDS18CD5EQU46HDS18CD6EQU47HDS18CD7EQU48HDS18CD8EQU49HDS1864BEQU4AHDS18ADSEQU4BHDS18DQEQUP1.0;30H,31H,32H,33H:

X个位十位XMOD7:MOVSP,#60HLCALLGET_TEMPER;调用读温度子程序LCALLREADCODEAJMPMOD7

INIT_1820:???;DS18B20初始化SETBDS18DQCLRDS18DQ?;延时,500US低MCMOVR7,#250DJNZR7,$MOVR7,#150DJNZR7,$SETBDS18DQ??;释放总线LCALLDELAY60US??;15-60US的等待时间MOVR6,#4SETDSDQ:LCALLDELAY60USJNBDS18DQ,SETDSDQFH;60-240US内是否有返回信号,为0跳DJNZR6,SETDSDQMOVR7,#250DJNZR7,$CLRDS18FIGRETSETDSDQFH:SETBDS18FIGMOVR7,#250??DJNZR7,$MOVR7,#100DJNZR7,$RET;

数据处理TEMP0:INCAAJMPTEMP1TEMPCOV:MOVA,DS18SL;数据处理子程序

TEMPCOVMOVB,#16DIVABJBB.3,TEMP0TEMP1:MOV34H,A;将DS18SL的高四位右移四位,存入34H中(温度值)MOVA,B;将DS18SL的低四位X10/16得小数后一位数.MOVB,#10MULABMOVB,#16DIVABMOV30H,A;将小数后一位数.存入30H中MOVA,DS18SH;DS18SH中存放高8位数,权重16MOVB,#16MULABADDA,34H;34H中存入温度值的整数部分MOVB,#10DIVABMOV31H,B;个位存入31H中MOVB,#10;DIVAB;MOV32H,B;十位存入32H中MOVB,#10;DIVAB;MOV35H,B;百位存入33H中MOVA,DS18SHMOV33H,#10H;JBACC.7,EXIT7MOV33H,#00HEXIT7:RET

GET_TEMPER:;读出转换后的温度值,并显示SETBDS18DQLCALLINIT_1820;先复位DS18B20JBDS18FIG,TSS2RET;判断DS1820是否存在?若DS18B20不存在则返TSS2:MOVDS18ADS,#0DS18JX:LCALLDS18CODPMOVA,DS18ADSADDA,#9MOVDS18ADS,ACJNEA,#63,DS18JXRETDS18CODP:LCALLMRCOVT;转换指定的DS18B20的温度LCALLMRRDTEDP;显示温度RETTEMP:LCALLINIT_1820JBDS18FIG,NEXT4RETNEXT4:MOVDS18ADS,#9MOVA,#0CCH;SKIPROMLCALLWRITE_1820MOVA,#44H;温度转换命令LCALLWRITE_1820LCALLDELAY1SLCALLMRRDTEDPRET;写DS18B20的子程序(有具体的时序要求)WRITE_1820:????;写DS18B20MOVR5,#8DS18JXWE:SETBDS18DQ??;初始化CLRDS18DQCLRDS18DQMOVR7,#5DJNZR7,$;拉低15US内,写入数据CLRCRRCAMOVDS18DQ,CLCALLDELAY60US;持续60USSETBDS18DQ??;写完一个位DJNZR5,DS18JXWERETREAD_1820_CODE:??;读取CODE64位??MOVR4,#8??;读8次数??MOVR1,#DS18CD1??;低位地址存在R1DS18JXRD3:MOVR5,#8??;8位数据DS18JXRD2:SETBDS18DQ??CLRDS18DQ??;前两句完成初始化NOPNOP???;延时至少1USSETBDS18DQ??;上升沿,并在,15US内读数MOVR7,#5DJNZR7,$MOVC,DS18DQRRCALCALLDELAY60US??;读时序,最少60USDJNZR5,DS18JXRD2MOV@R1,AINCR1DJNZR4,DS18JXRD3SETBDS18DQRET;读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200:??MOVR4,#2??;读两次数??MOVR1,#DS18SL??;低位地址存在R1DS18JXRD1:MOVR5,#8??;8位数据DS18JXRD:SETBDS18DQ??CLRDS18DQ??;前两句完成初始化NOPNOP???;延时至少1USSETBDS18DQ?;上升沿,并在,15US内读数MOVR7,#5DJNZR7,$MOVC,DS18DQRRCALCALLDELAY60US??;读时序,最少60USDJNZR5,DS18JXRDMOV@R1,ADECR1DJNZR4,DS18JXRD1SETBDS18DQRETREAD_1820_1:???;读取1位SETBDS18DQ????????CLRDS18DQCLRDS18DQCLRDS18DQSETBDS18DQMOVR7,#5DJNZR7,$JBDS18DQ,WEFHLCALLDELAY10MSWEFH:LCALLDELAY60USRET





DS18B20

温度检测模块



键盘











AT89S51单片机



数码管



蜂鸣器



继电器



光耦可控硅



加热设备



风扇



9



0



确认



清除



开启



关闭



F1





F2







献花(0)
+1
(本文系朽木轩首藏)