温度传感器DS18B20测温系统的设计.docx
- 文档编号:6526560
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:20
- 大小:1.02MB
温度传感器DS18B20测温系统的设计.docx
《温度传感器DS18B20测温系统的设计.docx》由会员分享,可在线阅读,更多相关《温度传感器DS18B20测温系统的设计.docx(20页珍藏版)》请在冰豆网上搜索。
温度传感器DS18B20测温系统的设计
课程设计报告
题目:
温度传感器DS18B20测温系统的设计
姓名:
李彬
专业:
电子信息工程B
班级号:
08212
学号:
08212025
2010/12/1
温度传感器DS18B20测温系统的设计
摘要:
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
关键词:
单片机;温度检测;STC89C52;DS18B20;
一.引言
随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。
在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:
①传统的分立式温度传感器
②模拟集成温度传感器
③智能集成温度传感器。
目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。
社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,STC89C51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。
与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。
该设计控制器使用STC公司的STC89C52单片机,测温传感器使用DALLAS公司DS18B20,用液晶来实现温度显示。
二.元器件资料
1.DS18B20
美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持"一线总线"接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。
全部传感元件及转换电路集成在形如一只三极管的集成电路内。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
现在,新一代的DS18B20体积更小、更经济、更灵活。
使你可以充分发挥“一线总线”的优点。
目前DS18B20批量采购价格仅6元左右。
在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。
另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。
因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。
新的"一线器件"DS18B20体积更小、适用电压更宽、更经济。
DS18B20、DS1822的特性
DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!
性能价格比也非常出色!
DS1822与DS18B20软件兼容,是DS18B20的简化版本。
省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。
继"一线总线"的早期产品后,DS1820开辟了温度传感器技术的新概念。
DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20、DS1822"一线总线"数字化温度传感器同DS1820一样,DS18B20也支持"一线总线"接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS1822的精度较差为±2°C。
现场温度直接以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3.0V~5.5V的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小。
一、DS18B20的主要特性
(1)适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温
(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
(8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
(9)负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
二、DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如下图1:
DS18B20外形及引脚排列图
DS18B20引脚定义:
(1)GND为电源地;
(2)DQ为数字信号输入/输出端;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)
三、DS18B20工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图3所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图3:
DS18B20测温原理框图
2.STC80C52单片机芯片引脚功能介绍
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚。
⒈电源:
⑴VCC-芯片电源,接+5V;⑵VSS-接地端;
⒉时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
⒊控制线:
控制线共有4根,⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲①ALE功能:
用来锁存P0口送出的低8位地址②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋I/O线80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
STC89C52单片机芯片封装图
STC89C52芯片的封装有PLCC、PQFP以及DIP—40,本设计采用的是引脚双列直插式封装。
其封装形式如图2.2.1。
图1STC89C52DIP-40封装
3.LCD1602
液晶显示器各种图形的显示原理线段的显示:
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。
这就是LCD显示的基本原理。
1602字符型LCD简介
1·字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。
下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。
一般1602字符型液晶显示器实物如图
图一
2·1602LCD的基本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图
图二
3`LCD1602主要技术参数:
显示容量:
16×2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
4`引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
表1引脚接口说明表
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
三.方案论证
采用数字温度芯片DS18B20
由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。
与传统的热敏电阻温度传感器不同,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,可以分别在93.75ms和750ms内将温度值转化9位和12位的数字量。
它具有体积小、接口方便、传输距离远等特点,内含寄生电源。
系统有如下特点:
(1)不需要备份电源,可通过信号线供电,电源电压范围从3.3~5V;
(2)送串行数据,不需要外部元件;
(3)温度测量范围从-55℃~+125℃,-10~+85℃时测量精度为±0.5℃,测量分辨率为0.0625℃,;
(4)通过编程可实现9~12位的数字值读数方式(出厂时被设置为12位);
(5)在93.75ms和750ms内将温度值转化9位和12位的数字量;
(6)零功耗等待;
(7)系统的抗干扰性好,适合于恶劣环境的现场温度测量,如环境控制、设备过程控制、测温类消费电子产品等。
四.总体设计
1.硬件设计
1设计思路:
温度只要在所设定的上下温度界限内,就会在显示设备中精确的显示出来,如果温度超过了所设定的温度界限,就发出报警声。
能够及时向温度监控人员发出温度超限信息。
便于温控人员及时的调整与控制。
另外此温度控制器操作简单,体积小,灵敏度高,精度高。
2总体设计方框图:
数字温度器方框图
方框图所示为数字温度控制器的单体设计方框图。
其工作原理为:
当该电路上电工作以后,首先刷新显示(LED),然后,温度传感器采集温度送单片机检查温度的高低,由单片机送出信号经过驱动电路送往显示电路。
3.原理图
STC89C52原理图
DS18B20原理图
1602液晶显示原理图
2.软件设计
系统程序主要包括主程序、读出温度子程序、温度转换命令程序、计算温度子程序、显示数据刷新子程序等等。
1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次。
2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。
5显示数据刷新子程序
据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
6温度数据的计算处理方法
从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符的显示。
因为DS18B20的转换精度为9~12位可选项的,为了提高精度采用12位。
在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0..625,就是实际的二进制温度值。
通过观察表5.2可以发现一个十进制值和二进制值之间有很明显的关系,就是把二进制的高字节的低半字节和低字节的低半字节化成十进制后,就是温度值的小数部分。
小数部分因为是半个字节,所以二进制值范围是0~F,转换成十进制小数值就是0。
0625的倍数(0~15)。
采用1位显示小数,可以精确到0.1℃。
五.总结与体会
为期一个月的单片机实习让我深深的感受到了理论与实践相结合的重要性,平日里我们狠拿书本学习,为的就是在我们以后的工作和学习中能有更突出的发挥,我想我们这次实习,也就是我们与社会接轨的一个演练吧。
我很感谢这次实习,让我明白了动手操作的必要性和重要性,也让我明白了学习的目的与方法。
一个月的实习,通过不断的上网查资料,去图书馆查信息,通过对以往书本的重新学习,让我对以往所学过的知识有了个重新的认识。
我是原来职业高中过来的学习,按道理来讲,我们的动手与专业技术水平应该还是不错的,可以通过这次动手操作实习,我发现在强中更有强中手,每一个人都不是弱者,在学习方面我逐渐有了攀比意识,我知道与别人攀比是不好的,但是在学习上,动手能力上与别人攀比则是好的,所以在以后的学习与实习中我更应该注重自己的动手能力,还有与别人的竞争意识。
这一个月实习,我们同时还有考试,但是这一切都不能阻碍我们,平时我们一边实习,一边又抽空复习,学习与复习的交替,使这一个月过得既忙碌又充实,我想这才是大学校园里真正应该学到的东西。
未来的社会是一个竞争与机遇同时存在的社会,有了技术,有了能力,走到哪里都不怕,所以在学校我们都应该尽可能尽力的去学习更多的知识,去培养更大的能力,以便使我具有更大的竞争能力。
这次实习正是我们理论知识的一个实践,也是我们动手操作能力的一个提高。
在这次实习中我们老师也投入了很大的时间和精力,在此我感谢老师们的辛苦培养。
附录一:
程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^2;//定义ds18b20的接口
sbitRS=P2^0;//定义1602的三个控制位
sbitRW=P2^1;
sbitE=P2^2;
unsignedcharcodefirstline[]={"temperatureis"};
uchardatadisdata[5];
uinttvalue;//温度值
uchartflag;//温度正负标志
/*************************lcd1602程序**************************/
voiddelay(unsignedintn)//延时
{
unsignedinti,j;
for(i=0;i for(j=0;j<100;j++); } voidwr_com(unsignedcharcom)//写指令 { delay (1); RS=0; RW=0; E=0; P0=com; delay (1); E=1; delay (1); E=0; } voidwr_dat(unsignedchardat)//写数据 { delay (1);; RS=1; RW=0; E=0; P0=dat; delay (1); E=1; delay (1); E=0; } voidlcd_init()//初始化设置 { delay(15); wr_com(0x38);delay(5); wr_com(0x08);delay(5); wr_com(0x01);delay(5); wr_com(0x06);delay(5); wr_com(0x0c);delay(5); } voiddisplay(unsignedchar*p)//显示第一行字母 { while(*p! ='\0') { wr_dat(*p); p++; delay (1); } } init_play()//初始化显示 { lcd_init(); wr_com(0x80); display(firstline); } /******************************ds18b20程序***************************************/ voiddelay_18B20(unsignedinti)//延时 { while(i--); } voidds1820rst()//ds1820复位 { DQ=1;//DQ复位 delay_18B20(4);//延时 DQ=0;//DQ拉低 delay_18B20(100);//精确延时大于480us DQ=1;//拉高 delay_18B20(40); } uchards1820rd()//读数据 { unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); } return(dat); } voidds1820wr(ucharwdata)/*写数据*/ { unsignedchari=0; for(i=8;i>0;i--) {DQ=0; DQ=wdata&0x01; delay_18B20(10); DQ=1; wdata>>=1; } } read_temp()//读取温度值并转换 { uchara,b; ds1820rst(); ds1820wr(0xcc);//跳过读序列号 ds1820wr(0x44);//启动温度转换 ds1820rst(); ds1820wr(0xcc);//跳过读序列号 ds1820wr(0xbe);//读取温度 a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff)//判断温度的正负值 tflag=0; else { tvalue=~tvalue+1; tflag=1; } tvalue=tvalue*(0.625);//DS18B20的精确度为0.0625度,即读回数据的最低位代表0.0625度 //将它放大10倍,使显示时可显示小数点后一位,并对小数点后第二2进行4舍5入(也就是说tvalue中有n个0.0625) return(tvalue); } /*********************温度值显示部分**********************************/ voidds1820disp()//温度值显示函数 { ucharflagda
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度传感器 DS18B20 测温 系统 设计