太阳能热水器控制器的设计 17
4.1 DS18B20驱动程序设计
DS18B20数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DS18B20或从DS18B20送出,因此从主机CPU到DS18B20仅需一条数据线和地线,电源可以有数据线本身提供而不需要外部电源。DS18B20的测量范围从-55°C到+125°C。温度传感器的引脚如表4-1所示。
表4-1 DS18B20管脚连接
管脚号 1 2 3 名称 GND DQ VDD 功能 接电源地 数据输出 接+5V电源 电路连接情况 DGND P3.5端 VCC 每一个DS18B20包括一个唯一的64位长的序号,该序号存放在DS18B20内部的ROM中。开始8位是产品类型编码(DSl820编码均为10H)接着的48位是每个器件唯一的序号最后8位是前面56位的CRC(循环冗余校验)码DSl820中还有用于贮存测得的温度值的两个8位存贮器RAM编号为0号和1号1号存贮器存放温度值的符号如果温度为负,则1号存贮器8位全为1,否则全为00号存贮器用于存放温度值的补码LSB(最低位)的1表示0.5。DS1820用9位存贮温度值,最高位为符号位下表为DS18B20的温度存储方式负温度S=1正温度S=0。
表4-2 DS18B20温度存储 LSB MSB Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 26 Bit15 S 25 Bit14 S 24 Bit13 S 23 Bit12 S 22 Bit11 S 21 Bit10 S 20 Bit9 S 2?1 Bit8 S 4.1.1 DS18B20工作过程及时序
DS18B20 工作过程中的协议如下: 1. 初始化
单总线上的所有处理均从初始化开始。 2. ROM操作指令
主机检测到DS18B20的存在,便可以发出ROM操作命令之一,这些命令如
指令 代码 Read ROM(读ROM) [33H] Match ROM(匹配ROM) [55H] Skip ROM(跳过ROM] [CCH] Search ROM(搜索ROM) [F0H]
陕西科技大学毕业论文(设计说明书) 18
Alarm search(告警搜索) [ECH]
3. 存储器操作命令
指令 代码 Write Scratchpad(写暂存存储器) [4EH] Read Scratchpad(读暂存存储器) [BEH] Copy Scratchpad(复制暂存存储器) [48H] Convert Temperature(温度变换) [44H] Recall EPROM(重新调出) [B8H] Read Power supply(读电源) [B4H] 4. 时序
主机使用时间隙(time slots)来读写DSl820的数据位和写命令字的位[9]。 (1)初始化
时序见图2.25-2主机总线to时刻发送一个复位脉冲(最短为480us的低电平信号),接着在tl时刻释放总线并进入接收状态,DSl8B20在检测到总线的上升沿之后,等待15-60us接着DS1820在t2时刻发出存在脉冲(低电平持续60-240 us)如图中虚线所示
图4-2 初始化时序图
(2)写时间隙
当主机总线to时刻从高拉至低电平时就产生写时间隙见图,从to时刻开始15us之内应将所需写的位送到总线上DSl8B20在t后15-60us间对总线采样若低电平写入的位是0见图,若高电平写入的位是1见图,连续写2位间的间隙应大于1us。
图4-3 写0时序图 图4-4 写1时序图
(3)读时间隙
主机总线to时刻从高拉至低电平时