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。

核心命令

命令码 功能
0xCC Skip 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寄存器,设置温度上下限,用于温控报警。
相关推荐
myy-learn16 小时前
【51 单片机入门】点亮第一个 LED|模块化编程 led.c(完整源码 + 踩坑)
51单片机
llilian_1617 小时前
北斗授时卡同步解决方案 gnss授时卡 计算机时间同步板卡
大数据·网络·人工智能·功能测试·51单片机
老当益壮梁奶奶20 小时前
ARM 汇编学习笔记(二)启动代码、指令、函数调用与 C 混合编程
c语言·arm开发·单片机·嵌入式硬件·51单片机
myy-learn21 小时前
51单片机-中断-晶体管
51单片机
myy-learn1 天前
51单片机-按键LED-数码管定时
51单片机
HRTOS1 天前
HRTOS Debug:8051实时操作系统资源状态监控与分析
单片机·嵌入式硬件·51单片机
神威难绷泪1 天前
51单片机 ds18b20
51单片机
老当益壮梁奶奶1 天前
51单片机DS18B20温度传感器详解:单总线时序与C51驱动实现
笔记·stm32·单片机·嵌入式硬件·51单片机
susplus2 天前
【传感器DS18B20】51单片机上实现温度采集
c语言·51单片机·ds18b20·温度采集