DS18B20单总线温度传感器原理与51单片机驱动

简介

DS18B20是一款经典**单总线(1-Wire)**数字温度传感器,仅用一根数据线即可完成单片机与传感器之间的通信,支持9~12bit分辨率配置,可设置温度上下限阈值,广泛应用于51单片机温控项目。

引脚定义

  1. GND:电源地,接单片机GND
  2. DQ:单总线通信引脚,案例中接51单片机P3^7
  3. VCC:电源引脚

基础参数

  • 测温范围:-55℃ ~ +125℃
  • 供电电压:3.0V ~ 5.5V
  • 12bit分辨率下,一次温度转换耗时约750ms

内部寄存器结构(暂存器Scratchpad)

DS18B20的暂存器一共9字节:

  • Byte0:温度低字节 LSB
  • Byte1:温度高字节 MSB
  • Byte2:温度上限阈值TH
  • Byte3:温度下限阈值TL
  • Byte4:配置寄存器(设置分辨率)
  • Byte5~7:保留
  • Byte8:CRC校验字节

读取温度只需要读取**Byte0(LSB)、Byte1(MSB)**两个字节。
温度计算公式:实际温度 = 原始数值 × 0.0625

单总线通信时序

单总线所有通信都由主机(51单片机)发起,总线空闲时保持高电平。

1. 复位时序 Reset

  1. 主机拉低DQ总线至少480μs,完成复位;
  2. 释放总线,等待DS18B20应答;
  3. DS18B20在480μs内,拉低总线60~240μs作为存在脉冲,主机检测到此低脉冲代表传感器在线。

2. 写时序(主机发送bit)

  • 发送0:主机拉低总线60~120μs,代表发送bit=0;
  • 发送1:主机拉低总线至少1μs,15μs内释放总线回到高电平;

相邻两个bit之间间隔必须大于1μs。

3. 读时序(主机读取bit)

  1. 主机先拉低总线≥1μs,随后释放总线;
  2. DS18B20会在总线上输出bit;
  3. 主机必须在15μs内完成电平采样(推荐13μs采样):读到低电平=0,读到高电平=1。

相邻bit之间间隔大于1μs。

核心命令

命令码功能
0xCCSkip ROM,跳过ROM匹配,总线上只有1个DS18B20时使用
0x44启动温度转换,12bit模式转换耗时约750ms
0xBE读取暂存器,读取9字节寄存器,取前2字节温度数据

完整通信流程(51单片机读取温度)

  1. 发送DS18B20复位信号
  2. 发送0xCC跳过ROM
  3. 发送0x44启动温度转换
  4. 延时等待约800ms,等待转换完成
  5. 再次发送复位信号
  6. 发送0xCC跳过ROM
  7. 发送0xBE读取暂存器
  8. 读取2字节温度数据:LSB、MSB
  9. 合并高低字节,温度 = 原始值 × 0.0625

补充说明

  1. 单总线通信对时序要求严格,51单片机驱动时,延时函数必须精准,时序偏差会出现读出来固定0xFF或者0x00;
  2. 单总线建议在DQ线上外接4.7K上拉电阻,保证总线空闲为高电平;
  3. 上电默认是12bit分辨率;
  4. 可以读写TH、TL寄存器,设置温度上下限,用于温控报警。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值