找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 39691|回復: 193
收起左側

10分鐘理解DS18B20數(shù)字溫度計模塊

  [復制鏈接]
ID:304634 發(fā)表于 2018-4-11 15:57 | 顯示全部樓層 |閱讀模式
1. 明確目的


DS18B20是美國DALLA半導體公司推出的一種數(shù)字化單總線器-數(shù)字溫度計。既然是數(shù)字溫度計,那么它一定具備這樣的能力-把周圍環(huán)境的溫度信號轉換成數(shù)字信號。那么這個轉換的結果放到哪里去了呢?存放到了一個叫做Scratchpad的上面,這個Scratchpad是什么意思不用去管它,只需要知道它是一個SRAM就可以了。這個Scratchpad一共有9個字節(jié)(BYTE0~BYTE8),轉換的數(shù)字信息就存放在BYTE0和BYTE1,如下圖所示。所以,目的就很明確了,對于DS18B20模塊就是去讀Scratchpad的BYTE0和BYTE1. 思路1.png




2. 思路分析


現(xiàn)在目的已經知道了,就是讀Scratchpad(read scratchpad)的BYTE0和BYTE1. 那么怎么樣Read Scratchpad呢?當然是去查看DS18B20的芯片手冊了。閱讀說明書你會發(fā)現(xiàn)Read Scratchpad是一個功能命令(DS18B20 FUNCTION COMMANDS),類似的還有其他很多功能命令,如下圖所示:


思路2.png

說明書上已經講的非常清楚了,要求每次在訪問DS18B20的時候一定要遵循以下步驟,如下所示,


思路3.png



簡單的講,你想發(fā)送一個功能命令Read Scratchpad, 那必須在它前面加兩步,初始化命令(Initialization)和ROM命令(ROM Command)。初始化命令只有一個,很容易確定,但是ROM命令有多個,需要找到一個與功能命令Read Scratchpad相匹配的ROM命令。如果總線上只有一個DS18B20模塊,選擇Skip ROM就可以了。
這樣整個步驟就很簡單了,先初始化,然后發(fā)送skip rom命令,緊接著發(fā)送read scratchpad命令,然后開始接收DS18B20傳送的數(shù)據(jù),第0和第1個字節(jié)就是我們所需要的。這樣讀出來的全部是0和1組成的信號,我們還需要將這些0和1組成的信號翻譯成“溫度值”。怎么樣翻譯,去查看說明書上的溫度-數(shù)據(jù)對應表就可以了,如下所示:


思路4.png



注意這個表中的數(shù)據(jù)是補碼形式,如果你只是考慮溫度為正的情況,那么就不用去管原碼,反碼和補碼了。因為對于正數(shù)的原碼,反碼和補碼都是一樣的。


如果讀寫操作正確的話,此時計算出來的溫度應該是+85攝氏度。通過這個值可以判斷你的讀寫程序和溫度計算過程是否正確。那么為什么是+85攝氏度呢?在一上電的時候,DS18B20處在一個"idle state",簡單的講就是它沒有工作,沒有采集周圍環(huán)境的溫度。Scratchpad的BYTE0和BYTE1里面放的默認值是+85,所以你讀到的其實是它的默認值。如果你想讓DS18B20開始工作,那么很簡單,發(fā)送一個Convert T命令就可以了。注意Convert T也是一個功能命令(Function Command),同樣的按照前面的規(guī)則,給它添加初始化命令和ROM命令。


這樣整個過程是不是完了呢?注意DS18B20完成溫度的采集和轉換是需要時間的,好比你敲隔壁的門,那你發(fā)出“敲門”這個命令后,你同學過來開門是需要時間的,在這個過程中你要做的事情就是等待。同樣的,當你發(fā)送一個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       (發(fā)送讀scratchpad命令)
  8. (8) rcv data                     (接收DS18B20傳過來的數(shù)據(jù))
  9. (9) cal                             (計算溫度值)
  10. (10) display                    (把這個值顯示出來)
復制代碼


4. 參考代碼

DS18B20參考代碼.rar (50.62 KB, 下載次數(shù): 238)





上一篇:

10分鐘理解LCD1602液晶顯示模塊
10分鐘理解LCD1602如何顯示自定義字符
10分鐘理解OLED顯示模塊



評分

參與人數(shù) 3黑幣 +28 收起 理由
map0391 + 18
HHJ960325 + 5 贊一個!
402794511 + 5 贊一個!

查看全部評分

回復

使用道具 舉報

ID:301077 發(fā)表于 2018-4-11 17:36 | 顯示全部樓層
很給力!
回復

使用道具 舉報

ID:192893 發(fā)表于 2018-4-11 18:38 來自手機 | 顯示全部樓層
感謝樓主分享
回復

使用道具 舉報

ID:306035 發(fā)表于 2018-4-11 19:44 | 顯示全部樓層
厲害厲害
回復

使用道具 舉報

ID:284598 發(fā)表于 2018-4-13 17:25 來自手機 | 顯示全部樓層
學習學習
回復

使用道具 舉報

ID:283590 發(fā)表于 2018-4-13 20:06 來自手機 | 顯示全部樓層
給力      
回復

使用道具 舉報

ID:269211 發(fā)表于 2018-4-14 08:13 | 顯示全部樓層
很給力!
回復

使用道具 舉報

ID:280132 發(fā)表于 2018-4-20 14:01 | 顯示全部樓層
很有用謝謝。
回復

使用道具 舉報

ID:307683 發(fā)表于 2018-4-20 20:03 | 顯示全部樓層
很有用謝謝。
回復

使用道具 舉報

ID:312884 發(fā)表于 2018-4-21 10:06 | 顯示全部樓層
謝謝!剛好用到
回復

使用道具 舉報

ID:303345 發(fā)表于 2018-4-21 19:44 | 顯示全部樓層
總結的不錯
回復

使用道具 舉報

ID:314339 發(fā)表于 2018-4-23 11:43 來自手機 | 顯示全部樓層
感謝樓主分享
回復

使用道具 舉報

ID:314581 發(fā)表于 2018-4-23 16:28 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:314875 發(fā)表于 2018-4-23 21:39 | 顯示全部樓層
正在學習這個溫度傳感器,感謝樓主分享
回復

使用道具 舉報

ID:118624 發(fā)表于 2018-4-23 23:21 | 顯示全部樓層
講得很通俗易懂
回復

使用道具 舉報

ID:218365 發(fā)表于 2018-4-24 22:07 | 顯示全部樓層
簡單
回復

使用道具 舉報

ID:305880 發(fā)表于 2018-4-25 08:45 | 顯示全部樓層
新手路過?纯磳W習下。。。。
回復

使用道具 舉報

ID:316680 發(fā)表于 2018-4-25 22:22 | 顯示全部樓層
新人學習了
回復

使用道具 舉報

ID:183278 發(fā)表于 2018-4-26 11:26 | 顯示全部樓層

很給力!
回復

使用道具 舉報

ID:277993 發(fā)表于 2018-4-26 15:39 | 顯示全部樓層
還有很多疑惑,希望讀完作者的思路。非常感謝樓主。
回復

使用道具 舉報

ID:256132 發(fā)表于 2018-4-26 17:52 | 顯示全部樓層
不錯的見解
回復

使用道具 舉報

ID:313867 發(fā)表于 2018-4-26 20:35 | 顯示全部樓層
學到了謝謝
回復

使用道具 舉報

ID:317589 發(fā)表于 2018-4-27 11:47 | 顯示全部樓層
好文章啊
回復

使用道具 舉報

ID:317700 發(fā)表于 2018-4-27 13:02 來自手機 | 顯示全部樓層
新手路過
回復

使用道具 舉報

ID:166903 發(fā)表于 2018-4-27 14:01 | 顯示全部樓層
很詳細,還是覺得第一個圖6啊
回復

使用道具 舉報

ID:318019 發(fā)表于 2018-4-28 18:12 | 顯示全部樓層
漲知識
回復

使用道具 舉報

ID:318803 發(fā)表于 2018-4-29 11:03 | 顯示全部樓層
學習下
回復

使用道具 舉報

ID:3212 發(fā)表于 2018-4-29 12:20 | 顯示全部樓層
好好學習,天天控制……
回復

使用道具 舉報

ID:319520 發(fā)表于 2018-5-1 22:29 | 顯示全部樓層

感謝樓主分享!
回復

使用道具 舉報

ID:319909 發(fā)表于 2018-5-1 22:44 | 顯示全部樓層
寫的真好,樓主下回功夫了。
回復

使用道具 舉報

ID:116685 發(fā)表于 2018-5-2 15:18 | 顯示全部樓層
理解一下
回復

使用道具 舉報

ID:304204 發(fā)表于 2018-5-2 16:22 | 顯示全部樓層
看一下
回復

使用道具 舉報

ID:102702 發(fā)表于 2018-5-2 16:36 | 顯示全部樓層
學習一下,放分享
回復

使用道具 舉報

ID:296603 發(fā)表于 2018-5-2 16:59 | 顯示全部樓層
學習學習學習
回復

使用道具 舉報

ID:315751 發(fā)表于 2018-5-2 19:39 | 顯示全部樓層
正需要啊,學習到了
回復

使用道具 舉報

ID:261884 發(fā)表于 2018-5-2 21:03 | 顯示全部樓層
學習一下.
回復

使用道具 舉報

ID:301302 發(fā)表于 2018-5-5 23:08 | 顯示全部樓層
看看,,,,,,,
回復

使用道具 舉報

ID:322832 發(fā)表于 2018-5-6 13:36 | 顯示全部樓層
好東西,謝謝分享
回復

使用道具 舉報

ID:323716 發(fā)表于 2018-5-6 20:27 | 顯示全部樓層
之前寫了個單1820的 現(xiàn)在需要個雙1820的
回復

使用道具 舉報

ID:323270 發(fā)表于 2018-5-6 23:22 | 顯示全部樓層
看一看看
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表