單片機課程設(shè)計數(shù)字溫度計控制系統(tǒng)設(shè)計_第1頁
單片機課程設(shè)計數(shù)字溫度計控制系統(tǒng)設(shè)計_第2頁
單片機課程設(shè)計數(shù)字溫度計控制系統(tǒng)設(shè)計_第3頁
單片機課程設(shè)計數(shù)字溫度計控制系統(tǒng)設(shè)計_第4頁
單片機課程設(shè)計數(shù)字溫度計控制系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第一章 引言隨著“信息時代”的到來,作為獲取信息的手段傳感器技術(shù)得到了顯著的進步,其應用領(lǐng)域越來越廣泛,對其要求越來越高,需求越來越迫切。傳感器技術(shù)已成為衡量一個國家科學技術(shù)發(fā)展水平的重要標志之一。因此,了解并掌握各類傳感器的基本結(jié)構(gòu)、工作原理及特性是非常重要的。由于傳感器能將各種物理量、化學量和生物量等信號轉(zhuǎn)變?yōu)殡娦盘?,使得人們可以利用計算機實現(xiàn)自動測量、信息處理和自動控制,但是它們都不同程度地存在溫漂和非線性等影響因素。傳感器主要用于測量和控制系統(tǒng),它的性能好壞直接影響系統(tǒng)的性能。因此,不僅必須掌握各類傳感器的結(jié)構(gòu)、原理及其性能指標,還必須懂得傳感器經(jīng)過適當?shù)慕涌陔娐氛{(diào)整才能滿足信號的處理

2、、顯示和控制的要求,而且只有通過對傳感器應用實例的原理和智能傳感器實例的分析了解,才能將傳感器和信息通信和信息處理結(jié)合起來,適應傳感器的生產(chǎn)、研制、開發(fā)和應用。另一方面,傳感器的被測信號來自于各個應用領(lǐng)域,每個領(lǐng)域都為了改革生產(chǎn)力、提高工效和時效,各自都在開發(fā)研制適合應用的傳感器,于是種類繁多的新型傳感器及傳感器系統(tǒng)不斷涌現(xiàn)。溫度傳感器是其中重要的一類傳感器。其發(fā)展速度之快,以及其應用之廣,并且還有很大潛力。為了提高對傳感器的認識和了解,尤其是對溫度傳感器的深入研究以及其用法與用途,基于實用、廣泛和典型的原則而設(shè)計了本系統(tǒng)。本文利用單片機結(jié)合傳感器技術(shù)而開發(fā)設(shè)計了這一溫度控制系統(tǒng)。文中傳感器理

3、論單片機實際應用有機結(jié)合,詳細地講述了利用ds18b20溫度傳感器探測環(huán)境溫度的過程,以及實現(xiàn)熱電轉(zhuǎn)換的原理過程。本設(shè)計應用性比較強,設(shè)計系統(tǒng)可以作為熱水器溫度調(diào)節(jié)系統(tǒng)、實驗室溫度監(jiān)控系統(tǒng)等等。課題主要任務是完成環(huán)境溫度檢測,利用單片機實現(xiàn)溫度調(diào)節(jié)實施溫度監(jiān)控。設(shè)計后的系統(tǒng)具有操作方便,控制靈活等優(yōu)點。第二章 方案設(shè)計與論證一、 項目目的1、 學習和理解ds18b20的測量原理2、 了解ds18b20的內(nèi)部結(jié)構(gòu)和特性3、 掌握ds18b20與單片機接口方法和編程方法二、 項目要求1、 掌握的d/a轉(zhuǎn)換程序的設(shè)計方法2、 將采集到溫度通過數(shù)碼管顯示的方法3、 通過改變溫度高于和低于是會發(fā)生報警4

4、、 ds18b20構(gòu)成測溫系統(tǒng),測量的溫度精度達到0.1度,測量的溫度的范圍在20度到100度之間,用8位數(shù)碼管顯示出來。并具有上下限報警功能三、 項目方案采用led數(shù)碼管顯示,即將所有位的段選線相應的并聯(lián)在一起,有一個8位i/o口控制,形成段選線的多路復用。而各位的共陽極或共陰極分別由相應的i/o線控制,實現(xiàn)各位的分時選通。其中段選線占用一個8位i/o口,而位選線占用一個4位i/o口。采用掃描顯示方式,即在某一時刻,只讓某一位的位選線狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時,段選線上輸出相應位要顯示字節(jié)的段碼。在確定led不同位顯示的時間間隔,不能太短,因為發(fā)光二極管從導通到發(fā)光有一定的延

5、時,導通時間太短,發(fā)光太弱人眼無法看清。但也不能太長,因為畢竟要受限于臨界閃爍頻率,而且此時間越長,占用cpu時間也越多,另外,顯示位增多,也將占用大量的cpu時間,因此動態(tài)顯示實質(zhì)是一犧牲cpu時間來換取元件的減少。優(yōu)點是led數(shù)碼管價格便宜,顯示清晰并且編程較簡單。1、電路方案:單片機復位電路報警點按鍵調(diào)時鐘振蕩電路lcd顯示電路繼電器控制電路溫度傳感器電路2、 溫度傳感器現(xiàn)場溫度數(shù)據(jù)溫度傳感器單片機溫度顯示 報警燈報警溫度傳感器原理圖首先通過ds18b20溫度傳感器采集現(xiàn)場的溫度數(shù)據(jù),經(jīng)過ds18b20自身的a/d轉(zhuǎn)換器為16數(shù)字代碼,再通過單片機利用數(shù)碼管顯示當前的溫度,同時設(shè)置當前超

6、過一定溫度報警。 溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號) 結(jié)束nnyy 開始溫度零下?溫度值取補碼置“”標志計算小數(shù)位溫度bcd值 計算整數(shù)位溫度bcd值 結(jié)束置“+”標志ny圖13顯示數(shù)據(jù)刷新流程圖y發(fā)ds18b20復位命令發(fā)跳過rom命令發(fā)讀取溫度命令讀取操作,crc校驗9字節(jié)完?crc校驗正?確?移入溫度暫存器結(jié)束nny圖12計算溫度流程圖 初始化調(diào)用顯示子程序1s到?初次上電讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令nyny發(fā)ds18b20復位命令發(fā)跳過rom命令發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束圖9 主程序流程圖 圖10讀溫度

7、流程圖第三章 硬件設(shè)計溫度報警器電路圖u at89c51圖31 是單片機at89c51的內(nèi)部結(jié)構(gòu)總框圖。它可以劃分為cpu、存儲器、并行口、串行口、定時/計數(shù)器和中斷邏輯幾個部分。圖31 at89c51 內(nèi)部結(jié)構(gòu)框圖at89c51主要特性 與mcs-51單片機產(chǎn)品兼容 4k字節(jié)在系統(tǒng)可編程flash存儲器 1000次擦寫周期 全靜態(tài)工作:0hz33mhz 32個可編程i/o口線 2個16位定時器/計數(shù)器 6個中斷源 全雙工uart串行通道 低功耗空閑和掉電模式 掉電后中斷可喚醒 看門狗定時器 雙數(shù)據(jù)指針 靈活的isp編程 4.0-5.5v電壓工作范圍 cpu由運算器和控制邏輯構(gòu)成。其中包括若干

8、特殊功能寄存器(sfr) at89c51時鐘有兩種方式產(chǎn)生,即內(nèi)部方式和外部方式。(如圖32所示)at89c51中有一個構(gòu)成內(nèi)部震蕩器的高增益反向放大器,引腳xtal1和xtal2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英或陶瓷震蕩器一起構(gòu)成自激震蕩器震蕩電路如圖。外接石英晶體(或陶瓷震蕩器)及電容c1、c2接在放大器的震蕩回路中構(gòu)成并聯(lián)震蕩電路。對外接電容c1、c2雖然沒有非常嚴格的要求,但電容的大小會輕微影響震蕩頻率的高低、震蕩工作的穩(wěn)定性、起震的難易程序及溫度穩(wěn)定性,如果使用石英晶體,推薦使用30pf10pf,而如果使用陶瓷諧振器建議選擇40pf10pf。用戶還可

9、以采用外部時鐘,采用外部時鐘如圖所示。在這種情況下,外部時鐘脈沖接到xtal1端,既內(nèi)部時鐘發(fā)生器的輸入端,xtal2懸空。由于外部時鐘信號是通過一個2分頻的觸發(fā)器后作為內(nèi)部時鐘信號的所以外部時鐘的占空比沒有特殊要求,但最小高電平持續(xù)的時間和最大低電平持續(xù)的時間應符合產(chǎn)品技術(shù)條件的要求。 內(nèi)部震蕩電路 外部震蕩電路圖32 at89c51的時鐘電路 at89c51在物理上有四個存儲空間:片內(nèi)/片外程序存儲大路、片內(nèi)/片外數(shù)據(jù)存儲器。片內(nèi)有256b數(shù)據(jù)存儲器ram和4kb的程序存儲器rom。除此之外,還可以在片外擴展ram和rom,并且和有64kb的尋址范圍。 at89c51內(nèi)部有一個可編程的、全

10、雙工的串行接口。它串行收發(fā)存儲在特殊功能寄存器sfr的串行數(shù)據(jù)緩沖器sbuf中的數(shù)據(jù)。 at89c51共有4個(p0、p1、p2、p3口)8位并行i/o端口,共32個引腳。p0口雙向i/o口,用于分時傳送低8位地址和8位數(shù)據(jù)信號;p1、p2、p3口均為準雙向i/o口;其中p2口還用于傳送高8位地址信號;p3口每一引腳還具有特殊功能(圖3-3),用于特殊信號的輸入輸出和控制信號。 at89c51內(nèi)部有兩個16位可編程定時器/計數(shù)器t0、t1。最大計數(shù)值為216-1。工作方式和定時器或計數(shù)器的選擇由指令來確定。 中斷系統(tǒng)允許接受5個獨立的中斷源,即兩個外部中斷,兩個定時器/計數(shù)器中斷以及一個串行口

11、中斷。外部特性(引腳功能)at89c51芯片有40條引腳,雙列直插式封裝引腳圖如34所示: vcc(40):電源+5v vss(20): 接地 xtal1(19)和xtal2(18):使用內(nèi)部振蕩電路時,用來接石英晶體和電容;使用外部時鐘時,用來輸入時鐘脈沖。 p0口(3932):是一組8位漏極開路行雙向i/o口,也既地址/數(shù)據(jù)總線復用口??勺鳛檩敵隹谑褂脮r,每位可吸收電流的方式驅(qū)動8個ttl邏輯電路,對端口寫“1”可作為高阻抗輸入輸入端用。在訪問外部數(shù)據(jù)存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復用,在訪問期間激活內(nèi)部上拉電阻。在flash編程時,po口接收指令字節(jié),而在程序校驗時,

12、輸出指令字節(jié),校驗時,要求接上拉電阻。 p1口(18):是一個內(nèi)部有上拉電阻的8位雙向i/o口,p1的輸入緩沖級可驅(qū)動(吸收或輸出電流)4個ttl邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸出口。作輸入口時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時輸出一個電流(i)。flash編程和程序校驗期間,p1口接收8位地址。 p2口(2128):是一個帶有內(nèi)部上拉電阻的8位雙向i/o口,p2的輸入緩沖極可以驅(qū)動(輸入或輸出電流)4個ttl邏輯門電路。對端口“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時和作為輸出口,作輸出口時,因為存在內(nèi)部上拉電阻,某個引腳被外部信

13、號拉低時會輸出一個電流。在訪問外部存儲器或1位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行movxdptr指令)時,p2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行movxri指令)時,p2口線的內(nèi)容(也既特殊功能寄存器(sfr)區(qū)中r2寄存器的內(nèi)容),在整個訪問期間不改變。flash編程或校驗時,p2亦接收高地址和其他控制信號。 p3口(1017):是一組帶有內(nèi)部上拉電阻的8位雙向i/o口,p1的輸入緩沖級可驅(qū)動(吸收或輸出電流)4個ttl邏輯門電路。對p3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸出端口。作輸出端口時,被外部拉低的p3口將用上拉電阻輸出電流。p3口除可作為一般的i/

14、o口線外,更重要的用途是它的第二功能,如圖33所示:p3口還接收一些用于flas 閃速存儲器編程和程序校驗的控制信號。圖33 p3口引腳的特殊功能 圖34 at89c51引腳圖 ale/(30):地址鎖存信號輸出端。在訪問片外豐儲器時,若ale為有效高電平,則p0口輸出地址低8位,可以用ale信號作外部地址鎖存信號。公式(21)fale=1/6fosc ,也可作系統(tǒng)中其它芯片的時鐘源。第二功能是對eprom編程時的編程脈沖輸入端。 rst/vpd(9):復位信號輸入端。at89s51接能電源后,在時鐘電路作用下,該腳上出現(xiàn)兩個機器周期以上的高電平,使內(nèi)部復位。第二功能是vpd,即備用電源輸入端

15、。當主電源vcc發(fā)生故障,降低到低電平規(guī)定值時,vpd將為ram提供備用電源,發(fā)保證存儲在ram中的信號不丟失。at89s81通常采用上電自動復位和開關(guān)手動復位,我們采用的就是這種方法。/vpp(31):內(nèi)部和外部程序存儲器選擇線。=0時訪問外部rom 0000hffffh;=1時,地址0000h0fffh空間訪問內(nèi)部rom,地址1000hffffh空間訪問外部rom。(29):片外程序存儲器選通信號,低電平有效。u ds18b20外觀圖:使用集成芯片,能夠有效的減小外界的干擾,提高測量的精度,簡化電路的結(jié)構(gòu)。使用集成芯片,已經(jīng)慢慢的成為設(shè)計電路的一種趨勢。本系統(tǒng)使用溫度芯片也正是順應了這一趨

16、勢。ds18b20溫度傳感器是美國dallas半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)位的數(shù)字值讀數(shù)方式。ds18b20的性能特點如下:獨特的單線接口僅需要一個端口引腳進行通信;多個ds18b20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;無須外部器件;可通過數(shù)據(jù)線供電,電壓范圍為3.05.5;零待機功耗;溫度以或位數(shù)字;用戶可定義報警設(shè)置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; 內(nèi)部結(jié)構(gòu)框圖如圖37所示。圖

17、37 ds18b20內(nèi)部結(jié)構(gòu)64位rom的結(jié)構(gòu)開始位是產(chǎn)品類型的編號 ,接著是每個器件的惟一的序號,共有48位,最后位是前面56位的crc檢驗碼,這也是多個ds18b20可以采用一線進行通信的原因。溫度報警觸發(fā)器和,可通過軟件寫入戶報警上下限。ds18b20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存和一個非易失性的可電擦除的eeram。高速暫存ram的結(jié)構(gòu)為字節(jié)的存儲器,結(jié)構(gòu)如圖3所示。頭個字節(jié)包含測得的溫度信息,第和第字節(jié)和的拷貝,是易失的,每次上電復位時被刷新。第個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20工作時寄存器中的分辨率轉(zhuǎn)換為相應精度的溫度數(shù)值。該字節(jié)

18、各位的定義如圖38 所示。低位一直為,是工作模式位,用于設(shè)置ds18b20在工作模式還是在測試模式,ds18b20出廠時該位被設(shè)置為,用戶要去改動,r1和0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。溫度 lsb溫度 msbth用戶字節(jié)1tl用戶字節(jié)2配置寄存器保留保留保留crc圖38 ds18b20字節(jié)定義由表31可見,ds18b20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。高速暫存的第、字節(jié)保留未用,表現(xiàn)為全邏輯。第字節(jié)讀出前面所有字節(jié)的crc碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當ds18b20接收到溫度轉(zhuǎn)換命令

19、后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第、字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625lsb形式表示。當符號位時,表示測得的溫度值為正值,可以直接將二進制位轉(zhuǎn)換為十進制;當符號位時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。表32是一部分溫度值對應的二進制溫度數(shù)據(jù)。表31 ds18b20溫度轉(zhuǎn)換時間表寄存器內(nèi)容 字節(jié)地址溫度值低位 (ls byte)0溫度值高位 (ms byte)1高溫限值(th)2低溫限值(tl)3配置寄存器4保留5保留6保留7crc校驗值8ds18b2

20、0完成溫度轉(zhuǎn)換后,就把測得的溫度值與ram中的th、tl字節(jié)內(nèi)容作比較。若th或ttl,則將該器件內(nèi)的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應。因此,可用多只ds18b20同時測量溫度并進行報警搜索。在64位rom的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(crc)。主機rom的前56位來計算crc值,并和存入ds18b20的crc值作比較,以判斷主機收到的rom數(shù)據(jù)是否正確。ds18b20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器的脈沖輸入。器件中還

21、有一個計數(shù)門,當計數(shù)門打開時,ds18b20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將55所對應的一個基數(shù)分別置入減法計數(shù)器、溫度寄存器中,計數(shù)器和溫度寄存器被預置在55所對應的一個基數(shù)值。減法計數(shù)器對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器的預置值減到時,溫度寄存器的值將加,減法計數(shù)器的預置將重新被裝入,減法計數(shù)器重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)器門仍未

22、關(guān)閉就重復上述過程,直到溫度寄存器值大致被測溫度值。表32一部分溫度對應值表溫度/二進制表示十六進制表示+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00000191h+10.1250000 0000 1010 000100a2h+0.50000 0000 0000 00100008h00000 0000 0000 10000000h-0.51111 1111 1111 0000fff8h-10.1251111 1111 0101 1110ff5eh-25.06251111 1110

23、0110 1111fe6fh-551111 1100 1001 0000fc90h另外,由于ds18b20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對ds18b20的各種操作按協(xié)議進行。操作協(xié)議為:初使化ds18b20(發(fā)復位脈沖)發(fā)rom功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。ds18b20可以采用兩種方式供電,一種是采用電源供電方式,此時ds18b20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖39 所示單片機端口接單線總線,為保證在有效的ds18b20時鐘周期內(nèi)提供足夠的電流,可用一個mosfet管來完成對總線的上拉。當ds18b20處于寫

24、存儲器操作和溫度a/d轉(zhuǎn)換操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時vdd端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。 圖39 ds18b20與單片機的接口電路ds18b20暫存寄存器分布 根據(jù)ds18b20的通訊協(xié)議,主機(單片機)控制ds18b20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對ds18b20進行 復位操作,復位成功后發(fā)送一條rom指令,最后發(fā)送ram指令,這樣才能對ds18b20進行預定的操作。復位要求主cpu將數(shù)據(jù)線下拉500微秒,然后 釋放,當ds18b20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低

25、脈沖,主cpu收到此信號表示復位成功。u ds18b20數(shù)據(jù)輸出格式ds18b20讀出的溫度結(jié)果的數(shù)據(jù)為兩字節(jié),用16位符號擴展的二進制補碼形式提供。因此,在系統(tǒng)中要將得到的溫度數(shù)據(jù)進行格式轉(zhuǎn)換,才能用于顯示。高8位中的高5位是符號位,表示溫度是零下還是零上。高8位中的低3位d6、d5、d4和低8位中的高4位d3、d2、d1、d0構(gòu)成溫度的整數(shù)部分,低8位中的d-1、d-2、d-3、d-4為溫度的小數(shù)部分(為0.5+0.25+0.125+0.0625)。ds18b20上點復位時的溫度固定值為0550h。第四章 軟件設(shè)計#include #include #define uchar unsign

26、ed char#define uint unsigned intsbit ds=p27; /18b20數(shù)據(jù)線sbit spk=p11; /蜂鳴器uint temp;float f_temp;uint warn_l1=300;uint warn_l2=250;uint warn_h1=300;uint warn_h2=320;/sbit led0=p10;/sbit led1=p11;/sbit led2=p12;/sbit led3=p13;unsigned char code table=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09, /

27、不帶小數(shù)點的0-90x02,0xf2,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08, /帶小數(shù)點的0-90x63; /溫度符號cvoid dis_temp(uint t);void delay(uint z)/延時函數(shù)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-); /延時時間大約為:z*1msvoid dsreset(void) /ds18b20復位,初始化,每次讀寫操作都要進行初始化 uint i; ds=0; /數(shù)據(jù)線拉低延時范圍在480-960us之間 i=60; while(i0)i-;/延時480us左右 ds=1;

28、 i=60; while(i0)i-;/延時480us左右bit tempreadbit(void) /讀1位數(shù)據(jù) uint i; bit dat; ds=0; i+; /i+ 延時作用,讀數(shù)據(jù)前單片機要將數(shù)據(jù)線拉低1us,才釋放數(shù)據(jù)線 ds=1; /釋放總線,并進行延時7us左右 i+; i+; dat=ds; /讀取數(shù)據(jù)位 i=8;while(i0)i-; /延時70us左右 return (dat);/每讀一次數(shù)據(jù)位,要保證在60us-120us之間時間內(nèi)完成.uchar tempread(void) /讀1個字節(jié)數(shù)據(jù) uchar i,j,dat; dat=0; for(i=1;i=8;

29、i+) j=tempreadbit(); dat=(j1); /讀取溫度數(shù)據(jù)是從低位讀起,經(jīng)過這樣8次讀操作可以按照從高到低排好數(shù)據(jù) return(dat);void tempwritebyte(uchar dat) /向ds18b20寫一個字節(jié)數(shù)據(jù) uint i; uchar j; bit testb; for(j=1;j1; if(testb) /寫數(shù)據(jù)位 1,寫數(shù)據(jù)1時,單片機先將數(shù)據(jù)線拉低,并在15us內(nèi)釋放數(shù)據(jù)線 ds=0; i+;i+; /延時7us左右 ds=1; i=7; while(i0)i-;/延時70us左右 else ds=0; /寫數(shù)據(jù)位 0 i=7; while(i

30、0)i-; /延時70us左右 ds=1;/釋放數(shù)據(jù)線 i+;i+; /每次循環(huán)寫數(shù)據(jù)都要有個時間間隔,這里就是延時 void tempchange(void) /ds18b20啟動 dsreset(); /ds18b20初始化 / delay(1); /延時1ms tempwritebyte(0xcc); / 寫跳過讀rom指令 tempwritebyte(0x44); / 寫溫度開始轉(zhuǎn)換指令uint get_temp() /讀取ds18b20寄存器中的溫度數(shù)據(jù) 6.01ms uchar a,b; dsreset(); /ds18b20初始化/ delay(1); /延時1ms tempwr

31、itebyte(0xcc); / 寫跳過讀rom指令 tempwritebyte(0xbe); /讀9字節(jié)溫度數(shù)據(jù),實際這里只需要讀取前2個字節(jié)數(shù)據(jù)即可 a=tempread(); /讀低8位數(shù)據(jù) b=tempread(); /讀高8位數(shù)據(jù) temp=b; temp1000|temp(num); /位選碼右移選通,總共要移4次。 p2=i; delay(1);void dis_temp(uint t) uchar j; if(t=100) while(1) for(j=0;j200;j+)/喇叭發(fā)聲的時間循環(huán),改變大小可以改變發(fā)聲時間長短 delay(80);/參數(shù)決定發(fā)聲的頻率,估算值 spk=!spk; spk=1; /喇叭停止工作,間歇的時間,可更改 delay(20000); uchar i; i=t/100; /十位 display(0,i);/1.01ms i=t%100/10;/帶小數(shù)點的個位 display(1,i+10); i=t%100%10;/小數(shù)位 display(2,i); i=2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論