基于DS18B20的温度测量模块设计.docx
《基于DS18B20的温度测量模块设计.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度测量模块设计.docx(13页珍藏版)》请在冰豆网上搜索。
基于DS18B20的温度测量模块设计
基于DS18B20的温度测量模块设计
1.设计目的
(1)掌握DS18B20数字温度传感器的工作原理及使用方法
(2)掌握对DS18B20转换数据进行处理的方法
(3)学习用数码管显示复杂数据的方法
2.设计任务
用AT89S52控制DS18B20,读取数据,并对DS18B20转换后的数据进行处理,最后在数码管上显示DS18B20测出的温度。
要求使用6位数码管显示,最高位为符号位,如果温度值为正,不显示,如果温度为负,则显示负号;第2—4位显示温度值的整数部分,并在第4位数据上显示小数点;第5位显示一位小数,最低位显示摄氏度符号“C”。
(1)基本要求
Ø用AT89C51控制DS18B20,读取数据
Ø对DS18B20转换后的数据进行处理,转换成实际温度值
Ø将符号位,整数值和小数值分别存放在特定的存储单元中.
(2)进阶要求
在数码管上显示DS18B20测出的温度,只要求显示出温度值的整数部分及符号位。
(3)高级要求
Ø使用6位数码管显示测得的温度
Ø最高位为符号位,如果温度值为正,不显示,如果温度为负,则显示负号
Ø第2—4位显示温度值的整数部分,并在第4位数据上显示小数点
Ø第5位显示一位小数
Ø最低位显示摄氏度符号“C”
3.设计原理
(1)系统结构图
图4-1基于DS18B20的测温系统结构图
(2)DS18B20数字温度传感器概述
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20产品的特点:
Ø只要求一个端口即可实现通信。
Ø在DS18B20中的每个器件上都有独一无二的序列号。
Ø实际应用中不需要外部任何元器件即可实现测温。
Ø测量温度范围在-55。
C到+125。
C之间。
Ø数字温度计的分辨率用户可以从9位到12位选择。
Ø内部有温度上、下限告警设置。
TO-92封装的DS18B20的引脚排列见图4-2,其引脚功能描述见表4-1。
图4-2DS18B20引脚结构图(底视图)
表4-1 DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
(3)DS18B20的内部结构
DS18B20的内部框图如图4-3所示。
64位ROM存储器件独一无二的序列号。
暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。
暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。
暂存器的5、6和7字节器件内部保留使用。
第八字节含有循环冗余码(CRC)。
使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。
图4-3DS18B20的内部框图
DS18B20加电后,处在空闲状态。
要启动温度测量和模拟到数字的转换,处理器须向其发出ConvertT[44h]命令;转换完后,DS18B20回到空闲状态。
温度数据是以带符号位的16-bit补码存储在温度寄存器中的,如图4-4所示:
图4-4温度寄存器格式
符号位说明温度是正值还是负值,正值时S=0,负值时S=1。
表4-2给出了一些数字输出数据与对应的温度值的例子。
表4-2温度/数据的关系
(4)DS18B20的命令序列
Ø初始化
ØROM命令跟随着需要交换的数据;
Ø功能命令跟随着需要交换的数据。
访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了SearchROM和AlarmSearch这两个命令,在这两个命令后,主机都必须返回到第一步)。
1初始化:
DS18B20所有的数据交换都由一个初始化序列开始。
由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。
当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。
②ROM命令:
ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。
DS18B20的ROM如表4-3所示,每个ROM命令都是8bit长。
表4-3DS18B20ROM命令
命令
描述
协议
此命令发出后1-Wire
总线上的活动
SEARCHROM
识别总线上挂着的所有DS18B20的ROM码
F0h
所有DS18B20向主机
传送ROM码
READROM
当只有一个DS18B20挂在总线上时,可用此命令来读取ROM码
33h
DS18B20向主机传送ROM码
MATCHROM
主机用ROM码来指定某一DS18B20,只有匹配的DS18B20才会响应
55h
主机向总线传送一个ROM码
SKIPROM
用于指定总线上所有的器件
CCh
无
ALARMSEARCH
与SEARCHROM命令类似,但只有温度超出警报线的DS18B20才会响应
ECh
超出警报线的DS18B20
向主机传送ROM码
③功能命令:
主机通过功能命令对DS18B20进行读/写Scratchpad存储器,或者启动温度转换。
DS18B20的功能命令如表4-4所示。
表4-4DS18B20功能命令
命令
描述
协议
此命令发出后1-Wire
总线上的活动
温度转换命令
ConvertT
开始温度转换
44h
DS18B20向主机传送转换状态(寄生电源不适用)
存储器命令
ReadScratchpad
读暂存器完整的数据
BEh
DS18B20向主机传送
总共9字节的数据
WriteScratchpad
向暂存器的2、3和4字节写入数据(TH,TL和精度)
4Eh
主机向DS18B20传送
3个字节的数据
CopyScratchpad
将TH,TL和配置寄存器的数据复制到EEPROM
48h
无
RecallE2
将TH,TL和配置寄存器的数据从EEPROM中调到暂存器中
B8h
DS18B20向主机传送调用状态
ReadPowerSupply
向主机示意电源供电状态
B4h
DS18B20向主机传送供电状态
(5)DS18B20的信号方式
DS18B20采用严格的单总线通信协议,以保证数据的完整性。
该协议定义了几种信号类型:
复位脉冲、应答脉冲、写0、写1、读0和读1。
除了应答脉冲所有这些信号都由主机发出同步信号。
总线上传输的所有数据和命令都是以字节的低位在前。
1初始化序列:
复位脉冲和应答脉冲
在初始化过程中,主机通过拉低单总线至少480µs,以产生复位脉冲(TX)。
然后主机释放总线并进入接收(RX)模式。
当总线被释放后,5kΩ的上拉电阻将单总线拉高。
DS18B20检测到这个上升沿后,延时15µs~60µs,通过拉低总线60µs~240µs产生应答脉冲。
初始化波形如图4-5所示。
图4-5初始化脉冲
②读和写时序
在写时序期间,主机向DS18B20写入数据;而在读时序期间,主机读入来自DS18B20的数据。
在每一个时序,总线只能传输一位数据。
读/写时序如图3-6所示。
✧写时序
存在两种写时序:
“写1”和“写0”。
主机在写1时序向DS18B20写入逻辑1,而在写0时序向DS18B20写入逻辑0。
所有写时序至少需要60µs,且在两次写时序之间至少需要1µs的恢复时间。
两种写时序均以主机拉低总线开始。
产生写1时序:
主机拉低总线后,必须在15µs内释放总线,然后由上拉电阻将总线拉至高电平。
产生写0时序:
主机拉低总线后,必须在整个时序期间保持低电平(至少60µs)。
在写时序开始后的15µs~60µs期间,DS18B20采样总线的状态。
如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。
✧读时序
DS18B20只能在主机发出读时序时才能向主机传送数据。
所以主机在发出读数据命令后,必须马上产生读时序,以便DS18B20能够传送数据。
所有读时序至少60µs,且在两次独立的读时序之间至少需要1µs的恢复时间。
每次读时序由主机发起,拉低总线至少1µs。
在主机发起读时序之后,DS18B20开始在总线上传送1或0。
若DS18B20发送1,则保持总线为高电平;若发送0,则拉低总线。
当传送0时,DS18B20在该时序结束时释放总线,再由上拉电阻将总线拉回空闲高电平状态。
DS18B20发出的数据在读时序下降沿起始后的15µs内有效,因此主机必须在读时序开始后的15µs内释放总线,并且采样总线状态。
图4-6DS18B20读/写时序图
DS18B20在使用时,一般都采用单片机来实现数据采集。
只需将DS18B20信号线与单片机1位I/O线相连,且单片机的1位I/O线可挂接多个DS18B20,就可实现单点或多点温度检测。
(6)小数的显示方法
DS18B20转换后的数据有四位二进制小数,精度为0.0625,可连续表示一位十进制小数,因此在数码显示时,只显示1位小数。
在对四位二进制小数进行处理时,可先计算出这四位二进制小数对应的四位十进制小数,然后对这四位十进制小数舍弃后三位,只保留一位。
在编写程序时,可编制一个反映二进制小数与显示码对应关系的表格,根据四位二进制小数的十六种不同情况查找对应的一位十进制小数的段码,具体映射关系如表4-5所示:
表4-5二进制小数与显示码的对应关系
二进制小数位
四位十进制小数
保留一位
对应显示码(共阴)
0000
0.0000
0
3FH
0001
0.0625
1
06H
0010
0.1250
1
06H
0011
0.1875
2
5BH
0100
0.2500
3
4FH
0101
0.3125
3
4FH
0110
0.3750
4
66H
0111
0.4375
4
66H
1000
0.5000
5
6DH
1001
0.5625
6
7DH
1010
0.6250
6
7DH
1011
0.6875
7
07H
1100
0.7500
8
7FH
1101
0.8125
8
7FH
1110
0.8750
9
6FH
1111
0.9375
9
6FH
4.程序设计流程