③ 光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列
码。64 位光刻 ROM 的排列是: 开始 8 位(28H)是产品类型标号,接着的 48 位是该
DS18B20 自 身 的 序 列 号 , 最 后 8 位 是 前 面 56 位 的 循 环 冗 余 校 验 码
(CRC=X8+X5+X4+1)。光刻 ROM 的作用是使每一个 DS18B20 都各不相同,这样就可
以实现一根总线上挂接多个 DS18B20 的目的。
④DS18B20 温度传感器的存储器
DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可电擦除的
EEPRAM,后者存放高温度和低温度触发器 TH、TL 和结构寄存器。
2 DS18B20 的工作过程
DS18B20 一般都是充当从机的角色,而单片机就是主机。单片机通过一线总线访问
DS18B20 的话,需要经过以下几个步骤:
① DS18B20 复位(初始化),DS18B20 复位。在某种意义上就是一次访问 DS18B20
的开始,或者可说成是开始信号。
②执行ROM 指令(ROM命令跟随着需要交换的数据);ROM 指令,也就是访问,搜索,匹配,
DS18B20 个别的64 位序列号的动作。在单点情况下,可以直接跳过ROM 指令。而跳过ROM 指令的字节
是0xCC
③ 执行 DS18B20 功能指令(RAM 指令),功能命令跟随着需要交换的数据。
DS18B20 功能指令有很多种,我就不一一的介绍了,数据手册里有更详细的介绍。这里
仅列出比较常用的几个DS18B20 功能指令。
0x44:开始转换温度。转换好的温度会储存到暂存器字节0 和1。
0xEE:读暂存指令。读暂存指令,会从暂存器0 到9,一个一个字节读取,如果要停止的话,必须写下
DS18B20 复位。
访问 DS18B20 必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20
都不会响应主机(除了 Search ROM 和 Alarm Search 这两个命令,在这两个命令后,主机
都必须返回到第一步)。
一般上我们都是使用单点,也就是说单线总线上仅有一个DS18B20 存在而已。所以我们
无需刻意读取ROM 里边的序列号来,然后匹配那个DS18B20?而是更直接的,跳过ROM 指
令,然后直接执行DS18B20 功能指令。
a.初始化, DS18B20 复位:
在初始化过程中,主机通过拉低单总线至少 480µs,以产生复位脉冲(TX)。然后主机释放总线
并进入接收(RX)模式。当总线被释放后,5kΩ 的上拉电阻将单总线拉高。DS18B20 检测到这
个上升沿后,延时 15µs~60µs,通过拉低总线 60µs~240µs 产生应答脉冲。初始化波形如
图 3-8 所示。