深入解析:51单片机基础-DS18B20温度传感器

news/2025/11/25 16:56:21/文章来源:https://www.cnblogs.com/yangykaifa/p/19269066

第十六章 DS18B20温度传感器

1. 导入

在前面章节中,我们学习了EEPROM、I²C通信等数据存储技术。本章将引入一种重要的传感器——DS18B20数字温度传感器,它采用单总线(1-Wire)协议,仅需一根I/O线即可完成供电与通信(支持寄生供电),具有测温精度高、抗干扰能力强、支持多点组网等特点。

DS18B20测温范围为 -55°C ~ +125°C,精度可达 ±0.5°C,广泛应用于环境监测、恒温控制、智能家电等领域。

本章目标:


2. 硬件设计

2.1 DS18B20引脚说明(TO-92封装)

引脚名称连接方式
1GND接地
2DQ数据线(接单片机I/O)
3VDD接VCC(推荐外部供电)

有两种供电方式:

本章采用外部供电方式,更稳定。


2.2 电路连接

DS18B20连接
GND单片机GND
DQP1.7(单总线数据线)
VDDVCC(+5V)
  • 必须在DQ与VCC之间接一个4.7kΩ上拉电阻,确保空闲时为高电平。

单总线为开漏结构,需上拉。


3. 软件设计

3.1 单总线通信原理

DS18B20使用单线双向通信,所有操作都由主机(单片机)发起。通信流程:

  1. 复位:主机发送复位脉冲,DS18B20回应存在脉冲;
  2. 发送命令:如启动测温(0x44)、读取温度(0xBE);
  3. 读取温度数据:16位有符号数,包含整数与小数部分。

3.2 基本时序函数

#include <reg52.h>sbit DQ = P1^7;void delay_us(unsigned int us) {while(us--) _nop_();}// DS18B20复位unsigned char ds18b20_reset() {unsigned char presence;DQ = 0;delay_us(480);     // 至少480μsDQ = 1;delay_us(60);      // 主机释放总线presence = DQ;     // 从机拉低表示存在delay_us(420);     // 等待周期结束return presence;   // 0: 存在,1: 无设备}

3.3 单总线读写函数

// 写一个字节
void ds18b20_write_byte(unsigned char dat) {
unsigned char i;
for (i = 0; i < 8; i++) {
DQ = 0;
_nop_();
DQ = dat & 0x01;   // 先写低位
delay_us(60);
DQ = 1;
dat >>= 1;
}
}
// 读一个字节
unsigned char ds18b20_read_byte() {
unsigned char i, dat = 0;
for (i = 0; i < 8; i++) {
DQ = 0;
_nop_();
DQ = 1;            // 释放总线
delay_us(2);
dat >>= 1;
if (DQ) dat |= 0x80;
delay_us(60);
}
return dat;
}

3.4 启动温度转换

void ds18b20_start_convert() {
ds18b20_reset();
ds18b20_write_byte(0xCC);  // 跳过ROM命令(单设备)
ds18b20_write_byte(0x44);  // 启动温度转换
}

3.5 读取温度值

int ds18b20_read_temperature() {
unsigned char TL, TH;
int temp;
ds18b20_reset();
ds18b20_write_byte(0xCC);  // 跳过ROM
ds18b20_write_byte(0xBE);  // 读温度寄存器
TL = ds18b20_read_byte();  // 低8位
TH = ds18b20_read_byte();  // 高8位
temp = (TH << 8) | TL;     // 合成16位数据
// 转换为实际温度(默认12位精度,0.0625°C/LSB)
if (TH & 0x80) {           // 负数(补码)
temp = ~temp + 1;
return -((temp * 625) / 10000.0);  // 转为摄氏度(保留两位小数)
}
return (temp * 625) / 10000;           // 正数
}

温度单位为0.0625°C,所以实际温度 = 读数 × 0.0625


3.6 简化温度读取(整数部分)

若只需整数温度:

unsigned char get_temp() {
int temp = ds18b20_read_temperature();
return temp / 1000;  // 返回整数部分(单位m°C)
}

3.7 主程序示例:读取并显示温度

#include <reg52.h>// 数码管段码表(共阴)unsigned char code seg_code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void delay_ms(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 125; j++);}void display_digit(unsigned char pos, unsigned char num) {P0 = seg_code[num];P2 = (P2 & 0xF0) | (0x0F & ~(1 << pos));delay_ms(1);}void main() {int temp;unsigned char t_display[4];while(1) {ds18b20_start_convert();delay_ms(750);  // 最长转换时间(12位精度)temp = ds18b20_read_temperature();  // 单位:0.001°C// 分离各位数字(假设温度0~99.9°C)t_display[0] = (temp / 1000) / 10;       // 十位t_display[1] = (temp / 1000) % 10;       // 个位t_display[2] = (temp % 1000) / 100;      // 小数第一位t_display[3] = 0x80 | seg_code[t_display[2]]; // 带小数点// 动态扫描显示unsigned char i;for (i = 0; i < 100; i++) {display_digit(0, t_display[0]);display_digit(1, t_display[1]);display_digit(2, seg_code[t_display[2]]);delay_ms(5);}}}

3.8 通过串口发送温度

void uart_send_byte(unsigned char dat) {
SBUF = dat;
while(TI == 0);
TI = 0;
}
void send_temp_serial() {
int temp = ds18b20_read_temperature();
uart_send_string("Temp: ");
if (temp < 0) {
uart_send_byte('-');
temp = -temp;
}
uart_send_byte('0' + temp / 10000);
uart_send_byte('0' + (temp / 1000) % 10);
uart_send_byte('.');
uart_send_byte('0' + (temp % 1000) / 100);
uart_send_string("°C\r\n");
}

3.9 编译与下载

  • Keil中创建工程;
  • 确保DQ接P1.7,上拉电阻为4.7kΩ;
  • 编译生成HEX;
  • 下载至单片机;
  • 观察数码管或串口是否显示合理温度。

若读数为85°C(默认值):

  • 未成功启动转换;
  • 检查复位和写命令流程。

4. 小结

本章通过驱动DS18B20温度传感器,掌握了单总线通信与传感器数据采集技术,主要内容包括:

4.1 常见问题与解决

问题原因解决方法
读数85°C未成功通信,返回默认值检查复位和上拉电阻
读数异常时序不准优化delay_us,避免编译器优化
多设备冲突未使用ROM匹配单设备用0xCC跳过,多设备需读ROM
转换慢精度设为12位可设置为9位加快速度

4.2 下一步学习建议

本章标志着你已掌握单总线传感器驱动能力,具备了数据采集系统的核心技能


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年山东视保姆公司权威推荐榜单:视保姆眼镜/生物波共振镜架/防蓝光眼镜服务机构精选

在视力健康问题日益受到重视的今天,融合生物科技与视力矫正的创新服务正成为视力健康行业的新趋势 随着现代生活方式的改变,视力健康问题呈现多样化与年轻化趋势,人们对视力矫正与提升服务的需求持续增长。科技创新…

2025年塑料茅草生产厂家权威推荐榜单:仿真茅草瓦‌/地毯式仿真茅草‌/仿真竹席‌源头厂家精选

在景观装饰材料市场,塑料茅草因其逼真的视觉效果和卓越的耐久性,正以年增长率12%的速度快速替代传统天然茅草。一片优质的塑料茅草瓦,能够在户外环境中保持15年不褪色、不腐烂,维护成本比天然茅草降低80%以上。 随…

rtp、rtcp、rtsp、rtmp协议详解和区别

rtp、rtcp、rtsp、rtmp协议详解和区别实时传输协议(RTP)、实时传输控制协议(RTCP)、实时流协议(RTSP)和实时消息传输协议(RTMP)是多媒体通信领域的核心协议,它们在音视频传输、直播、视频会议等场景中发挥着关…

2025年特制滚轮架订做厂家权威推荐榜单:小型电动滚轮架‌/宽轮滚轮架‌/可调式滚轮架‌源头厂家精选

在压力容器、风电塔筒等重型装备制造领域,一个合格的特制滚轮架,能轻松承载最高300吨的重量,并实现0.05-2.5米/分钟的无级调速,将大型环缝焊接的合格率提升25%以上。 在制造业向智能化、自动化转型的浪潮下,特制滚…

操作系统openeuler修改和查看用户密码永不过期

这个错误表示您尝试设置的密码已经被使用过,系统记录了密码历史,不允许重复使用旧密码。以下是解决方法: ## 方法一:使用完全不同的新密码 ### 1. 创建强密码策略```bash# 使用密码生成器(如果已安装)pwgen -s 1…

2025深圳装修公司推荐:栖息地智能新住宅引领十大品牌揭示行业热潮

一、市场热潮:政策推动行业焕新 2025年深圳家装补贴政策在去年基础上实现“双提升”,单户最高补贴额度提升至5.2万元,覆盖旧房装修与厨卫改造、智能家居两大领域。政策推出了“政府补贴+银行优惠+商户折扣”三级叠加…

jpqlQueryFactory.selectFrom详解

jpqlQueryFactory.selectFrom 查询多个表的字段如何处理在 JPA 的 JPQLQueryFactory(QueryDSL 整合 JPA 时的核心类)中查询多个表的字段,核心是 先通过关联关系(Join)关联多表,再通过 select() 指定需要查询的字…

智能打气泵pcba方案设计

打气泵主要使用在汽车车胎打气上面,通过马达的运转来工作。马达运转抽气时,连通器的阀门被大气的气压冲开,气体进入气筒,而向轮胎中打气时,阀门又被气筒内的气压关闭,气体就进入了轮胎中。今天我们就来聊一下关于…

使用 html2canvas + jsPDF 生成PDF 的简单示例(含文字下沉修复)

在前端项目中,尤其是后台管理系统、发票/报告导出、在线编辑器、前端页面截图导出等场景,将页面内容导出为 PDF 是非常常见的需求。现在使用 html2canvas + jsPDF 进行构建 hooks 作为示例。 一、为什么需要自定义封…

2025下半年江苏徐州箱式变压器,干式变压器,油浸式变压器,高低压成套设备,箱式变电站品牌实力厂家推荐指南:五大优质厂家深度解析

摘要 随着新能源建设和智能电网的快速发展,2025年下半年箱式变电站行业迎来新一轮增长期。本文基于行业调研和用户反馈,为您推荐五家值得关注的箱式变电站生产企业。榜单排名不分先后,旨在为需求企业提供参考选择,…

实用指南:(3)Kafka生产者分区策略、ISR、ACK、一致性语义

实用指南:(3)Kafka生产者分区策略、ISR、ACK、一致性语义2025-11-25 16:38 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…

2025 经皮黄疸检测仪十大品牌推荐:经皮黄疸测试仪标杆厂家

新生儿黄疸作为临床最常见的新生儿病症之一,其精准筛查与动态监测直接关系到婴幼儿健康成长。2025 年,随着智慧医疗与分级诊疗政策的深度推进,经皮黄疸检测仪器市场迎来技术升级与场景细分的双重爆发,兼具高精度、…

ABC425 VP总结

比赛链接 Result请输入文本…… 我讨厌 BFS.jpg Solution ABC 不写,E 可能是我做过的最简单的 E 了。 D - Ulam-Warburton Automaton 我讨厌 BFS 存下每个节点是第几轮被遍历到的,转移时 check 一下是不是由同一轮的…

LCD驱动芯片抗干扰段码屏驱动控制器VK2C21A液晶驱动原厂 提供技术支持

VK2C21A是一个点阵式存储映射的LCD驱动器,可支持最大80点(20SEGx4COM)或者最大128点(16SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰,低功耗的特性…

阳江一对一辅导机构推荐,2026年高性价比家教机构口碑排名公布!

阳江家长们是不是都在为孩子的课外补习操碎了心?江城区、阳东区、阳春市、阳西县、海陵区、高新区的小学、初中、高中家长,想找靠谱的一对一辅导机构,却被五花八门的选择绕得头晕——线下机构收费虚高,线上平台需下…

2025.11.24 NOI 模拟赛

神秘场。 \(0+100+70\) 不会做 T1 遗憾离场了。不过为啥 hxq 和 yjh 不会 T2。 排列(perm) 原题 首先考虑容斥。记 \(dp_x\) 表示选出 \(x\) 个位置不满足限制的方案数。如果我们已经知道了 \(dp_x\) 那么我们可以通过…

2025年耐腐蚀砂浆厂家权威推荐榜单:环氧砂浆/环氧修补砂浆/环氧树脂砂浆源头厂家精选

耐腐蚀砂浆作为特种建筑材料,其性能直接关系到工业建筑、海工工程等特殊环境的耐久性与安全性。以下将基于企业产能、产品性能、市场覆盖及服务能力等客观维度,为您梳理三家在耐腐蚀砂浆领域具有代表性的企业,为行业…

2025年哈尔滨及周边地区艺考培训机构综合评估:七台河、双鸭山、黑河、舞蹈艺考、服表艺考、美术艺考、音乐艺考、聚焦教学实力与地域服务覆盖深度解析

随着艺考竞争日益激烈,考生及家长在选择培训机构时面临多重考量——如何评估机构的教学专业性、课程体系与地域服务的匹配度,以及教学成果的可持续性,成为决策的关键。为帮助考生精准筛选适合的艺考辅导机构,本次评…

2025年水分分析仪选型‌生产厂家权威推荐榜单:‌水分监测解决方案‌/‌近红外水分检测‌/动态水分分析系统‌源头厂家精选

在工业过程控制与质量控制中,水分含量的精准测定直接关系到产品品质、生产安全与能源消耗。据行业报告显示,2025年全球水分分析仪市场规模预计将达到86亿元,其中近红外光谱技术与可调谐二极管激光分析技术成为增长最…

2025年东北艺考培训优质机构推荐:众艺艺考,黑龙江、哈尔滨、齐齐哈尔、大庆地区、多品类艺考辅导助力升学

随着教育多元化发展与艺术人才需求增长,艺考已成为众多学生实现升学梦想的重要途径。2025 年,黑龙江、吉林等东北地区艺考报考热度持续攀升,但市场上培训机构的教学质量、师资配置、课程体系等参差不齐,让学生和家…