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

写在前言

  此为博主自学江科大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.mzph.cn/diannao/73063.shtml

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

相关文章

基于springboot+vue的佳途旅行分享预约平台

一、系统架构 前端:vue2 | element-ui | html 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven | node 二、代码及数据库 三、功能介绍 01. web端-注册 02. web端-登录 03. web端-系统主页1 04. web端-系统主页2 05. we…

【数据结构】2算法及分析

0 章节 1.4到1.5小节。 掌握算法概念、特性、描述、算法性能时间复杂度和空间复杂度; 理解递归含义? 掌握实现递归的条件和时机; 应用简单递归问题的算法设计; 重点 算法…

【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现软件开机自启

文章目录 前言 一、准备工作1.1 环境搭建1.2 创建 Tauri 项目1.3 添加依赖 二、实现开机自启的基本原理2.1 开机自启的基本概念2.2 Tauri 应用的生命周期 三、Windows 平台实现3.1 Windows 注册表机制3.2 实现步骤3.3 注意事项 四、Linux 平台实现4.1 Linux systemd 服务4.2 实…

一周热点-OpenAI 推出了 GPT-4.5,这可能是其最后一个非推理模型

在人工智能领域,大型语言模型一直是研究的热点。OpenAI 的 GPT 系列模型在自然语言处理方面取得了显著成就。GPT-4.5 是 OpenAI 在这一领域的又一力作,它在多个方面进行了升级和优化。 1 新模型的出现 GPT-4.5 目前作为研究预览版发布。与 OpenAI 最近的 o1 和 o3 模型不同,…

css中的浮动

在 CSS 中,浮动(float)是一种定位元素的方式,它允许元素脱离正常的文档流,并向左或向右移动,直到其边缘碰到包含块或者另一个浮动元素的边缘。下面从多个方面详细介绍 CSS 浮动: 一&#xff0c…

element-plus中form表单组件的使用

1.如何让每个表单项对齐? 问题描述:如下图,每个表单项的输入框/下拉框/日期选择器是没有对齐的,我们希望它们纵向是对齐的。 解决方案:给el-form标签,加上label-width"100px"即可。意思就是给每个…

线性搜索算法

何时使用线性搜索算法? 当处理一个小数据集时。当搜索存储在连续内存中的数据集时。 线性搜索算法在什么情况下优于其他搜索算法? 当列表或数组未排序时,或者当输入的大小相对较小时,首选线性搜索算法。它易于实现,并…

踩坑记录:yolov5环境版本要求比较严苛?

在安装yolov5环境时,numpy安装失败报错metadata-generation-failed 报错如下: Collecting numpy1.18.5 (from -r /*****/yolov5-5.0/requirements.txt (line 5))Using cached https://pypi.tuna.tsinghua.edu.cn/packages/01/1b/d3ddcabd5817be02df0e6…

Java设计模式系列:单例模式的7种实现与适用场景

一、单例模式核心价值与实现原则 1. 使用场景 全局配置类(如数据库连接池)日志记录器Spring默认Bean作用域硬件设备访问(如打印机)2. 设计三原则 私有构造器:禁止外部实例化静态实例持有:全局唯一访问点延迟加载(可选):避免资源浪费二、七种单例实现方式深度解析 1.…

OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改

前言:最近 Manus 火得一塌糊涂啊,OpenManus 也一夜之间爆火,那么作为程序员应该来尝尝鲜 1、前期准备 FastGithub:如果有科学上网且能正常访问 github 则不需要下载此软件,此软件是提供国内直接访问 githubGit&#…

【最新】DeepSeek 实用集成工具有那些?

deepseek 系列github仓库地址 【主页】deepseek-aiDeepSeek-R1DeepSeek-V3DeepSeek-VL2【本文重点介绍】awesome-deepseek-integration 注意:以下内容来自awesome-deepseek-integration DeepSeek 实用集成(awesome-deepseek-integration) 将…

开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器

开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器 目录 开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器本项目未经授权,禁止商用!本项目未经授权,禁止商用!本项目未经授权&…

Flink测试环境Standalone模式部署实践

1.JDK环境 参考官方文档: https://nightlies.apache.org/flink/flink-docs-release-1.20/release-notes/flink-1.18/ 2.下载Flink:https://flink.apache.org/downloads/ 本次验证用的是:https://www.apache.org/dyn/closer.lua/flink/flink…

在16卡服务器上使用最新版的CUDA和驱动训练`llama - 2 - 7b`和`llama - 2 - 70b`模型,并生成训练指标数据

要在16卡服务器上使用最新版的CUDA和驱动训练llama - 2 - 7b和llama - 2 - 70b模型,并生成训练指标数据,你可以按照以下步骤进行: 1. 环境准备 确保你的服务器已经安装了最新版的CUDA和驱动,并且安装了必要的Python库&#xff0…

macOS 终端优化

macOS 安装、优化、还原、升级 Oh My Zsh 完全指南 🚀 Oh My Zsh 是 macOS 终端增强的利器,它能提供强大的自动补全、主题定制和插件支持,让你的终端更高效、更炫酷。本文将全面介绍 如何安装、优化、还原、重新安装和升级 Oh My Zsh&#x…

计算机网络--访问一个网页的全过程

文章目录 访问一个网页的全过程应用层在浏览器输入URL网址http://www.aspxfans.com:8080/news/index.aspboardID5&ID24618&page1#r_70732423通过DNS获取IP地址生成HTTP请求报文应用层最后 传输层传输层处理应用层报文建立TCP连接传输层最后 网络层网络层对TCP报文进行处…

CAAC无人机考证备考清单

一、培训机构内部的考试大纲/备考指南 《机长笔试大纲》 《机长口试大纲》 《教员笔试大纲》 《教员口试大纲》(不同机构的文件、命名可能不同) 二、培训机构内部题库 题库内容包含(仿照多旋翼题库制作): 分类 子分…

【BUG】类文件具有错误的版本 61.0, 应为 52.0,请删除该文件或确保该文件位于正确的类路径子目录中。

报错: [ERROR] 类文件具有错误的版本 61.0, 应为 52.0 [ERROR] 请删除该文件或确保该文件位于正确的类路径子目录中。 报错截图: 原因:Java 版本和 Spring 不兼容,显示 Spring 版本过高 解决方法 1. 使用更高版本的 J…

卷积神经网络(笔记01)

视觉处理三大任务:分类、目标检测、图像分割 CNN网络主要有三部分构成:卷积层(Convolutional Layer)、池化层(Pooling Layer)和激活函数 一、解释卷积层中的偏置项是什么,并讨论在神经网络中引…

Django-ORM-prefetch_related

Django-ORM-prefetch_related 模型定义N1 查询问题示例 使用 prefetch_related 优化查询处理更复杂的查询示例:预取特定条件的书籍示例:预取多个关联字段 性能比较注意事项总结 通过 Author 和 Books 两个模型来理解 Django 的 prefetch_related 方法。 …