51单片机温度报警器.docx
- 文档编号:27315819
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:29
- 大小:223.82KB
51单片机温度报警器.docx
《51单片机温度报警器.docx》由会员分享,可在线阅读,更多相关《51单片机温度报警器.docx(29页珍藏版)》请在冰豆网上搜索。
51单片机温度报警器
温度检测报警器
摘要随着时代的进步和发展,温度的测试已经影响到我们的生活、工作、科研、各个领域,已经成为了一种非常重要的事情,因此设计一个温度测试的系统势在必行。
本次课程论文主要介绍了一个基于AT89C52单片机的数字温度报警器系统。
详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度的采集和报警,并可以根据需要调节上下限报警温度(0~99℃,精度为1℃),它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块潜入其他系统中,作为其他主系统的辅助扩展。
DS18B20与AT89C52结合实现最简温度报警系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
1引言
1.1课题背景
温度是工业对象中主要的被控参数之一,如冶金、机械、食品、化工各类工业生产中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的温度处理要求严格控制。
随着科学技术的发展,要求温度测量的范围向深度和广度发展,以满足工业生产和科学技术的要求。
基于AT89C52单片机提高了系统的可移植性、扩展性,利于现代测控、自动化、电气技术等专业实训要求。
以单片机为核心设计的温度报警器,具有安全可靠、操作简单方便、智能控制等优点。
温度对于工业生产如此重要,由此推进了温度传感器的发展。
温度传感器主要经过了三个发展阶段:
(1)模拟集成温度传感器。
该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。
此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等特点,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。
它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等;
(2)模拟集成温度控制器。
模拟集成温度控制器主要包括温控开关、可编程温度控制器,典型产品有LM56、AD22105和MAX6509。
某些增强型集成温度控制器(例如TC652/653)中还包含了A/D转换器以及固化好的程序,这与智能温度传感器有某些相似之处。
但它自成系统,工作时并不受微处理器的控制,这是二者的主要区别;
(3)智能温度传感器(亦称数字温度传感器)。
智能温度传感器是在20世纪90年代中期问世的,其内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。
有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。
智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。
现代信息技术的三大基础是信息采集[2](即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)。
传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生产、科学研究和生活等领域,数量高居各种传感器之首。
数字温度传感器可以直接将被检测的温度信息以数字化形式输出,与传统的模拟式温度传感器相比,具有测量精度高、功耗低、稳定性好、外围接口电路简单特点。
而单片机微处理器越来越丰富的外围功能模块,更加方便了数字式温度传感器输出信号的处理。
智能温度传感器内部都包含温度传感器、A/D转化器、信号处理器、存储器(或寄存器)和接口电路。
有的产品还带多路选择器、中央处理器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。
并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。
进入21世纪后,智能温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片机测温系统等的方向发展。
数字化温度传感器可以直接将温度量以数字脉冲信号形式输出,具有测量精度高、抗干扰能力强、传输距离远、外围接口电路简单等诸多优点。
同时数字温度传感器还可直接与微
处理器进行接口,大大方便了传感器输出信号的处理.数字单总线温度传感器是目前最新的测温器件,它集温度测量,A/D转换于一体,具有单总线结构,数字量输出,直接与微机接口等优点
1.2研究内容和意义
本温度报警器以AT89C52单片机为控制核心,由一数字温度传感器DS18B20测量被控温度。
当被测量值超出预设范围1℃则发出警报,适用于大多数工业生产以及教育教学领域。
温度是一种最基本的环境参数,它是与人类的生活、工作关系最密切的物理量,也是各门学科与工程研究设计中经常遇到和必须精确测量的物理量。
从工业炉温、环境气温到人体温度;从空间、海洋到家用电器,各个技术领域都离不开测温和控温。
因此,研究温度的测量和控制方法具有重要的意义。
图1设计原理
2芯片介绍
2.1DS18B20概述
DS18B20是Dallas公司继DS1820后推出的一种改进型智能数字温度传感器,与传统的热敏电阻相比,只需一根线就能直接读出被测温度值,并可根据实际需求来编程实现9~12位数字值的读数方式。
2.1.1DS18B20封装形式及引脚功能
图2DS18B20封装形式和引脚功能
如图2所示,DS18B20的外形如一只三极管,引脚名称及作用如下:
GND:
接地端。
DQ:
数据输入/输出脚,与TTL电平兼容。
VDD:
可接电源,也可接地。
因为每只DS18B20都可以设置成两种供电方式,即数据总线供电方式和外部供电方式。
采用数据总线供电方式时VDD接地,可以节省一根传输线,但完成数据测量的时间较长;采用外部供电方式则VDD接+5V,多用一根导线,但测量速度较快。
2.1.2DS18B20内部结构
图3DS18B20内部结构
图3出示了DS18B20的主要内部部件,下面对DS18B20内部部分进行简单的描述:
(1)64位ROM。
64位ROM是由厂家使用激光刻录的一个64位二进制ROM代码,是该芯片的标识号,如表1所示:
8位循环冗余检验
48位序列号
8位分类编号(10H)
MSBLSB
MSBLSB
MSBLSB
表164位ROM标识
第1个8位表示产品分类编号,DS18B20的分类号为10H;接着为48位序列号。
它是一个大于281*1012的十进制编码,作为该芯片的唯一标示代码;最后8位为前56位的CRC循环冗余校验码,由于每个芯片的64位ROM代码不同,因此在单总线上能够并接多个DS18B20进行多点温度实习检验。
(2)温度传感器。
温度传感器是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即可得到实际温度。
(3)高速缓存器。
DS18B20内部的高速缓存器包括一个高速暂存器RAM和一个非易失性可电擦除的EEPROM。
非易失性可点擦除EEPROM用来存放高温触发器TH、低温触发器TL和配置寄存器中的信息。
(4)配置寄存器。
配置寄存器的内容用于确定温度值的数字转换率。
DS18B20工作是按此寄存器的分辨率将温度转换为相应精度的数值,它是高速缓存器的第5个字节,该字节定义如表2所示:
TM
R0
R1
1
1
1
1
1
表2匹配寄存器
TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20
出厂时该位被设置为0,用户不要去改动;R1和R0用来设置分辨率;其余5位均固定为1。
DS18B20分辨率的设置如表3所示:
R1
R0
分辨率
最大转换时间/ms
0
0
9位
93.75
0
1
10位
187.5
1
0
11位
375
1
1
12位
750
表3DS18B20分辨率的设置
DS18B20依靠一个单线端口通讯。
在单线端口条件下,必须先建立ROM操作协议,才能进行存储器和控制操作。
因此,控制器必须首先提供下面5个ROM操作命令之一:
1)读ROM;
2)匹配ROM;
3)搜索ROM;
4)跳过ROM;
5)报警搜索。
这些命令对每个器件的激光ROM部分进行操作,在单线总线上挂有多个器件时,可以区分出单个器件,同时可以向总线控制器指明有多少器件或是什么型号的器件。
成功执行完一条ROM操作序列后,即可进行存储器和控制操作,控制器可以提供6条存储器和控制操作指令中的任一条。
一条控制操作命令指示DS18B20完成一次温度测量。
测量结果放在DS18B20的暂存器里,用一条读暂存器内容的存储器操作命令可以把暂存器中数据读出。
温度报警触发器TH和TL各由一个EEPROM字节构成。
如果没有对DS18B20使用报警搜索命令,这些寄存器可以做为一般用途的用户存储器使用。
可以用一条存储器操作命令对TH和TL进行写入,对这些寄存器的读出需要通过暂存器。
所有数据都是以最低有效位在前的方式进行读写。
2.1.3DS18B20供电方式
DS18B20可以采用外部电源供电和寄生电源供电两种模式。
外部电源供电模式是将DS18B20的GND直接接地,DQ与但单总线相连作为信号线,VDD与外部电源正极相连。
2.1.4DS18B20的测温原理
DS18B20的测温原理如图4所示,其主要由斜率累加器、温度系数振荡器、减法计数器、温度存储器等功能部件组成。
图4DS18B20的测温原理
DS1820是这样测温的:
用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。
计数器被预置到对应于-55℃的一个值。
如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55℃)的值增加,表明所测温度大于-55℃。
同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。
然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。
斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨率。
这是通过改变计数器对温度每增加一度所需计数的的值来实现的。
因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。
DS18B20内部对此计算的结果可提供0.5℃的分辨率。
温度以16bit带符号位扩展的二进制补码形式读出,表4
给出了温度值和输出数据的关系。
数据通过单线接口以串行方式传输。
DS18B20测温范围-55℃~+125℃,以0.5℃递增。
温度℃
数据输出(二进制)
数据输出(十六进制)
+125
0000000011111010
00FA
+25
0000000000110010
0032
+0.5
0000000000000001
0001
0
0000000000000000
0000
-0.5
1111111111111111
FFFF
-25
1111111111001110
FFCE
-55
1111111110010010
FF92
表4温度数据关系
DS18B20遵循单总线协议,每次测温时都必须有4个过程:
•初始化;
•传送ROM操作命令;
•传送ROM操作命令;
•数据交换;
2.1.5DS18B20的ROM命令
readROM(读ROM).命令代码为33H,允许主设备读出DS18B20的64位二进制ROM代码。
该命令只适用于总线上存在单个DS18B20.
MatchROM(匹配ROM)。
命令代码为55H,若总线上有多个从设备时,适用该命令可选中某一指定的DS18B20,即只有和64位二进制ROM代码完全匹配的DS18B20才能响应其操作。
SkipROM(跳过ROM)。
命令代码为CCH,在启动所有DS18B20转换之前或系统只有一个DS18B20时,该命令将允许主设备不提供64位二进制ROM代码就适用存储器操作命令。
SearchROM(搜索ROM)。
命令代码为F0H,当系统初次启动时,主设备可能不知纵向上有多少个从设备或者它们的ROM代码,适用该命令可确定系统中的从设备个数及其RON代码。
AlarmROM(报警搜索ROM)。
命令代码为ECH,该命令用于鉴别和定位系统中超出程序设定的报警温度值。
Writescratchpad(写暂存器)。
命令代码为4EH,允许主设备向DS18B20的暂存器写入两个字节的数据,其中第一个字节写入TH中,第二个字节写入TL中。
可以在任何时刻发出复位命令终止数据的写入。
Readscratchpad(读暂存器)。
命令代码为BEH,允许主设备读取暂存器中的内容。
从第一个字节开始直到读完第九个字节CRC读完。
也可以在任何时刻发出复位命令中止数据的读取操作。
Copyscratchpad(复制暂存器)。
命令代码为48H,将温度报警触发器TH和TL中的字节复制到非易失性EEPROM。
若主机在该命令之后又发出读操作,而DS18B20又忙于将暂存器中的内容复制到EEPROM时,DS18B20就会输出一个“0”,若复制结束,则DS18B20输出一个“1”。
ConvertT(温度转换)。
命令代码为44H,启动一次温度转换,若主机在该命令之后又发出其它操作,而DS18B20又忙于温度转换,DS18B20就会输出一个“0”,若转换结束,则DS18B20输出一个“1”。
RecallE2(拷回暂存器)。
命令代码为B8H。
将温度报警触发器TH和TL中的字节从EEPROM中拷回到暂存器中。
该操作是在DS18B20上电时自动执行,若执行该命令后又发出读操作,DS18B20会输出温度转换忙标识:
0为忙,1完成。
Readpowersupply(读电源使用模式)。
命令代码为B4H。
主设备将该命令发给DS18B20后发出读操作,DS18B20会返回它的电源使用模式:
0为寄生电源,1为外部电源。
2.2AT89C52概述
2.2.1单片机AT89C52介绍
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
2.2.2主要功能特性
1、兼容MCS51指令系统;2、8k可反复擦写(大于1000次)FlashROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断; 6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
图5AT89C52
3系统硬件设计
3.1单片机最小系统的设计
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
本次课程设计中选用AT89C52式单片机,其最小系统主要由电复位、振荡电路组成。
单片机的最小系统如图6所示。
单片机的复位电路原理是在单片机的复位引脚RST上电阻和电容,实现上电复位。
当复位电平持续两个时钟周期以上时复位有效。
复位电路由按键复位和上电复位两部分组成,上电复位是在复位引脚上连接一个电容到VCC,再连接一个电阻到GND;按键复位是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
AT89C52单片机使用12MHZ的晶振最为振荡源,由于单片机内部有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容一般在15pF至50pF之间。
外部晶振结合单片机内部电路产生单片机所需的时钟频率。
图6单片机最小系统
3.2温度采集电路的设计
温度采集电路部分,采用数字温度传感器DS18B20进行温度采集。
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3个引脚;温度侧量范围为-55℃—+125℃,测量精度为0.5℃;被测温度用符号扩展的16位数字量方式串行输出;CPU只需用一个端口线就可以与DS18B20通信。
温度采集电路如图7所示。
图7温度采集电路
3.3液晶模块简介
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM。
4.程序流程图
图8
5.电路仿真图
图9电路仿真图
6仿真结果
6.1低于下限
液晶屏显示的温度在20—50℃范围内,而当前温度为19℃,低于下限1℃,蜂鸣器报警如图10
图10
6.2高于上限
液晶屏显示的温度在22—41℃范围内,而当前温度为43℃,高于上限2℃,蜂鸣器报警如图11
图11
图12
图13
附录A:
原器件清单
器件名称
个数
1N4148
1
SOUNDER
1
NPN
1
POWER
7
GROUND
7
POT-LIN
1
RESPACK-8
1
RES
2
DS18B20
1
LM016L
1
AT89C52
1
CAP
2
BUTTON
4
CAP-ELEC
1
CRYSTAL
1
表5
附录B:
源程序
#include
#defineuintunsignedint
#defineucharunsignedchar
//第4个引脚是RS,5是RW,,6是en
sbitlcdrs=P2^0;//数据命令端口
sbitlcdrw=P2^1;//读写端口.我们在这里只写/
sbitlcden=P2^2;//使能端口。
sbitDQ=P2^3;//ds18b20端口
sbitK1=P1^4;//温度的上线加
sbitK2=P1^5;//温度的下线减
sbitK3=P1^3;//上下线切换
sbitLED=P3^0;//LED指示灯
intHwendu=50,Lwendu=20,flag=1,qiehuan;
uinttemp,TempH,TempL;
ucharcodetable1[]="";
ucharcodetable2[]="";
voiddelay(uintz)
{
uintx,y;
for(x=0;x for(y=0;y<110;y++); } voiddelay1(unsignedinti)//延时函数 { while(i--); } voidInit_DS18B20(void) { unsignedcharx=0; DQ=1;//DQ复位 delay1(8);//稍做延时 DQ=0;//单片机将DQ拉低 delay1(80);//精确延时大于480us DQ=1;//拉高总线 delay1(10); x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败 delay(5); } /******************************************************************/ /*读一个字节*/ /******************************************************************/ unsignedcharReadOneChar(void) { unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay1(5); } return(dat); } /******************************************************************/ /*写一个字节*/ /******************************************************************/ voidWriteOneChar(unsignedchardat) { unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; delay1(5); DQ=1; dat>>=1; } delay1(5); } /******************************************************************/ /*读取温度*/ /******************************************************************/ unsignedintReadTemperature(void) { unsignedchara=0; unsignedintb=0; unsignedintt=0; Init_DS18B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 温度 报警器