基于DS18B20的温度显示及其报警控制系统.docx
《基于DS18B20的温度显示及其报警控制系统.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度显示及其报警控制系统.docx(37页珍藏版)》请在冰豆网上搜索。
![基于DS18B20的温度显示及其报警控制系统.docx](https://file1.bdocx.com/fileroot1/2022-12/10/b028a779-27c2-46ef-84f3-cffd4a0331eb/b028a779-27c2-46ef-84f3-cffd4a0331eb1.gif)
基于DS18B20的温度显示及其报警控制系统
摘要
随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。
温度传感器DS18B20具有性能稳定、灵敏度高、抗干扰能力强、使用方便等优点,广泛应用于冰箱、空调器、粮仓等日常生活中温度的测量和控制。
本文采用51单片机来实现对温度的测量和报警。
它的主要组成部分有:
STC89C52单片机,DS18B20,键盘与显示电路,AT24C02温度范围存储电路,温度报警和控制电路。
它可以实时地检测和显示温度,可以设定温度范围,实现对温度的报警和自动控制。
关键词:
温度计;DS18B20;51单片机;温度报警。
ABSTRACT
TemperaturesensorDS18B20hasalotofadvantages,suchasstableperformance,highsensitivity,stronganti-interferencecapability,convenienceofuse,etc.Anditwaswidelyusedforthemeasurementandcontroloftemperatureinrefrigerators,airconditioners,barnandotherdailylifeinthemeasurementandcontroloftemperature.Inthisarticle,Weusedasinglechipforrealizingtemperaturemeasurementandalarm.ItwasmainlycomponentofSTC89S52chip,DS18B20,keyboardanddisplaycircuit,storagecircuitoftemperaturerange,temperaturealarmandcircuitcontrol.Itrealizenotonlyreal-timedetectionanddisplaytemperature,butalsosettingthetemperaturerangeandthemeasurementandcontroloftemperature.
Keywords:
Thermometer;DS18B20;51MCU;temperaturealarm
2.3系统的工作过程3
3.1单片机最小系统的设计5
3.1.189C52单片机简介5
3.1.2单片机最小系统8
3.2温度检测电路及DS18B20测温原理8
3.2.1DS18B20介绍8
3.2.2DS18B20特性9
3.2.3DS18B20硬件电路10
3.3报警温度调节电路10
3.4报警温度存储电路11
3.5报警及控制电路12
3.6显示电路13
3.7小结13
4.3测温程序设计16
4.3.1温度转换工作流程16
4.3.2读暂存器工作流程16
4.3.3读数据求出十进制16
4.4报警温度调节及存储设计17
4.4.1按键设置程序17
4.4.2温度储存程序17
4.5温度报警及控制设计19
4.6小结20
第一章绪论
1.1设计背景
温度是一个很重要的物理量,它直接影响化学反应、发酵、煅烧、浓度、蒸馏、结晶以及空气流动等物理及化学过程。
温度控制失误就可能引起生产安全、质量和产量等一系列问题。
温度测量无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用。
传统的温度采集方法不仅费时费力,而且精度差,而单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。
特别是在环境恶劣或温度较高等场合下,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对加热炉内温度进行测量、显示、报警及控制,使之达到工艺标准,以单片机为核心设计的温度测量系统,可以对温度进行实时测量,并将温度数据进行显示和报警以及进行相应控制。
1.2温度测量及其报警系统的国内外情况
温度检测系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总的发展水平仍然不高,和日本、德国、美国等先进国家相比有着较大的差距。
采用51单片机来对温度进行检测和控制,不仅具有成本低廉、控制方便和灵活性大等优点,而且可以提高被控温度的技术指标,从而提高产品的质量和数量。
因此,单片机对温度的处理问题是一个工业生产中经常会遇到的问题。
1.3本文研究内容
本文是基于STC89C52单片机,采用数字温度传感器DS18B20,不需要A/D转换,可直接进行温度采集显示,报警和控制的数字温度计设计。
包括传感器数据采集电路,温度显示电路,上下限报警调整及存储电路,温度报警和控制电路,单片机主板电路等组成。
第二章系统总体设计
2.1系统方案选择
该系统主要由温度测量,数据采集和数据处理部分组成,实现方案有很多种,下面将列出两种经常用到的实现方案。
2.1.1方案一
采用热敏电阻传感器。
利用热敏电阻阻值随温度变化而显著变化,能直接将温度的变化转换为电压的变化,进而制成温度计。
数据采集部分则使用带有A/D通道的单片机或使用专业的A/D转换芯片进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,同时对温度进行相应的报警和控制。
此方案的优点是工作温度范围非常宽,体积小,精确度高,但是它们也存在着输出电压小、抗干扰能力差的缺点,并且这种设计需要用到A/D转换电路,感温电路比较复杂,增大系统设计的难度。
2.2.2方案二
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机控制及处理,省去传统测温方法的很多外围电路。
且该芯片的性能比较稳定,线形较好,在0—100°C时,最大线性偏差小于1°C。
DS18B20采用了单总线的数据传输,由DS18B20和微控制器STC89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与单片机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用51单片机控制,软件编程的自由度很大,可通过C语言编程实现各种各样的算术算法和逻辑控制,而且硬件实现简单,安装方便。
另外51单片机在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
该系统利用STC89C52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度并可以根据需要设定上下限报警温度进行报警和相应的控制处理。
该系统扩展性很强,它可以利用键盘来进行温度范围调整,利用AT24C02芯片作为存储器件,获得的数据可以通过I2C总线协议与AT24C02通信而把温度范围数据储存起来,方便应用中的实时调整以及关机重启后加载数据。
从以上两种方案,容易看出方案二的测温装置电路更简单、实现更方便、程序设计也更容易实现,故本次设计采用了方案二。
2.2系统的组成
本课题是以51单片机为核心设计的一种数字温度报警系统,系统整体硬件电路包括温度采集电路,温度显示电路,上下限报警调整电路,存储电路,报警及控制电路,单片机主板电路等组成。
系统框图主要由主控制器、温度传感器、报警按键设置、AT24C02、数码管显示、报警和控制电路组成。
系统框图如图2-1所示
图2-1系统框图
单元模块功能如下:
检测电路由DS18B20构成,DS18B20是美国DALLAS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
系统的核心器件是51单片机,它是整个系统的心脏,由它来控制协调各功能模块的正常工作,考虑到系统的功能和经济性因素,采用的是性价比比较高的STC89C52。
温度范围值的存储采用AT24C02,AT24C02是一个2K串行CMOSE2PROM存储器,其通过I2C协议与单片机进行通信而把报警温度值储存起来,关机重启后能保留报警温度值,从而无需再进行设置。
报警功能由蜂鸣器完成,通过单片机I/O口向蜂鸣器发出不同频率的脉冲而发出不同的警报声对相应温度进行报警。
温度控制模块,温度过高时由风扇制冷,温度过低时由红色LED灯模拟加热器进行升温处理。
显示模块则由数码管进行显示。
2.3系统的工作过程
系统由DS18B20采集温度后进行转换再把温度数据传递给单片机,单片机控制数码管进行同步温度显示,同时对温度值进行处理,当温度高于设定值后进行制冷处理,温度继续上升超过设定值+3°C时控制蜂鸣器进行高频率报警处理。
当温度低于设定值后进行加热处理,温度继续下降低于设定值-3°C时控制蜂鸣器进行低频率报警处理。
系统运作过程中可以随时对温度上下限制进行设置,通过按键输入调整数值,由于单片机片内RAM具有掉电丢失数据的特性,这里把温度上下限数值存入AT24C02中。
当系统断电重启后首先通过AT24C02把温度范围值加载到单片机内从而保证系统正常工作。
第三章系统的硬件设计
3.1单片机最小系统的设计
本系统采用STC89C52为主控器,兼容所有89C51单片机。
3.1.189C52单片机简介
一、89C52单片机的片内结构
89C52单片机的片内结构如图3-1所示。
它把那些作为控制应用所必需的基本功能部件都集成在一个集成电路芯片上。
它由如下功能部件组成:
(1)微处理器(CPU)
(2)数据存储器(RAM)
(3)程序存储器(4KFlashROM)
(4)4个8位可编程并行I/O口(P0口.P1口、P2口、P3口)
(5)1个全双工串行口
(6)2个16位定时器/计数器
(7)中断系统
(8)特殊功能寄存器(SFR)
图3-189C52单片机片内结构
1、CPU
89C52单片机中有1个8位CPU,与通用的CPU基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的位处理功能。
2、数据存储器(RAM)
片内为256B,片外最多可扩展64KB。
片内128B的RAM以高速RAM的形式集成在单片机内,可以加快单片机运行的速度,而且这种结构的RAM还可以降低功耗。
3、程序存储器(ROM)
程序存储器用来存储程序。
89C52片内集成有8KB的Flash存储器,片外可外扩至64KB。
4、中断系统
5个中断源,2级中断优先权。
5、定时器/计数器
片内有3个16位的定时器/计数器,具有4种工作方式。
6、串行口
1个全双工的串行口,具有4中工作方式。
可进行串行通信,扩展并行I/O,甚至于多个单片机相连构成多级系统,从而使单片机的应用更广。
7、P1口、P2口、P3口、P0口
4个8位并行I/O口。
8、特殊功能寄存器(SFR)
共有21个特殊功能寄存器,用于CPU对片内各功能部件进行管理、控制和监视。
特殊功能寄存器实际上是片内各个功能部件的控制寄存器和状态寄存器,这些特殊功能寄存器映射在片内RAM区80H~FFH的地址区间内。
二、89C52单片机引脚功能说明
图3-289C52单片机引脚图
(1)电源引脚
VCC(40脚):
接+5V电源
GND(20脚):
接地。
(2)时钟引脚
XTAL1(19脚):
片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18脚):
片内振荡器反相放大器的输出端。
(3)控制引脚
RST(9脚):
复位信号输入端,高电平有效。
单片机运行时,在此引脚加上持续时间大于2个机器周期的高电平时,就可以对单片机完成复位操作。
/VPP(31脚):
当
引脚为高电平时,89C52单片机读片内程序存储器,但在PC值超过8KB时将自动转向外部程序存储器中的程序。
为低电平时,对程序存储器的读操作只先顶着外部程序存储器。
(4)I/O口引脚
P0口:
8位,漏极开路的双向I/O口。
当89C52扩展外部存储器及I/O借口芯片时,P0口作为地址总线低8位及数据总线的分时复用端口。
作为通用I/O口时需加上拉电阻,作为普通I/O口输入时应先向端口的输出锁存器写入1。
P1口:
8位,准双向I/O口,具有内部上拉电阻。
作为普通I/O输入时,先向端口输出锁存器写入1.
P2口:
8位,准双向I/O口,具有内部上拉电阻,作为普通I/O输入时同上。
P3口:
8位,准双向I/O口,具有内部上拉电阻,作为普通I/O输入时同上,P3口还可以提供第二功能,其第二功能定义如表3-1所示[1]:
表3-1P3口第二功能
引脚
第二功能
说明
P3.0
RXD
串行数据输入口
P3.1
TXD
串行数据输出口
P3.2
外部中断0输入
P3.3
外部中断1输入
P3.4
T0
定时器0外部技术输入
P3.5
T1
定时器1外部计数输入
P3.6
外部数据存储器写选通输出
P3.7
外部数据存储器读选通输出
3.1.2单片机最小系统
整个系统的核心部件就是单片机,搭建一个稳定的单片机最小系统对于系统的正常工作是很重要的。
图3-3单片机最小系统
单片机最小系统如图3-3所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可以用于数据的输出和输入,P3口具有第二功能为系统提供一些控制信号。
时钟电路用于产生单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。
单片机内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。
电路中的微调电容通常选择为30pF左右,该电容的大小会影响到振荡器频率的高低、振荡器的稳定性和起振的快速性。
晶体的振荡频率采用12MHz。
MCS-51的复位是由外部的复位电路来实现,采用最简单的上电复位电路。
3.2温度检测电路及DS18B20测温原理
3.2.1DS18B20介绍
DS18B20引脚如图3-4所示。
图3-4DS18B20的管脚排列
DALLAS半导体公司的单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积小、适用于多种场合。
DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
温度测量范围为-55~+125°C,可编程为9位~12位转换精度,测温分辨率可达0.0625°C。
被测温度用符号扩展的16位数字量方式串行输出。
多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口很少,可节省大量的引线和逻辑电路。
3.2.2DS18B20特性
(1)适应电压范围宽:
3.0V~5.5V,在寄生电源方式下可由数据线供电。
(2)独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
(4)测温范围-55℃~+125℃,在-10℃~+85℃时精度为±0.5℃。
(5)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
(6)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字。
(7)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有很强的抗干扰纠错能力。
(8)负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作[2]。
3.2.3DS18B20硬件电路
在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时VDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接10KΩ左右的上拉电阻。
我们采用的是第一种连接方法,如图3-5所示,把DS18B20的数据线与单片机的P2.5管脚连接,再加上上拉电阻。
图3-5DS18B20连接图
3.3报警温度调节电路
本系统一共设置了3个按键,系统运作时按key1键切换到下限温度设置模式,同时数码管显示下限温度,按key2,key3可以对相应的下限温度进行加减设置。
再按key1键切换到上限温度设置模式,同时显示上限温度,同样按key2,key3可以进行设置。
再按key1切换到正常显示温度模式,同时将上下限温度值储存到AT24C02中。
按键电路如图3-6所示,直接将I/O口通过按键接地即可,程序运行时检测到低电平即为按键按下。
图3-6温度调整按键电路
3.4报警温度存储电路
系统需要通过按键对报警温度上下限进行灵活设置,而设置后若系统断电重启单片机复位后温度上下限值将会回到最初的值而不是设置值,所以需要利用FLASH把上下限值储存起来,这里用到AT24C02。
AT24C02是美国Atmel公司的低功耗CMOS型EEPROM,内含256*8位存储空间,具有工作电压宽(2.5V~5.5V),擦写次数多(大于10000次),写入速度快(小于10ms),抗干扰能力强,数据不易丢失,体积小等特点。
并且它是采用I2C总线式进行数据读写的串行操作,只占用很少的资源和I/O线。
AT24C02有一个16字节页写缓冲器,该器件通过I2C总线接口进行操作,还有一个专门的写保护功能。
AT24C02的引脚如图3-7,各引脚功能如下[3]:
SCL:
串行时钟输入管脚,用于产生器件所有数据发送或接收的时钟。
SDA:
双向串行数据/地址管脚,用于器件所有数据的发送或接收。
A0、A1、A2:
器件地址输入端。
这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。
使用AT24C02最大可级联8个器件。
WP:
写保护。
如果WP管脚连接到VCC,所有的内容都被写保护,只能进行读操作。
当WP管脚连接到GND或悬空,允许器件进行正常的读/写操作。
GND:
电源地(GND)。
VCC:
电源电压(5V)。
图3-7AT24C02引脚图
AT24C02通过IIC总线与单片机进行通信,电路连接如图3-8
图3-8AT24C02电路
3.5报警及控制电路
由于只对温度太高和太低报警,报警功能并不复杂,这里没有采用语音报警功能,而用蜂鸣器代替,这样系统更简洁,软件方面也比较好控制,成本也更低。
蜂鸣器电路如图3-9,采用PNP三极管驱动蜂鸣器[4]
图3-9蜂鸣器电路
在温度控制方面,降温利用小风扇实现,而考虑到成本和简便,加热器用红色LED灯模拟。
电路如图3-10
图3-10温度控制电路
3.6显示电路
显示部分可以用液晶显示和数码管显示,由于本系统需要显示的只有数字,故用数码管显示即可。
如图3-11,这里采用的是共阴数码管。
图3-11共阴数码管
S2,S3,S4分别为十,个,小数位的阴极,阴极由NPN三极管加上拉电阻驱动,如图3-12
图3-12数码管阴极驱动
图中shi,ge,xiao相应连接单片机P1.0,P1.1,P1.2口,控制S2,S3,S4的电平高低。
3.7小结
系统硬件电路采用AltiumDesigner6.9制作,硬件制作过程中遇到不少困难,如电路板制作,硬件的调试等,经过不懈努力及老师同学帮助终于完成硬件设计。
整机硬件电路图请见附录A。
第四章系统软件设计
4.1软件总体设计方案
本设计的软件分4个大部分:
温度测量部分,温度显示部分,报警温度设置部分和温度处理部分,其中温度测量部分为软件设计的关键,此部分决定温度精度的大小。
系统上电后首先加载EEPROM中的上下限温度值,然后初始化定时器用于对蜂鸣器的控制。
然后进入系统主循环,在主循环中首先对温度进行测量,然后进行显示,下一步对温度进行处理,对超出温度范围的情况进行控制及报警处理,然后扫描键盘,如果扫描到按键1按下将进入温度设置模式,通过按键1,2,3对上下限温度进行调节,设置完成后把上限值和下限值储存到EEPROM的相应地址中。
系统主流程图如图4-1:
图4-1系统主流程
4.2主程序设计
系统软件主要在温度显示和键盘扫描之间循环,隔一段时间才对DS18B20进行温度获取,所以显示和扫描循环50次后再和温度测量部分构成系统大循环,即大约每一秒获取一次温度数据。
如下为系统主程序:
voidmain()
{
uintj;//计数器
xia=read_add
(2);
delayms(10);
shang=read_add(4);//读出保存的上限数据
TMOD=0x01;//定时器工作在方式1
ET0=1;
EA=1;
TH0=(65536-250)/256;
TL0=(65536-250)%256;
TR0=0;//先关闭定时器
while
(1)
{
tempchange();//温度转换
dis_temp(temp);//显示温度
dis_temp(temp);
get_temp();//获取温度
dis_temp(temp);
dis_temp(temp);
deal();//温度处理
j=50;
while(j--)
{
dis_temp(temp);
if(KEY1==0)set();//键盘扫描
}
}
}
4.3测温程序设计
DS18B20与单片机通信采用的是单总线技术,它采用单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的,因而这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。
DS18B20测温过程主要分三个步骤:
DS18B20温度转换,DS18B20度暂存数据,数据求出十进制,如图4-2:
图4-2测温流程
4.3.1温度转换工作流程
1.DS18B20复位
2.写入跳过ROM的字节命令0xcc
3.写入开始转换的功能命令0x44
4.延迟月750~900ms
4.3.2读暂存器数据流程
1.DS18B20复位
2.写入跳过ROM的字节命令0xcc
3.写入读暂存器功能命令0xee
4.读入第0个字节LS,转换结果低八位
5.读入第1个字节MS,转换结果高八位
6.复位,表示读取暂存结果
4.3.3数据求出十进制
1.整合LS和MS数据
2.判断是否为正(由于本系统测量范围在0到99.9之间,故不要)
3.求十进制值,本系统要求精度为0.1°C,故将测得的数据乘以0.0625
4.4报警温度设置及储存设计
温度设置采用三按键设置,利用按键1转换模式,按键2和按键3分别进行加和减。
4.4.1按键设置程序
按键1对应键值key1的大小进行模式转换,每扫描到键1按下时key1加1,当key1=1时为下限设置模式,key1=2时为上限设置模式,key1=3时满足“key1>