DS18B20

DS18B20

數字溫度傳感器
DS18B20是常用的數字溫度傳感器,其輸出的是數字信号,具有體積小,硬件開銷低,抗幹擾能力強,精度高的特點。DS18B20數字溫度傳感器接線方便,封裝成後可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不鏽鋼封裝式,型号多種多樣,有LTM8877,LTM8874等等。主要根據應用場合的不同而改變其外觀。封裝後的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔淨室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,适用于各種狹小空間設備數字測溫和控制領域。
    中文名:溫度傳感器 外文名: 用途: 英文名:DS18B20 體積:小 硬件開銷:低 抗幹擾能力:強 工作電壓:3V~5.5V 超低功耗:靜态功耗<3uA

概述

DS18B20數字溫度傳感器接線方便,封裝成後可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不鏽鋼封裝式,型号多種多樣,有LTM8877,LTM8874等等。

DS18B20的讀寫時序和測溫原理與DS1820相同,隻是得到的溫度值的位數因分辨率不同而不同,且溫度轉換時的延時時間由2s減為750ms。主要根據應用場合的不同而改變其外觀。

封裝後的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔淨室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,适用于各種狹小空間設備數字測溫和控制領域。

1:技術性能描述

①、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。

②、測溫範圍-55℃~+125℃,固有測溫誤差(注意,不是分辨率,這裡之前是錯誤的)1℃。

③、支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,最多隻能并聯8個,實現多點測溫,如果數量過多,會使供電電源電壓過低,從而造成信号傳輸的不穩定。

④、工作電源:3.0~5.5V/DC(可以數據線寄生電源)

⑤、在使用中不需要任何外圍元件

⑥、測量結果以9~12位數字量方式串行傳送

⑦、不鏽鋼保護管直徑Φ6

⑧、适用于DN15~25,DN40~DN250各種介質工業管道和狹小空間設備測溫

⑨、标準安裝螺紋M10X1,M12X1.5,G1/2”任選

⑩、PVC電纜直接出線或德式球型接線盒出線,便于與其它電器設備連接。

DS18B20+和MaximIntegrated信息

ManufacturedbyMaximIntegrated,DS18B20+isa溫度傳感器.

應用範圍

2.1該産品适用于冷凍庫,糧倉,儲罐,電訊機房,電力機房,電纜線槽等測溫和控制領域

2.2軸瓦,缸體,紡機,空調,等狹小空間工業設備測溫和控制。

2.3汽車空調、冰箱、冷櫃、以及中低溫幹燥箱等。

2.4供熱/制冷管道熱量計量,中央空調分戶熱能計量和工業領域測溫和控制

型号規格

型号測溫範圍安裝螺紋電纜長度适用管道

TS-18B20-55~125無1.5m

TS-18B20A-55~125M10X11.5mDN15~25

TS-18B20B-55~1251/2”G接線盒DN40~60

接線說明

接線方法

面對着扁平的那一面,左負右正,一旦接反就會立刻發熱,有可能燒毀!同時,接反也是導緻該傳感器總是顯示85℃的原因。

特點

獨特的一線接口,隻需要一條口線通信多點能力,簡化了分布式溫度傳感應用無需外部元件可用數據總線供電,電壓範圍為3.0V至5.5V無需備用電源測量溫度範圍為-55°C至+125℃。華氏相當于是-67°F到257華氏度-10°C至+85°C範圍内精度為±0.5°C

溫度傳感器可編程的分辨率為9~12位,溫度轉換為12位數字格式最大值為750毫秒,用戶可定義的非易失性溫度報警設置,應用範圍包括恒溫控制、工業系統、消費電子産品溫度計、或任何熱敏感系統

描述該DS18B20的數字溫度計提供9至12位(可編程設備溫度讀數)。由于DS18B20是一條口線通信,所以中央微處理器與DS18B20隻有一個一條口線連接。

為讀寫以及溫度轉換可以從數據線本身獲得能量,不需要外接電源。因為每一個DS18B20的包含一個獨特的序号,多個ds18b20s可以同時存在于一條總線。這使得溫度傳感器放置在許多不同的地方。它的用途很多,包括空調環境控制,感測建築物内溫設備或機器,并進行過程監測和控制。

DS18B20采用一線通信接口。因為一線通信接口,必須在先完成ROM設定,否則記憶和控制功能将無法使用。主要首先提供以下功能命令之一:1)讀ROM,2)ROM匹配,3)搜索ROM,4)跳過ROM,5)報警檢查。這些指令操作作用在沒有一個器件的64位光刻ROM序列号,可以在挂在一線上多個器件選定某一個器件,同時,總線也可以知道總線上挂有有多少,什麼樣的設備。

若指令成功地使DS18B20完成溫度測量,數據存儲在DS18B20的存儲器。一個控制功能指揮指示DS18B20的演出測溫。測量結果将被放置在DS18B20内存中,并可以讓閱讀發出記憶功能的指揮,閱讀内容的片上存儲器。溫度報警觸發器TH和TL都有一字節EEPROM的數據。如果DS18B20不使用報警檢查指令,這些寄存器可作為一般的用戶記憶用途。

在片上還載有配置字節以理想的解決溫度數字轉換。寫TH,TL指令以及配置字節利用一個記憶功能的指令完成。通過緩存器讀寄存器。所有數據的讀,寫都是從最低位開始。

部件描述

存儲器

DS18B20的存儲器包括高速暫存器RAM和可電擦除RAM,可電擦除RAM又包括溫度觸發器TH和TL,以及一個配置寄存器。存儲器能完整的确定一線端口的通訊,數字開始用寫寄存器的命令寫進寄存器,接着也可以用讀寄存器的命令來确認這些數字。

當确認以後就可以用複制寄存器的命令來将這些數字轉移到可電擦除RAM中。當修改過寄存器中的數時,這個過程能确保數字的完整性。

高速暫存器RAM是由8個字節的存儲器組成;。用讀寄存器的命令能讀出第九個字節,這個字節是對前面的八個字節進行校驗。存儲器的結構圖如圖4.6所示。

圖4.6存儲器的結構圖

64-位光刻ROM

64位光刻ROM的前8位是DS18B20的自身代碼,接下來的48位為連續的數字代碼,最後的8位是對前56位的CRC校驗。64-位的光刻ROM又包括5個ROM的功能命令:讀ROM,匹配ROM,跳躍ROM,查找ROM和報警查找。64-位光刻ROM的結構圖如圖4.7所示。

圖4.7為64-位光刻ROM的結構圖

外部電源的連接

DS18B20可以使用外部電源VDD,也可以使用内部的寄生電源。當VDD端口接3.0V—5.5V的電壓時是使用外部電源;當VDD端口接地時使用了内部的寄生電源。無論是内部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻。連接圖如圖4.8、圖4.9所示。

圖4.8使用寄生電源的連接圖

圖4.9外接電源的連接圖

4.3.4DS18B20溫度處理過程

配置寄存器

配置寄存器是配置不同的位數來确定溫度和數字的轉化。配置寄存器的結構圖如圖4.10所示。

圖4.10配置寄存器的結構圖

由圖4.9可以知道R1,R0是溫度的決定位,由R1,R0的不同組合可以配置為9位,10位,11位,12位的溫度顯示。這樣就可以知道不同的溫度轉化位所對應的轉化時間,四種配置的分辨率分别為0.5℃,0.25℃,0.125℃和0.0625℃,出廠時以配置為12位。溫度的決定配置圖如圖8所示。

圖4.11溫度的決定配置圖

溫度的讀取

DS18B20在出廠時以配置為12位,讀取溫度時共讀取16位,前5個位為符号位,當前5位為1時,讀取的溫度為負數;當前5位為0時,讀取的溫度為正數。溫度為正時讀取方法為:将16進制數轉換成10進制即可。溫度為負時讀取方法為:将16進制取反後加1,再轉換成10進制即可。

控制方法

DS18B20有六條控制命令,如表4.1所示:

表4.1 為DS18B20有六條控制命令

指令約定代碼操作說明

溫度轉換44H啟動DS18B20進行溫度轉換

讀暫存器BEH讀暫存器9字節二進制數字

寫暫存器4EH将數據寫入暫存器的TH、TL字節

複制暫存器48H把暫存器的TH、TL字節寫到E2PROM中

重新調E2PROMB8H把E2PROM中的TH、TL字節寫到暫存器TH、TL字節

讀電源供電方式B4H啟動DS18B20發送電源供電方式的信号給主CPU

初始化

(1)先将數據線置高電平“1”。

(2)延時(該時間要求的不是很嚴格,但是盡可能的短一點)

(3)數據線拉到低電平“0”。

(4)延時750微秒(該時間的時間範圍可以從480到960微秒)。

(5)數據線拉到高電平“1”。

(6)延時等待(如果初始化成功則在15到60微秒時間之内産生一個由DS18B20所返回的低電平“0”。據該狀态可以來确定它的存在,但是應注意不能無限的進行等待,不然會使程序進入死循環,所以要進行超時控制)。

(7)若CPU讀到了數據線上的低電平“0”後,還要做延時,其延時的時間從發出的高電平算起(第(5)步的時間算起)最少要480微秒。

(8)将數據線再次拉高到高電平“1”後結束。

寫操作

(1)數據線先置低電平“0”。

(2)延時确定的時間為15微秒。

(3)按從低位到高位的順序發送字節(一次隻發送一位)。

(4)延時時間為45微秒。

(5)将數據線拉到高電平。

(6)重複上(1)到(6)的操作直到所有的字節全部發送完為止。

(7)最後将數據線拉高。

讀操作

(1)将數據線拉高“1”。

(2)延時2微秒。

(3)将數據線拉低“0”。

(4)延時3微秒。

(5)将數據線拉高“1”。

(6)延時5微秒。

(7)讀數據線的狀态得到1個狀态位,并進行數據處理。

(8)延時60微秒。

DS18B20的讀操作時序圖如圖4.15所示。

圖1.15DS18B20的讀操作圖

DS18B20介紹

1、DS18B20的主要特性

1.1、适應電壓範圍更寬,電壓範圍:3.0~5.5V,在寄生電源方式下可由數據線供電

1.2、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊

1.3、DS18B20支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫

1.4、DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一隻三極管的集成電路内

1.5、溫範圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃

1.6、可編程的分辨率為9~12位,對應的可分辨溫度分别為0.5℃、0.25℃、0.125℃和0.0625℃,可實現高精度測溫

1.7、在9位分辨率時最多在93.75ms内把溫度轉換為數字,12位分辨率時最多在750ms内把溫度值轉換為數字,速度更快

1.8、測量結果直接輸出數字溫度信号,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗幹擾糾錯能力

1.9、負壓特性:電源極性接反時,芯片不會因發熱而燒毀,但不能正常工作。

2、DS18B20的外形和内部結構

DS18B20内部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。

DS18B20的外形及管腳排列如下圖1:

DS18B20引腳定義:

(1)DQ為數字信号輸入/輸出端;

(2)GND為電源地;

(3)VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。

圖2:DS18B20内部結構圖

3、DS18B20工作原理

DS18B20的讀寫時序和測溫原理與DS1820相同,隻是得到的溫度值的位數因分辨率不同而不同,且溫度轉換時的延時時間由2s減為750ms。高溫度系數晶振随溫度變化其振蕩率明顯改變,所産生的信号作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。

計數器1對低溫度系數晶振産生的脈沖信号進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值将加1,計數器1的預置将重新被裝入,計數器1重新開始對低溫度系數晶振産生的脈沖信号進行計數,如此循環直到計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。圖3中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數器1的預置值。

圖3:DS18B20測溫原理框圖

DS18B20有4個主要的數據部件:

(1)光刻ROM中的64位序列号是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是産品類型标号,接着的48位是該DS18B20自身的序列号,最後8位是前面56位的循環冗餘校驗碼(CRC=X8+X5+X4+1)。

光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上挂接多個DS18B20的目的。

(2)DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符号擴展的二進制補碼讀數形式提供,以0.0625℃/LSB形式表達,其中S為符号位。

表1:DS18B20溫度值格式表

這是12位轉化後得到的12位數據,存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符号位,如果測得的溫度大于0,這5位為0,隻要将測到的數值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數值需要取反加1再乘于0.0625即可得到實際溫度。

例如+125℃的數字輸出為07D0H,+25.0625℃的數字輸出為0191H,-25.0625℃的數字輸出為FE6FH,-55℃的數字輸出為FC90H。

表2:DS18B20溫度數據表

(3)DS18B20溫度傳感器的存儲器DS18B20溫度傳感器的内部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,後者存放高溫度和低溫度觸發器TH、TL和結構寄存器。

(4)配置寄存器該字節各位的意義如下:

表3:配置寄存器結構

TM

R1

R0

1

1

1

1

1

低五位一直都是"1",TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動。R1和R0用來設置分辨率,如下表所示:(DS18B20出廠時被設置為12位)

表4:溫度分辨率設置表

R1

R0

分辨率

溫度最大轉換時間

0

0

9位

93.75ms

0

1

10位

187.5ms

1

0

11位

375ms

1

1

12位

750ms

4、高速暫存存儲器高速暫存存儲器由9個字節組成,其分配如表5所示。當溫度轉換命令發布後,經轉換所得的溫度值以二字節補碼形式存放在高速暫存存儲器的第0和第1個字節。

單片機可通過單線接口讀到該數據,讀取時低位在前,高位在後,數據格式如表1所示。對應的溫度計算:當符号位S=0時,直接将二進制位轉換為十進制;當S=1時,先将補碼變為原碼,再計算十進制值。表2是對應的一部分溫度值。第九個字節是冗餘檢驗字節。

表5:DS18B20暫存寄存器分布

寄存器内容

字節地址

溫度值低位(LSByte)

0

溫度值高位(MSByte)

1

高溫限值(TH)

2

低溫限值(TL)

3

配置寄存器

4

保留

5

保留

6

保留

7

CRC校驗值

8

根據DS18B20的通訊協議,主機(單片機)控制DS18B20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對DS18B20進行複位操作,複位成功後發送一條ROM指令,最後發送RAM指令,這樣才能對DS18B20進行預定的操作。

複位要求主CPU将數據線下拉500微秒,然後釋放,當DS18B20收到信号後等待16~60微秒左右,後發出60~240微秒的存在低脈沖,主CPU收到此信号表示複位成功。

表6:ROM指令表

指令

約定代碼

功能

讀ROM

33H

讀DS1820溫度傳感器ROM中的編碼(即64位地址)

符合ROM

55H

發出此命令之後,接着發出64位ROM編碼,訪問單總線上與該編碼相對應的DS1820使之作出響應,為下一步對該DS1820的讀寫作準備。

搜索ROM

0FOH

用于确定挂接在同一總線上DS1820的個數和識别64位ROM地址。為操作各器件作好準備。

跳過ROM

0CCH

忽略64位ROM地址,直接向DS1820發溫度變換命令。适用于單片工作。

告警搜索命令

0ECH

執行後隻有溫度超過設定值上限或下限的片子才做出響應。

表6:RAM指令表

指令

約定代碼

功能

溫度變換

44H

啟動DS1820進行溫度轉換,12位轉換時最長為750ms(9位為93.75ms)。結果存入内部9字節RAM中。

讀暫存器

0BEH

讀内部RAM中9字節的内容

寫暫存器

4EH

發出向内部RAM的3、4字節寫上、下限溫度數據命令,緊跟該命令之後,是傳送兩字節的數據。

複制暫存器

48H

将RAM中第3、4字節的内容複制到EEPROM中。

重調EEPROM

0B8H

将EEPROM中内容恢複到RAM中的第2、3字節。

讀供電方式

0B4H

讀DS1820的供電模式。寄生供電時DS1820發送“0”,外接電源供電DS1820發送“1”。

5、DS18B20的應用電路DS18B20測溫系統具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點。下面就是DS18B20幾個不同應用方式下的測溫電路圖:

5.1、DS18B20寄生電源供電方式電路圖如下面圖4所示,在寄生電源供電方式下,DS18B20從單線信号線上汲取能量:在信号線DQ處于高電平期間把能量儲存在内部電容裡,在信号線處于低電平期間消耗電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。

獨特的寄生電源方式有三個好處:

1)進行遠距離測溫時,無需本地電源

2)可以在沒有常規電源的條件下讀取ROM

3)電路更加簡潔,僅用一根I/O口實現測溫

要想使DS18B20進行精确的溫度轉換,I/O線必須保證在溫度轉換期間提供足夠的能量,由于每個DS18B20在溫度轉換期間工作電流達到1mA,當幾個溫度傳感器挂在同一根I/O線上進行多點測溫時,隻靠4.7K上拉電阻就無法提供足夠的能量,會造成無法轉換溫度或溫度誤差極大。

因此,圖4電路隻适應于單一溫度傳感器測溫情況下使用,不适宜采用電池供電系統中。并且工作電源VCC必須保證在5V,當電源電壓下降時,寄生電源能夠汲取的能量也降低,會使溫度誤差變大。

5.2、DS18B20寄生電源強上拉供電方式電路圖改進的寄生電源供電方式如下面圖5所示,為了使DS18B20在動态轉換周期中獲得足夠的電流供應,當進行溫度轉換或拷貝到E2存儲器操作時,用MOSFET把I/O線直接拉到VCC就可提供足夠的電流,在發出任何涉及到拷貝到E2存儲器或啟動溫度轉換的指令後,必須在最多10μS内把I/O線轉換到強上拉狀态。

在強上拉方式下可以解決電流供應不走的問題,因此也适合于多點測溫應用,缺點就是要多占用一根I/O口線進行強上拉切換。

圖5

注意:在圖4和圖5寄生電源供電方式中,DS18B20的VDD引腳必須接地

5.3、DS18B20的外部電源供電方式

在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉換精度,同時在總線上理論可以挂接任意多個DS18B20傳感器,組成多點測溫系統。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空,否則不能轉換溫度,讀取的溫度總是85℃。

圖6:外部供電方式單點測溫電路

圖7:外部供電方式的多點測溫電路圖

外部電源供電方式是DS18B20最佳的工作方式,工作穩定可靠,抗幹擾能力強,而且電路也比較簡單,可以開發出穩定可靠的多點溫度監控系統。站長推薦大家在開發中使用外部電源供電方式,畢竟比寄生電源方式隻多接一根VCC引線。在外接電源方式下,可以充分發揮DS18B20寬電源電壓範圍的優點,即使電源電壓VCC降到3V時,依然能夠保證溫度量精度。

6、DS1820使用中注意事項

DS1820雖然具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點,但在實際應用中也應注意以下幾方面的問題:

6.1、較小的硬件開銷需要相對複雜的軟件進行補償,由于DS1820與微處理器間采用串行數據傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則将無法讀取測溫結果。在使用PL/M、C等高級語言進行系統程序設計時,對DS1820操作部分最好采用彙編語言實現。

6.2、在DS1820的有關資料中均未提及單總線上所挂DS1820數量問題,容易使人誤認為可以挂任意多個DS1820,在實際應用中并非如此。當單總線上所挂DS1820超過8個時,就需要解決微處理器的總線驅動問題,這一點在進行多點測溫系統設計時要加以注意。

6.3、連接DS1820的總線電纜是有長度限制的。試驗中,當采用普通信号電纜傳輸長度超過50m時,讀取的測溫數據将發生錯誤。當将總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。

這種情況主要是由總線分布電容使信号波形産生畸變造成的。因此,在用DS1820進行長距離測溫系統設計時要充分考慮總線分布電容和阻抗匹配問題。

6.4、在DS1820測溫程序設計中,向DS1820發出溫度轉換命令後,程序總要等待DS1820的返回信号,一旦某個DS1820接觸不好或斷線,當程序讀該DS1820時,将沒有返回信号,程序進入死循環。這一點在進行DS1820硬件連接和軟件設計時也要給予一定的重視。測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信号線,另一組接VCC和地線,屏蔽層在源端單點接地。

應用舉例

利用DS18B20構成的數字溫度計

用一片DS18B20構成測溫系統,測量的溫度精度達到0.1度,測量的溫度的範圍在-20度到+100度之間,用8位數碼管顯示出來

讀取溫度程序代碼段

#include"reg51.h"

#include"d1820.h"

int t;

uint num;

uchar dat;//讀寫數據變量

uchar a=0;

uchar b=0;

float tep=0;//讀一個溫度時的溫度轉換中間間

uchar data tempbuf=0;//溫度字型顯示中間變量

/******************************************************

函數名稱:delay(uint num)

返回值:無

參數:uint num顔色數據值

作用:延時

*******************************************************/

void delay(uint num)

{

while(num--);

}

/******************************************************

函數名稱:void Init_DS18B20(void)

返回值:無

參數:無

作用:初始化18B20

*******************************************************/

void Init_DS18B20(void)

{

char x=0;

DQ=1;

delay(10);//稍作延時

DQ=0;

delay(80);//延時>480us540us

DQ=1;//拉高總線15-60us

delay(20);

x=DQ;//讀總線狀态為0複位成功,為1則不成功

delay(30);

DQ=1;//釋放總線

}

/******************************************************

函數名稱:uchar ReadOneChar(void)

返回值:uchar dat

參數:無

作用:讀1820一個字節

*******************************************************/

uchar ReadOneChar(void)

{

uchar i;

uchar dat=0;

for(i=0;i<8;i++)

{

DQ=0;

dat>>=1;

DQ=1;//給脈沖

if(DQ) {dat|=0x80;}//讀1///讀0右移處理

delay(8);//15us内讀完一個數

}

return(dat);

}

/******************************************************

函數名稱:void WriteOneChar(uchar dat)

返回值:無

參數: uchar dat

作用:寫1820一個字節

*******************************************************/

/////****寫DS18B20***///寫060us讀完,寫130u内讀完

void WriteOneChar(uchar dat)

{

uchar i=0;

for(i=0;i<8;i++)

{

DQ=0;

DQ=dat&0x01;//寫所給數據最低位

delay(10);///////////

DQ=1;//給脈沖

dat>>=1;

}

delay(8);

}

/******************************************************

函數名稱:int ReadOneTemperature(void)

返回值:int t

參數:無

作用:讀溫度值

*******************************************************/

int ReadOneTemperature(void)////////***讀取溫度值***********/////每次讀寫均要先複位

{

Init_DS18B20();

WriteOneChar(0xcc);//發跳過ROM命令

WriteOneChar(0x44);//發讀開始轉換命令

Init_DS18B20();

WriteOneChar(0xcc);//發跳過ROM命令

WriteOneChar(0xbe);//讀寄存器,共九字節,前兩字節為轉換值

a=ReadOneChar();//a存低字節

b=ReadOneChar();//b存高字節

t=b;

t<<=8;//高字節轉換為10進制

t=t|a;

tep=t*0.0625;//轉換精度為0.0625/LSB

t=tep*10+0.5;//保留1位小數并四舍五入****後面除10還原正确溫度值)

return(t);

}

/******************************************************

函數名稱:uint Temperaturepro(void)

返回值:void

參數:void

作用:溫度處理

*******************************************************/

void Temperaturepro(void)

{

int temp;

temp=ReadOneTemperature();

tempbuf=temp/1000;//百位

tempbuf=temp/100%10;//十位

tempbuf=temp%100/10;//個位

tempbuf=temp%10;//小數

}

上一篇:FIR濾波器

下一篇:無源器件

相關詞條

相關搜索

其它詞條