基于51单片机的温度测量系统设计说明doc.docx
《基于51单片机的温度测量系统设计说明doc.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度测量系统设计说明doc.docx(39页珍藏版)》请在冰豆网上搜索。
基于51单片机的温度测量系统设计说明doc
基于51单片机的温度测量控制系统设计
摘要
随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。
温度传感器DS18B20具有性能稳定、灵敏度高、抗干扰能力强、使用方便等优点,广泛应用于冰箱、空调器、粮仓等日常生活中温度的测量和控制。
本文采用51单片机来实现对温度的测量和控制。
它的主要组成部分有:
AT89S52单片机最小系统,DS18B20测温电路,按键电路、LCD1602显示电路,蜂鸣器报警电路。
它可以实时地检测和显示温度,可以设定温度范围,实现对温度的报警和自动控制。
关键词:
温度;51单片机;DS18B20;测量和控制。
ABSTRACT
TemperaturesensorDS18B20hasalotofadvantages,suchasstableperformance,highsensitivity,stronganti-interferencecapability,convenienceofuse,etc.Anditwaswidelyusedforthemeasurementandcontroloftemperatureinrefrigerators,airconditioners,barnandotherdailylifeinthemeasurementandcontroloftemperature.Inthisarticle,Weusedasinglechipforrealizingtemperaturemeasurementandalarm.ItwasmainlycomponentofAT89S52chip,DS18B20,keyboardanddisplaycircuit,temperaturealarmandcontrolcircuit.Itrealizenotonlyreal-timedetectionanddisplaytemperature,butalsosettingthetemperaturerangeandthemeasurementandcontroloftemperature.
Keywords:
Temperature;51MCU;DS18B20;Measurementandcontrol
1引言
1.1温度测量控制系统设计的背景、发展历史及意义
温度是生产过程和科学实验中普遍而且重要的物理参数,随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。
特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。
针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。
温度是一个重要的物理量,它反映了物体冷热的程度,与自然界中的各种物理和化学过程相联系。
在工、农业生产和日常生活中,各个环节都与温度紧密相联,温度的准确监测及控制占据着极其重要地位。
比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行等。
没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。
可见,温度的测量和控制是非常重要的。
随着电子技术和微型计算机的迅速发展,单片机在电子产品中的应用已经越来越广泛。
利用单片机对温度进行控制的技术也随之而生,并日益发展和完善,且越来越显示出它的优越性。
1.2温度测量控制系统的目的
本设计的内容是温度测试控制系统,控制对象是温度。
温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。
而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。
针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。
1.3温度测量控制系统完成的功能
本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:
当温度低于设定下限温度时,蜂鸣器报警,同时红灯亮,模拟加热过程,使温度上升;当温度高于设定上限温度时,蜂鸣器报警,同时绿灯亮,模拟制冷过程,使温度下降;温度在上下限温度之间时,蜂鸣器和红绿灯不动作;LCD1602实时时显示温度,精确到小数点一位;通过独立按键可以设置温度的控制范围。
2总体设计方案
2.1方案一
测温电路的设计,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
2.2方案二
考虑使用温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。
比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。
在本系统的电路设计方框图如图2.1所示,它由五部分组成:
图2-1温度计电路总体设计方案
1.控制部分
单片机AT89S52具有低电压供电和体积小等特点,它所具有的资源能足够满足此次电路系统的设计需要,并且很适合便携手持式产品的设计使用。
2.显示部分
显示电路采用LCD1602,第一行显示当前温度,第二行显示控制温度范围。
3.用户按键
用户按键采用4位独立按键,能够对温度上下限进行设置。
4.蜂鸣器报警电路
当前温度超出设定的温度上下限时,蜂鸣器报警。
5.温度测量电路
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温。
这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。
数字温度传感器DS18B20把采集到的温度通过数据引脚传到单片机的P1.4口。
此部分只用到DS18B20和单片机,硬件很简单。
(1)DS18B20的性能特点如下[9]:
1)独特的单线接口仅需要一个端口引脚进行通信;
2)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
3)无须外部器件;
4)可通过数据线供电,电压范围为3.0~5.5V;
5)零待机功耗;
6)温度以3位数字显示;
7)用户可定义报警设置;
8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(2)DS18B20的内部结构
DS18B20采用3脚PR-35封装,如图1.2所示;DS18B20的内部结构,如图3所示。
图2-2DS18B20封装
(3)DS18B20内部结构主要由四部分组成[5]:
1)64位光刻ROM。
开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因[10]。
64位闪速ROM的结构如下.
表2-1ROM结构
8b检验CRC
48b序列号
8b工厂代码(10H)
MSBLSBMSBLSBMSBLSB
图2-3DS18B20内部结构
2)非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。
3)高速暂存存储,可以设置DS18B20温度转换的精度。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PRAM。
高速暂存RAM的结构为8字节的存储器,结构如图1.3所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
它的内部存储器结构和字节定义如图1.3所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式。
表2-2DS18B20内部存储器结构
Byte0
温度测量值LSB(50H)
Byte1
温度测量值MSB(50H)
E2PROM
Byte2
TH高温寄存器
----
TH高温寄存器
Byte3
TL低温寄存器
----
TL低温寄存器
Byte4
配位寄存器
----
配位寄存器
Byte5
预留(FFH)
Byte6
预留(0CH)
Byte7
预留(IOH)
Byte8
循环冗余码校验(CRC)
2)非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。
3)高速暂存存储,可以设置DS18B20温度转换的精度。
DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,如图1.4。
图2-3DS18B20字节定义
TM
R1
R0
1
1
1
1
1
由表1.1可见,分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表1.2是一部分温度值对应的二进制温度数据[6]。
表2-4DS18B20温度转换时间表
R1
R0
分辨率/位
温度最大转向时间/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
表2-5 一部分温度对应值表
温度/℃
二进制表示
十六进制表示
+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
续表2-5
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
4)CRC的产生
在64bROM的最高有效字节中存储有循环冗余校验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数
3DS18B20温度传感器简介
3.1温度传感器的历史及简介
温度的测量是从金属(物质)的热胀冷缩开始。
水银温度计至今仍是各种温度测量的计量标准。
可是它的缺点是只能近距离观测,而且水银有毒,玻璃管易碎。
代替水银的有酒精温度计和金属簧片温度计,它们虽然没有毒性,但测量精度很低,只能作为一个概略指示。
不过在居民住宅中使用已可满足要求。
在工业生产和实验研究中为了配合远传仪表指示,出现了许多不同的温度检测方法,常用的有电阻式、热电偶式、PN结型、辐射型、光纤式及石英谐振型等。
它们都是基于温度变化引起其物理参数(如电阻值,热电势等)的变化的原理。
随着大规模集成电路工艺的提高,出现了多种集成的数字化温度传感器。
3.2DS18B20的工作原理
3.2.1DS18B20工作时序
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
1.每一次读写之前都必须要对DS18B20进行复位;
2.复位成功后发送一条ROM指令;
3.最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待15~60微秒左右后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
其工作时序包括初始化时序、写时序和读时序,具体工作方法如图2.1,2.2,2.3所示。
(1)初始化时序
图3-1初始化时序
总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。
应答脉冲使主机知道,总线上有从机设备,且准备就绪。
主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。
接着主机释放总线,4.7KΩ上拉电阻将总线拉高,延时15~60us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时480us[12]。
(2)写时序
图3-2写时序
写时序包括写0时序和写1时序。
所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,都是以总线拉低开始。
写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。
写0时序,主机输出低电平,延时60us,然后释放总线,延时2us[8]。
(3)读时序
图3-3读时序
总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。
所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。
每个读时序都由主机发起,至少拉低总线1us。
主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。
主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us[4]
3.2.2ROM操作命令
当主机收到DSl8B20的响应信号后,便可以发出ROM操作命令之一,这些命令如表2.2:
ROM操作命令。
3.3DS18B20的测温原理
3.3.1DS18B20的测温原理
每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM中。
主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出。
程序可以先跳过ROM,启动所有DSl8B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。
DS18B20的测温原理如图2.4所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图2.3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值.
表3-1ROM操作命令
指令
约定代码
功能
读ROM
33H
读DS18B20ROM中的编码
符合ROM
55H
发出此命令之后,接着发出64位ROM编码,访问单线总线上与该编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作准备
搜索ROM
0F0H
用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作。
续表3-1
告警搜索
命令
0ECH
执行后,只有温度超过设定值上限或者下限的片子才做出响应
温度变换
44H
启动DS18B20进行温度转换,转换时间最长为500MS,结果存入内部9字节RAM中
读暂存器
0BEH
读内部RAM中9字节的内容
写暂存器
4EH
发出向内部RAM的第3,4字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据
复制暂存器
48H
将E2PRAM中第3,4字节内容复制到E2PRAM中
重调E2PRAM
0BBH
将E2PRAM中内容恢复到RAM中的第3,4字节
读供电
方式
0B4H
读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”
另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
图3-4测温原理内部装置
3.3.2DS18B20的测温流程
图3-5DS18B20测温流程
4硬件电路设计
4.1单片机最小系统设计
单片机最小应用系统,是指用最少的原件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统应包括单片机、晶振电路、复位电路。
下面介绍51单片机的最小系统电路图。
图4.1单片机最小系统
单片机的最小系统是由电源、复位、时钟,下面介绍一下每一个组成部分。
4.1.1时钟电路
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
AT89单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。
在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
单片机复位电路如下图4.2所示:
图4.2时钟电路
4.1.2复位电路
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。
复位是由外部的复位电路来实现的。
片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。
复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。
当时钟频率选用6MHz时,C取22μF,Rs约为200Ω,Rk约为1K。
复位操作不会对内部RAM有所影响。
常用的复位电路如下图所示:
图4.3复位电路图
4.1.3电源电路
9v电源经LM7805转化成5V,D1为电源指示灯,C5为电源滤波电容。
图4.4电源电路
4.2测温电路设计
对DS18B20的设计外部供电方式单点测温。
在这种外部电源供电方式下,DS18B20工作电源由VDD引脚接入,因为由VDD接入电源不存在电源电流不足的问题,可以保证转换精度。
不过要注意。
在这种外部供电的方式下,DS18B20的GND脚不能悬空,否则不能转换温度,读取的温度总是80oC。
DS18B20的测温电路连接如下图4.5所示:
图4.5测温电路
4.3显示电路设计
字符型液晶显示模块是一种专门用于显示字母、数字、版本号等的点阵式液晶显示模块。
它是由若干个5×7或5×11等点阵符位组成的,第一个点阵字符位都可以显示一个字符。
点阵字符位之间有一定点距的间隔,这样就起到了字符间距和行距的作用。
本系统采用字符型液晶显示模块1602,我设置单片机驱动LCD1602采用并行方式,RS,RW,EN分别接主控单片机的P24,P25,P26脚,Q0~Q7接到主控单片机的P0数据接口。
LCD1602的硬件连接原理图如图4.6所示:
图4.6LCD1602显示电路
4.4键盘输入电路
四个键分别连接单片机P3^4、P3^5、P3^6、P3^7构成独立式键盘,分别实现温度报警范围上下限的设定功能,如图4.7所示。
图4.7键盘输入电路
4.5蜂鸣器报警电路
当温度超过设定温度范围时,实现蜂鸣器鸣叫报警,并有2个发光二极管点亮指示是高温报警还是低温报警。
蜂鸣器由单片机P1^3口控制,用三极管驱动。
图4.8蜂鸣器报警电路
5系统软件设计
5.1主程序模块
主程序需要调用3个子程序,分别为:
●DS18B20测温子程序:
●实时温度显示子程序:
驱动LCD1602把实时温度值显示出来
●温度设定、报警子程序:
设定报警温度值,当温度超过该值时产生报警,即驱动蜂鸣器鸣叫、2个发光二极管发光
主程序流程图:
图5.1主程序流程图
5.2读温度值模块
读温度值模块需要调用4个子程序,分别为:
●DS18B20初始化子程序:
让单片机知道DS18B20在总线上且已准备好操作
●DS18B20写字节子程序:
对DS18B20发出命令
●DS18B20读字节子程序:
读取DS18B20存储器的数据
●延时子程序:
对DS18B20操作时的时序控制
1.读温度值模块流程图:
图5.2读温度值子程序流程图
2.DS18B20初始化子程序流程图: