標(biāo)題: 眾拳基于STM8的DS18B20溫度傳感器實驗詳解與源程序 [打印本頁]

作者: 眾拳單片機(jī)    時間: 2017-12-15 10:13
標(biāo)題: 眾拳基于STM8的DS18B20溫度傳感器實驗詳解與源程序

DS18B20簡介
DS18B20數(shù)字溫度傳感器接線方便,封裝后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式。主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機(jī)房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。
DS18B20的特點
1、適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電
2、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。

3、DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。

4、DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。

5、溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃
6、可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫。

7、在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。

8、測量結(jié)果直接輸出數(shù)字溫度信號,以"一根總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強(qiáng)的抗干擾糾錯能力。

9、負(fù)壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀, 但不能正常工作。
DS18B20實物圖


DS18B20的內(nèi)部結(jié)構(gòu)


光刻64位只讀存儲器
光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列號。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。


DS18B20溫度轉(zhuǎn)換規(guī)則
DS18B20的核心功能是它可以直接讀出數(shù)字的溫度數(shù)值。溫度傳感器的精度為用戶可編程的9,10,11或12位,分別以0.5℃,0.25℃,0.125℃和0.0625℃增量遞增。在上電狀態(tài)下默認(rèn)的精度為12位。

    DS18B20啟動后保持低功耗等待狀態(tài),當(dāng)需要執(zhí)行溫度測量和AD轉(zhuǎn)換時,總線控制器必須發(fā)出[44h]命令。轉(zhuǎn)換完以后,產(chǎn)生的溫度數(shù)據(jù)以兩個字節(jié)的形式被存儲到高速暫存器的溫度寄存器中,DS18B20繼續(xù)保持等待狀態(tài)。
DS18B20溫度轉(zhuǎn)換規(guī)則
這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8位的RAM中,高字節(jié)的前5位是符號位,如果測得的溫度大于0,這5位為‘0’,只要將測到的數(shù)值乘以0.0625即可得到實際溫度;如果溫度小于0,這5位為‘1’,測到的數(shù)值需要取反加1再乘以0.0625即可得到實際溫度。


DS18B20溫度轉(zhuǎn)換規(guī)則




DS18B20的存儲器
DS18B20溫度傳感器的內(nèi)部存儲器包括一個高度的暫存器RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。
配置寄存器
存儲器的第4位為配置寄存器,其組織見圖8,用戶可按表3所示設(shè)置R0和R1位來設(shè)定DS18B20的精度。上電默認(rèn)設(shè)置:R0=1、R1=1(12位精度)。注意:精度和轉(zhuǎn)換時間之間有直接的關(guān)系。暫存器的位7和位0-4被器件保留,禁止寫入。


DS18B20的ROM指令表


DS18B20的RAM指令表


DS18B20初始化


(1).數(shù)據(jù)線拉到低電平“0”。
(2).延時480微妙(該時間的時間范圍可以從480到960微妙)。
(3).數(shù)據(jù)線拉到高電平“1”。
(4).延時等待80微妙。如果初始化成功則在15到60微妙時間內(nèi)產(chǎn)生一個由DS18B20所返回的低電平“0”.根據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進(jìn)行等待,不然會使程序 進(jìn)入死循環(huán),所以要進(jìn)行超時判斷。




(5).若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(3)步的時間算起)最少要480微妙。


DS18B20讀時序


(1).將數(shù)據(jù)線拉低“0”。
(2).延時4微妙。
(3).將數(shù)據(jù)線拉高“1”,釋放總線準(zhǔn)備讀數(shù)據(jù)。
(4).延時10微妙。
(5).讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。
(6).延時45微妙。
(7).重復(fù)1~7步驟,直到讀完一個字節(jié)。
DS18B20寫時序




(1).數(shù)據(jù)線先置低電平“0”
(2).延時15微妙。
(3).按從低位到高位的順序發(fā)送數(shù)據(jù)(一次只發(fā)送一位)。
(4).延時60微妙。
(5).將數(shù)據(jù)線拉到高電平。
(6).重復(fù)1~5步驟,直到發(fā)送完整的字節(jié)。
(7).最后將數(shù)據(jù)線拉高。

單片機(jī)源程序如下:
  1. /***********************************************************************
  2. *   說    明: 點亮第一個發(fā)光二極管
  3. *   開發(fā)平臺: 劍齒虎STM8開發(fā)板        
  4. *   哈爾濱卓恩科技開發(fā)有限公司
  5. *
  6. *   作    者: 劉洋 張殿東
  7. *   版    本: V1.0
  8. *   日    期: 2016-05-03   
  9. *
  10. *   IAR開發(fā)環(huán)境    版本 V2.20.1
  11. *   ST庫函數(shù)       版本 V2.2.0
  12. ***********************************************************************/

  13. #include "pbdata.h"//引入自定義公共頭文件

  14. void BSP_Configuration(void);//硬件初始化函數(shù)聲明

  15. /***********************************************************************
  16. *   函 數(shù) 名: main
  17. *   功能說明: c程序入口
  18. *   形    參:無
  19. *   返 回 值: 錯誤代碼(無需處理)
  20. ***********************************************************************/
  21. int main(void)
  22. {
  23.   BSP_Configuration();//硬件驅(qū)動初始化函數(shù)
  24.   
  25.   while(1)//主程序循環(huán),反復(fù)執(zhí)行循環(huán)體里的語句
  26.   {
  27.     //LED_Demo1();//在主程序中調(diào)用LED_Demo1()函數(shù)
  28.     //LED_Demo2();//在主程序中調(diào)用LED_Demo2()函數(shù)
  29.     //UART1_Printf_Demo();
  30.     DS18B20_Demo();
  31.   }
  32. }
  33. /***********************************************************************
  34. *   函 數(shù) 名: BSP_Configuration
  35. *   功能說明: 初始化硬件設(shè)備。只需要調(diào)用一次。該函數(shù)配置CPU寄存器和外設(shè)的寄存器并初始化一些全局變量。
  36. *   形    參:無
  37. *   返 回 值: 無
  38. ***********************************************************************/
  39. void BSP_Configuration(void)
  40. {  
  41.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//時鐘速度為內(nèi)部16M,1分頻,
  42.   UART1_Congfiguration();//調(diào)用RS232串口1初始化函數(shù)
  43.   LED_Init();//調(diào)用LED初始化函數(shù)
  44.   rim();//打開總中斷
  45. }

  46. /*斷言函數(shù):它的作用是在編程的過程中為程序提供參數(shù)檢查*/
  47. #ifdef USE_FULL_ASSERT
  48. ……………………

  49. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼



所有資料51hei提供下載:
【眾拳】劍齒虎STM8開發(fā)板實驗代碼下載:
眾拳DS18B20溫度傳感器程序.zip (1.75 MB, 下載次數(shù): 240)




作者: cooldog123pp    時間: 2019-3-5 16:52
論壇發(fā)帖的兄弟 都很用心 學(xué)習(xí)了正好用到,多謝大哥。
作者: jayzay008    時間: 2019-4-28 18:20
學(xué)習(xí)了正好用到
作者: zhougong_1001    時間: 2020-4-16 09:15
下載來學(xué)習(xí)一下
作者: wuyu3399    時間: 2020-4-16 12:51
學(xué)習(xí)了正好用到  有沒有寄存器版的呢
作者: xuexi100    時間: 2021-2-3 18:22
感謝樓主分享寶貴資料




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