ds18b20详解及程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

配置寄存器的命令内容如下 :
0
R1
R0
11111
MSB
LSB
R0 和 R1 是温度值分辨率位 , 按下表进行配置 . 默认出厂设置是 R1R0 = 11,
即 12 位 .
温度值分辨率配置表
R1
R0
分辨率
0
0
9bit
0
1
10bit
1
0
11bit
1
1
12bit
4 种分辨率对应的温度分辨率为 温度值 )
最大转换时间 (ms) 93.75(tconv/8) 183.50(tconv/4)
DS18B20 的使用方法 :
由于 DS18B20 采用的是 1 - Wire 总线协议 方式,即在一根数据线实现数据的双向传输,
而对单片机来说,我们必须采用 软件的方法来模拟单总线的协议时序 来完成对 DS18B20
芯片的访问。
由于 DS18B20 是在一根 I/O 线上读写数据, 因此, 对读写的数据位 有着严格的时序要求 。
当工作于寄生电源时,此引脚必须接
DS18B20 存储器结构图
暂存储器的头两个字节为测得温度信息的低位和高位字节
;
.
精品文档
第 3, 4 字节是 TH 和 TL 的易失性拷贝 , 在每次电复位时都会被刷新 ; 第 5 字节是配置寄存器的易失性拷贝 , 同样在电复位时被刷新 ; 第 9 字节是前面 8 个字节的 CRC 检验值 .
DS18B20 引脚分布图
DS18B20 详细引脚功能描述 :
1 、GND 地信号;
2 、DQ 数据输入出引脚。开漏单总线接口引脚。当被用在寄生电源下,此引脚可以向器件
提供电源;漏极开路 , 常太下高电平 . 通常要求外接一个约 5kΩ 的上拉电阻 .
3 、VDD 可选择的 VDD 引脚。电压范围 :3~5.5V; 地。
读时序完成数据接收。数据和命令的传输都是低位在先。
DS18B20 与单片机连接电路图 :
.
精品文档
利用软件模拟 DS18B20 的单线协议和命令 : 主机操作 DS18B20 必须遵循下面的顺序
1. 初始化 单线总线上的所有操作都是从初始化开始的
. 过程如下 :
1) 请求 : 主机通过 拉低 单线 480us 以上 , 产生复位脉冲 , 然后释放该线 , 进入 Rx 接收模 式. 主机释放总线时 , 会产生一个 上升沿脉冲 .
00000111 11010000
00000101 01010000
: 换成 16 进

07D0H
0550H
.
精品文档
+25.0625 ℃
00000001 10010001
0191H
+10.125 ℃
00000000 10100010
00A2H
+0.5 ℃
00000000 00001000
wenku.baidu.com
0008H
DQ : 1 -> 0(480us+) -> 1 2) 响应 : DS18B20 检测到该上升沿后 , 延时 15~60us , 通过 拉低总线 60~240us 来 产生应答脉冲 .
DQ: 1(15~60us) -> 0(60~240us) 3) 接收响应 : 主机接收到从机的应答脉冲后 , 说明有单线器件在线 . 至此 , 初始化完成 .
2^5
2^4
其中高字节前 5 位都是符号位 S, 若分辨率低于 12 位时 , 相应地使最低为 0, 如 : 当分辨 率为 10 位时 , 低字节为 :
2^3 2^2 2^1 2^0 2^-1 2^-2 0 0
, 高字节不变 ....
一些温度与转换后输出的数字参照如下
温度
数字输出
+125 ℃ +85 ℃
375(tconv/2) 750 (tconv) 0.5 ℃ , 0.25 ℃ , 0.125 ℃ , 0.0625 ℃( 即最低一位代表的
12 位分辨率时的两个温度字节的具体格式如下 : 低字节 :
2^3 2^2 2^1 2^0 2^-1 2^-2 2^-3 2^-4
高字节 :
S S S S S 2^6
DQ: 0
2. ROM 操作命令 当主机检测到应答脉冲 , 便可发起 ROM 操作命令 . 共有 5 类 ROM 操作命令 , 如下表
命令类型
命令
功能
.
精品文档
字节
Read Rom ROM

读取激光 ROM 中的 64 位, 只能用于总线上单个 DS18B20 器件情况 , 多挂时会发生
DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序: 初始化时序 ( dsInit() 实现 ) 、读时序 (readByte())
、写
时序 (writeByte())

所有时序都是将主机作为主设备, 单总线器件作为从设备。 而每一次命令和数据的传输都是
从主机主动启动写时序开始, 如果要求单总线器件回送数据, 在进行写命令后, 主机需启动
精品文档
最近都在学习和写单片机的程序 , 今天有空又模仿 DS18B20 温度测量显示实验 写了一个 与 DS18B20 基于单总线通信的程序 .
DS18B20 数字温度传感器 ( 参考 : 智能温度传感器 DS18B20 的原理与应用 ) 是 DALLAS 公司生产的 1 - Wire ,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一 个测温系统, 具有线路简单, 在一根通信线, 可以挂很多这样的数字温度计。 DS18B20 产 品的特点 : (1 )、只要求一个 I/O 口即可实现通信。 (2 )、在 DS18B20 中的每个器件上都有独一无二的序列号。 (3 )、实际应用中不需要外部任何元器件即可实现测温。 (4 )、测量温度范围在- 55 到+ 125 ℃之间 ; 在-10 ~ +85 ℃范围内误差为 ±5 ℃; (5 )、数字温度计的分辨率用户可以从 9 位到 12 位选择。将 12 位的温度值转换为数字 量所需时间不超过 750ms; (6 )、内部有温度上、下限告警设置。
00000000
0℃
0000H
00000000
-0.5 ℃
11111111 11111000
FFF8H
-10.125 ℃
11111111 01011110
FFE5H
-25.0625 ℃
11111110 01101111
FF6FH
-55 ℃
11111100 10010000
FC90H
由上表可看出 , 当输出是负温度时 , 使用补码表示 , 方便计算机运算 ( 若是用 C 语言 , 直接 将结果赋值给一个 int 变量即可 ).
相关文档
最新文档