基于51单片机的温度报警器.docx
《基于51单片机的温度报警器.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度报警器.docx(33页珍藏版)》请在冰豆网上搜索。
![基于51单片机的温度报警器.docx](https://file1.bdocx.com/fileroot1/2022-11/28/33187d70-ae8b-4817-9c70-6d4bca8ede30/33187d70-ae8b-4817-9c70-6d4bca8ede301.gif)
基于51单片机的温度报警器
基于51单片机的温度报警器
摘要
如今火灾频频发生,比如电气线路短路、过载、接触电阻过大等引发高温火灾;静电产生高温火灾;雷电等强电侵入导致高温火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温;因此机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能了。
因此本课程设计将利用单片机STC89S52设计了一种数字温度计,它由单片机、DS18B20传感器以及数码管等部件组成,本温度计属于多功能温度计,功能较强,可以设置上下限报警温度,且测量准确、误差小。
当测量温度超过设定的温度上下限时,启动蜂鸣器和指示灯报警。
这种温度报警器结构简单,可操作性强,应用广泛。
工作时,温度测量范围为5-38ºC。
当前环境温度若超过设定的高温临界温度,由单片机发出报警信号,从而防止带来的不必要的损失。
关键词:
STC89C52;DS18B20;数码管
ABSTRACT
Nowfirehappenfrequently,suchaselectricalwiringshortcircuit,overload,largecontactresistance,hightemperaturefire;Electrostaticgenerationhightemperaturefire;Andsoonhighvoltagecausedbylightningintrudedintotheleadtohightemperaturefire;Themainelectricalequipmentsuchascomputers,airconditioningisthetelecomroomtoworklonghours,causetheequipmentaging,themalfunctionoftheairconditioningnotcooling;Electronicproductheatfaster,sotheroombelongtoroomtemperatureinashorttimemorethananormaltemperature,causingthesystemtocrashortoproducefire,whenthetemperaturealarmsystemwillplaytheirfunctions.
ThereforethiscoursewillusethemicrocontrollerSTC89S52designadigitalthermometer,itiscomposedofsinglechip,DS18B20sensorsanddigitaltubeparts,thisbelongstothemultifunctionalthermometerthermometer,strongfunction.Whenmeasuringtemperaturemorethansetthetemperatureoftheupperandlowerlimit,startthebuzzerandlightalarm.Thistemperaturealarmhassimplestructure,strongoperability,wideapplication.Atwork,temperaturemeasurementrangeis5-38DHSC.Ifthecurrentenvironmenttemperaturemorethansethighcriticaltemperature,sendoutalarmsignalbysingle-chipmicrocomputer,topreventunnecessaryloss.
Keywords:
AT89C52D,S18B20,Digitaltube
第一章设计背景及要求
1.1设计意义
温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。
对于不同场所、不同工艺、所需温度高低范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同,因而,对温度的测控方法多种多样。
随着电子技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用[1]。
利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展[2]。
本次设计是用单片机对温度进行实时检测与控制,此次所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所或科研实验室使用,该设计控制器使用单片机STC89C52,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到设计要求。
本温度计属于多功能温度计,功能较强,可以设置上下限报警温度,且测量准确、误差小。
当测量温度超过设定的温度上下限时,启动蜂鸣器和指示灯报警。
1.2设计要求
1.2.1基本功能
1.基本温度范围0℃-99℃;
2.精度误差小于0.5℃;
3.数码直读显示。
1.2.2扩展功能
1.实现声光报警;
2.可以任意设定温度的上下限报警功能。
1.3总体设计方案
1.3.1数字温度计设计方案论证
1.方案一
由于本设计是测温电路,根据设计要求可以使用热敏电阻之类的感温器件利用其感温效应,然后将随被测温度变化的电压或电流采集过来,经过A/D转换后,将数据传输到单片机进行数据的处理,然后在显示电路上显示,这样就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
2.方案二
在单片机电路设计中,大多都是使用传感器,这是非常容易想到利用数字温度传感器,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,然后传输给单片机进行数据处理,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路设计比较简洁,软件设计也比较简单,故采用方案二。
3.总体设计框图
温度计电路设计总体设计方框图如图1.1所示,控制器采用单片机STC89C52,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。
图1.1总体设计方框图
1.3.2单片机的选择
1.方案一:
选择Microchip公司的PIC系列单片机
作为世界上最为顶尖的单片机研发与生产企业,微芯公司设计的PIC系列单片机一度风靡全球,其优秀的性能和卓越的品质受到了许多人的青睐,其优点毋庸赘述。
但是,高知名度的缺点也显而易见,价格昂贵,性价比不高是其软肋[3]。
2.方案二:
选择德州仪器的MSP430系列单片机
MSP430单片机是一个16位的、具有精简指令集的混合型单片机,它具有极低的功耗、丰富的片内外设和方便灵活的开发手段。
但是,由于MSP430单片机系列价格较高,比较适合于较为复杂的应用系统[4]。
3.方案三:
选择Atmel公司的STC89C52单片机。
STC89C52单片机是一个低功耗,高性能CMOS8位单片机,片内含8KBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,片上Flash允许程序存储器在系统可编程,亦适于常规编程器,在功能强大的微型计算机的STC89C52单芯片上,拥有灵巧的8位CPU,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案可为许多嵌入式控制应用系统提供高性价比的解决方案[5]。
STC89C52引脚结构图如图1.2。
STC89C52实物图如图1.3。
图1.2AT89S52结构图图1.3STC89C52实物图
基于以上三个方案的分析,我们选择STC89C52单片机。
1.3.3温度传感器的选择
1.DS18B20的介绍
温度传感器的种类众多,在高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器很不错的。
超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。
(1)DS18B20的主要特征
1)全数字温度转换及输出;
2)最高12位分辨率,精度可达土0.5摄氏度;
3)12位分辨率时的最大工作周期为750毫秒;
4)可选择寄生工作方式;
5)检测温度范围为–55°C~+125°C;
6)内置EPROM,限温报警功能。
用户可定义报警设置;
7)64位光刻ROM,内置产品序列号,方便多机挂接;
8)多样封装形式,适应不同硬件系统;
9)独特的单线接口仅需要一个端口引脚进行通信;
10)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
11)无须外部器件;
12)可通过数据线供电,电压范围为3.0~5.5V;
13)零待机功耗;
DS18B20有64位ROM的结构,开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限[6]。
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
DS18B20芯片封装结构如图1.4。
图1.4DS18B20芯片封装结构
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图1.5所示。
图1.5DS18B20内部结构框
DS18B20工作原理:
DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。
其一个工作周期可分为两个部分,即温度检测和数据处理。
在讲解其工作流程之前我们有必要了解DS18B20的内部存储器资源。
DS18B20共有三种形态的存储器资源。
它们分别是:
ROM只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。
数据在出产时设置不由用户更改。
DS18B20共64位ROM。
RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。
第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EPROM(常用于温度报警值储存)的镜像。
在上电复位时其值将被刷新。
第5个字节则是用户第3个EPROM的镜像。
第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。
第9个字节为前8个字节的CRC码。
EPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EPROM,并在RAM都存在镜像,以方便用户操作[7]。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图1.6所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
保留
保留
CRC
TM
R1
R0
1
1
1
1
1
图1.6DS18B20字节定义
1.3.4显示模块选择
数码管如图1.7是一种半导体发光器件,其基本单元是发光二极管。
图1.7数码管图
1.数码管的分类
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮[8]。
如图1.8。
图1.8八段数码管实物图
2.数码管驱动原理
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,在有些时候需要做一个简单的显示系统。
那么在单片机I/O资源够用的情况下可以直接用单片机的I/O口驱动数码管,也可以根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
(1)静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个STC89C51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性[8]。
(2)动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮[9]。
通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2mS,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低[10]。
静态驱动方式简单不容易出错,如果电路设计合适,也能够用较少的线完成多个数码管的驱动。
但是动态驱动方式省单片机的资源,如今已经有很多这样成熟的基于动态扫描的芯片。
所以能满足本文显示设计要求,采用LG3641BHLED数码管做为显示电路,数码管显示电路采用4位共阳LED数码管从P14,P15,P16,P17串口输出段码。
第二章系统硬件电路设计
2.1系统整体电路图
该系统电路主要包括:
单片机最小系统、DS18B20温度传感器系统、报警系统、数码管显示模块电路及电源接口和数据下载接口等电路,如图2.1所示。
图2.1中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。
图2.1中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。
图2.1系统整体电路图
2.2单片机最小系统
最小系统包括晶振电路、复位电路、按键设置部分,STC89C52单片机最小系统的电路如图2.2,单片机STC89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要[11],很适合便携手持式产品的设计使用系统可用二节电池供电。
图2.2单片机最小系统电路
2.3温度传感器系统
DS18B20温度传感器电路,如图2.3。
图2.3DS18B20温度传感器系统
DS18B20采用单线进行数据传输,外接一个4.7K上拉电阻与单片机的P10口相连进行数据的双向传输[12]。
2.3.1DS18B20的测温原理
器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大于被测温度值[13]。
由表1-1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表1-2是一部分温度值对应的二进制温度数据[14]。
表1-1DS18B20温度转换时间表
R1
R0
分辨率/位
温度最大转向时间/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
表1-2一部分温度对应值表
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+85
0000010101010000
0550H
+25.0625
0000000110010000
0191H
+10.125
0000000010100001
00A2H
+0.5
0000000000000010
0008H
0
0000000000001000
0000H
-0.5
1111111111110000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
2.4报警电路设计
报警电路中加一PNP三极管驱动,基极接单片机P11口,当端口变成低电平时,驱动三极管会导通,VCC电压加载到蜂鸣器使其发声、报警发光二极管亮,如图2.4。
图2.4报警电路
2.5显示电路设计
如图2.5,采用LG3641BHLED数码管显示电路采用4位共阳LED数码管从P14,P15,P16,P17串口输出段码。
用PNP三极管进行驱动,当相应的端口变成低电平时,驱动相应的三极管会导通,驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。
图2.5数码管显示电路
2.6电源电路设计
此次选用的是串联起来的4节1.5V的5号电池,从经济的角度考虑的,干电池比较便宜,但其还有不足之处,干电池存储的是电量。
随着电量的消耗,它的供电电压就会不断的下降,所有需要使用一个稳压器,来保证电源供给的是标准的5V电压。
4节1.5V串联起来产生的和电压最大是6V,而本文的STC89C52单片机工作电压的范围是4V-5.5V,在该系统中我们使用的电压是5V。
这时我们可以用LM7805稳压器来产生稳定的5V电压[15]。
稳压电路如下图2.6所示:
图2.6LM7805稳压电路
在该电路中,C12是极性电容,起到稳压的作用,而C2是非极性电容,它起的作用是滤除输出电压中不是直流的成分,即滤波。
LM7805稳压芯片的稳压压差为2V左右,在实际使用中容易出现电压过低的状态,此时提供的电源达不到系统的电源要求,会出现程序跑飞的现象,而另一款LM2904的稳压压差可以达到40mV,效果比LM7805好很多,但考虑到经济原因就采用LM7805,只要在稳压前端提供较大的电源供应即可。
第三章.系统软件设计
3.1主程序
主程序的主要功能是负责读出并处理DS18B20的测量的当前温度值,温度的实时显示,并根据设置的上下限判断是否报警。
系统开始运行时,温度传感器测量并计算温度值通过P1.0口传输进单片机里进行处理,经过处理后的数据再通过P0口传输到数码管进行显示。
3.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图3.1示。
图3.1读温度流程图
3.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750mS,在本程序设计中采用1s显示程序延时法等待转换的完成[16]。
温度转换命令子程序流程图如图3.2所示
图3.2温度转换流程图
3.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3.3所示。
图3.3计算温度流程图
3.5键盘扫描流程图
如图3.4。
图3.4按键扫描流程图
第四章测试与结果分