基于DS18B20的数字温度计设计Word下载.docx
- 文档编号:19486017
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:31
- 大小:205.97KB
基于DS18B20的数字温度计设计Word下载.docx
《基于DS18B20的数字温度计设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的数字温度计设计Word下载.docx(31页珍藏版)》请在冰豆网上搜索。
温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。
在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、粮食储存、酒类生产等领域,温度常常是表征对象和过程状态的最重要的参数之一。
传统的水银或酒精温度计来测量温度,不仅测量时间长、读数不方便、而且功能单一,已经不能满足人们在数字化时代的要求。
本文提出了一种新型的数字式温度测量电路的设计方案,该方案集成了温度测量电路。
在此利用集成温度传感器DS18B20设计并制作了一款基于AT89S51的四位LED数码管显示的数字温度计,其电路简单,软硬件结构模块化,易于实现。
还采用了24MHz的晶振作为AT89S51的时钟源和4位的共阴极数码管作为温度的显示设备,通过编程的方式来实现实温度的显示、修改等功能,使产品更具实用性。
1.2课程设计的目的和意义
通过课程设计使我进一步熟悉了单片机的内部结构和工作原理,掌握了单片机应用系统设计的基本方法和步骤,通过学习MCS-51单片机,了解单片机在自动化装置中的作用以及掌握单片机的编程和调试方法,通过一个简单的实际应用输入控制以及显示系统,掌握protel和keil软件的使用。
目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等,温度计中传感器是它最重要的组成部分,它的精度、灵敏度基本决定了温度计的精度、测量范围、控制范围和应用领域等。
传感器应用及其广泛,目前已经研制出多种传感器。
但是,作为系统的设计人员需要根据系统的实际情况选用适宜的传感器,并与自己设计的系统相适应。
2总体设计方案
方案一:
由于本设计是测量电路,可以使用热电阻类的器件利用其感温效应,在将随时测得的温度转变为电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据处理,在显示在电路上就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案二:
考虑到用温度传感器,在单片机电路设计中,大多都使用传感器,所以可采用温度传感器DS18B20,这种传感器可以很容易直接读取被测量的温度值,用起来非常方便,进行转换后,就可以满足设计要求[1]。
从以上两种方案很容易看出,方案二电路比较简单,软件设计也相对简单,故本设计采用方案二。
2.1整体功能说明
以51单片机为主控制器,以数字式温度传感器DS18B20为传感元件,以LED数码管作为显示器件实时显示测量温度(十进制数)。
数字式温度计测温范围在-55~125℃,误差在±
0.5℃以内。
温度测量间隔时间选择1s。
通过键盘扩展,实现温度上下限值的设定及温度报警功能。
对温度采样值实现数字滤波。
通过硬件或软件方法实现时间显示。
2.2硬件功能模块组成
温度计的控制器使用单片机AT89S51,温度传感器使用DS18B20,用4位共阴极LED数码管以动态扫描法实现温度显示。
主控制器:
单片机AT89S51具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要。
显示电路:
显示电路采用4位共阴极LED数码管,从P1口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用74LS04来驱动数码管[2]。
2.3软件功能组成模块
系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等[3]。
主程序:
主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。
温度测量每1s进行一次。
读出温度子程序:
主要功能是读出RAM中的9字节。
在读出时须进行CRC校验,校验有错时不进行温度数据的改写。
温度转换命令子程序:
主要是发温度转换开始命令。
计算温度子程序:
将RAM中读取值进行BCD码的转换运行,并进行温度值正负的判定。
显示数据刷新子程序:
主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
2.4测试计划
(1)硬件测试:
主要测试各部分硬件是否能正常工作,每部分通过简单程序来检测。
(2)软件测试:
测试软件是否符合设计要求、是否存在BUG。
2.5本章小结
本章主要介绍了硬件电路的整体设计方案以及对整个设计的构思。
主要上包括硬件组成模块、软件组成模块两大部分。
3系统硬件电路的设计
3.1整体功能说明
硬件总体框图如图1所示。
温度测量间隔时间选择1s[4]。
图1硬件总体框图
3.2硬件功能模块组成
温度计硬件电路设计原理图见附录Ⅰ,温度计的控制器使用单片机AT89S51,温度传感器使用DS18B20,用4位共阴极LED数码管以动态扫描法来实现温度显示。
图中有3个独立式按键可以分别调整温度的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度显示,这时可以调整上下限,从而测出被测的温度值。
3.2.1主控制器
1.单片机的选择
单片机具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要。
对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbyte的可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚[5]。
它集Flash程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位AT89S51单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。
单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用三节电池供电。
主要特性如下[6]:
●与MCS-51兼容
●4K字节可编程闪烁存储器
●寿命:
1000写/擦循环
●数据保留时间:
10年
●全静态工作:
0Hz-24Hz
●三级程序存储器锁定
●128*8位内部RAM
●32可编程I/O线
●两个16位定时器/计数器
●5个中断源
●可编程串行通道
●低功耗的闲置和掉电模式
●片内振荡器和时钟电路
2.引脚功能介绍
AT89S51单片机为40引脚双列直插式封装。
其引脚排列和逻辑符号如图2所示:
图2AT89S51引脚图
各引脚功能简单介绍如下[7]:
●VCC:
供电电压
●GND:
接地
●P0口:
P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。
当P1口的管脚写“1”时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。
●P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
●P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。
作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
●P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入时,由于外部下拉为低电平,P3口将输出电流,也是由于上拉的缘故。
P3口也可作为AT89S51的一些特殊功能口:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0(外部中断0)
P3.3INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接收一些控制信号。
●RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
●ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
●PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取址期间,每个机器周期PSEN两次有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
●EA/VPP:
当EA保持低电平时,访问外部ROM;
注意加密方式1时,EA将内部锁定为RESET;
当EA端保持高电平时,访问内部ROM。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
●XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
●XTAL2:
来自反向振荡器的输出。
3.2.2温度测量模块
主要用到的是DS18B20温度传感器,将采集到的温度模拟量(-55℃~125℃)转换成数字量,并接上一个上拉电阻后再送给单片机P2.0口。
3.2.3显示电路
显示电路采用4位共阴极LED数码管,从P1口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用74ls04。
3.2.4温度传感器工作原理
1.DS18B20的性能特点[8]
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器。
与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在唯一的三线上,实现多点组网功能;
●不需要外部器件;
●可通过数据线供电,电压范围为3.0-5.5V;
●零待机功耗;
●温度以9-12位数字量读出;
●用户可定义的非易失性温度报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,只是不能正常工作。
2.DS18B20的内部结构[9]
DS18B20采用3脚PR-35封装或8脚SOIL封装,其内部结构框图如图3所示。
图3DS18B20内部结构框图
64位ROM的位结构如图4所示。
开始8位是产品类型的编号,接着是每个器件的唯一的序号,共有48位;
最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用单线进行通信的原因。
非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限数据[10]。
8位检验CRC
48位序列号
8位工厂代码(10H)
MSBLSBMSBLSBMSBLSB
图464位ROM结构框图
DS18B20温度传感器的内部存储器还包括一个告诉暂存器RAM和一个非易失性的可擦除的EERAM。
高速暂存RAM的结构为8字节的存储器[11]。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图5所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
1字节
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
CRC
2字节
TH用户字节1
TL用户字节2
EEPROM
3字节
4字节
5字节
6字节
7字节
8字节
9字节
TM
R1
R0
1
图5高速暂存RAM结构图与配置寄存器图
由表1可知,DS18B20温度转换的时间较长。
而且分辨率越高,所需的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
温度传感器DS18B20程序,采用器件默认的12位转化,最大转化时间750毫妙[12],可以将检测到的温度直接显示到的四位数码管上。
表1DS18B20温度转换时间表
分辨率/位
温度最大转换时间/MS
9
93.75
10
187.5
11
375
12
750
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面的所有8字节的CRC码,可用来检测数据,从而保证通信数据的正确性。
当DS18B20接受到温度转化命令后,开始启动转换。
转换完成后的温度值就可以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读出数据低位在先,高位在后,数据格式以0.0625C°
/LSB式表示[13]。
温度值格式如表2所示。
表2温度值数据格式
LS字节
23
22
21
20
2-1
2-2
2-3
2-4
S
26
25
24
MS字节
当符号位S=0时,表示测得的温度为正直,可以直接将二进制维转换为十进制;
当符号位S=1时,表示测得的温度值为负值要先将补码变成原码,在计算十进制数值。
表3为一部分温度值对应的二进制温度数据。
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>
TH或T<
TL,则将该器件内的报警标志置位,并对主机发出的报警搜索命令做出响应[14]。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入的DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
表3DS18B20温度预测得值对应表
温度/C
二进制表示
十六进制数
+125
0000011111010000
07D0H
+85
0000010101010000
0550H
+25.0625
0000000110010001
0191H
+10.125
0000000010100010
00A2H
+0.5
0000000000001000
0008H
0000000000000000
0000H
-0.5
1111111111111000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
另外,由于DS18B20单线通信功能是分时完成的,他有严格的时序概念,因此读写时时序很重要。
系统对DS18B20的各种操作按协议:
初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。
分别说明如下:
1.初始化:
单线的所有处理均从初始化开始。
初始化过程是主机通过向作为从主机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。
初始化后,才可进行读写操作。
2.ROM操作命令:
总线主机检测到DS18B20的存在便可以发出ROM操作命令之一[15]。
这些命令表4:
表4ROM操作命令
指令
代码
ReadROM(读ROM)
[33H]
MatchROM(匹配ROM)
[55H]
SkipROM(跳过ROM)
[CCH]
SearchROM(搜索ROM)
[F0H]
Alarmsearch(警告搜索)
[ECH]
存储器操作命令如表5:
表5存储器操作命令
WriteScratchpad(写暂存存储器)
[4EH]
ReadScratchpad(读暂存存储器)
[BEH]
CopyScratchpad(复制暂存存储器)
[48H]
ConvertTemperature(温度变换)
[44H]
RecallEPROM(重新调出)
[B8H]
ReadPowersupply(读电源)
[B4H]
3.DS18B20测温原理
如图6所示,图中低温度系数振荡器的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1。
高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
图6DS18B20的测温原理图
图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS18B20 数字 温度计 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)