找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 12438|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

眾拳基于STM8的DS18B20溫度傳感器實(shí)驗(yàn)詳解與源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:170279 發(fā)表于 2017-12-15 10:13 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

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

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

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

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

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

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

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


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


光刻64位只讀存儲(chǔ)器
光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列號(hào)。64位光刻ROM的排列是:開(kāi)始8位(28H)是產(chǎn)品類型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)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啟動(dòng)后保持低功耗等待狀態(tài),當(dāng)需要執(zhí)行溫度測(cè)量和AD轉(zhuǎn)換時(shí),總線控制器必須發(fā)出[44h]命令。轉(zhuǎn)換完以后,產(chǎn)生的溫度數(shù)據(jù)以兩個(gè)字節(jié)的形式被存儲(chǔ)到高速暫存器的溫度寄存器中,DS18B20繼續(xù)保持等待狀態(tài)。
DS18B20溫度轉(zhuǎn)換規(guī)則
這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在DS18B20的兩個(gè)8位的RAM中,高字節(jié)的前5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為‘0’,只要將測(cè)到的數(shù)值乘以0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為‘1’,測(cè)到的數(shù)值需要取反加1再乘以0.0625即可得到實(shí)際溫度。


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




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


DS18B20的ROM指令表


DS18B20的RAM指令表


DS18B20初始化


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




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


DS18B20讀時(shí)序


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




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

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

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

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

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

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

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



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



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:155719 發(fā)表于 2019-3-5 16:52 | 只看該作者
論壇發(fā)帖的兄弟 都很用心 學(xué)習(xí)了正好用到,多謝大哥。
回復(fù)

使用道具 舉報(bào)

板凳
ID:144549 發(fā)表于 2019-4-28 18:20 | 只看該作者
學(xué)習(xí)了正好用到
回復(fù)

使用道具 舉報(bào)

地板
ID:730272 發(fā)表于 2020-4-16 09:15 | 只看該作者
下載來(lái)學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

5#
ID:304321 發(fā)表于 2020-4-16 12:51 | 只看該作者
學(xué)習(xí)了正好用到  有沒(méi)有寄存器版的呢
回復(fù)

使用道具 舉報(bào)

6#
ID:863576 發(fā)表于 2021-2-3 18:22 | 只看該作者
感謝樓主分享寶貴資料
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表