基于51单片机的温度报警器系统.docx
《基于51单片机的温度报警器系统.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度报警器系统.docx(31页珍藏版)》请在冰豆网上搜索。
基于51单片机的温度报警器系统
西南林业大学
本科毕业(设计)论文
(二○一一届)
题目:
基于51单片机的温度采集系统
分院系部:
计算机与信息学院
专业:
电子信息工程
姓名:
导师姓名:
导师职称:
二○一一年六月
基于51单片机的温度采集系统
摘要:
温度作为常用物理量在我们生产生活中发挥着重要作用,随着科技的发展,传统温度计功能简单,已经不能适应生产生活,所以对电子温度计的设计十分必要。
本文将介绍一种智能电子温度计它携带方便误差值小,此温度计以STC10F04单片机为核心器件,温度信号采集由温度传感器DS18B20完成,并以数字信号传送给单片机,利用led显示所采集的温度。
本设计还安装有温度上下限报警器,当温度超过所设的上下线时蜂鸣就自动报警。
DS18B20它的性能优传统的温度传感器,省去了A/D转换器。
此外STC10F04还可以直接驱动LED,所以在很大程度上简化了电路和降低了设计成本。
关键词:
温度计,温度,STC10F04,DS18B20,LED
Temperatureacquisitionsystembasedon51MCU
XiChen
(Dept.ofComputerandInformationCollege,SouthwestForestryUniversity,Kunming,Yunnan,650224,China)
Abstract:
Temperatureasaphysicalquantityplaysanimportantroleinourlifeandproduction.Withthedevelopmentoftechnology,functionoftraditionalThermometerwhichissimplecannotmeettheproductionandliving.Therefore,thedesignoftheelectronicthermometerisverynecessary.
Thispaperdescribesanintelligentelectronicthermometeritiseasytocarryandasmallerror.ThisthermometertoSTC10F04singlechipasthecoredevice,temperaturesignalacquisitioncompletedbythetemperaturesensorDS18B20,anddigitalsignaltransmittedtothesinglechip,collectedbythetemperaturedisplayedonleddisplay.Thedesignhaveupperandlowerlimitsoftemperaturealarmwhenthetemperatureexceedsthesettotheupperandlowerlimitstheautomaticalarmbeep.DS18B20performancesurpassedtraditionalsenseorganandEliminatingtheneedforA/Dconverter.InadditionSTC10F04canalsodirectlydriveLED,itislargelysimplifiedthecircuitandreducingdesigncosts.
Keywords:
Thermometer,Temperature,STC10F04,DS18B20,LED
1绪论
1.1温度采集系统设计的背景
单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。
单片机的潜力越来越被人们所重视。
特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强,能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。
而现在的单片机在农业上也有了很多的应用。
1.2温度采集系统的目的
温度是日常生活、工业、医学、环境保护、化工、石油等领域最常用到的一个物理量。
测量温度的基本方法是使用温度计直接读取温度。
最常见到得测量温度的工具是各种各样的温度计,例如:
水银玻璃温度计,酒精温度计,热电偶或热电阻温度计等。
它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。
利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,有直观准确。
1.3温度采集系统完成的功能
本设计是对温度进行实时监测与控制,设计的温度采集系统实现了基本的温度采集功能和上下限报警功能:
当温度低于设定上下限温度时,系统自动报警,所装的四位一体数码管即时显示温度,其温度精确到小数点一位。
2设计要求与方案论证
2.1设计要求
本设计主要是基于51系列单片机设计一个电子温度计并安装蜂鸣报警装置,该电子温度计与传统的温度计相比,具有读写方便,测温范围广,温度误差值小,其输出温度值采用数字显示,主要用于要求测温比较准确的场所,该设计的控制器是用STC10F04单片机,温度传感器采用DS18B20,用四位一体共阴极LED数码管实现其温度显示,其主要功能有:
(1)电子温度计测温范围:
-55-125℃;
(2)温度值误差在正负0.5℃以内;
(3)要求实现四位温度显示,温度值精确到小数点追后一位;
(4)当温度超过程序所设中间值系统自动报警。
2.2方案论证
方案一:
因为本设计是测温电路,可以是用热敏电阻之类的器件,利用其感温效应,将被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案二:
采用DS18B20数字温度传感器作为温度采集元件,测温范围为-55~125℃,最高分辨率可以达到0.0625℃。
数字温度传感器DS18B20可以直接读出被测温度值,无需A/D转换,测温误差在正负0.5摄氏度之间,这就满足了设计的要求,而且DS18B20才有三个管脚,有一个管脚接单片机,另外两个一个接地一个接VCC因此减少了外部的硬件电路,具有低成本和易使用的特点。
从以上两个方案很容易看出,采用方案二电路比较简单,软件程序设计也比较简单,因此本文采用了方案二。
2.3总体设计方案
按照系统设计功能的要求,确定系统由4个模块组成:
主控制器、测温电路、显示电路、报警电路。
数字温度计总体电路结构框架图如图2-1所示。
主控制器
STC10F04
DS18B20温度采集系统
共阴极LED显示系统
超温报警器
系统电源
时钟震荡
MAX232
下载模块
PC机
图2-1数字温度计总体电路结构框架图
3硬件电路设计
3.1元器件清单
本系统所用的硬件有:
见表1-1系统硬件清单。
表1-1系统硬件清单
器件名称
数量
STC10F04单片机
1个
LED发光二级管
1个
蜂鸣器
1个
四位一体LED数码管、排阻
1个
PnP三极管
1个
DS18B20
1个
MAX232下载模块
1个
电容
若干
电阻
若干
导线
若干
复位开关
1个
晶振
1个
3.2主要元器件介绍
3.2.1主控制器STC10F04
A.本系统采用的单片机是STC10F40如图3-1STC10F40管脚图
图3-1STC10F40管脚图
B.
STC10F04内部结构框图3-2所示
图3-2STC10F04内部结构框图
C.STC10F04引脚功能描述:
STC10F04芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口,如图3-1所示。
左边那列逆时针数起,依次为1,2,3,4,5……40,其中芯片的1脚的顶上有个凹槽。
在单片机的40个引脚中,电源引脚2根,外接晶体振荡器2根,控制引脚4根以及4组8位可编程I/O引脚32根。
各个管脚功能:
VCC:
电源
GND:
接地
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为STC89C52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号PSEN是外部程序存储器选通信号。
当STC89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
3.2.2温度传感器DS18B20
D.DS18B20的主要特性
(1)适应电压范围更宽,电压范围为3~5.5V,在寄生电源方式下可由数据线供电;
(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;
(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;
(4)DS18B20在使用中不需要任何外围元件,全部传感器元件及转换电路集成在形如一只三极管的集成电路内;
(5)测温范围-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)用户可定义报警设置;
(9)负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
E.DS18B20外形和引脚
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的实物图和管脚排列图如图3-3和3-4所示。
图3-3DS18B20实物图图3-4DS18B20管脚排列图
DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为接地端;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
F.DS18B20的结构
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图3-5所示。
I/O
C
64
位ROM和
单
线
接
口
高速缓存
存储器与控制逻辑
温度传感器
高温触发器TH
低温触发器TL
配置寄存器
8位CRC发生器
Vdd
图3-5DS18B20内部结构
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为9字节的存储器,结构如表3-1所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图3-6所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
表3-1RAM的9字节定义
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
保留
保留
CRC
图3-6DS18B20字节定义
表3-2DS18B20温度转换时间表
R1
R0
分辨率\位
温度最大转换时间\ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
由表3-2可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
低字节
8
4
2
1
1\2
1\4
1\8
1\16
高字节
S
S
S
S
S
64
32
16
图3-7温度数据值格式
图3-7中,S表示符号位。
当S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当S=1时,表示测得的温度值为负值,要先将补码变成原码。
测到温度需乘于0.0625即可得到实际温度。
表3-2是一部分温度值对应的二进制温度数据。
表3-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
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
G.DS18B20的测温原理
DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
DS18B20温度传感器与单片机的接口电路
H.DS18B20有两种供电方式
(1)寄生电源供电方式:
在寄生电源供电方式下,DS18B20从单线信号线上汲取能量,在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电,如图3-8所示
图3-8寄生电源供电电路图
(2)外部电源供电方式
在外部电源供电方式下,DS18B20工作电源由VCC引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。
注意:
在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。
外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单。
本次数字温度计的设计采用的就是外部电源供电方式,其连接方式如图3-9所示。
图3-9外部电源供电方式
3.3系统各部分硬件电路介绍
3.3.1显示电路
显示电路采用共阴数码管显示。
数码管分为共阳型和共阴型,共阳极型就是发光管的正极都连在一起,作为一条引线,负极分开。
八段数码发光管就是8个发光二极管组成的,在空间排列成为8字型带个小数点,只要将电压加在阳极和阴极之间相应的笔画就会发光。
8个发光二极管的阴极并接在一起,8个阳极分开,因此称为共阴八段数码管。
接1k的上拉电阻的作用是给信号线提供一个驱动电压,使之传输更稳定。
本次设计显示电路采用4位共阴LED数码管,数码管图形如图3-10所示。
图3-10四位一体共阴数码管图形
数码管的管脚分配如图3-11。
图3-13数码管的管脚分配
其中:
1seg1-------数码管百位;
2seg2-------数码管十位;
3seg3-------数码管个位;
4seg4-------数码管小数位。
从STC10F04的P0口输出段码,列扫描用P2..3-P2.6口来实现。
数码管的段码与单片机的管脚连接分别为:
P0.7------b;
P0.6------g;
P0.5------c;
P0.4------dp;
P0.3------d;
P0.2------e;
P0.1------f;
P0.0------a;
数码管位码与单片机的管脚连接分别为:
P2.3------数码管小数位
P2.4------数码管个位
P2.5------数码管十位
P2.6------数码管百位
LED显示电路如图3-14所示:
图3-14显示电路图
3.3.2DS18B20与单片机的接口电路
本次数字温度计传感器是采用的外部电源供电方式,其中三脚接电源,一脚接地,二脚是信号线直接与P2.0口相连,进行数据的传输。
这种方式可以使传感器工作稳定可靠,抗干扰能力强,而且电路也比较简单。
其接口图如图3-15所示。
图3-15传感器DS18B20与单片机的接口电路
DS18B20与单片机的数据传输原理:
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序