版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、作者:Pan Hon glia ng僅供個(gè)人學(xué)習(xí)學(xué)習(xí)情境4-溫度傳感器的設(shè)計(jì)之 基于DS18B20溫度傳感器的設(shè)計(jì)點(diǎn)名,引言Dallas公司的數(shù)字化溫度傳感器 DS1820是世界上第一片支持"一線總 線"接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建 傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。其測(cè)量溫度范圍為-55 °C+125 °C,在-10+85 °C范圍內(nèi),精度為±).5 °C?,F(xiàn)場(chǎng)溫度直接以"一線總線" 的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度 測(cè)量,如
2、:環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。DS18B20可以程序設(shè)定912位的分辨率,精度為±).5 °C??蛇x更小的封裝方式,更 寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價(jià)格比也非常出色!省略了存儲(chǔ)用戶定義報(bào)警溫度、分辨率 參數(shù)的EEPROM,精度降低為吃°C,適用于對(duì)性能要求不高,成本控制嚴(yán) 格的應(yīng)用,是經(jīng)濟(jì)型產(chǎn)品。新課講授4.1基于DS18B20溫度傳感器的設(shè)計(jì)表4.1 . 1 DS18B20技術(shù)資料1. DS18B20的新性能(1) 可用數(shù)據(jù)線供電,電壓范
3、圍:3.0-5.5V ;(2) 測(cè)溫范圍:-55 - +125 C,在-10 - +85 C時(shí)精度為 ±).5 C;(3) 可編程的分辨率為912位,對(duì)應(yīng)的可分辨溫度分別為 0.5 C、0.25 C、0.125 C 和 0.0625 C ;(4) 12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字;(5) 負(fù)壓特性:電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。2. DS18B20的外形和內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮 發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如下:圖4-1-1 DS18B20 外
4、形圖引腳定義:(1) DQ為數(shù)字信號(hào)輸入/輸出端;(2) GND為電源地;(3) VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。內(nèi)部結(jié)構(gòu):圖4-1-2DS18B20內(nèi)部結(jié)構(gòu)圖DS18B20有4個(gè)主要的數(shù)據(jù)部件:(1) 光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開(kāi)始8位(28H )是產(chǎn)品類 型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循 環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1 )。光刻ROM的作用是使每一個(gè) DS18B2 0都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20
5、的目的。(2) DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以 12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625 C/LSB形式表達(dá),其中S為符號(hào)位表1DS18B20溫度值格式表這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM 中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于 0,這5位為0,只要 將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于 0,這5位為1, 測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。例如+125 C的數(shù)字輸出為 07D0H,+25.0625 C的數(shù)字輸出為 0191H, -25.0625 C的
6、數(shù)字輸出為FF6FH,-55 C的數(shù)字輸出為FC90H。(3) DS18B20溫度傳感器的存儲(chǔ)器DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器 TH、TL和結(jié)構(gòu)寄存(4) 配置寄存器該字節(jié)各位的意義如下: 低五位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在 測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1和R0用 來(lái)設(shè)置分辨率,如下表所示:(DS18B20出廠時(shí)被設(shè)置為12位)表2配置寄存器結(jié)構(gòu)TMR1R011111表3溫度值分辨率設(shè)置表R1R0分辨率溫度最大轉(zhuǎn)換時(shí)間00
7、9位93.75ms0110位187.5ms1011位375ms1112位750ms3. 高速暫存存儲(chǔ)器高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù) 據(jù)格式如表1所示。對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位 S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換 為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。表 2是對(duì)應(yīng)的一 部分溫度值。第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié)。表4 DS18B20暫存寄存器分布寄存器內(nèi)容字節(jié)地址溫度值低位0溫度值高位1高溫限值TH2低溫限值TL3配
8、置寄存器4保留5保留6保留7CRC檢驗(yàn)8根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制 DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫之前都要對(duì) DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條 ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要 求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號(hào)后等待16 60微秒左右,后發(fā)出60240微秒的存在低脈沖,主 CPU收到此信號(hào)表示復(fù) 位成功。表5 ROM指令表指令約定代碼功能讀ROM33H讀DS1820ROM 中的編碼(即 64位地址)符合ROM55H發(fā)出此命令之后,接著發(fā)出 64位ROM編碼,訪問(wèn)單總線
9、上與該編碼相對(duì)應(yīng)的 DS1820 使之作出響應(yīng),為下一步對(duì) 該DS1820 的讀寫作準(zhǔn)備。搜索ROM0F0H用于確定掛接在同一總線上DS1820 的個(gè)數(shù)和識(shí)別64位ROM地址。為操作各器件作好準(zhǔn)備。跳過(guò)ROM0CCH忽略64位ROM地址,直接向DS1820發(fā)溫度變換命令。適用于單片工作。告警搜索命令0ECH執(zhí)行后只有溫度超過(guò)設(shè)定值上限或下限的片子才做岀響應(yīng)。表6 RAM指令表指令約定代碼功能溫度變換44H啟動(dòng)DS1820 進(jìn)行溫度轉(zhuǎn)換,為200ms )。結(jié)果存入內(nèi)部轉(zhuǎn)換時(shí)最長(zhǎng)為500ms (典型9字節(jié)RAM中。讀暫存器0BEH內(nèi)部RAM中9字節(jié)的內(nèi)容寫暫存器4EH發(fā)出向內(nèi)部RAM的3、4字節(jié)寫
10、上、下限溫度數(shù)據(jù)命令, 緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。復(fù)制暫存器48H將RAM中第3、4字節(jié)的內(nèi)容復(fù)制到 EEPROM中。重調(diào)EEPROM0B8H將EEPROM 中內(nèi)容恢復(fù)到 RAM中的第3、4字節(jié)。讀供電方式0B4H讀DS1820 的供電模式。寄生供電時(shí)DS1820發(fā)送“0”,外接電源供電DS1820 發(fā)送“1”5. DS1820使用中注意事項(xiàng)DS1820雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題:(1)較小的硬件開(kāi)銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì) DS1820進(jìn)行讀寫編程時(shí)
11、,必須嚴(yán)格的保 證讀寫時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì)DS1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。 在DS1820的有關(guān)資料中均未提及單總線上所掛 DS1820數(shù)量問(wèn)題,容 易使人誤認(rèn)為可以掛任意多個(gè) DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所 掛DS1820超過(guò)8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行 多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。(3) 連接DS1820的總線電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電 纜傳輸長(zhǎng)度超過(guò)50m時(shí),讀取的測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞 線帶屏蔽電纜時(shí),正常通訊距離可達(dá) 150m,當(dāng)采用
12、每米絞合次數(shù)更多的雙絞線 帶屏蔽電纜時(shí),正常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線分布電容使信 號(hào)波形產(chǎn)生畸變?cè)斐傻摹R虼?,在?DS1820進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充 分考慮總線分布電容和阻抗匹配問(wèn)題。(4) 在DS1820測(cè)溫程序設(shè)計(jì)中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總 要等待DS1820的返回信號(hào),一旦某個(gè)DS1820接觸不好或斷線,當(dāng)程序讀該D S1820時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行 DS1820硬件連 接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。測(cè)溫電纜線建議采用屏蔽4芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另一組接VCC和地線,屏蔽層在源端單點(diǎn)接地4.1 . 2系
13、統(tǒng)硬件設(shè)計(jì)硬件結(jié)構(gòu)比較簡(jiǎn)單,具體連接如圖 4-1-3所示:圖4-1-3硬件系統(tǒng)結(jié)構(gòu)軟件系統(tǒng)設(shè)計(jì)DSI8B20必須嚴(yán)格按照單總線通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定 義了幾種時(shí)隙類型:初始化、應(yīng)答、寫1、寫0、讀1、讀0。除了應(yīng)答時(shí)隙所有這些時(shí)隙都是有主機(jī)發(fā)出??偩€上所傳輸?shù)乃忻詈蛿?shù)據(jù)都是字節(jié)的低位在 刖。(1)初始化時(shí)隙復(fù)位時(shí)隙和應(yīng)答時(shí)隙。在初始化過(guò)程中,主機(jī)發(fā)送復(fù)位脈沖(最短為480 pS的低電平信號(hào))接著,釋放總線并進(jìn)入接收狀態(tài)。當(dāng)總線被釋放后上拉電阻將總 線拉高。DSI8B20在檢測(cè)到總線的上升沿之后等待 15-60us接著發(fā)出應(yīng)答脈沖 (低電平持續(xù)60-240 ps)。(2)讀和
14、寫時(shí)隙在寫時(shí)隙期間,主機(jī)向DS18B20寫入數(shù)據(jù);而在讀時(shí)隙期間,主機(jī)讀入來(lái) 自DS18B20的數(shù)據(jù)。在每一個(gè)時(shí)隙,總線只能傳輸一位數(shù)據(jù)。存在兩種寫時(shí)隙,即寫1和寫0。主機(jī)在寫1時(shí)隙向DS18B20寫入邏輯1。 而在寫0時(shí)隙向DS18B20寫入邏輯0。所有寫時(shí)隙至少需要60必,而且兩次 寫I時(shí)隙之間至少需要I Q的恢復(fù)時(shí)間。兩種寫時(shí)隙均以主機(jī)拉低總線開(kāi)始。產(chǎn)生寫1時(shí)隙:主機(jī)拉低總線后,必須在15uS內(nèi)釋放總線。然后由上拉電 阻將總線拉至高電平產(chǎn)生寫0時(shí)隙:主機(jī)拉低總線后,必須在整個(gè)時(shí)隙期間保持低電平(至少60 S )。在寫時(shí)隙開(kāi)始后的1 560 Q期間,DSI8B20采樣總線的狀態(tài)。如果總線為
15、高電,則邏輯1被寫入DSI8B20 ;如果總線為低電平,則0邏輯被寫入DSI8B20 讀時(shí)隙:DSI8B20只能在主機(jī)發(fā)出讀時(shí)隙時(shí)才能向主機(jī)傳送數(shù)據(jù)。所以主 機(jī)在發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)隙,以便DSI8B20能夠傳送數(shù)據(jù)。所有讀時(shí)隙至少60血,且在兩次獨(dú)立的讀時(shí)隙之間至少需要1 pS的恢復(fù)時(shí)間。每次讀時(shí)隙由主機(jī)發(fā)起,拉低總線至少1 pS。在主機(jī)發(fā)起讀時(shí)隙之后,DSI8B20開(kāi)始在總線上傳送1或0。若DS18B20發(fā)送1,則保持總線為高電平; 若發(fā)送0,貝U拉低總線。當(dāng)傳送0時(shí),DSI8B20在該時(shí)隙結(jié)束時(shí)釋放總線,再 由上拉電阻將總線拉回空閑高電平狀態(tài)。DS18B20發(fā)出的數(shù)據(jù)在讀時(shí)
16、隙下降沿起始后的1 5uS內(nèi)有效,因此主機(jī)必須在讀時(shí)隙開(kāi)始后的15 pS內(nèi)釋放總線,并 且采樣總線狀態(tài)。其程序流程圖如下圖所示。圖4-1-3DS18B20程序流程所以在軟件設(shè)計(jì)方面,我們主要是讀取溫度函數(shù)和溫度顯示函數(shù)的編寫。1、讀取溫度函數(shù)圖4-1-4讀溫度子程序流程圖圖4-1-5溫度轉(zhuǎn)換子程序流程圖void Read_Temperature()if(lni t_DS18B20()=1) /DS18B20 故障DS18B20_IS_OK=0;else WriteOneByte(Oxcc);跳過(guò)讀取 DS18B20 的系列號(hào)WriteO neByte(0x44); / 啟動(dòng)溫度轉(zhuǎn)換In it_
17、DS18B20();WriteOneByte(0xcc);跳過(guò)讀取 DS18B20 的系列號(hào)Write On eByte(0xbe); /讀取溫度寄存器Temp_Value0 = Read On eByte();溫度低 8 位Temp_Value1 = ReadOneByte(); / 溫度高 8 位 DS18B20_IS_OK=1;上述代碼中,未讀取 DS18B20的系列號(hào)。2、溫度顯示函數(shù)void Display_Temperature()uchar i;/延時(shí)值和負(fù)數(shù)標(biāo)志uchar t = 150, ng = 0;高5位全為1 ( 0XF8 )則為負(fù)數(shù),為負(fù)數(shù)時(shí)取反加1,并設(shè)置負(fù)數(shù)標(biāo)識(shí)i
18、f(Temp_Value1&0 xf8)=0xf8)Temp_Value1 = Temp_Value1;Temp_Value0 = Temp_Value0+1;if(Temp_Value0=0x00)Temp_Value1+;負(fù)數(shù)標(biāo)識(shí)置1ng = 1;/查表得到溫度小數(shù)部分Display_Digit0 = df_TableTemp_Value0&0x0f;獲取溫度整數(shù)部分(高字節(jié)中的低3位和低字節(jié)中高4位,無(wú)符號(hào))Curre ntT=(Temp_Value0&0 xf0)>>4)|(Temp_Value1&0x07)<<4);/將整數(shù)部分
19、分解為3位待顯示的顯示數(shù)字Display_Digit3 = Curre ntT/100;Display_Digit2 = Curre ntT%100/10;Display_Digit1 = Curre ntT%10;/刷新LCD顯示緩沖Curre nt_Temp_Display_Buffer11 = Display_Digit0 + '0'Curre nt_Temp_Display_Buffer10='.'Curre nt_Temp_Display_Buffer9= Display_Digit1 + '0'Curre nt_Temp_Displa
20、y_Buffer8= Display_Digit2 + 'O'Curre nt_Temp_Display_Buffer7= Display_Digit3 + 'O'/高位為零時(shí)不顯示if(Display_Digit3 = 0)Curre nt_Temp_Display_Buffer7=''if(Display_Digit2 = 0&&Display_Digit3=0)Curre nt_Temp_Display_Buffer8=''負(fù)數(shù)符號(hào)顯示在恰當(dāng)?shù)奈恢胕f(ng)if(Curre nt_Temp_Display_
21、Buffer8 ='')Curre nt_Temp_Display_Buffer8='-'else if(Curre nt_Temp_Display_Buffer7='')Curre nt_Temp_Display_Buffer7='-'elseCurre nt_Temp_Display_Buffer6/在第一行顯示標(biāo)題Set_LCD_P0S(0x00);for(i=0;i<16;i+)Write_LCD_Data(Temp_Disp_Titlei);/在第二行顯示當(dāng)前溫度Set_LCD_POS(0x40);for(i=0;
22、i<16;i+) Write_LCD_Data(Curre nt_Temp_Display_Bufferi);顯示溫度符號(hào)Set_LCD_POS(0x4D);Write_LCD_Data(0x00); Set_LCD_POS(0x4E);Write_LCD_Data(C);課堂小結(jié)這節(jié)課我們主要介紹了溫度傳感器DS18B20的工作特點(diǎn),控制指令以及應(yīng)用方法。著重分析了讀取溫度函數(shù)的設(shè)計(jì)和溫度顯示函數(shù)的編寫。為我們 學(xué)習(xí)其他溫度傳感器打下了一定的基礎(chǔ)。完整程序代碼#in clude <reg52.h>#in clude vintrin s.h>#defi ne uint
23、un sig ned int#defi ne uchar un sig ned char#define delayNOP() _nop_();_nop_();_nop_();_nop_(); sbit DQ = P3A3; sbit LCD_RS = P2A0;sbit LCD_RW =卩2人1;sbit LCD_EN =卩2人2;uchar code Temp_Disp_Title="Curre ntTemp(zxb)"uchar Curren t_Temp_Display_Buffer=" Temp ="/溫度字符uchar code Tempera
24、ture_Char8 = 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00;/溫度小數(shù)位對(duì)照表uchar code df_Table=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;uchar Curre ntT = 0;/當(dāng)前讀取的溫度整數(shù)部分uchar Temp_Value=0x00,0x00;從 DS18B20 讀取的溫度值uchar Display_Digit=0,0,0,0; /待顯示的各溫度數(shù)位bit DS18B20_IS_OK = 1; /傳感器正常標(biāo)志void DelayXus( uint x)uchar i;while(x-)fo
25、r(i=0;i<200;i+); bit LCD_Busy_Check()bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOP();result = (bit)(P 0&0x80);LCD_EN=0;return result;void Write_LCD_Comma nd(uchar cmd)while(LCD_Busy_Check();LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;delayNOP();LCD_EN = 1;delayNOP();LCD_E
26、N = 0;void Write_LCD_Data(uchar dat)while(LCD_Busy_Check();LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;void LCD_I nitialise()Write_LCD_Comma nd(0x01);DelayXus(5);Write_LCD_Comma nd(0x38);DelayXus(5);Write_LCD_Comma nd(0x0c);DelayXus(5);Write_LCD_Comma nd(0x0
27、6);DelayXus(5); void Set_LCD_POS(uchar pos)Write_LCD_Comma nd(pos|0x80);void Delay( uint x)while(-x);uchar In it_DS18B20() 初始化uchar status;DQ = 1;Delay(8);DQ = 0;Delay(90);DQ = 1;Delay(8);status= DQ;Delay(100);DQ = 1;return status; uchar ReadO neByte() 讀一個(gè)字節(jié)uchar i,dat=O;DQ = 1;_n op_();for(i=0;i<
28、;8;i+)DQ = 0;dat >>= 1;DQ = 1;_n op_();_ no p_();if(DQ)dat |= 0X80;Delay(30);DQ = 1;return dat;void Write On eByte(uchar dat) /寫一個(gè)字節(jié)uchar i;for(i=0;i<8;i+)DQ = 0;DQ = dat& 0x01;Delay(5);DQ = 1;dat >>= 1;void Read_Temperature() 讀取溫度if(l ni t_DS18B20()=1) /DS18B20 故障DS18B20_IS_0K=0;
29、elseWriteOneByte(0xcc);跳過(guò)讀取 DS18B20 的系列號(hào)Write On eByte(0x44);/ 啟動(dòng)溫度轉(zhuǎn)換In it_DS18B20();WriteOneByte(0xcc);跳過(guò)讀取 DS18B20 的系列號(hào)WriteOneByte(0xbe); /讀取溫度寄存器Temp_Value0 = ReadOneByte(); /溫度低 8 位Temp_Value1 = ReadOneByte();溫度高 8 位DS18B20_IS_OK=1;void Display_Temperature() 在 LCD 上顯示當(dāng)前溫度uchar i;/延時(shí)值和負(fù)數(shù)標(biāo)志uchar
30、t = 150, ng = 0;高5位全為1 ( 0XF8 )則為負(fù)數(shù),為負(fù)數(shù)時(shí)取反加1,并設(shè)置負(fù)數(shù)標(biāo)識(shí)if(Temp_Value1&0 xf8)=0xf8)Temp_Value1 = Temp_Value1;Temp_Value0 = Temp_Value0+1;if(Temp_Value0=0x00)Temp_Value1+;ng = 1; /負(fù)數(shù)標(biāo)識(shí)置1/查表得到溫度小數(shù)部分Display_Digit0 = df_TableTemp_Value0&0x0f;獲取溫度整數(shù)部分(高字節(jié)中的低3位和低字節(jié)中高4位,無(wú)符號(hào))Curre ntT = (Temp_Value0&
31、;0 xf0)>>4) | (Temp_Value1 &0x07)<<4);/將整數(shù)部分分解為 3位待顯示的顯示數(shù)字Display_Digit3 = Curre ntT/100;Display_Digit2 = Curre ntT%100/10;Display_Digit1 = Curre ntT%10;刷新LCD顯示緩沖Curre nt_Temp_Display_Buffer11 = Display_DigitO + 'O'Curre nt_Temp_Display_Buffer10='.'=Display_Digit1 + &
32、#39;0'=Display_Digit2 + '0'=Display_Digit3 + '0'Curre nt_Temp_Display_Buffer9Curre nt_Temp_Display_Buffer8Curre nt_Temp_Display_Buffer7高位為零時(shí)不顯示if(Display_Digit3 = 0)Curre nt_Temp_Display_Buffer7if(Display_Digit2 = 0&&Display_Digit3=0)Curre nt_Temp_Display_Buffer8負(fù)數(shù)符號(hào)顯示在恰當(dāng)
33、的位置if(ng)if(Curre nt_Temp_Display_Buffer8='')Curre nt_Temp_Display_Buffer8else if(Curre nt_Temp_Display_Buffer7='')Curre nt_Temp_Display_Buffer7elseCurre nt_Temp_Display_Buffer6/在第一行顯示標(biāo)題Set_LCD_POS(OxOO);for(i=0;i<16;i+)Write_LCD_Data(Temp_Disp_Titlei);/在第二行顯示當(dāng)前溫度Set_LCD_POS(Ox4O)
34、;for(i=0;i<16;i+)Write_LCD_Data(Curre nt_Temp_Display_Bufferi);顯示溫度符號(hào)Set_LCD_POS(0x4D);Write_LCD_Data(OxOO);Set_LCD_POS(Ox4E);Write_LCD_Data(C);void mai n()LCD_I nitialise();Read_Temperature();Delay(50000);Delay(50000);while(1)Read_Temperature(); if(DS18B20_IS_OK)Display_Temperature();DelayXus(100);版權(quán)申明本文部分內(nèi)容,包括文字、圖片、以及設(shè)計(jì)等在網(wǎng)上搜集整理。版權(quán)為潘宏亮個(gè)人所有This article in eludes someparts, in
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度有機(jī)肥料生產(chǎn)與銷售風(fēng)險(xiǎn)控制合作協(xié)議2篇
- 2025年度體育場(chǎng)館建設(shè)承包合同范本4篇
- 2025年度新能源汽車充電樁租賃合同書3篇
- 2024綠化項(xiàng)目勞務(wù)施工分包合同書版B版
- 2025年絕緣筒項(xiàng)目可行性研究報(bào)告
- 2025年模特選美賽事形象權(quán)保護(hù)與保密合同范本3篇
- 螺旋式除塵器行業(yè)市場(chǎng)發(fā)展及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年度個(gè)人留學(xué)貸款擔(dān)保合同范本12篇
- 2025年度室內(nèi)外景觀設(shè)計(jì)及施工合同樣本4篇
- 2025年度藝術(shù)品抵押借款咨詢合同范本3篇
- 2022年湖北省武漢市中考數(shù)學(xué)試卷含解析
- TLFSA 003-2020 危害分析與關(guān)鍵控制點(diǎn)(HACCP)體系調(diào)味面制品生產(chǎn)企業(yè)要求
- LY/T 2244.3-2014自然保護(hù)區(qū)保護(hù)成效評(píng)估技術(shù)導(dǎo)則第3部分:景觀保護(hù)
- 紀(jì)律教育月批評(píng)與自我批評(píng)五篇
- GB/T 26480-2011閥門的檢驗(yàn)和試驗(yàn)
- GB/T 13342-2007船用往復(fù)式液壓缸通用技術(shù)條件
- 藥店員工教育培訓(xùn)資料
- GB 20371-2016食品安全國(guó)家標(biāo)準(zhǔn)食品加工用植物蛋白
- 【英語(yǔ)手寫體】26英文字母手寫體描紅書寫字帖
- 實(shí)習(xí)護(hù)生壓瘡相關(guān)知識(shí)掌握情況及預(yù)防態(tài)度的調(diào)查問(wèn)卷
- 《駱駝祥子》第(9、10、11、12)章檢測(cè)題
評(píng)論
0/150
提交評(píng)論