目录

  • DS18B20数字温度计 (一) 电气特性, 供电和接线方式
  • DS18B20数字温度计 (二) 测温, ROM和CRC算法
  • DS18B20数字温度计 (三) 1-WIRE总线ROM搜索算法

测温

DS18B20的核心功能就是数字化的温度读数, 可以设置为9, 10, 11, 12位分辨率, 缺省分辨率是12位. 各分辨率对应的读数, 温度分辨率分别是0.5, 0.25, 0.125, 0.0625摄氏度.

在执行温度转换命令Convert T0x44后, 温度会被转换并存储在一个2字节的内存单元, 然后通过读取命令Read Scratchpad0xBE读出.

转换时间

在温度转换命令Convert T0x44发起到采集完成需要的时间可能会长达750 ms. 实际从 400ms 至 1s 都有可能.

读数结构

这两个字节各个bit分别代表的数字含义如下, 高字节的高5位仅用于表示温度的正负, 正温度是0, 负温度是1, 后面11个bit表示的数字, 负值使用的是补码, 读数用 (0xFF - 读数)

  • 正温度时, 将16位整数乘以对应的温度分辨率
  • 负温度时, 将16位整数取反加1后, 乘以对应的温度分辨率
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
S S S S S 262^626 252^525 242^424 232^323 222^222 212^121 202^020 2−12^-12−1 2−22^-22−2 2−32^-32−3 2−42^-42−4
MSB LSB MSB LSB

读数快查表

上电后的缺省值为0x0550, 对应85°C, 如果一直读出都是这个值, 需要检查接线

TEMPERATURE DIGITAL OUTPUT (Binary) DIGITAL OUTPUT (Hex)
+125°C 0000 0111 1101 0000 07D0h
+85°C 0000 0101 0101 0000 0550h*
+25.0625°C 0000 0001 1001 0001 0191h
+10.125°C 0000 0000 1010 0010 00A2h
+0.5°C 0000 0000 0000 1000 0008h
0°C 0000 0000 0000 0000 0000h
-0.5°C 1111 1111 1111 1000 FFF8h
-10.125°C 1111 1111 0101 1110 FF5Eh
-25.0625°C 1111 1110 0110 1111 FF6Fh
-55°C 1111 1100 1001 0000 FC90h

测温存储结构

DS18B20内部有9字节的暂存器和3个字节的EEPROM存储, 测温的结果存在暂存器的前两个字节, 整体结构如下, 可以通过读取命令Read Scratchpad0xBE读出全部9个字节

ROM读数

每个 DS18B20 包含一个唯一的只读的64bit编码, 其结构为

  1. 最初 8 bits 为固定的 0x28, 1-Wire family code
  2. 接下来的 48 bits 是唯一序列号
  3. 最后的 8 bits 是前面 56 bits 的 CRC 校验码.

这个 64-bit ROM 和 ROM 方法允许在单线(1-Wire)总线上运行多个 DS18B20, 使用单线总线需要使用下面的方法之一发起:

  1. Read ROM,
  2. Match ROM,
  3. Search ROM,
  4. Skip ROM, or
  5. Alarm Search.

After a ROM function sequence has been successfully executed, the functions specific to the DS18B20 are accessible and the
bus master may then provide one of the six memory and control function commands.

CRC 计算

无论是读取8字节ROM, 还是读取9字节暂存器, 最后一个字节都是前面所有字节的CRC校验值. CRC值的比较与是否继续操作完全由总线控制端决定, DS18B20 内部仅计算CRC, 并不会对CRC不匹配的情况进行处理, 需要总线控制端主动判断.

计算CRC的等效多项式函数为(这是datasheet中的式子, 并非幂运算, 要结合后面的流程图理解)

CRC=X8+X5+X4+1CRC = X^8 + X^5 + X^4 + 1CRC=X8+X5+X4+1

1-Wire总线的CRC计算由移位寄存器和异或门组成的多项式发生器来执行: 移位寄存器位初始化为0, 然后从第一个字节的最低位开始, 一次移入一位, 根据计算结果决定是否与第4, 第5位作异或, 然后CRC也往右移, 最后移位寄存器的值就是CRC.

CRC 计算代码

8位CRC的C语言计算代码为

uint8_t DS18B20_Crc(uint8_t *addr, uint8_t len)
{uint8_t crc = 0, inbyte, i, mix;while (len--){// inbyte 存储当前参与计算的新字节inbyte = *addr++;for (i = 8; i; i--) {// 将新字节与CRC从低位到高位, 依次做异或运算, 每次运算完CRC右移一位// 如果运算结果值为1, 则将CRC与 1000 1100 作异或// 第3,4位代表流程图中的异或运算, 第7位其实就是运算结果移入的1mix = (crc ^ inbyte) & 0x01;crc >>= 1;if (mix) {crc ^= 0x8C;}inbyte >>= 1;}}return crc;
}

DS18B20数字温度计 (二) 测温, ROM和CRC算法相关推荐

  1. DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试

    目录 DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线 DS18B20数字温度计 (二) 测温, ROM和CRC算法 DS18B20数字温度计 (三) 1-WIRE总线 ROM搜 ...

  2. DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线

    目录 DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线 DS18B20数字温度计 (二) 测温, ROM和CRC算法 DS18B20数字温度计 (三) 1-WIRE总线ROM搜索 ...

  3. 数字温度计的c语言编程,DS18B20数字温度计C程序(能显示负温)

    DS18B20数字温度计C程序(能显示负温) //***********DS18B20数字温度计C程序****************// //*MCU: AT892051 // //*MCU-cry ...

  4. 单片机小白学习之路(三十二)---DS18B20数字温度计(三)

    目标:目标: DS18B20数字温度计(三) 18b20开始转换温度 DS18B20 的典型温度读取过程为:复位→发 SKIP ROM 命令(0XCC)→发开始转换命令( 0X44)→延时→复位→发送 ...

  5. 数字温度计的c语言编程,基于DS18B20数字温度计的设计(全文完整版)

    <基于DS18B20数字温度计的设计.doc>由会员分享,可免费在线阅读全文,更多与<基于DS18B20数字温度计的设计>相关文档资源请在帮帮文库(www.woc88.com) ...

  6. DS18B20数字温度计使用(转)

    DS18B20数字温度计使用 发布人:来自网络   发布时间:2010-6-16 1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单, ...

  7. 单片机实例35——DS18B20数字温度计使用(硬件电路图+C语言程序)

    35. DS18B20数字温度计使用 1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点.因此用它来组成一个测温系统,具 ...

  8. DS18B20数字温度计使用

    1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点.因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这 ...

  9. DS18B20数字温度计系统设计

    STC89C52单片机 STC89C52单片机接口介绍 这个单片机一共有40个引脚. ①P0口(P0.0~P0.7) 8位漏极开关型双向I/O端口.可以作为通用I/O口使用,但必须加上拉电阻. ②P1 ...

  10. DS18B20数字温度计设计

    一.单片机简介. 1 二.设计任务和要求. 1 三.设计方案的总体设计框图. 1 3.1硬件电路框图. 1 3.2硬件电路概述. 2 3.3主控电路. 2 3.4显示电路. 2 3.5报警温度调节电路 ...

最新文章

  1. 金山手机安全卫士试用报告
  2. php代码生成txt文件并下载
  3. Oracle 排序中使用nulls first 或者nulls last 语法
  4. 软件项目管理0817:一夜项目管理——把任务进度计划分配给负责人
  5. java取二进制其中两位_Java:二进制(原码、反码、补码)与位运算(示例代码)...
  6. c++中algorithm头文件、STL库简介及使用说明
  7. 设置Windows 10时如何创建本地帐户
  8. 费尔个人防火墙采用两种封包过滤技术
  9. lisp成套电气设计_关于成套设计转电气设计问题?
  10. 运维必须掌握的27道Linux面试题
  11. WinDriver_资料
  12. java中set,get用法
  13. matlab求复数的模
  14. layui 小卡片_如何评价LayUI和他的作者贤心?
  15. 【综述】A Comprehensive Survey on Graph NeuralNetworks(2)
  16. 在网络世界中我们该如何保护我们的信息安全?
  17. html实时获取树莓派温湿度,在树莓派上获取美国天气预报
  18. 自动生成_一键自动生成CAD图纸目录
  19. 简单记录一下春招旅程 腾讯字节
  20. 【加拿大签证】加拿大政府指定的签证办理中国体检医院一览【2019官方最新版,加拿大签证体检必看】

热门文章

  1. Windows和Linux平台Beyond Compare 4 注册码
  2. 视频怎么剪辑才好看?学视频剪辑必读入门指南
  3. 38000词汇词根统计
  4. 计算机操作系统-2-处理器管理
  5. 微信开发者工具 ETIMEDOUT
  6. 文献写作:学术研究论文
  7. 泰勒展开简单直观理解与常用公式
  8. 计算机学的打字是五笔,学会电脑五笔打字的方法
  9. 前端原生开发解决方案
  10. 磁盘分区方式对比(MBR与GPT)