江科大51单片机笔记【12】DS18B20温度传感器(上)

news2025/3/12 22:45:47

写在前言

  此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识

  在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识,主要是为下章节的代码部分打基础。

  我的单片机是24年12月在tb普中买的,型号是STC89C52,在原视频中引脚或接口不对应的我都会改正,保证在我的机子上能运行才发上来的,还有一些文字部分是我的理解,并非照搬,所以可能有理解不到位的现象。

  如有误或交流,敬请指点提问

思维导图:

先介绍温度传感器,然后是引脚及应用电路,内部结构,存储格式,单总线介绍、电路规划和时序结构,最后是数据帧

一、DS18B20

1.介绍

  • DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点,如热敏电阻, 电压随温度变化,我们就可以需要额外一个AD转换芯片测量它的电压,这样单片机才能读取他的温度,应用方面不如数字温度传感器。比如下面左图1就是我们的DS18B20,他在内部集成了模拟温度传感器还有控制器,可以把温度转换好直接存在RAM里面,我们只需要读取就行了
  • 测温范围:-55℃到+125摄氏度
  • 通信接口:1-Wire(单总线)
  • 其他特征:可形成总线结构、内置温度报警功能、可寄生供电(就是不用单独配置VCC,节省IO口)
  • 左图2是一个关于DS18B20的模块,右图1是一个芯片 

2.引脚及应用电路

VDD:电源(3.0V-5.5V);GND:电源地;DQ:单总线接口

3.内部结构框图

  • 从左往右解释以此是:外部一个上拉电阻,内部左边是一个寄生供电结构,从DQ的数据端口,经过寄生结构后,是一个64-BIT ROM接口,然后是一个内部控制逻辑,下面是一个RAM,SCRATCHPAD(暂存器),最右边是一些温度传感器,报警高触发寄存器(报警阈值),报警低触发寄存器,配置寄存器(设置分辨率,最高0.0625最低0.5),8位的CRC生成器(校验码判断数据是否正确)等模块 (从上到下)
  • 寄生供电结构:可以节省VDD,如果下边的VDD没有接的话,就是由DQ的VDD供电的,但是在这里我们不使用,因为寄生供电需要强上拉,但是我们的开发板没有强上拉
  • 64-BIT ROM:作为器件地址,用于总线通信的寻址
  • SCRATCHPAD(暂存器):用于总线的数据交互
  • EEPROM:用于保存温度触发阈值和配置参数

4.寄存器结构

这一块对应上一幅图

左边就是SCRATCHPAD的详细内部结构,右边就是对应报警高触发寄存器(报警阈值),报警低触发寄存器,配置寄存器(设置分辨率,最高0.0625最低0.5)

左边一共有九个字节,前两位存的是温度,第0位是最低有效字节,第1位是最高有效字节,这两位共同构成了温度;然后是两个 TH和TL寄存器,还有一个配置寄存器,右边也是对应这三个,作用就是写入左边的三个寄存器,然后再存入右边的寄存器里存储起来;后面三个位是保留位,最后一位是CRC校验位

二、单总线

1.介绍

  • 单总线(1-Wire Bus)是由Dallas公司开发的一种通用数据总线
  • 一种通信新:DQ
  • 异步、半双工
  • 单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线。
  • DS18B20
  • DHT11,温湿度传感器

2.电路规范(硬件规范)

  • 设备的DQ均要配置成开漏输出模式
  • DQ添加一个上拉电阻,阻值一般为4.7K欧左右,前两条跟I2C的配置一样
  • 若此总线的从机采用寄生供电,则主机还应配一个强上拉输出电路
  • 总线可以挂载多个设备,可以单独通信跟I2C很像
  • 下面比上面多了一个强上拉电路,如果左边的圈接低电平就会闭合,就会接到VCC,如果断开,就是弱上拉供电

 3.时序结构(软件规范)

(1)初始化

主机将总线拉低至少480us,然后释放总线,等待15~60us后,存在的从机会拉低总线60~240us以响应主机,之后从机将释放总线

详解:总线的空闲状态是高电平,如果要开始工作就拉低至少480us,然后再释放,但是图中拉上去的是弯的,其实是弱上拉电阻,不会马上拉高,然后从机拉低,然后从机释放

(2)发送一位

主机将总线拉低60~120us,然后释放总线,表示发送0;主机将总线拉低1~15us,然后释放总线,表示发送1.从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us

图中左边是发送0,右边是发送1 

发送间隔还规定不能连续,需要间隔1u s

(3)接收一位

 主机将总线拉低1~15us,然后释放总线,并在拉低后15us内读取总线电平(尽量贴近15us的末尾),读取为低电平则为接收0,读取为高电平则为接收1,整个时间片应大于60us 

在这里可能会有疑问,这里的接和发都是是拉低总线然后释放这样会不会混淆。其实不会的,主机在发之前就已经定义后了是发送还是接收,不会出现混淆的现象

(4)发送一个字节:连续调用8次发送一位的时序,依次发送一个字节的8位(低位在前)

 接收一个字节:连续调用8次接收一位的时序,依次接收一个字节的8为(低位在前)

三、DB18B30操作流程和数据帧

初始化:从机复位,主机判断从机是否响应

ROM操作:ROM指令+本指令需要的读写操作

功能操作:功能指令+本指令需要的读写操作

本节课只有一个设备,所以不会用到搜索ROM,只用跳过ROM就可以直接访问设备了

我们要进行的功能有,第一条是转换温度,第二条是写暂存器,第三条是读暂存器,第四条是复制暂存器,将暂存器里的字节存入到E2里,实现掉电不丢失;第五条是将E2的字节覆盖回杂草,第六条是读取一位时序,响应供电模式 

  • 温度变换:初始化→跳过ROM→开始温度变换

  • 温度读取:初始化→跳过ROM→读暂存器→连续的读操作

  • 温度存储格式

前五位都是符号位(BIT15-11),后面四位(BIT3-0)是存小数的,其余位(BIT10-4)是整数部分

下面是一些举例

负数就是整数的补码+1

下面是流程图可以看一下

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

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

相关文章

P8662 [蓝桥杯 2018 省 AB] 全球变暖--DFS

P8662 [蓝桥杯 2018 省 AB] 全球变暖--dfs 题目 解析讲下DFS代码 题目 解析 这道题的思路就是遍历所有岛屿,判断每一块陆地是否会沉没。对于这种图的遍历,我们首先应该想到DFS。 代码的注意思想就是,在主函数中遍历找出所有岛屿&#xff0c…

Vue 侧边栏导航栏 el-menu单个item和多个item

在固钉的下面去写菜单导航栏。 <el-menu class"aside-menu" router :default-active"$route.path" :collapse"isCollapse" background-color"#131b27" text-color"#bfcbd9" active-text-color"#20a0ff" :defau…

Unity Dots从入门到精通之 Prefab引用 转 实体引用

文章目录 前言安装 DOTS 包实体引用Authoring 前言 DOTS&#xff08;面向数据的技术堆栈&#xff09;是一套由 Unity 提供支持的技术&#xff0c;用于提供高性能游戏开发解决方案&#xff0c;特别适合需要处理大量数据的游戏&#xff0c;例如大型开放世界游戏。 本文讲解我在…

无人机避障——XTDrone中运行VINS-Fusion+Ego-planner进行路径规划

本文聚焦于无人机避障技术领域的经典方案&#xff0c;重点探讨视觉双目VINS-Fusion建图与Ego-planner路径规划的组合应用。通过视觉双目VINS-Fusion实现精准的环境建图与自身定位&#xff0c;结合Ego-planner的高效路径规划能力&#xff0c;使无人机在复杂环境中实现自主避障飞…

【沐渥科技】氮气柜日常如何维护?

氮气柜的维护是确保其长期稳定运行、延长使用寿命和保持环境控制精度的关键。以下是沐渥氮气柜的日常维护和定期保养指南&#xff1a; 一、日常维护 柜体清洁 定期用软布擦拭柜体表面和内部&#xff0c;避免灰尘堆积。避免使用腐蚀性清洁剂&#xff0c;防止损伤密封条或传感器。…

MATLAB 控制系统设计与仿真 - 24

PID 控制器分析- 控制器的形式 连续控制器的结构&#xff1a; 为滤波时间常数&#xff0c;这类PID控制器在MATLAB系统控制工具箱称为并联PID控制器&#xff0c;可由MATLAB提供的pid函数直接输入&#xff0c;格式为&#xff1a; 其他类型的控制器也可以由该函数直接输入&#x…

linux(权限)

sudo 主要用来短暂的提权 权限 就是 >角色目标属性 这里面的角色就是---拥有者----所属组----other 所属组的目的&#xff1f; 更细化的管理 chmod 就是修改权限制 我们要是想要切换到体育的账号&#xff0c;我们可以去看一下有几个账号,我…

《OpenCV》—— dlib(换脸操作)

文章目录 dlib换脸介绍仿射变换在 dlib 换脸中的应用 换脸操作 dlib换脸介绍 dlib 换脸是基于 dlib 库实现的一种人脸替换技术&#xff0c;以下是关于它的详细介绍&#xff1a; 原理 人脸检测&#xff1a;dlib 库中包含先进的人脸检测器&#xff0c;如基于 HOG&#xff08;方向…

修改Flutter项目使用的JAVA版本

使用Android studio开发Flutter过程中&#xff0c;会默认使用Android studio自带的JDK。因为新版Android studio中的JDK版本过高&#xff0c;导致项目编译时总是无法完成&#xff0c;报【 unsupported class file major version 65】错误&#xff0c;如下&#xff1a; 解决这个…

虚拟dom的diff中的双端比较算法

‌双端比较算法是Vue中用于高效比较新旧VNode子节点的一种策略‌。该算法的核心思想是&#xff0c;通过从新旧VNode子节点的两端开始比较&#xff0c;逐步向中间靠拢&#xff0c;以找到最小的差异并据此更新DOM。以下是双端比较算法的大致流程&#xff1a; ‌初始化指针‌&…

VMware安装Windows server 2016

1、新建虚拟机&#xff0c;选择自定义模式 2、选择兼容性 4、命名虚拟机 5、固件类型 EFI 虚拟磁盘类型&#xff0c;不同电脑推荐的类型不同&#xff0c;用默认的就行 删除声卡和打印机 检查网络配置 选择本地的Windows server 2016的系统镜像&#xff0c;系统镜像可以去Window…

HippoRAG 2 原理精读

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 整体流程离线索引阶段在线检索和问答阶段 总结 整体流程 从上图可以看出&#xff0c;整个流程分为两个阶段 1、离线索引阶段 2、在线检索和问答阶段 离线索引阶段…

三:FFMPEG拉流读取模块的讲解

FFMPEG拉流读取模块在远程监控项目最核心的作用是读取UVC摄像头传输的H264码流&#xff0c;并对其码流进行帧的提取&#xff0c;提取完成之后则把数据传输到VDEC解码模块进行解码。而在我们这个项目中&#xff0c;UVC推流的功能由FFMPEG的命令完成。 FFMPEG拉流读取模块的API…

《苍穹外卖》SpringBoot后端开发项目核心知识点与常见问题整理(DAY1 to DAY3)

目录 一、在本地部署并启动Nginx服务1. 解压Nginx压缩包2. 启动Nginx服务3. 验证Nginx是否启动成功&#xff1a; 二、导入接口文档1. 黑马程序员提供的YApi平台2. YApi Pro平台3. 推荐工具&#xff1a;Apifox 三、Swagger1. 常用注解1.1 Api与ApiModel1.2 ApiModelProperty与Ap…

QT系列教程(20) Qt 项目视图便捷类

视频连接 https://www.bilibili.com/video/BV1XY41127t3/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 Qt项目视图便捷类 Qt项目视图提供了一些便捷类&#xff0c;包括QListWidget, QTableWidget&#xff0c; QTreeWidget等。我们分别介绍这几个便捷类。 我们先创建一个Qt …

动态扩缩容引发的JVM堆内存震荡:从原理到实践的GC调优指南

目录 一、典型案例&#xff1a;系统发布后的GC雪崩事件 &#xff08;一&#xff09;故障现象 1. 刚刚启动时 GC 次数较多 2. 堆内存锯齿状波动 3. GC日志特征&#xff1a;Allocation Failure &#xff08;二&#xff09;问题定位 二、原理深度解析&#xff1a;JVM内存弹…

AI智能眼镜主控芯片:技术演进与产业生态的深度解析

一、AI智能眼镜的技术挑战与主控芯片核心诉求 AI智能眼镜作为XR&#xff08;扩展现实&#xff09;技术的代表产品&#xff0c;其核心矛盾在于性能、功耗与体积的三角平衡。主控芯片作为设备的“大脑”&#xff0c;需在有限空间内实现复杂计算、多模态交互与全天候续航&#xf…

微服务拆分-远程调用

我们在查询购物车列表的时候&#xff0c;它有一个需求&#xff0c;就是不仅仅要查出购物车当中的这些商品信息&#xff0c;同时还要去查到购物车当中这些商品的最新的价格和状态信息&#xff0c;跟购物车当中的快照进行一个对比&#xff0c;从而去提醒用户。 现在我们已经做了服…

[网络爬虫] 动态网页抓取 — Selenium 介绍 环境配置

&#x1f31f;想系统化学习爬虫技术&#xff1f;看看这个&#xff1a;[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01&#xff1a;Selenium 工具介绍 Selenium 是一个开源的便携式自动化测试工具。它最初是为网站自动化测试而开发的&#xff0c;类似于我们玩游戏用的按…

【RAGFlow】windows本地pycharm运行

原因 由于官方只提供了docker部署&#xff0c;基于开源代码需要实现自己内部得逻辑&#xff0c;所以需要本地pycharm能访问&#xff0c;且docker运行依赖得其余组件&#xff0c;均需要使用开发服务器得配置。 修改过程 安装python 项目依赖于Python 版本&#xff1a;>3.1…