51单片机温度报警系统.docx
《51单片机温度报警系统.docx》由会员分享,可在线阅读,更多相关《51单片机温度报警系统.docx(16页珍藏版)》请在冰豆网上搜索。
51单片机温度报警系统
单片机智能检测控制器设计
引言
随着科技的不断发展,日常生活中越来越多的采用高温高热的一些设备及装置,它在方便了人们生活的同时,也留下了安全隐患,因此做好高温预警工作是非常必要的。
为了能实现防火、防灾的目的,就必须采取先进的自动检测和控制手段。
本文所设计的单片机智能检测控制器能通过现场温度传感器检测到室内的温度或是设备、装置的温度等信息,然后根据现场信息进行相应的处理。
即当温度超过了预先设定的警戒值时,此系统能显示温度信息并且发出警报声,通知管理人员进行控制。
本系统不仅能实现高温报警,同时也能实现对温度下限的报警,满足不同场合的设计需要。
1功能介绍
本系统实现功能为:
当正常温度(即在15-65摄氏度之间)即时显示温度。
高温(高于65摄氏度)LED以及喇叭报警,数码管显示的即时温度数字开始同时闪烁,低温(低于15摄氏度)LED以及喇叭报警,数码管显示的即时温度数字开始同时闪烁。
具有报警开关设置,温度恢复到正常温度区间时自动取消报警。
下图1为系统整体电路设计图:
图1系统整体电路设计图
2硬件电路设计
2.1系统工作原理
如图2所示,传感器AD590将温度信号转换成电流信号,再转换为电压信号,然后送入A/D变换器ADC0808中,输出BCD码送入AT89C51单片机中,运算控制器根据接收数据进行处理同时将数据保存,以便与下一次采样值进行比较,通过软件对所测电压进行数字非线性校正,同时由显示器进行实时显示。
根据系统程序控制,当所测的温度高于65摄氏度或低于15摄氏度时发生报警。
图2系统结构框图
2.2CPU中央控制器电路设计
本系统CPU采用的是比较常见的AT89C518位微处理器,它的主要特性是:
与MCS-51兼容,4K字节可编程闪烁存储器,寿命:
1000写/擦循环,数据保留时间:
10年,全静态工作:
0Hz-24MHz,三级程序存储器锁定,128×8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。
其结构及管脚分布图如下图3所示:
图3AT89C51结构及管脚分布图
AT89C51的管脚功能如下:
1)VCC:
供电电压。
2)GND:
接地。
3)P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
4)P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
5)P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
6)P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
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口同时为闪烁编程和编程校验接收一些控制信号。
7)RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
8)ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
9)XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
10)XTAL2:
来自反向振荡器的输出。
2.3温度采集电路设计
温度传感器AD590是美国ANALOGDEVICES公司的单片集成两端感温电流源。
本设计电路中,为了便于仿真,使用一个滑动可调电阻代替AD590模拟采集温度信息转换成的电压值,可以通过调节电阻,使输出不同的电压,模拟不同的温度。
AD590温度传感器的主要特性如下:
1)流过器件的电流(μA)等于器件所处环境的热力学温度(开尔文)度数:
Ir/T=1
(1)
式中,Ir—流过器件(AD590)的电流,单位为μA;T—热力学温度,单位为K;
2)AD590的测温范围为-55℃~+150℃;
3)AD590的电源电压范围为4~30V,可以承受44V正向电压和20V反向电压,因而器件即使反接也不会被损坏;
4)输出电阻为710mΩ;
5)精度高,AD590在-55℃~+150℃范围内,非线性误差仅为±0.3℃。
ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
ADC0808是ADC0809的简化版本,功能基本相同。
一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。
ADC0808器件结构及管脚分布如下图4所示:
图4ADC0808结构及管脚分布图
ADC0808的管脚功能如下:
1)IN0~IN7:
8路模拟量输入端。
通过模拟开关实现8路模拟输入信号分时选通。
2)OUT1~OUT8:
8位数字量输出端。
3)ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路。
4)ALE:
地址锁存允许信号,输入,高电平有效。
5)START:
A/D转换启动信号,输入,高电平有效。
6)EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
7)OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
8)CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
9)REF(+)、REF(-):
基准电压。
10)Vcc:
电源,单一+5V。
11)GND:
接地。
ADC0808的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
2.4LED显示电路设计
本系统采用的是4位8段LED数码管对温度信息进行显示,结构图如下图5所示:
图5LED显示电路
2.5报警电路设计
此系统的报警系统为上下限温报警,AT89C51管脚P3.0控制高温报警LED小灯,P3.1控制低温报警LED小灯,P3.7控制蜂鸣器,电路图见系统整体电路设计图1。
3.软件设计
3.1软件设计流程
本系统软件设计采用的是汇编语言,通过ADC0808模数转换芯片,把外界采集到的温度信息转换为系统所需的电压信号,输出BCD码送入AT89C51单片机中,运算控制器根据接收数据进行处理同时将数据保存,以便与下一次采样值进行比较,通过软件对所测电压进行数字非线性校正,同时由显示器进行实时显示。
根据系统程序控制,当所测的温度高于65摄氏度或低于15摄氏度时发生报警。
系统软件设计流程图如下图6所示:
图6软件设计流程图
3.2详细程序清单如下:
-----------------------定义存放单元地址--------------------------
LED_0EQU30H
LED_1EQU31H
LED_2EQU32H
ADCEQU35H
TCNTAEQU36H
TCNTBEQU37H
H_TEMPEQU38H;温度上限地址
L_TEMPEQU39H;温度下限地址
FLAGBIT00H
H_ALMBITP3.0
L_ALMBITP3.1
SOUNDBITP3.7;蜂鸣器地址端口
CLOCKBITP2.4
STBITP2.5
EOCBITP2.6
OEBITP2.7
--------------------------主程序入口定义------------------------------
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
ORG1BH
LJMPINT_T1
----------------------------系统主程序--------------------------------
START:
MOVLED_0,#00H;LED初始化
MOVLED_1,#00H
MOVLED_2,#00H
MOVDPTR,#TABLE
MOVH_TEMP,#65;设置温度上限
MOVL_TEMP,#15;设置温度下限
MOVTMOD,#12H;设置定时器0的工作方式为可自动重新装入初值
的8位计数器,设置定时器1的工作方式为16位计数器
MOVTH0,#245;计数器
MOVTL0,#0
MOVTH1,#(65536-1000)/256;数模转换
MOVTL1,#(65536-1000)MOD256
MOVIE,#8aH;中断允许特殊功能寄存器,设置定时器1和定时器0允许中断
CLRC
SETBTR0;为ADC0808提供时钟
-----------------------------------------------------------
WAIT:
;等待中断子程序
SETBH_ALM
SETBL_ALM
CLRST
SETBST;启动转换
CLRST
JNBEOC,$
SETBOE
MOVADC,P1;读取AD转换结果
CLROE
MOVA,ADC
SUBBA,#15;判断是否低于下限
JCLALM
MOVA,H_TEMP
MOVR0,ADC
SUBBA,R0;判断是否高于上限
JCHALM
CLRTR1
LJMPPROC
----------------------------------------------------------
LALM:
;低温报警
CLRL_ALM
SETBTR1
CLRFLAG
LJMPPROC
---------------------------------------------------------
HALM:
;高温报警
CLRH_ALM
SETBTR1
SETBFLAG
LJMPPROC
---------------------------------------------------------
PROC:
MOVA,ADC;数值转换
MOVB,#100
DIVAB
MOVLED_2,A
MOVA,B
MOVB,#10
DIVAB
MOVLED_1,A
MOVLED_0,B
LCALLDISP;调用数码显示子程序
SJMPWAIT
-------------------------------------------------------------
INT_T0:
CPLCLOCK;提供ADC0808时钟
RETI
-------------------------------------------------------------
INT_T1:
MOVTH1,#(65536-1000)/256
MOVTL1,#(65536-1000)MOD256
CPLSOUND
INCTCNTA
MOVA,TCNTA
JBFLAG,I1;判断是高温警报还是低温警报
CJNEA,#30,RETUNE;低温警报声
SJMPI2
I1:
CJNEA,#20,RETUNE;高温警报声
-------------------------------------------------------------
I2:
;计数器工作子程序
MOVTCNTA,#0
INCTCNTB
MOVA,TCNTB
CJNEA,#25,RETUNE
MOVTCNTA,#0
MOVTCNTB,#0
LCALLDELAY2
RETUNE:
RETI
-------------------------------------------------------------
DISP:
;数码显示子程序
MOVA,LED_0
MOVCA,@A+DPTR
CLRP2.3
MOVP0,A
LCALLDELAY
SETBP2.3
MOVA,LED_1
MOVCA,@A+DPTR
CLRP2.2
MOVP0,A
LCALLDELAY
SETBP2.2
MOVA,LED_2
MOVCA,@A+DPTR
CLRP2.1
MOVP0,A
LCALLDELAY
SETBP2.1
RET
----------------------------------------------------------
DELAY:
;延时10ms子程序
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
----------------------------------------------------------
DELAY2:
;延时40ms子程序
MOVR5,#20
D2:
MOVR6,#20
D3:
MOVR7,#250
DJNZR7,$
DJNZR6,D3
DJNZR5,D2
RET
;=============================
;字形表0,1,2,3,4,5,6,7,8,9,灭
;=============================
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
END
4.Proteus仿真电路设计及结果
4.1高温报警仿真
本系统预设高温报警上限为65度(可以自行更改温度上限值),当测得外界温度为66度时,LED显示温度信息,且高温报警LED小灯点亮,蜂鸣器发出警报声,仿真图如下图7所示:
图7高温报警仿真图
4.2低温报警仿真
本系统预设低温报警下限为15度(可以自行更改温度下限值),当测得外界温度为13度时,LED显示温度信息,且低温报警LED小灯点亮,蜂鸣器发出警报声,仿真图如下图8所示:
图8低温报警仿真图
5.总结
在21世纪,随着计算机科学的发展,计算机已深入地渗透到我们的生活中。
温度测控技术也在各个领域应用越来越广泛,越来越成熟,使用单片机使得电路的成本低廉,性价比较高,修改方便而广加运用。
在控制系统中,一个每秒运算速度可达上百万次的8位51系列单片机已经可以满足绝大多数控制系统的要求,加之51单片机的价格优势和自身的发展,这就使得51单片机在以后很长的一段时间内还有巨大的生存空间,甚至可以说8位单片机仍然是单片机应用的一个主流趋势。
特别是8051单片机近三十年的开发应用,积累了丰富的资料、经验和教训,为新产品的快速开发提供了可靠的保证。
本次课程设计,即是对51单片机的一个很好的应用,通过对该系统的设计,我的设计思维和动手能力得到了很好的锻炼,使我对单片机的强大功能有了新的认识,达到了学习和提高的目的。
参考文献:
[1]靳桅,潘育山,邬芝权,李琪编著.单片机原理及C51开发技术.成都:
西南交通大学出版社,2009.
[2]王为青,程国钢编著.单片机KeilCx51应用开发技术.北京:
人民邮电出版社,2007.