標(biāo)題: 10分鐘理解DS18B20數(shù)字溫度計(jì)模塊 [打印本頁(yè)]

作者: ppptalk    時(shí)間: 2018-4-11 15:57
標(biāo)題: 10分鐘理解DS18B20數(shù)字溫度計(jì)模塊
1. 明確目的


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




2. 思路分析


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




說(shuō)明書(shū)上已經(jīng)講的非常清楚了,要求每次在訪問(wèn)DS18B20的時(shí)候一定要遵循以下步驟,如下所示,






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






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


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


這樣整個(gè)過(guò)程是不是完了呢?注意DS18B20完成溫度的采集和轉(zhuǎn)換是需要時(shí)間的,好比你敲隔壁的門(mén),那你發(fā)出“敲門(mén)”這個(gè)命令后,你同學(xué)過(guò)來(lái)開(kāi)門(mén)是需要時(shí)間的,在這個(gè)過(guò)程中你要做的事情就是等待。同樣的,當(dāng)你發(fā)送一個(gè)Convert T命令后,你需要等待DS18B20完成溫度采集和轉(zhuǎn)換的工作。那么等待多長(zhǎng)呢,這個(gè)與你設(shè)置精度有關(guān),精度越高,需要的時(shí)間越長(zhǎng),最多不超過(guò)750ms。當(dāng)然這個(gè)過(guò)程中,你也可以采用忙信號(hào)檢測(cè)的方式來(lái)判斷。

3. 操作步驟


這樣整個(gè)操作步驟就非常簡(jiǎn)單了,
  1. (1) initial                       (DS18B20初始化)
  2. (2) skip rom
  3. (3) convert T                 (讓DS18B20開(kāi)始工作采集周?chē)鷾囟?
  4. (4) busy check              (等待DS18B20完成采集)
  5. (5)  initial                        (DS18B20初始化)
  6. (6) skip rom
  7. (7) read scratchpad       (發(fā)送讀scratchpad命令)
  8. (8) rcv data                     (接收DS18B20傳過(guò)來(lái)的數(shù)據(jù))
  9. (9) cal                             (計(jì)算溫度值)
  10. (10) display                    (把這個(gè)值顯示出來(lái))
復(fù)制代碼


4. 參考代碼

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





上一篇:

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




作者: 15931666846    時(shí)間: 2018-4-11 17:36
很給力!
作者: 無(wú)時(shí)崩潰    時(shí)間: 2018-4-11 18:38
感謝樓主分享
作者: 那就微笑吧    時(shí)間: 2018-4-11 19:44
厲害厲害
作者: whdiy751124    時(shí)間: 2018-4-13 17:25
學(xué)習(xí)學(xué)習(xí)
作者: 一笑、    時(shí)間: 2018-4-13 20:06
給力      
作者: chaoself    時(shí)間: 2018-4-14 08:13
很給力!
作者: dicdoctor    時(shí)間: 2018-4-20 14:01
很有用謝謝。

作者: luxujin    時(shí)間: 2018-4-20 20:03
很有用謝謝。
作者: liuwenwu    時(shí)間: 2018-4-21 10:06
謝謝!剛好用到
作者: VVSuperman    時(shí)間: 2018-4-21 19:44
總結(jié)的不錯(cuò)

作者: yzh123    時(shí)間: 2018-4-23 11:43
感謝樓主分享
作者: love1120909472    時(shí)間: 2018-4-23 16:28
謝謝分享
作者: 虛妄XW    時(shí)間: 2018-4-23 21:39
正在學(xué)習(xí)這個(gè)溫度傳感器,感謝樓主分享
作者: 青青之歌    時(shí)間: 2018-4-23 23:21
講得很通俗易懂
作者: ZXHREG    時(shí)間: 2018-4-24 22:07
簡(jiǎn)單

作者: 貝貝屋    時(shí)間: 2018-4-25 08:45
新手路過(guò)?纯磳W(xué)習(xí)下。。。。

作者: 此人ID不合法    時(shí)間: 2018-4-25 22:22
新人學(xué)習(xí)了
作者: qq383570990    時(shí)間: 2018-4-26 11:26

很給力!
作者: 心有天下    時(shí)間: 2018-4-26 15:39
還有很多疑惑,希望讀完作者的思路。非常感謝樓主。
作者: Juneral    時(shí)間: 2018-4-26 17:52
不錯(cuò)的見(jiàn)解
作者: wu307105    時(shí)間: 2018-4-26 20:35
學(xué)到了謝謝
作者: jfb18331619    時(shí)間: 2018-4-27 11:47
好文章啊
作者: xushu1113551892    時(shí)間: 2018-4-27 13:02
新手路過(guò)
作者: kingdream    時(shí)間: 2018-4-27 14:01
很詳細(xì),還是覺(jué)得第一個(gè)圖6啊
作者: 51heiRay    時(shí)間: 2018-4-28 18:12
漲知識(shí)
作者: 740014566    時(shí)間: 2018-4-29 11:03
學(xué)習(xí)下
作者: middfat    時(shí)間: 2018-4-29 12:20
好好學(xué)習(xí),天天控制……
作者: aa11水喵    時(shí)間: 2018-5-1 22:29

感謝樓主分享!
作者: MJX74FBI    時(shí)間: 2018-5-1 22:44
寫(xiě)的真好,樓主下回功夫了。
作者: 5f688    時(shí)間: 2018-5-2 15:18
理解一下
作者: f193876392    時(shí)間: 2018-5-2 16:22
看一下

作者: raymondau    時(shí)間: 2018-5-2 16:36
學(xué)習(xí)一下,放分享
作者: 2669020082    時(shí)間: 2018-5-2 16:59
學(xué)習(xí)學(xué)習(xí)學(xué)習(xí)
作者: 吖吖love    時(shí)間: 2018-5-2 19:39
正需要啊,學(xué)習(xí)到了

作者: lixinren45    時(shí)間: 2018-5-2 21:03
學(xué)習(xí)一下.
作者: cy_0211    時(shí)間: 2018-5-5 23:08
看看,,,,,,,
作者: 猛虎將軍    時(shí)間: 2018-5-6 13:36
好東西,謝謝分享
作者: benbird2011    時(shí)間: 2018-5-6 20:27
之前寫(xiě)了個(gè)單1820的 現(xiàn)在需要個(gè)雙1820的
作者: qwertyui123    時(shí)間: 2018-5-6 23:22
看一看看
作者: yzcde    時(shí)間: 2018-5-6 23:33
學(xué)習(xí)了
作者: wx13808433053    時(shí)間: 2018-5-6 23:50
想學(xué)習(xí)這個(gè),謝謝樓主
作者: 0858dll    時(shí)間: 2018-5-7 08:48
了解了解
作者: zhangyaolu    時(shí)間: 2018-5-7 16:57
聽(tīng)說(shuō)回復(fù)才能看到
作者: 18942352071    時(shí)間: 2018-5-9 17:50
想要,畢設(shè)做不出來(lái),要哭了
作者: wxsky1997    時(shí)間: 2018-5-10 19:53
感謝分享
作者: qltk    時(shí)間: 2018-5-11 08:58
描述的非常通俗易懂,謝謝。!
作者: lon7085    時(shí)間: 2018-5-11 10:30
感謝樓主分享

作者: vstcg    時(shí)間: 2018-5-12 22:36
真的很清楚
作者: 黑人盤(pán)子    時(shí)間: 2018-5-12 23:31
之前就想過(guò)類(lèi)似的做法就是找不到好的傳感器,講的很不錯(cuò)的
作者: 玩什么玩學(xué)習(xí)去    時(shí)間: 2018-5-13 09:32
厲害厲害
作者: wuzixu    時(shí)間: 2018-5-13 20:12
講得很好
作者: 獨(dú)家記憶12138    時(shí)間: 2018-5-14 13:22
支持樓主
作者: w963135423    時(shí)間: 2018-5-14 14:22
寫(xiě)的不錯(cuò),比網(wǎng)上查的更容易理解
作者: lxd951214    時(shí)間: 2018-5-14 21:31
10分鐘理解DS18B20數(shù)字溫度計(jì)模塊
作者: 秋高氣爽112233    時(shí)間: 2018-5-14 23:44
學(xué)習(xí)學(xué)習(xí)
作者: Live電子    時(shí)間: 2018-5-15 09:24
正要弄溫度計(jì),學(xué)習(xí)了
作者: 劉廣書(shū)    時(shí)間: 2018-5-15 10:06
謝謝分享
作者: 564    時(shí)間: 2018-5-16 09:16
正在學(xué)習(xí)中
作者: 564    時(shí)間: 2018-5-16 09:18
樓主給力,學(xué)習(xí)學(xué)習(xí)
作者: 花花21    時(shí)間: 2018-5-17 09:08
學(xué)習(xí)真的很有用
作者: tanyaming    時(shí)間: 2018-5-17 10:44
非常好的分享
作者: lzl881005    時(shí)間: 2018-5-18 10:36
非常的詳細(xì),支持樓主
作者: nameddd    時(shí)間: 2018-5-21 15:27
感謝分享
作者: YeHanWei    時(shí)間: 2018-5-21 19:55
講得挺好的,不知道為什么移植到其他板后,初始化總是有錯(cuò)
作者: zhangtutu    時(shí)間: 2018-5-22 06:28
大佬大佬
作者: 西門(mén)米粉兒    時(shí)間: 2018-5-22 09:28
感謝分享
作者: Jokera    時(shí)間: 2018-5-22 12:53
樓主好厲害,總結(jié)的太到位了!
作者: HEIYOUB    時(shí)間: 2018-5-22 22:17
真的想了解這個(gè)芯片,不然這個(gè)項(xiàng)目會(huì)做的稀里糊涂的

作者: 5314039    時(shí)間: 2018-5-22 23:16
謝謝分享
作者: 1933823644    時(shí)間: 2018-5-23 00:48
厲害厲害
作者: kltws    時(shí)間: 2018-5-23 19:09
不錯(cuò)的分享

作者: JokerMOMO    時(shí)間: 2018-5-24 16:44
棒棒噠
作者: LWSZ    時(shí)間: 2018-5-25 09:13
學(xué)習(xí) 學(xué)習(xí)
作者: yimiba    時(shí)間: 2018-5-25 09:44
感謝分享
作者: jason005    時(shí)間: 2018-5-25 11:21
感謝樓主分享
作者: jason005    時(shí)間: 2018-5-25 11:22
感謝樓主分享
作者: jason005    時(shí)間: 2018-5-25 11:23

感謝樓主分享
作者: tt98    時(shí)間: 2018-5-25 20:47
用這個(gè)芯片成本太高了,做產(chǎn)品要是對(duì)精度沒(méi)有太大要求的話還是用NTC劃算!
作者: lichengjie2015    時(shí)間: 2018-5-25 23:39
厲害了
作者: 老胖熊    時(shí)間: 2018-5-26 15:23
講的很清楚
作者: 萬(wàn)般皆下品    時(shí)間: 2018-5-28 22:24
來(lái)學(xué)習(xí)學(xué)習(xí)
作者: smartphone    時(shí)間: 2018-5-28 22:50
謝謝 慢慢學(xué)習(xí)
作者: 807874484    時(shí)間: 2018-5-29 13:21
感謝

作者: BigWheels    時(shí)間: 2018-6-3 22:32
謝謝講授
作者: 837657313    時(shí)間: 2018-6-4 07:57
講的很清楚
作者: zsyzdx    時(shí)間: 2018-6-6 22:13
感謝樓主!。。。。。。。。。。。。。。。。。。。。。。。。。。!
作者: swzz    時(shí)間: 2018-6-7 16:01
正要學(xué)習(xí)18b20,謝謝
作者: 78336478    時(shí)間: 2018-6-7 19:32
6666666
作者: 轉(zhuǎn)角遇到dogs    時(shí)間: 2018-6-10 16:06
好資料,感謝
作者: manpingshui    時(shí)間: 2018-6-10 20:45
在哪呢我沒(méi)看見(jiàn)啊

作者: 杰克汗    時(shí)間: 2018-6-11 00:45
超級(jí)厲害很詳細(xì)
作者: yuki_ring    時(shí)間: 2018-6-11 08:23
很詳細(xì),初步了解了,謝謝樓主
作者: dingqinhong    時(shí)間: 2018-6-24 11:12
感謝樓主分享 對(duì)我來(lái)說(shuō)很有用
作者: 天霸動(dòng)霸成    時(shí)間: 2018-6-24 22:12
66666666
作者: 沈經(jīng)理    時(shí)間: 2018-6-24 22:57
寫(xiě)的很好,簡(jiǎn)潔明了
作者: gogo7707    時(shí)間: 2018-6-25 12:49
剛寫(xiě)樓主分享
作者: 聽(tīng)雪    時(shí)間: 2018-6-25 15:09
DS18B20傳感器剛好用到
作者: SKU    時(shí)間: 2018-6-25 17:55
看一看,瞧一瞧
作者: kkxyjf    時(shí)間: 2018-6-25 20:10
想看,想學(xué)習(xí)!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1