06-51_双DS18B20温度采集_仿真
基于51单片机的双路DS18B20温度采集系统(Proteus仿真)
双传感器 · ROM匹配 · LCD同时显示两路温度
一、项目简介
本项目在Proteus仿真环境中实现了双路DS18B20温度采集。两片DS18B20挂载在同一条单总线上,通过Match ROM(0x55)指令分别寻址每片传感器,实现多点温度测量。LCD1602第一行同时显示两路温度值"T1:XX.XC T2:XX.XC",第二行显示两路温度差值。
多点测温的关键在于ROM匹配:每片DS18B20有唯一的64位ROM地址,主机通过Match ROM指令发送目标地址,只有地址匹配的传感器才会响应后续读写操作。本项目演示了这一完整流程。
项目属性 | 说明 |
主控平台 | AT89C52(Proteus仿真) |
开发语言 | C语言 |
开发环境 | Keil C51 / Keil MDK |
仿真工具 | Proteus(部分项目) |
图1-1 系统整体效果图
二、系统总体架构
本系统以单片机为核心,外围连接传感器、显示模块、按键模块和执行机构。系统总体架构如下:单片机通过相应接口与各外设通信,采集传感器数据后进行处理,结果输出至显示模块,同时根据逻辑控制执行机构动作。
图2-1 系统总体架构框图
模块 | 功能描述 |
主控模块 | 系统核心,负责数据采集、逻辑处理和输出控制 |
传感器模块 | 采集环境参数(温度/光照/按键输入等) |
显示模块 | LCD1602/OLED实时显示数据和状态 |
按键模块 | 用户输入,参数调整和模式切换 |
执行机构 | 蜂鸣器/LED/电机等,执行报警和驱动动作 |
三、硬件设计
3.1 核心器件选型
器件 | 型号 | 说明 |
主控芯片 | AT89C52 | Proteus仿真 |
温度传感器×2 | DS18B20 | 同一单总线,各自独立ROM地址 |
液晶显示屏 | LM016L | LCD1602 |
图3-1 核心器件实物图
3.2 引脚分配
单片机各引脚分配如下表所示,在设计时需注意引脚复用和电平匹配问题:
引脚 | 连接 | 功能描述 |
P1.0 | DQ | 单总线(挂载2片DS18B20) |
P2.5~P2.7 | LCD控制 | LCD1602控制线 |
P0 | LCD数据 | LCD1602数据线 |
图3-2 引脚分配电路原理图
四、软件设计
4.1 软件流程
主循环中依次执行:1.启动温度转换(Skip ROM + 0x44);2.读取1号传感器(Match ROM + 地址1 + 0xBE);3.读取2号传感器(Match ROM + 地址2 + 0xBE);4.计算温度差值;5.LCD显示两路温度及差值。
图4-1 主程序流程图
4.2 模块划分
源文件 | 模块名称 | 功能描述 |
ds18b20.c | DS18B20驱动 | 单总线、ROM匹配、温度读取 |
lcd1602.c | LCD驱动 | 显示 |
main.c | 主程序 | 双路温度采集、差值计算、显示 |
4.3 关键代码
以下代码均从项目工程源文件中直接提取,完整展示了各模块的核心实现:
📄 ds18b20.c




📄 LCD1602.c




📄 lcd1602func.c




📄 Delay.c

五、项目文件结构
项目工程的目录结构如下,展示了源代码文件的组织方式:

六、功能演示
系统功能演示步骤如下:
1. Proteus仿真运行,LCD显示"T1:25.0C T2:24.0C"
2. 第二行显示温差"Diff: 1.0C"
3. 改变两个DS18B20的温度设定值,观察显示变化
4. 可验证不同温度差场景下的系统响应
图6-1 功能演示照片/截图
图6-2 运行状态特写
七、总结
本项目重点演示了DS18B20多点测温的核心技术——Match ROM寻址。通过单总线挂载多个传感器,大大节省了IO资源。该技术可扩展到更多传感器(最多127个),适用于多点温度监控系统。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
— END —

浙公网安备 33010602011771号