找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 45766|回复: 193
收起左侧

10分钟理解DS18B20数字温度计模块

  [复制链接]
ID:304634 发表于 2018-4-11 15:57 | 显示全部楼层 |阅读模式
1. 明确目的


DS18B20是美国DALLA半导体公司推出的一种数字化单总线器-数字温度计。既然是数字温度计,那么它一定具备这样的能力-把周围环境的温度信号转换成数字信号。那么这个转换的结果放到哪里去了呢?存放到了一个叫做Scratchpad的上面,这个Scratchpad是什么意思不用去管它,只需要知道它是一个SRAM就可以了。这个Scratchpad一共有9个字节(BYTE0~BYTE8),转换的数字信息就存放在BYTE0和BYTE1,如下图所示。所以,目的就很明确了,对于DS18B20模块就是去读Scratchpad的BYTE0和BYTE1. 思路1.png




2. 思路分析


现在目的已经知道了,就是读Scratchpad(read scratchpad)的BYTE0和BYTE1. 那么怎么样Read Scratchpad呢?当然是去查看DS18B20的芯片手册了。阅读说明书你会发现Read Scratchpad是一个功能命令(DS18B20 FUNCTION COMMANDS),类似的还有其他很多功能命令,如下图所示:


思路2.png

说明书上已经讲的非常清楚了,要求每次在访问DS18B20的时候一定要遵循以下步骤,如下所示,


思路3.png



简单的讲,你想发送一个功能命令Read Scratchpad, 那必须在它前面加两步,初始化命令(Initialization)和ROM命令(ROM Command)。初始化命令只有一个,很容易确定,但是ROM命令有多个,需要找到一个与功能命令Read Scratchpad相匹配的ROM命令。如果总线上只有一个DS18B20模块,选择Skip ROM就可以了。
这样整个步骤就很简单了,先初始化,然后发送skip rom命令,紧接着发送read scratchpad命令,然后开始接收DS18B20传送的数据,第0和第1个字节就是我们所需要的。这样读出来的全部是0和1组成的信号,我们还需要将这些0和1组成的信号翻译成“温度值”。怎么样翻译,去查看说明书上的温度-数据对应表就可以了,如下所示:


思路4.png



注意这个表中的数据是补码形式,如果你只是考虑温度为正的情况,那么就不用去管原码,反码和补码了。因为对于正数的原码,反码和补码都是一样的。


如果读写操作正确的话,此时计算出来的温度应该是+85摄氏度。通过这个值可以判断你的读写程序和温度计算过程是否正确。那么为什么是+85摄氏度呢?在一上电的时候,DS18B20处在一个"idle state",简单的讲就是它没有工作,没有采集周围环境的温度。Scratchpad的BYTE0和BYTE1里面放的默认值是+85,所以你读到的其实是它的默认值。如果你想让DS18B20开始工作,那么很简单,发送一个Convert T命令就可以了。注意Convert T也是一个功能命令(Function Command),同样的按照前面的规则,给它添加初始化命令和ROM命令。


这样整个过程是不是完了呢?注意DS18B20完成温度的采集和转换是需要时间的,好比你敲隔壁的门,那你发出“敲门”这个命令后,你同学过来开门是需要时间的,在这个过程中你要做的事情就是等待。同样的,当你发送一个Convert T命令后,你需要等待DS18B20完成温度采集和转换的工作。那么等待多长呢,这个与你设置精度有关,精度越高,需要的时间越长,最多不超过750ms。当然这个过程中,你也可以采用忙信号检测的方式来判断。

3. 操作步骤


这样整个操作步骤就非常简单了,
  1. (1) initial                       (DS18B20初始化)
  2. (2) skip rom
  3. (3) convert T                 (让DS18B20开始工作采集周围温度)
  4. (4) busy check              (等待DS18B20完成采集)
  5. (5)  initial                        (DS18B20初始化)
  6. (6) skip rom
  7. (7) read scratchpad       (发送读scratchpad命令)
  8. (8) rcv data                     (接收DS18B20传过来的数据)
  9. (9) cal                             (计算温度值)
  10. (10) display                    (把这个值显示出来)
复制代码


4. 参考代码

DS18B20参考代码.rar (50.62 KB, 下载次数: 238)





上一篇:

10分钟理解LCD1602液晶显示模块
10分钟理解LCD1602如何显示自定义字符
10分钟理解OLED显示模块



评分

参与人数 3黑币 +28 收起 理由
map0391 + 18
HHJ960325 + 5 赞一个!
402794511 + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:645807 发表于 2021-11-10 11:43 | 显示全部楼层
好文章,能很容易里结果DS19B20的工作原理
回复

使用道具 举报

ID:390416 发表于 2021-1-6 16:32 | 显示全部楼层
数字温度传感器DS18B20 HK1020测温时序图 很好的中文资料 http://www.51hei.com/bbs/dpj-200465-1.html
回复

使用道具 举报

ID:658207 发表于 2019-12-8 12:22 来自触屏版 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:84492 发表于 2019-9-5 21:55 | 显示全部楼层
多谢,简单又好理解
回复

使用道具 举报

ID:446389 发表于 2019-7-23 11:09 | 显示全部楼层

感谢楼主分享
回复

使用道具 举报

ID:56002 发表于 2018-10-13 08:12 | 显示全部楼层
18B20程序我一般都移值,楼主说的非常通透,感谢分享!
回复

使用道具 举报

ID:378979 发表于 2018-10-11 14:38 来自触屏版 | 显示全部楼层
确实有用
回复

使用道具 举报

ID:43383 发表于 2018-10-11 11:21 | 显示全部楼层
谢谢分享。。。。。。。。顶一个
回复

使用道具 举报

ID:358019 发表于 2018-10-10 21:24 | 显示全部楼层
刚好毕设要用到
哈哈哈哈
阿里嘎多
回复

使用道具 举报

ID:393577 发表于 2018-10-10 14:27 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:349230 发表于 2018-10-10 09:29 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

ID:406553 发表于 2018-10-9 08:21 | 显示全部楼层
再看一遍
回复

使用道具 举报

ID:406553 发表于 2018-10-8 15:29 | 显示全部楼层
能看懂
回复

使用道具 举报

ID:87406 发表于 2018-10-6 07:03 来自触屏版 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

ID:382747 发表于 2018-10-5 13:47 | 显示全部楼层
好的,谢谢楼主
回复

使用道具 举报

ID:357520 发表于 2018-10-5 09:56 | 显示全部楼层
楼主字写的很好啊
回复

使用道具 举报

ID:34643 发表于 2018-10-5 08:47 | 显示全部楼层
理解DS18B20数字温度计模块
回复

使用道具 举报

ID:385045 发表于 2018-10-5 01:38 | 显示全部楼层
谢谢楼主的共享
回复

使用道具 举报

ID:90140 发表于 2018-10-4 22:06 | 显示全部楼层
感谢楼主分享!
回复

使用道具 举报

ID:106422 发表于 2018-10-4 20:12 | 显示全部楼层
写的通俗易懂
回复

使用道具 举报

ID:323199 发表于 2018-10-4 18:05 | 显示全部楼层
写的很好
回复

使用道具 举报

ID:404454 发表于 2018-10-3 23:56 | 显示全部楼层
很实用的资料,学习了。
回复

使用道具 举报

ID:402376 发表于 2018-9-26 17:36 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:258542 发表于 2018-9-23 16:32 | 显示全部楼层
新手学些下温度模块
回复

使用道具 举报

ID:243394 发表于 2018-9-23 15:03 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:204228 发表于 2018-9-20 11:31 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:216625 发表于 2018-9-19 17:46 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:266695 发表于 2018-9-19 00:35 来自触屏版 | 显示全部楼层
进来看看
回复

使用道具 举报

ID:328938 发表于 2018-9-18 19:29 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:356963 发表于 2018-9-18 16:48 | 显示全部楼层

学习学习
回复

使用道具 举报

ID:91165 发表于 2018-9-18 10:45 | 显示全部楼层
说的详细。好理解,谢谢楼主分享
回复

使用道具 举报

ID:379278 发表于 2018-9-18 09:28 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:53667 发表于 2018-9-17 09:36 | 显示全部楼层
好好学习,谢谢分享
回复

使用道具 举报

ID:336636 发表于 2018-9-17 09:25 | 显示全部楼层
有趣,学习了
回复

使用道具 举报

ID:84492 发表于 2018-9-13 14:49 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:386381 发表于 2018-9-11 16:47 来自触屏版 | 显示全部楼层
非常感谢
回复

使用道具 举报

ID:357876 发表于 2018-8-20 20:38 | 显示全部楼层
很好!
回复

使用道具 举报

ID:382800 发表于 2018-8-20 15:40 | 显示全部楼层
正需要这方面的资料
回复

使用道具 举报

ID:277616 发表于 2018-8-17 11:13 | 显示全部楼层
很明白,要是能解说一下模块的构成和原理就更好了
回复

使用道具 举报

ID:201871 发表于 2018-8-17 10:49 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表