【51单片机入门记录】Onewire单总线协议 温度传感器DS18B20概述

一、温度传感器DS18B20概述

(1)数字化温度传感器

  • 美国DALLAS半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口
  • 的温度传感器。
  • 一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
  • 现在,新一代的DS18B20体积更小、更经济、更灵活。DS18B20测量温度范围为-55℃C~.+125℃。在-10℃~+85℃范围内,精度为+0.5℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。

 

(2)DS18B20特征

  1. 适应电压范围更宽,电压范围:3~5.5V,在寄生电源方式下可由数据线供电。
  2. 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通信。
  3. DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的一根线上,实现组网多点测温。
  4. DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
  5. 测温范围-55℃℃~+125℃℃,在-10℃℃~+85℃时精度为+0.5℃℃。
  6. 编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃℃、0.25℃℃、0.125℃℃和0.0625℃℃,可实现高精度测温。
  7. 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms时间内把温度值转换为数字,速度更快。
  8. 测量结果直接输出数字温度信号,以"一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
  9. 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

(3)DS18B20内部结构图

(4)DS18B20的4个主要数据部件

  1. 光刻ROM中的64位序列号是出厂前被光刻好的,它可以看做是该DS18B20的地址序列码,这样就可以实现一根总线上挂接多个DS18B20的目的。
    64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。
  2.  DS18B20中的温度传感器可完成对温度的测量。
    以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625°C/LSB形式表达,其中S为符号位。

    DS18B20温度值格式表如表所示。

    其中“S”为标志位,对应的温度计算:当符号位S=0时,表示测得温度值为正,直接将二进制位转换为十进制;当S=1时,表示测得温度值为负,先将补码变换为原码,再计算十进制值。
  3. DS18B20温度传感器的存储器。
    DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2PROM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
    高速暂存存储器由9个字节组成,其分配如表所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。第9个字节是冗余检验字节。

  4. 配置寄存器。
    配置寄存器的格式如表所示。

    低5位一直都是“1”,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如右表所示(DS18B20出厂时被设置为12位)。

(5)DS18B20的指令表

1.ROM指令表
指令约定代码功能
读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)
符合55H发出此命令之后,接着发出64 位ROM 编码,访问单总线上与该编码相对应的 DS1820,使之做出响应,为下一步对该 DS1820 的读写做准备
搜索0F0H用于确定挂接在同一总线上 DS1820 的个数和识别 64位 ROM 地址。为操作各器件做好准备
跳过0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作
告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应
2.功能指令表
指令约定代码功能

温度变化

44H启动DS18B20进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中
读暂存器08EH读内部RAM中9字节的内容
写暂存器4EH发出向内部RAM的2、3、4字节写上、下限温度数据和配置寄存器命令,紧跟该命令之后,是传送三字节的数据
复制暂存器48H将RAM中第2、3字节的内容复制到E²PROM中
重调E²PROM0B8H将E²PROM中内容恢复到RAM中的第2、3字节
读供电方式0B4H读DS18B20的供电模式。寄生供电时DS18B20发送“0”,外接电源供电 DS18B20发送“1’

(6)DS18B20的通信过程(详细)

根据DS18B20的通信协议,主机(单片机)控制DS18B20完成温度转换必须经过3个步骤:

  1. 每一次读写之前都要对DS18B20进行复位操作;
  2. 复位成功后发送一条ROM指令;
  3. 最后发送RAM指令,这样才能对DS18B20进行预定的操作;复位要求主CPU将数据线下拉500us,然后释放,当DS18B20收到信号后等待16~60us左右,后发出60~240us的应答低脉冲,主CPU收到此信号表示复位成功。

(7)DS18B20的通信过程(蓝桥杯版)

  1. 初始总线;
  2. 写ROM指令(跳过ROM);
  3. 写RAM指令(启动温度转换);
  4. 初始总线;
  5. 写ROM指令(跳过ROM);
  6. 写RAM指令(读取温度数据);
  7. 接收数据;
  8. 分析处理数据;

二、Onewire单总线协议概述

(1)One-Wire总线(单总线)

  • One-Wire总线是DALLAS公司研制开发的一种协议。
  • 它由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。每一个符合One-Wire协议的从芯片都有一个唯一的地址,包括48位的序列号48位的家族代码和8位的CRC代码。主芯片对各个从芯片的寻址依据这64位的不同来进行。
  • One-Wire总线利用一根线实现双向通信。因此其协议对时序的要求较严格,如应答等时序都有明确的时间要求。基本的时序包括复位及应答时序、写一位时序读一位时序。
  • 在复位及应答时序中,主器件发出复位信号后,要求从器件在规定的时间内送回应答信号;在位读和位写时序中,主器件要在规定的时间内读回或写出数据。
  • 单总线适用于单主机系统,能够控制一个或多个从机设备。
  • 主机可以是微控制器,从机可以是单总线器件,它们之间的数据交换只通过一条信号线。当只有一个从机设备时,系统可按单节点系统操作;当有多个从设备时,系统则按多节点系统操作。

(2)单总线的工作原理

  • 单总线即只有一根数据线,系统中的数据交换、控制都由这根线完成。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其他设备使用总线。
  • 单总线通常要求外接一个约为4.7k的上拉电阻,这样,当总线闲置时,其状态为高电平。
  • 主机和从机之间的通信可通过3个步骤完成,分别为初始化One-Wire器件识别One-Wire器件和交换数据。
  • 由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问One-Wire器件都必须严格遵循单总线命令序列,即初始化、ROM命令、功能命令。
  • 如果出现序列混乱,One-Wire器件将不响应主机(搜索ROM命令、报警搜索命令除外)。

(3)单总线的时序

1.初始化时序图

理解:初始化时序即唤醒脉冲,正常情况下,VCC不用的时候保持高电平(上拉电阻);单片机想操作的时候,单片机使VCC为低电平;单片机再将其拉为高电平(等待15微秒);上述过程使器件“意识到”单片机在“喊他工作了”,然后出现“应答脉冲”,代表器件进行回应,表示“它可以正常工作”。(为什么一个器件为低电平就为低电平?单总线协议就像两个同学手里拿着一根线,通过手抬高或抬低来表示高低电平,但是由于这两个同学都没吃饭导致即使抬高也没有抬高得很彻底)

2.写时序图

3.读时序图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一、图片隐写[Stegsolve、binwalk、010editor、WaterMark、BlindWaterMark、文件头尾]

工具配置 1.Stegsolve 工具地址:http://www.caesum.com/handbook/Stegsolve.jar 解释:该工具需要安装jar包后才能配合使用,下面同时会给出快速打开工具的代码,需要两个文件,启动的时候启动vbs文件 start.bat java …

【笔记本开热点给手机用,手机一直显示正在获取ip地址,然后连接不上的解决方法】

解决方法 控制面板\网络和 Internet\网络连接 查看是否有设备是固定ip,将其改成自动获取ip地址 如果你还没有解决,那么继续看 肯定是你装了vmware,vmware会生成vmnet1和vmnet8两个网段,这两个网段和共享的网段冲突了,所以需要将这两个网段…

4T第十四届省赛模拟2

一、Seg 温度读取: ①温度 温度读他读出来就是有精度的所以自带小数 我们读取的时候直接强制类型转换读它的各个位也不会丢失精度 ②电压 电压是你人为的/51.0了,从char->float->char所以会有精度丢失 所以要用原始数据来换算 在原始数据上多…

qt窗口的应用与pyinstaller打包APP操作

3月29日 qt打包APP操作 1 先在windows shell 中下载打包软件Pylnstaller pip install pyinstaller2 先进入py项目所在的位置,再执行以下代码(我用的qt版本是PySide6可以根据自己的情况修改) pyinstaller s02.py --noconsole --hidden-import PySide6.QtXml3 因为…

GEE22:基于目视解译的土地利用分类(随机森林监督分类)

采样点信息: 设置一下采样点参数: 代码: //设置研究区位置 var table ee.FeatureCollection("users/cduthes1991/boundry/China_province_2019"); var roi table.filter(ee.Filter.eq(provinces,beijing)); Map.centerObjec…

Machine Learning机器学习之数据可视化

目录 前言 一、 数据预处理与清洗 二、常见可视化技术 三、可视化工具和平台 博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者…

MES系统怎么解决车间生产调度难的问题?

MES系统三个层次 1、MES决定了生产什么,何时生产,也就是说它使公司保证按照订单规定日期交付准确的产品; 2、MES决定谁通过什么方式(流程)生产,即通过优化资源配置,最有效运用资源; …

PCI总线管脚定义(引脚定义)

文章目录 1: 参考资料的链接2: 图片说明3:PCI文字说明每日好图 1: 参考资料的链接 PCI bus pinout PCI三种标准引脚信号定义 PCI bus pinout 2: 图片说明 A面和B面正反 PCI Universal Card 32/64 bit ----------------------------------…

同事们希望我拥有博士学位,但资历并不是一切

罗伯特纽贝克 “你太聪明了!你为什么没有博士学位?这个熟悉的问题被当作赞美,但总感觉像是一记耳光。我已经在该组织工作了 2 周,每个人似乎都喜欢我正在做的工作、我带来的观点以及我为我的团队设想的方向。但只有一个小问题&am…

打PTA (15分)(JAVA)

目录 题目描述 输入格式: 输出格式: 输入样例: 输出样例: 题解 题目描述 传说这是集美大学的学生对话。本题要求你做一个简单的自动问答机,对任何一个问句,只要其中包含 PTA 就回答 Yes!,其…

机器学习 - 手动实现 ReLU 和 Sigmoid

直接上代码 import torch import matplotlib.pyplot as pltA torch.arange(-10, 10, 1, dtypetorch.float(32)) def relu(x):return torch.maximum(torch.tensor(0), x) plt.plot(relu(A))结果如下: import torch import matplotlib.pyplot as pltA torch.aran…

FPGA Artix7 Bootloader App Python升级

文章目录 软硬环境复现官方 srec_spi_bootloader例子简介Vivado硬件部分存储划分Vitis 嵌入式 BootVitis 嵌入式 Appelf转换srec合并boot和app得到mcs文件下载测试过程分析 基础知识BIT MCS HEX BINBit SwappingSREC 文件格式Vivado约束 串口Boot地址划分链接脚本修改Github Li…

1.Netty介绍及NIO三大组件

Netty网络编程Netty的底层是NIO(非阻塞IO),常用的多线程和线程池使用的是阻塞IO,其效率并不高。支持高并发,性能好高性能的服务端程序、客户端程序 NIO三大组件 一、Channel 读写数据的双向传输通道 常见的传输通道…

Taskflow 简单使用

Hello World #include <taskflow/taskflow.hpp>int main() {tf::Executor executor; tf::Taskflow taskflow;// 返回一个std::tuple<tf::Task, tf::Task, tf::Task, tf::Task> auto [A, B, C, D] taskflow.emplace([](){std::cout<<"A"<<s…

金三银四面试题(六):对象大小知多少

对象和数组在JVM如何在堆中布局&#xff1f;更常见地问法就是对象头都包含哪些信息 在JVM中对象和数组尽管都是连续的内存块。但在堆内存中的布局方式有些不同。 对象的组成 对象在JVM中可以分为三个部分&#xff0c;对象头&#xff08;Header&#xff09;&#xff0c;实例数…

SoC芯片的DVFS技术详解

​A72训练营很多同学问DVFS技术怎么实现的&#xff0c;这里小编就和大家掰扯掰扯SoC芯片的DVFS技术吧。 1. DVFS技术介绍 DVFS&#xff08;Dynamic Voltage and Frequency Scaling&#xff09;即动态电压频率调节技术&#xff0c;是一种高效的低功耗技术&#xff0c;它通过动态…

初始化脚手架

说明: 1 --- Vue脚手架是Vue官方提供的标准化开发工具&#xff08;开发平台&#xff09; 2 --- 最新的版本是 4.x 3 --- 文档 Vue CLI 具体步骤: 1 --- 如果下载缓慢请配置npm淘宝镜像npm config set registry http://registry.npm.taobao.org 2 --- 全局安装 vue/cli npm ins…

Apache Kafka + 矢量数据库 + LLM = 实时 GenAI

公众号&#xff1a;Halo咯咯 生成式人工智能 (GenAI) 支持先进的人工智能用例和创新&#xff0c;但也改变了企业架构的外观。大型语言模型 (LLM)、向量数据库和检索增强生成 (RAG) 需要新的数据集成模式和数据工程最佳实践。 Apache Kafka 和 Apache Flink 的数据流在大规模实时…

CIM搭建实现发送消息的效果

目录 背景过程1、下载代码2、进行配置3、直接启动项目4、打开管理界面5、启动web客户端实例项目6、发送消息 项目使用总结 背景 公司项目有许多需要发送即时消息的场景&#xff0c;之前一直采用的是传统的websocket连接&#xff0c;它会存在掉线严重&#xff0c;不可重连&…

推荐算法策略需求-rank model优化

1.pred_oobe (base) [rusxx]$ pwd /home/disk2/data/xx/icode/baidu/oxygen/rus-pipeline/pipeline-migrate/UserBaseActiveStatPipeline/his_session (base) [rusxx]$ sh test.sh 2. user_skill_history_dict_expt2包含userid [workxx]$ vim /home/work/xx/du-rus/du_rus_o…