基于AT89C51单片机的智能温度控制系统文档格式.doc
《基于AT89C51单片机的智能温度控制系统文档格式.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的智能温度控制系统文档格式.doc(21页珍藏版)》请在冰点文库上搜索。
7段译码器
数码管
按键电路
驱动电路
温度采样电路
继电器
AD转换
信号处理电路
图1空调机温度控制系统框图
3.2单片机
由于空调温度控制器的核心就是单片机,单片机的选择将直接关系到控制系统的工作是否有效和协调。
本设计采用MCS-51系列的8051单片机,因为8051单片机应用广泛,性能稳定,抗干扰能力强,性价比高。
AT80C51包含了8位CPU,片内振荡器,4K字节ROM,128字节RAM,2个16位定时器,计数器,中断结构,I/O接口等。
可进行计算,定时等一系列功能。
其管脚图如下图2所示:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,
P0口作为原码输入口,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口
P2口:
P2口为一个内部上拉电阻的8位双向I/O口
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口。
P3口也可作为AT89C51的一些特殊功能口,如列所示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
图280C51管脚图
3.3温度采样电路
3.3.1AD590型温度传感器
AD590是电流型温度传感器,通过对电流的测量可得到所需要的温度值。
在被测温度一定时,AD590相当于一个恒流源,AD590温度感测器是一种已经IC化的温度感测器,它会将温度转换为电流,由于此信号为模拟信号,因此,要进行进一步的控制及数码显示,还需将此信号转换成数字信号。
它的主要特性如下:
(1)流过器件的电流(mA)等于器件所处环境的热力学温度(开尔文)度数;
即:
式中:
(1)
Ir—流过器件(AD590)的电流,单位为mA;
T—热力学温度,单位为K。
(2)AD590的测温范围为-55℃~+150℃;
(3)
AD590的电源电压范围为4V~30V;
下列表1表2分别表示温度与电压电流之间的关系
表1 AD590温度与电流之间的关系
温度
AD590电流
经10KΩ电压
0℃
273.2uA
2.732A
10℃
283.2uA
2.832A
20℃
293.2uA
2.932A
30℃
303.2uA
3.032A
40℃
313.2uA
3.132A
50℃
323.2uA
3.232A
60℃
333.2uA
3.332A
70℃
343.2uA
3.432A
80℃
353.2uA
3.532A
90℃
363.2uA
3.632A
100℃
373.2uA
3.732A
表2ADC0809的输入与输出关系
opa1
opa2
opa3
ADC输入
ADC输出
0V
-0.1V
1V
50
-0.2V
2V
100
-0.3V
3V
150
-0.4V
4V
200
-0.5V
5V
250
3.3.2温度采样工作原理
因为AD590是将温度转换为电流,而单片机对电压信号更好测量,所以要将电流转化为电压,同时对电压信号进行放大后输入A/D转换ADC0808的VI-端口。
电流转化为电压表达式如下:
(2)
由反相比例运算放大电路,根据“虚断”,“虚短”,集成运放净输入电压为零,净输入电流为零,净输入电流为零等推算出表达式为:
(3)
最后由
(1),
(2),(3)得到:
(4)
图5为温度采样的电路图如右图所示:
图3温度采样电路
3.3.3无限增益低通滤波电路
图4无限增益低通滤波电路
由温度传感器采集到的信号中可能夹有高频的噪声信号和干扰信号,在经过放大后,这样的信号会对采集的结果和转换的结果产生很大的误差和不良的后果。
无线增益低通滤波器既可以将高频信号除去,也可以起到放大的作用。
其电路图如右图6所示,低通的频率为100HZ。
放大倍数Kp=-R3/R1
(1)
频率W0=1/(C1*C2*R2*R3)^0.5
(2)
3.4A/D转换电路
由于温度是一种模拟信号,则由信号采集电路采集的信号是一种模拟信号,而且频率很低。
但是单片机和电脑所识别的是具有高低电位的数字信号,这就要求在信号的处理中必须把模拟信号转换为数字信号从而输给单片机处理。
3.4.1ADC0801介绍
ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。
各引脚功能如下:
1~5和26~28(IN0~IN7):
8路模拟量输入端。
8、14、15和17~21:
8位数字量输出端。
22(ALE):
地址锁存允许信号,输入,高电平有效。
6(START):
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端
11(Vcc):
主电源输入端。
13(GND):
地。
23~25(ADDA、ADDB、ADDC):
3位地址输入线,用于选通8路模拟输入中的一路
输出端注意:
out8为最低位-out1为最高位,out8-out1分别接单片机的P0.0到P0.7端。
3.4.2A/D转换电路工作原理
图5二分频电路
A/D转换电路如图3所示。
ADC0808的A/D转换结果输出端out8-out1与8051的P0.0-P0.7相连,EOC经反向后与P3.3口相连,EOC端用于给出A/D转换完成信号,所以通过查询P3.3便可以获知A/D转换是否完成。
单片机的WR接ADC0808的START,来操作ADC0808的转换开始,当转换结束后由EOC变低电位
在此次的设计中由于只有一路信号的输入,我选择的是从0路输入,所以在地址选择信号ABC三个引脚可以都直接的接地。
图6ADC0808连接电路
由0808的CLK时钟的频率是640Khz,所以在必须从单片机的时钟脉冲进行分频后才行,在分频中,采用的是D触发器进行二分频。
ADC0808时钟的二分频电路电路连接和ADC0808的电路本身连接如图3、图4所示:
3.5按健开关
图7温度设置按键
按键开关电路由一按键连接到8051的P2.1端口所示。
按下P2.1按键,放开后进入温度设定模式,显示设定最高温度34oC,每按一次设定温度将减小1oC,直至最低设定温度20oC,再按一次回到34oC。
其电路图如下图所示:
3.6温度显示电路
3.6.1LED驱动
74LS47介绍:
74LS47是一块BCD码转换成7段LED数码管的译码驱动IC,7447的主要功能是输出低电平驱动的显示码,用以推动共阳极7段LED数码管显示相应的数字。
相应引脚功能如下:
(1)QA,QB,QC,QD,QE,QF,QG:
7段LED数码输出引脚。
(2)A,B,C,D:
输入引脚。
(3)RBO,BT,LI高电平输出有效。
3.6.2温度显示工作原理
温度显示电路如图7所示:
由2片TTL7447和2片七段LED组成,LED采用共阳级接法。
7447的QA-QG接BCD的a-g,段选信号由8051的P1口提供,LED显示数据由7447的输出决定,即由P1口信号的取值决定。
图8 TTL7447BCD显示电路
3.7其它电路
3.7.1压缩机驱动电路
图9压缩机控制电路
压缩机驱动控制,AT89C8051的RXD的引脚与一个限流电阻连接后再与一个三级管连接来驱动继电器从而达到控制压缩机电压的目的。
二极管的母的是起一个保护的作用。
3.7.2电源转换电路
图10电源电压转换电路
在实际的应用中,单片机的电压5V电压和运放的15V电压都需要从外部的220V交流电源来供给。
这就需要我们把220V的交流电转换为5V和15V的直流电。
在本设计中,采用了简单实用的变压器,根据理想变压器原副边匝数比公式则可通过计算来调节参数达到转化为低压的目的。
低压的交流信号再通过整流稳压等操作实现了交流向直流转换的要求了。
其电路图如右图所示:
3.7.3看门狗电路
看门狗电路的应用,使单片机可以在无人状态下实现连续工作.其工作原理是:
看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。
那么定时时间到后就会使单片机复位。
常用的WDT芯片如MAX813,5045,IMP813等等。
本次设计用的是两个74LS123来实现的。
图11 看门口电路
4系统软件设计
4.1软件设计思路
软件设计的任务包括启动A/D转换、读A/D转换结果、设置温度、温度控制等,其中启动A/D转换、读A/D转换结果、设置温度等工作在主程序中完成,温度控制在中断服务程序中完成,即每隔一段时间对比测量温度与设定温度之间的大小关系,根据对比结果给出控制信号,令压缩机的运行或停止,实现温度调控。
4.2程序流程
主程序流程图如图11所示
中断服务程序流程图12所示。
开始
系统初始化
启动定时器
启动A/D转换
设置温度
要设置温度吗?
是否完成A/D转换?
读入A/D转换结果
显示处理,比较控制
Y
N
图12主程序流程图
保护现场
重装定时初值
设定温度≥测量温度?
令压缩机工作
令压缩机停止工作
中断返回
图13中断服务程序流程图
4.3程序内容编写
ORG0000H
JMPSTART0;
主程序
ORG000BH;
定时器/计数器0溢出中断
JMPTIM0;
转中断程序
ORG0030H;
定时中断0入口地址
START0:
MOVTMOD,#01H;
设定定时器0工作方式1
MOVTH0,#3CH;
50ms定时储值
MOVTL0,#0B0H;
SETBTR0;
启动定时器0
MOVIE,#82H;
定时器0开放中断
MOV24H,#0FFH;
ANLP1,#00H;
MOVR0,#14;
延时
START:
MOVX@DPTR,A;
启动A/D转换\WR=0
WAIT:
JNBP2.1,SET0;
检测温度输入
JBP2.0,ADC;
检测转换是否完成
JMPWAIT;
没转换完成则等待
ADC:
MOVXA,@DPTR;
将转换好的值送入A
LCALLL1;
调用十进制转换子程序
LCALLDISP;
调用显示子程序
JMPSTART
L1:
MOVB,#100
DIVAB
MOVR3,A
MOVA,#10
XCHA,B
DIVAB
SWAPA
ORLA,B
RET
L2:
MOVA,20H
ADDA,20H;
DAA;
MOV20H,A;
MOVA,21H;
ADDCA,21H;
DAA;
MOV21H,A;
RET
DISP:
MOVA,20H;
显示程序
ANLA,#0F0H
SWAPA;
交换高低位
MOV22H,A
MOVA,21H;
ANLA,#0FFH
SWAPA;
ORLA,22H;
MOV23H,A
MOVP1,A;
MOVR7,#0FFH;
DJNZR7,$;
是否显示完
SET0:
LCALLDELAY;
JNBP2.1,$;
等待按键操作
LCALLDELAY;
消除按键抖动
A2:
CJNER0,#0FFH,A1;
MOVR0,#14;
延时
A1:
MOVA,R0;
MOVDPTR,#TABLE;
数据指针指向表头
MOVCA,@A+DPTR;
查表
MOVP1,A;
MOV24H,A;
MOVR5,#4FH;
D4:
MOVR7,#0FFH
D2:
MOVR6,#0FFH
D1:
JNBP2.1,SET1;
有按键按下转SET1
DJNZR6,D1
DJNZR7,D2
DJNZR5,D4
JMPSTART;
SET1:
LCALLDELAY;
JNBP2.1,$;
等待按键操作
LCALLDELAY;
消除抖动
DECR0;
JMPA2;
TIM0:
PUSHACC;
保护现场
PUSHPSW
MOVTH0,#3CH;