硬件基础4
ds18b20数字温度传感器1.参数指标1量程温度测量范围 -55℃----125℃2精度测量的温度值与实际温度值之间所允许的最大误差 ±0.5℃3分辨率传感器对温度变化的敏感程度9位0.5℃10位0.25℃11位0.125℃12位默认0.0625℃4工作电压3v---5.5v2.ds18b20通信半双工串行异步GPIO One-wireGPIO单总线通信通过一根GPIO信号线来进行通信3.ds18b20芯片内部结构1可以通过内部电源给芯片供电264位ROM和单总线接口3存储器控制逻辑模块协调芯片内部各模块工作4暂存器SCRATCHPAD存放温度配置参数5温度传感器采集温度6高温触发阈值与低温触发阈值可配置78位CRC校验生成器生成CRC校验4.上拉电阻上拉电阻是数字电路中非常基础但极其重要的元件用于确保信号线在空闲时有确定的电平状态在双方都释放总线时保持高电平51和ds18b20都释放总线时总线能够呈现高电平释放总线 需要作为数据的接收方任何一方拉低总线整个总线都变低5.dsl8b20读数16位、符号扩展的二进制补码通过单总线DQ串行发出6.读取数据流程1复位2发送0xCC跳过ROM3发送0x44开启温度转换4延时750ms5复位6发送0xCC跳过ROM7发送0xBE读取温度8读取两个字节的温度数据float get_temp(void) { unsigned char temp_low0; unsigned char temp_high0; short temp0; ds18b20_reset(); write_ds18b20(0xCC); write_ds18b20(0x44); Delay1ms(1000); ds18b20_reset(); write_ds18b20(0xCC); write_ds18b20(0xBE); temp_lowread_ds18b20(); temp_highread_ds18b20(); temptemp_high 8; temp | temp_low; return temp * 0.0625; }DS18B20 返回的温度数据是16位的但单片机一次只能读取8位1个字节所以必须分两次读取。要遵循LSB读取顺序// DS18B20 先发送低字节LSB再发送高字节MSB temp_low read_ds18b20(); // 先读低字节 temp_high read_ds18b20(); // 后读高字节 // 如果顺序错了 // temp_high read_ds18b20(); // ❌ 先读高字节 → 数据错乱 // temp_low read_ds18b20();7.时序逻辑1复位时序1.主机将总线拉低480---960us发送复位脉冲告诉从机准备复位2.主机释放总线交出控制权总线呈现高水平3.ds18b20检测到总线为高水平后等待15---60us4.ds18b20将总线拉低60---240us回复响应脉冲向主机应答5.ds18b20释放总线总线呈现高水平告诉主机执行完毕#includereg51.h #includeds18b20.h #includedelay.h #includeuart.h #define DQ_PIN_LOW (P3 ~(17)) #define DQ_PIN_HIGH (P3 |(17)) #define DQ_PIN_CHECK ((P3 (17))!0) // 检测DQ引脚是否为高电平 int ds18b20_reset(void) { int time0; // 主机向ds18b20发送复位脉冲 DQ_PIN_LOW; Delay10us(70); DQ_PIN_HIGH; Delay10us(5); // 等待低电平到来ds18b20拉低总线 while(DQ_PIN_CHECK time30) { Delay10us(1); time; } if (time 30) { uart_sendstr(wait ds18b20_low timeout!\r\n); return -1; } // 等待高电平到来ds18b20释放总线 time 0; while (!DQ_PIN_CHECK time 30) { Delay10us(1); time; } if (time 30) { uart_sendstr(wait ds18b20_high timeout!\r\n); return -2; } return 1; }2写0时间片与写1时间片写0时序1.主机首先将总线拉低小于15us告诉从机开始写数据然后持续拉低60us驱动 0 的低电平到总线上2.ds18b20在30us---60us内进行采样此时总线如果是低水平则ds18b20读03.主机释放总线呈现高水平写1时序1.主机将总线拉低小于15us告诉从机开始写数据然后释放总线呈现高水平驱动“1”电平到总线上从机此时释放总线2.ds18b20在拉高后45us内进行采样此时总线如果是高水平则ds18b20读1void write_ds18b20(unsigned char dat) { int i0; for(i0;i8;i) { if(dat 1) { DQ_PIN_LOW; _nop_(); _nop_(); DQ_PIN_HIGH; Delay10us(5); } else { DQ_PIN_LOW; Delay10us(6); DQ_PIN_HIGH; } dat 1; } }3读0时间片与读1时间片读0时序1.主机拉低总线持续1us释放总线2.ds18b20在主机释放总线后主动拉低总线表示传输03.主机在15us内进行采样此时总线为低电平主机读到0读1时序1.主机拉低总线持续1us释放总线2..ds18b20释放总线总线由上拉电阻拉为高电平3.主机在15us内采样此时总线为高电平主机读到1unsigned char read_ds18b20(void) { unsigned char dat 0; int i 0; for (i 0; i 8; i) { DQ_PIN_LOW; _nop_(); _nop_(); //主机发起读时序告诉 DS18B20 我要读数据了 DQ_PIN_HIGH; _nop_(); _nop_(); _nop_(); //释放总线让 DS18B20 驱动数据线 DS18B20 会在主机释放总线后 - 在 1-3μs 内驱动数据线 - 发送 0拉低总线低电平 - 发送 1释放总线高电平 if (DQ_PIN_CHECK) // 读到ds18b20发送的1 { dat | (1 i); } Delay10us(6); } return dat; }

相关新闻

AI模型提取攻击全解析:从白盒到黑盒的实战技术与防御措施

AI模型提取攻击全解析:从白盒到黑盒的实战技术与防御措施

1. 项目概述:当AI模型成为攻击目标最近几年,AI模型,尤其是深度学习模型,已经从实验室的“黑科技”变成了我们日常应用的核心组件。从手机上的语音助手、照片美化,到企业里的推荐系统、风险控制,背后都离不开…

2026/7/18 4:51:09阅读更多 →
FastAPI依赖注入实战:提升Python Web开发效率

FastAPI依赖注入实战:提升Python Web开发效率

1. FastAPI依赖注入的核心价值解析作为Python生态中增长最快的Web框架之一,FastAPI凭借其卓越的性能和直观的API设计赢得了大量开发者的青睐。我在实际项目中最深刻的体会是:依赖注入(Dependency Injection)机制才是真正释放FastA…

2026/7/18 4:51:09阅读更多 →
居住体验与环保健康的新体验-----SPC地板

居住体验与环保健康的新体验-----SPC地板

一、SPC地板是什么?SPC地板的核心是“石粉树脂(PVC)”的挤压复合结构。因不含胶水,所以没有胶黏剂中可能出现的甲醛释放,也不存在放射性污染来源。石粉赋予其出色的尺寸稳定性,树脂提供韧性与弹性&#xff…

2026/7/18 4:51:09阅读更多 →
紧急修复!Cursor v4.5.2环境变量缓存Bug导致AI补全失效——立即生效的4种绕过方案(含patch脚本)

紧急修复!Cursor v4.5.2环境变量缓存Bug导致AI补全失效——立即生效的4种绕过方案(含patch脚本)

更多请点击: https://intelliparadigm.com 第一章:Cursor v4.5.2环境变量缓存Bug的根源与影响分析 Cursor v4.5.2 在启动时对环境变量(如 PATH、 NODE_ENV、 CURSOR_PROJECT_ROOT)执行了一次性快照式缓存,该机制未监…

2026/7/18 5:51:13阅读更多 →
Imagination亮相汽车电子大会:荣获“汽车电子金芯奖·创新企业奖”

Imagination亮相汽车电子大会:荣获“汽车电子金芯奖·创新企业奖”

在近日举行的汽车电子大会上,Imagination 公司产品总监Rob Fisher出席大会并发表主题演讲,分享了公司在智能汽车GPU领域的最新技术进展与应用实践。荣获“汽车电子金芯奖创新企业奖”大会同期公布了“汽车电子金芯奖”评选结果,Imagination凭…

2026/7/18 5:51:13阅读更多 →
MyBatis初阶

MyBatis初阶

概述mybatis就是使用注释就能够完成JDBC需要大量做的事情但终归会有不能SQL语句,参数赋值,结果映射Mapper public interface UserInfoMapper {Select("select * from user_info")List<UserInfo> selectAll(); }此时需要测试一下是否成功只要有mybatis依赖,就需…

2026/7/18 5:51:13阅读更多 →
iceberge分区特性

iceberge分区特性

1.4 Iceberg 特点详述 1.4.1 Iceberg 分区与隐藏分区&#xff08;Hidden Partition&#xff09; 这部分介绍了 Iceberg 的分区机制及其带来的便利。 基本功能&#xff1a;Iceberg 支持分区来加速查询。写入数据时&#xff0c;相似的数据行会被分组&#xff1b;查询时&#xff0…

2026/7/18 5:51:13阅读更多 →
Unity视频播放进阶:从VideoPlayer.Play()到事件驱动与跨平台优化

Unity视频播放进阶:从VideoPlayer.Play()到事件驱动与跨平台优化

1. 项目概述&#xff1a;为什么VideoPlayer.Play()只是起点&#xff1f;如果你在Unity里处理视频&#xff0c;大概率用过VideoPlayer.Play()。点一下&#xff0c;视频开始播放&#xff0c;看起来一切顺利。但当你需要实现“视频播完自动跳转场景”、“根据播放进度更新UI进度条…

2026/7/18 5:51:13阅读更多 →
AI Skills:大语言模型的能力扩展包

AI Skills:大语言模型的能力扩展包

1. 为什么说Skills是AI时代的APP&#xff1f;十年前我们下载APP是为了让手机具备新功能&#xff0c;如今给AI安装Skills也是同样的逻辑。Skills本质上是一组预设的工作流和知识模板&#xff0c;它们教会大语言模型如何完成特定任务。就像APP扩展了智能手机的能力边界一样&#…

2026/7/18 5:46:13阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比&#xff1a;全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时&#xff0c;第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/17 10:42:55阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件&#xff1a;5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/17 8:31:03阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL&#xff1a;跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/17 13:22:23阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;从模糊意图到可执行指令&#xff1a;Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档&#xff08;PRD&#xff09;生成实践中&#xff0c;原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Cursor配置生成失效&#xff1f;3大隐藏陷阱4行修复代码&#xff0c;资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效&#xff0c;是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者&#xff1a;钟声编辑&#xff1a;Mark出品&#xff1a;红色星际头图&#xff1a;智能驾驶图片据悉&#xff0c;国内某头部智驾公司端到端模型技术大牛Z投身创业&#xff0c;并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈&#xff0c;更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/17 13:22:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/17 17:26:50阅读更多 →