知识链接
一、DS18B20的结构
DS18B20是美国DALLAS半导体公司生产的单总线数字温度传感器,如图8-2-2所示,它可以实现数字化输出和测试,并且有控制功能强、传输距离远、抗干扰能力强、接口方便、微功耗等优点,因而被广泛应用在工业、农业、军事等领域的控制仪器、测控系统中。
DS18B20的内部有64位的ROM单元和9字节的暂存器单元。64位ROM包含了DS18B20唯一的序列号(唯一的名字),DS18B20内部结构如图8-2-3所示。

图8-2-1 电子体温计电路原理图

图8-2-2 DS18B20

图8-2-3 DS18B20内部结构图
二、DS18B20工作过程
DS18B20的一般工作过程:初始化→发送ROM操作命令→发送存储器操作命令→读写数据。因为是单总线,没有专门的时钟线,所以靠时间隙的长短来表示不同的意义,从而进行读写操作。
1.初始化时序
单总线上所有器件均以初始化开始。主机发出复位脉冲,接着由从器件回应,即从器件发出存在脉冲,让主器件确认从器件已准备好。初始化总线时序如图8-2-4所示。

图8-2-4 DS18B20初始化过程
首先拉低总线DQ 480~960 μs,再拉高等待15~60 μs,然后判断总线DQ是否为0,为0则有应答(应答脉冲保持时间为60~240 μs)。
从拉高总线开始,到读应答,然后等待,合计必须延时480 μs以上才能进入下一步——读/写总线。
2.单总线读/写时序
操作指令及数据读/写时序如图8-2-5所示。静态时,总线必须为高电平,所有操作都是由拉低总线开始的,只是保持拉低的时间间隙不一样。

图8-2-5 单总线读/写时序
主机写0时,由高电平拉低总线60~120μs,然后拉高1μs以上;
主机写1时,由高电平拉低总线1~15μs,然后拉高1μs以上;
主机读总线时,首先由高拉低作为读开始,总线保持拉低1μs以上。
DS18B20会在拉低后15μs以内保持有效,所以必须在15μs内拉高总线,接着读总线状态。每一位的总持续时间不得少于60μs。(https://www.daowen.com)
三、数据处理
DS18B20的缓存由9字节组成,如图8-2-6所示。
![]()
图8-2-6 DS18B20的缓存
TCL、TCH为转换后的温度数据的低、高字节数据。当配置为12位采样精度时,数值乘以0.0625即得实际温度值;
TH、TL分别为高、低温度超限报警阈值。
配置字节,为定义采样精度,可选9~12位A/D转换。位数不同,转换的速度也不同。出厂时被设置为12位模式,如图8-2-7所示。具体见表8-2-1所示。
![]()
图8-2-7 配置字节
表8-2-1 配置细节

四、DS18B20的操作命令
1.ROM操作命令
●读取ROM[0x33]:可读出64位编码:
●匹配ROM[0x55]:以此指令对某一个1820操作;
●跳过ROM[0xCC]:用于总线只有一个1820;
●搜索ROM[0xFO]:用于一次读取多个1820的6位编码;
●报警搜索[0xEC]:从多个1820中搜索哪个在报警。
2.存储器操作命令
●温度转换[0x44]:启动DS18B20进行温度转换;
●读暂存器[0xBE]:读暂存器9个字节内容;
●写暂存器[0x4E]:将数据写入暂存器的TH、TL字节;
●复制暂存器[0x48]:把暂存器的TH、TL字节写到E2RAM中;
●调回暂存器[0xB8]:把E2RAM中的TH、TL字节写到暂存器TH、TL字节;
●读电源供电方[0xB4]:启动DS18B20发送电源供电方式的信号给主CPU。