基于单片机的温度检测报警装置..
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
DS18B20与AT89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
关键词:温度测量;DS18B20;AT89C52
I
目录
引言 (1)
1.设计背景 (3)
1.1课题背景 (3)
1.2设计内容 (3)
2.数字温度计系统简介 (4)
2.1方案选择 (4)
2.2系统设计原理 (4)
2.3系统组成 (5)
3.系统硬件设计 .......................................................................................... 错误!未定义书签。
3.1主控制器选择 ................................................................................ 错误!未定义书签。
3.2显示电路 ........................................................................................ 错误!未定义书签。
3.3温度传感器简介 ............................................................................ 错误!未定义书签。
3.4 DS18B20温度传感器与单片机的接口电路 ............................... 错误!未定义书签。
3.5 报警电路
3.6时钟电路与复位电路 .................................................................... 错误!未定义书签。
3.7系统总体电路图 ............................................................................ 错误!未定义书签。
4.软件设计简介 .......................................................................................... 错误!未定义书签。
4.1 C语言简介 .................................................................................... 错误!未定义书签。
4.2程序设计 ........................................................................................ 错误!未定义书签。
5. 电路仿真 ................................................................................................ 错误!未定义书签。
5.1Proteus软件介绍 ............................................................................ 错误!未定义书签。
5.2数字温度计Ptoteus仿真 .............................................................. 错误!未定义书签。
6. 总结 ........................................................................................................ 错误!未定义书签。
参考文献 . (21)
附录:源程序代码 (22)
引言
1.设计背景
1.1课题背景
本次设计可以应用到许多我们用过的软件设计,将前面所学的知识融汇在一起实现温度监测及其报警的功能,来提醒农民当前大棚内温度是否适合农作物的生长。
电子技术是在十九世纪末、二十世纪初开始发展起来的新兴技术,在二十世纪发展最迅速,应用最广泛,成为近代科学技术发展的一个重要标志。
随着电子技术的飞速发展,电子技术在日常生活中得到了广泛的应用,各类转换电路的不断推出以及电子产品的快速更新,电子技术已成为世界发展和人们生活中必不可少的工具。
本次课设应用Protues软件设计一个温度检测报警系统,用温度传感器DS18B20采集大棚内的温度,当大棚内的温度高于30℃。
或低于15℃。
时,电路发出报警信号并显示当前温度,达到提醒农民的效果。
本次课设要求设计一个温度监测报警显示电路,要求温度范围:0℃--99℃;测量误差为±2℃;报警下限温度为:15℃;报警上限温度为:30℃。
1.2设计内容
本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:
(1)利用温度传感器(DS18B20)测量某一点环境温度;
(2)测量范围为0℃~+99℃,精度为±0.5℃;
(3)用LED进行实际温度值显示。
3
2数字温度计系统简介
2.1方案选择
方案一:基于AT89C52单片机通过读取温度传感器DS18B20
测量温度后存储的数据,之后送去数码管显示。
此方案DS18B20测量温度范围为0℃~+99℃,但由于本系统中DS18B20是用于测量水的实时温度,仅需范围为0~100℃,所以该系统可以采取这种方式,这种方案接线简单易行。
方案二:采用51系列单片机作为整机的控制单元
将0-5V模拟电压信号通过AD0808模数转换成模拟温度值0-255℃,然后通过数码管显示其温度值。
这种方式采用了AD0808模数转换装置,提高了测温范围,但是相比方案一来说,成本有所提高。
本设计采用第一种方案。
直接用AT89C52单片机通过读取温度传感器DS18B20 ,此种方案简单易行,大大降低了装置的成本。
2.2系统设计原理
1.单片机最小系统的设计
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
本次课程设计中选用AT89C52式单片机,其最小系统主要由电复位、振荡电路组成。
2.温度采集电路的设计
温度采集电路部分,采用数字温度传感器DS18B20进行温度采集。
DS18B20是DALLAS 公司生产的一线式数字温度传感器,具有3个引脚;温度侧量范围为-55℃—+125℃,测量精度为0.5℃;被测温度用符号扩展的16位数字量方式串行输出;CPU只需用一个端口线就可以与DS18B20通信。
3.LED显示报警电路的设计
LED数码管与单片机的P0口相连,单片机将采集到的温度值转化为与数码管对应的数据,通过P0口输出显示。
即信号通过译码管的端口a、b、c、d、e、f、g 、dp 端来控制每段译码管的亮灭与否,同时通过端口1、2、3、4 四个端口来控制四个译码管。
在本次设计中,用集成芯片74HC245驱动数码管。
同时当采集到的温度值超过所设置的范围时,单片机会输出一信号,通过三极管放大后驱动蜂鸣器发出报警信号。
LED数码管报警电路
2.3系统组成
3.系统硬件设计
3.1主控制器选择
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
AT89C52单片机使用12MHZ的晶振最为振荡源,由于单片机内部有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容一般在15pF至50pF之间。
外部晶振结合单片机内部电路产生单片机所需的时钟频率。
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的
微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
兼容MCS51指令系统、8k可反复擦写(>1000次)Flash ROM、32个双向I/O 口、256x8bit内部RAM、3个16位可编程定时/计数器中断。
时钟频率0-24MHz、2个串行中断。
可编程UART串行通道、2个外部中断源。
共6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式·软件设置睡眠和唤醒功能。
本次课程设计中选用AT89C52式单片机,其最小系统主要由电复位、振荡电路组成。
单片机的最小系统如图2-3所示。
单片机的复位电路原理是在单片机的复位引脚RST上电阻和电容,实现上电复位。
当复位电平持续两个时钟周期以上时复位有效。
复位电路由按键复位和上电复位两部分组成,上电复位是在复位引脚上连接一个电容到VCC,再连接一个电阻到GND;按键复位是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
图2-3 单片机最小系统
3.2显示电路
LED数码管与单片机的P0口相连,单片机将采集到的温度值转化为与数码管对应的数据,通过P0口输出显示。
即信号通过译码管的端口a、b、c、d、e、f、g 、dp 端来控制每段译码管的亮灭与否,同时通过端口1、2、3、4 四个端口来控制四个译码管。
在本次设计中,用集成芯片74HC245驱动数码管。
同时当采集到的温度值超过所设置
的范围时,单片机会输出一信号,通过三极管放大后驱动蜂鸣器发出报警信号。
LED数码管报警电路如图5所示。
3.3温度传感器简介
温度采集电路部分,采用数字温度传感器DS18B20进行温度采集。
DS18B20具有3个引脚;温度侧量范围为-55℃—+125℃,测量精度为0.5℃;被测温度用符号扩展的16位数字量方式串行输出;CPU只需用一个端口线就可以与DS18B20通信。
温度传感器是DS18B20的核心部分,该功能部件可完成对温度的测量通过软件编程可将-55~125℃范围内的温度值按9位、10位、11位、12位的分辨率进行量化,以上的分辨率都包括一个符号位,因此对应的温度量化值分别为0.5℃、0.25℃、0.125℃、0.0625℃,即最高分辨率为0.0625℃。
芯片出厂时默认为12位的转换精度。
当接收到温度转换命令(44H)后,开始转换,转换完成后的温度以16位带符号扩展的的二进制补码形式表示,存储在高速缓存器RAM的第0,1字节中,二进制数的前5位是符号位。
如果测得的温度大于0,这5位为0,只要将测得的数值乘上0.0625即可得到实际温度;如果温度小于0,这5位为1,测得的数值需要取反加1再乘上0.0625即可得到实际温
度。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的内部结构如2-4所示。
DS18B20的主要性能指标如下:
1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。
2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
6、可编程分辨率为9~12位,对应的可分辨温度为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms 内把温度值转换为数字,速度更快。
8、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC 校验码,具有极强的抗干扰纠错能力。
9、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
DS18B20接线图的电路接线图如2-5所示:
图2-5 DS18B20接线图
3.4 DS18B20温度传感器与单片机的接口电路
S18B20接线图的电路接线图如2-5所示:
图2-5 DS18B20接线图3.5 报警电路
3.6时钟电路与复位电路
3.7系统总体电路图
4.软件设计简介
4.1 C语言简介
以前计算机的系统软件都是有汇编语言编写,对于单片机系统来说更是如此,由于汇编语言的可读性和可移植性差,采用汇编语言写的单片机程序周期长,而且调试麻烦,为了学习和提高,最好使用C语言编程,C语言具有如下优点
1语言简单,使用方便灵活
2可移植性,表达性能强
3可进行结构化程序设计
4可直接操作计算机硬件
5生成的目标代码质量高
4.2程序设计
主程序中对单片机做了初始化的设计,包含温度的读取、数码管显示、报警三个子系统,运行时由主程序先调用DS18B20读取温度的子函数进行温度采集,再将数据送入数码管显示。
同时判断所采集的数据是否超出所设置的温度范围。
如果超出,调用报警
子系统;未超出,程序自动返回。
主程序流程图如图6所示。
图6 主程序流程图
5. 电路仿真
5.1Proteus软件介绍
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
功能特点
Proteus软件具有其它EDA工具软件(例:multisim)的功能。
这些功能是:
1.原理布图
2.PCB自动或人工布线
3.SPICE电路仿真
革命性的特点
1.互动的电路仿真
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
2.仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型
上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境.
5.2数字温度计Ptoteus仿真
在PROTUES软件中,连接好电路图后将在Keil中生成的“温度监测.HEX”程序文件导入单片机中。
由于DS18B20系统中设置的温度初值为85℃,所以当开始仿真时报警器会报警,数码管显示也为85。
4至5秒后数字温度传感器会显示当前温度,数码管也相应显示其数值。
在PROTUES软件仿真中,调节DS18B20的左右按钮可是温度值对应加减,数码管会显示当前值。
当减到15℃以下或加到30℃以上时,报警器会报警。
调节数字温度传感器DS18B20使其温度减到14℃,此时报警器报警,数码管显示14。
14℃时的电路仿真如图10所示。
6. 总结
本次课程设计是一次综合性的应用,全方位考察了我们对所学软件的理解与掌握。
通过本学期对单片机课程和传感器课程的学习我们不但对以前学过的知识点有了更深一步的掌握,同时还学到了更多书本中所没有涉及到的东西。
从开始做期末作品后就不断地去图书馆借书查找相关资料、上网搜索信息、与同组同学讨论方案。
在我们的共同努力下,在本周成功的完成了软件的设计。
因为实验室要为电子竞赛准备,所以不能能打印PCB版做出实物,这也是本次作品遗憾的地方。
虽然在设计的过程中遇到各种各样的困难,但最终在老师和同学的帮助下完成了设计。
极大的培养了我们的科研精神,激发了我们的专业兴趣,积累了实践经验,为将来的继续学习和工作打下了基础。
虽然这是我们在期末前的最后一个简单的课程设计,但却让我们学到了很多。
所以希望学院能够多安排一些类似的实践训练,能让我们有更多的机会接触具有现实意义的项目,能接触更多的硬件,更好的提升自己的实践能力和综合能力
参考文献
[1] 孙涵芳.MCS-51/96系列单片机原理及应用(修订版).北京航空航天大学出版社.1994
[2]李朝青.单片机原理及接口技术(第3版).北京航空航天大学出版社.2005
[3] 叶景,基于单片机的温度控制系统的设计经验与交流,2008
[4] 杨光友.单片机微型计算机原理及接口技术[M].北京:中国水利水电出版社,2002
[5] 李丹妮,单片机温度控制系统设计[J]九江学院报2005
[6] 阎石. 数字电子技术基础(第四版).高等教育出版社.2004
[7] 谭浩强.C程序设计(第二版)[M].北京:清华大学出版社,1999
附录:源程序代码
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P3^7;
sbit beep=P3^0;
void reset(); //DS18B20复位函数
void write_byte(uchar val); //DS18B20写命令函数
uchar read_byte(void); //DS18B20读1字节函数
void read_temp(); //温度读取函数
void LED_display();
void alarm();
uchar tempH,tempL,num;
uchar table[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0~9的LED字符编码
uchar setValue_low=15;
uchar setValue_high=30;
main()
{
while(1)
{
read_temp();
LED_display();
alarm();
}
}
void delay(uint t)
{
for(;t>0;t--);
}
void reset() //DS18B20的复位
{
uchar presence=1;
while(presence)
{
while(presence)
{
DQ=1;_nop_();_nop_();
DQ=0;
delay(50);
DQ=1;
delay(6);
presence=DQ;
}
delay(45);
presence=~DQ;
}
DQ=1;
}
void write_byte(uchar val) //DS18B20写一个字节{
uchar i;
for(i=8;i>0;i--)
{
DQ=1;_nop_();_nop_();
DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();
DQ=val&0x01;
delay(6);
val=val>>1;
}
DQ=1;
_nop_();
}
uchar read_byte(void) //DS18B20读一个字节
{
uchar i;
uchar value=0;
for(i=8;i>0;i--)
{
DQ=1;_nop_();_nop_();
value>>=1;
DQ=0;
_nop_();_nop_();_nop_();_nop_();
DQ=1;_nop_();_nop_();_nop_();_nop_();
if(DQ)
value|=0x80;
delay(6);
}
DQ=1;
return(value);
}
void read_temp() //从DS18B20读取温度值
{
uchar ch1,ch2;
reset();
write_byte(0xcc);
write_byte(0x44);
reset();
write_byte(0xcc);
write_byte(0xbe);
ch1=read_byte(); //DS18B20的温度数值是16位的二进制,精度高,最后四位是温度
的小数部分,最高五位为符号位(即正负温度)
ch2=read_byte();
num=(ch2<<4)|(ch1>>4); //只取温度值的中间八位,小数部分舍去,符号位舍去四位。
tempH=num/10; //温度的十位
tempL=num-tempH*10; //温度的个位
}
void LED_display() //显示检测的温度
{
P2=0x0;
P2=2;
P0=table[tempL];
delay(50);
P2=0x0;
P2=1;
P0=table[tempH];
delay(50);
P2=0x0;
}
void alarm() //报警
{
if(setValue_low<=num && setValue_high>=num)
beep=1; //在温度允许范围,不报警else
beep=~beep;
}
20
参考文献
[1]孙育才.《单片微型计算机及其应用》. 南京:东南大学出版社.2004
[2]潘新民王燕芳.《微型计算机控制技术》. 北京:电子工业出版社2003
[4]李群芳.《单片机原理及接口技术》.北京:电子工业出版社,2008
[5]李光飞.《单片机课程设计实例指导》.北京:北京航空航天大学出版社,2004
附录:源程序代码。