基于單片機的溫度計設計_第1頁
基于單片機的溫度計設計_第2頁
基于單片機的溫度計設計_第3頁
基于單片機的溫度計設計_第4頁
基于單片機的溫度計設計_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、江蘇科技大學畢業論文(設計)題目:基于單片機的溫度計設計學院:成教學院專業:電氣工程及其自動化姓名:指導老師: 2010年6月15日基于單片機的溫度計設計摘要本文介紹一種基于AT89C51單片機作為控制器、使用數字溫度傳感器DS18B20作為溫度采集器的數字溫度計。重點闡述了AT89C51的結構性能和引腳功能,DS1B20的性能結構、工作原理和控制方法,以及單片機AT89C51和數字溫度傳感器DS18B20之間的接口、數據傳遞。該數字溫度計能夠測出55125之間的溫度,適合日常生活、工業生產和科學研究等領域對溫度測量的需要。關鍵詞:溫度測量;DS18B20;AT89C51Design of D

2、igital Thermometer Based on SinglechipAbstractThis article describes a controller based on AT89C51 microcontroller, digital temperature sensor DS18B20 as the temperature of the collectors digital thermometer. AT89C51 focuses on the structural performance and pin functions, DS18B20 performance struct

3、ure, working principle and control methods, and the interface between the data transfer of the AT89C51 microcontroller and digital temperature sensor DS18B20. The digital thermometer can be measured between -55 +125 temperature, suitable for daily life, industrial production and scientific research

4、in the field of temperature measurement needs.Keywords: temperature measurement; DS18B20; AT89C51目錄 引言1 溫度計的總體設計22.1 總體論述22.2 設計思路2 硬件說明33.1 測量輸入模塊33.1.1 傳感器選擇33.1.2 DS18B20的介紹33.2 鍵盤輸入模塊113.3 顯示模塊123.3.1 1602外觀及尺寸123.3.2 管腳功能123.3.3 操作控制133.3.4 指令說明133.4 報警模塊143.5 低功耗設計153.5.1 設計思路153.5.2 80C51的低功耗

5、措施153.5.3 分塊間斷供電16 軟件和功能說明174.1 人為讀取174.2 自動讀取184.3 DS18B20的軟件設計19 C語言源程序22 結論28 致謝29 參考文獻30 引言溫度是一種最基本的環境參數,與人民生活和工農業生產有著密切的關系,在電力供應中離不開溫度測量。液壓操作動機的斷路器是電網的重要設備,保證斷路器液壓操作機構油路的正常運轉對保證電網安全具有重要意義。當環境溫度降低到一定程度后,斷路器的油路流動受到影響,液壓油黏度增大不利于油路的流動,影響斷路器的特性。正常情況下,該裝置顯示當時溫度值。當氣溫升高或降低到規定值時,此裝置會立即自動安全關閉或打開加溫裝置,防止發生

6、事故,是變電站不可缺少的保護裝置。因此研究溫度的測量方法和測量裝置在實際生產中有著重要的意義。隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現代人工作、科研、生活、提供更好的更方便的設施就需要從數單片機技術入手,一切向著數字化控制,智能化控制方向發展。本設計所介紹的數字溫度計與傳統的溫度計相比,具有讀數方便,測溫范圍廣,測溫準確,其輸出溫度采用數字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,該設計控制器使用單片機,測溫傳感器(DS18B20),用3位共陽極LED數碼管以

7、串口傳送數據,實現溫度顯示,能準確達到以上要求。 溫度計的總體設計2.1 總體論述此次所討論的數字溫度計,除了完成基本的溫度測量外,還能夠滿足最高最低溫度設置及報警,在不同的環境中,所要求的最高溫度和最低溫度是不同的,因此最高溫度和最低溫度應能夠根據環境不同而設置成不同的數值。還有些場合要求每隔一定得時間段進行讀取一次數值,當相隔的時間比較長而所需要讀取的數據又比較多時,認為的讀取就比較麻煩,因此應具備自動讀取和存儲若干組溫度值的功能。另外,在野外工作時能夠選擇其工作模式以降低功耗。2.2 設計思路由論述可知,所設計的這種溫度計的功能是傳統的物理溫度計無法完成的。在分析之后決定采用以單片機AT

8、89C51為核心的系統進行設計。主要有以下幾個模塊:測量輸入模塊,鍵盤設置模塊,運算處理模塊,顯示模塊和報警模塊。有這幾個模塊組成的系統框圖如圖1所示:圖1 溫度計總體框圖 硬件說明3.1 測量輸入模塊3.1.1 傳感器選擇設計單片機數字溫度計需要考慮以下3個方面溫度傳感器芯片的選擇;單片機和溫度傳感器的接口電路;控制溫度傳感器實現溫度信息采集以及數據傳輸的軟件。單片機的接口信號是數字信號。要想用單片機獲取溫度這類非電信號的信息,必須使用溫度傳感器,將溫度信息轉換為電流或電壓輸出。如果轉換后的電流或電壓輸出是模擬信號,還必須進行A/D轉換,以滿足單片機接口的需要。傳統的溫度檢測大多以熱敏電阻作

9、為溫度傳感器。但是,熱敏電阻的可靠性較差、測量溫度準確率低,而且還必須經專門的接口電路轉換成數字信號后才能由單片機進行處理。20世紀90年代中期出現了智能溫度傳感器(亦稱數字溫度傳感器)。智能溫度傳感器的內部都包含溫度傳感器、A/D轉換器、信號處理器、存儲器(或寄存器)和接口電路,其特點是能直接輸出數字化的溫度數據及相關的溫度控制量,適配各種微控制器(MCU)。其中DS18B20就是一種應用相當廣泛的單總線數字溫度傳感器,它結構簡單、不需外接元件,采用一根I/O數據線既可供電又可傳輸數據、并可設置溫度報警界限等特點,廣泛用于工業、民用等領域的溫度測量中。3.1.2 DS18B20的介紹1. D

10、S18B20芯片簡介DS18B20是美國DALLAS半導體器件公司推出的單總線數字化智能集成溫度傳感器。單總線(1-Wire)是DALLAS公司的一項專有技術,它采用單根信號線,既傳輸時鐘又傳輸數據,而且數據傳輸是雙向的,具有節省I/O口線資源、結構簡單、成本低廉、便于總線擴展和維護等諸多優點。與其它溫度傳感器相比,DS18B20具有以下特性:獨特的單線接口方式,在與微處理器連接時僅需要一條接口線即可實現微處理器與DS18B20的雙向通信。DS18B20支持多點組網功能,多個DS18B20可以并聯在唯一的信號線上,實現多點測溫。DS18B20在使用中不需要任何外圍元件。測溫范圍-55+125,

11、固有測溫分辨率0625。測量結果以912位數字量方式串行傳送。2. DS18B20內部結構DS18B20內部結構主要由四部分組成:64位光刻ROM,溫度傳感器,非揮發的溫度報警觸發器TH和TL,高速暫存器。64位光刻ROM是出廠前被光刻好的,它可以看作是該DS18B20的地址序列號。DS18B20的管腳排列如圖2所示。圖2 DS18B20引腳分布圖圖3DS18B20內部結構圖 引腳功能如下:NC:空引腳,懸空不使用;VDD:可選電源腳,電源電壓范圍35.5V。工作于寄生電源時,此引腳應接地;DQ:數據輸入/輸出腳,漏極開路,常態下高電平。DSl8B20的核心功能部件是它的數字溫度傳感器,其分辨

12、率可配置為9、10、11和12位,出廠默認設置為12位分辨率,對應的溫度值分辨率分別為0.5、0.25、0.125和0.0625。溫度信息的低位、高位字節內容中,還包括了符號位S(是正溫度還是負溫度)和二進制小數部分,具體形式為:低位字節:MSB232221202-12-2LSB2-32-4高位字節:MSBSSSSS26LSB2524這是12位分辨率的情況,如果配置為低的分辨率,則其中無意義位為0。實測溫度和數字輸出的對應關系如表1所示。表1實測溫度和數字輸出的對應關系溫度/數字輸出(二進制)數字輸出(十六進制)+1250000 0111 1101 000007D0H+850000 0101

13、0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FF6FH-551111 1100 1001 0000FC90H在DSl8B20完成溫度變換之后,溫度值與儲存在TH和TL內的告警觸發值進行比較。由于是8位寄存器,所以

14、912位在比較時忽略。TH或TL的最高位直接對應于16位溫度寄存器的符號位。如果溫度測量的結果高于TH或低于TL,那么器件內告警標志將置位,每次溫度測量都會更新此標志。只要告警標志置位,DSl8B20就將響應告警搜索命令,這也就允許單線上多個DSl8B20同時進行溫度測量,即使某處溫度越限,也可以識別出正在告警的器件。DS18B20有4個主要的數據部件: (1)光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環冗余校驗碼(CRC

15、=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。 (2)DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數形式提供,以0.0625/LSB形式表達,其中S為符號位。 表2 DS18B20溫度值格式表 這是12位轉化后得到的12位數據,存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數值需要取反加1再乘于0.0625即可得到實際溫

16、度。例如+125的數字輸出為07D0H,+25.0625的數字輸出為0191H,-25.0625的數字輸出為FF6FH,-55的數字輸出為FC90H。 表3 DS18B20溫度數據表(3)DS18B20溫度傳感器的存儲器 DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發器TH、TL和結構寄存器。 (4)配置寄存器 該字節各位的意義如下: 表4 配置寄存器結構TMR1R011111低五位一直都是1 ,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動。R

17、1和R0用來設置分辨率,如下表所示:(DS18B20出廠時被設置為12位)分辨率設表:表5 溫度值分辨率設置表R1R0分辨率溫度最大轉換時間009位93.75ms0110位187.5ms1011位375ms1112位750ms3. DS18B20控制方法 DS18B20有六條控制命令,如表6所示: 表6六條控制命令指 令約定代碼操 作 說 明溫度轉換44H啟動DS18B20進行溫度轉換讀暫存器BEH讀暫存器9個字節內容寫暫存器4EH將數據寫入暫存器的TH、TL字節復制暫存器48H把暫存器的TH、TL字節寫到E2RAM中重新調E2RAMB8H把E2RAM中的TH、TL字節寫到暫存器TH、TL字節

18、讀電源供電方式B4H啟動DS18B20發送電源供電方式的信號給主CPU4. DS18B20的通信協議DS18B20器件要求采用嚴格的通信協議,以保證數據的完整性。該協議定義了幾種信號類型:復位脈沖,應答脈沖時隙;寫0,寫1時隙;讀0,讀1時隙。與DS18B20的通信,是通過操作時隙完成單總線上的數據傳輸。發送所有的命令和數據時,都是字節的低位在前,高位在后。復位和應答脈沖時序:每個通信周期起始于微控制器發出的復位脈沖,其后緊跟DS18B20發出的應答脈沖,在寫時隙期間,主機向DS18B20器件寫入數據,而在讀時隙期間,主機讀入來自DS18B20的數據。在每一個時隙,總線只能傳輸一位數據。時序圖

19、見圖4。圖4 復位和應答脈沖時隙寫時序:當主機將單總線DQ從邏輯高拉到邏輯低時,即啟動一個寫時隙,所有的寫時隙必須在60120us完成,且在每個循環之間至少需要1us的恢復時間。寫0和寫1時隙如圖所示。在寫0時隙期間,微控制器在整個時隙中將總線拉低;而寫1時隙期間,微控制器將總線拉低,然后在時隙起始后15us之釋放總線。時序圖見圖5。讀時序:DS18B20器件僅在主機發出讀時隙時,才向主機傳輸數據。所以在主機發出讀數據命令后,必須馬上產生讀時隙,以便DS18B20能夠傳輸數據。所有的讀時隙至少需要60us,且在兩次獨立的讀時隙之間,至少需要1us的恢復時間。每個讀時隙都由主機發起,至少拉低總線

20、1us。在主機發起讀時隙之后,DS18B20器件才開始在總線上發送0或1,若DS18B20發送1,則保持總線為高電平。若發送為0,則拉低總線當發送0時,DS18B20在該時隙結束后,釋放總線,由上拉電阻將總線拉回至高電平狀態。DS18B20發出的數據,在起始時隙之后保持有效時間為15us。因而主機在讀時隙期間,必須釋放總線。并且在時隙起始后的15us之內采樣總線的狀態。時序圖見圖5。圖5 讀寫時序DS18B20的測溫原理 :DS18B20的測溫原理如圖所示,圖中低溫度系數晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1,高溫度系數晶振隨溫度變化其震蕩頻率明顯改變,所產

21、生的信號作為減法計數器2的脈沖輸入,圖中還隱含著計數門,當計數門打開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖后進行計數,進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55所對應的基數分別置入減法計數器1和溫度寄存器中,減法計數器1和溫度寄存器被預置在-55所對應的一個基數值。減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時溫度寄存器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到減法計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的

22、數值即為所測溫度。圖中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數器的預置值,只要計數門仍未關閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。 另外,由于DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念,因此讀寫時序很重要。系統對DS18B20的各種操作必須按協議進行。操作協議為:初始化DS18B20(發復位脈沖)發ROM功能命令發存儲器操作命令處理數據。各種操作的時序圖與DS1820相同。3.2 鍵盤輸入模塊鍵盤模塊使用的是四個鍵,分別命名為enter、done、+和-。enter為選擇要調節的參數,done為確定并退出,+

23、和-為參數菜單的選擇。在開機時按enter鍵進入一級菜單,然后按+和-進行選擇要調節的參數,按enter鍵鎖定該參數進行調節,在這段過程的任一時間按done鍵確定并退出。菜單如表7所示:表7 相關參數菜單一級菜單二級菜單三級菜單工作模式正常模式(默認)低功耗模式溫度極限最大值(按+和-調整)最小值(按+和-調整)讀取方式人為讀取自動讀取間隔時間(按+和-調整)讀取組數(按+和-調整)數據查看讀取(按+和-翻看)刪除(刪除已存數據)3.3 顯示模塊顯示部分采用液晶顯示器1602,能夠同時顯示16x02即32個字符。(16列2行)其相關介紹見下文。3.3.1 1602外觀及尺寸1602液晶顯示器的

24、外觀如圖6所示:圖6 液晶顯示器1602外觀1602的外形尺寸如圖7所示:圖7 1602的外形尺寸3.3.2 管腳功能1602采用標準的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。第4腳:RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:E(或EN)端為使能(enable)端。第714腳:D0D7為8位雙向數據端

25、。第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負極。3.3.3 操作控制操作控制表如表8所示:表8 1602操作控制表操作控制表操作讀狀態寫指令讀數據寫數據輸入RS=0RW=1E=1RS=0RW=0D07=指令碼,E=H脈沖RS=1RW=1E=1RS=1RW=0D07=數據,E=H脈沖3.3.4 指令說明(1) 初始化設置:顯示模式設置以及顯示開/關及光標設置表9 顯示模式設置指令碼功能設置16*2顯示,5*7點陣,8位數據接口表10 顯示開/關及光標設置指令碼功能00001DCBD=1開顯示; D=0關顯示C=1顯示光標;C=0不顯示光標B=1光標閃爍;B=0光標不閃爍NSN=1

26、當讀或寫一個字符后地址指針加一,且光標加一N=0當讀或寫一個字符后地址指減一,且光標減一S=1當寫一個字符,整屏顯示左移(N=1)(2)初始化過程(復位過程)延時12ms寫指令38H(不檢測忙信號)延時5ms寫指令38H(不檢測忙信號)延時5ms寫指令38H(不檢測忙信號)(以后每次寫指令、讀/寫數據操作之前均需檢測忙信號)寫指令38H:顯示模式設置寫指令08H:顯示關閉寫指令01H:顯示清屏寫指令06H:顯示光標移動設置寫指令0CH:顯示開及光標設置3.4 報警模塊報警模塊采用的是聲光報警電路,當檢測溫度超過設定的上下限值時,單片機就會發出報警脈沖,使得報警電路工作,產生報警信號,如圖9所示

27、。單片機光報警分頻電路聲報警圖8 報警模塊框圖3.5 低功耗設計3.5.1 設計思路系統設計的總體思路是圍繞如何實現低功耗開展。控制功耗,必須從內部著手。對于數字化的測量系統,通過適當地選擇采樣周期,在一個采樣周期內,迅速地測量溫度,然后進入電流消耗較低的“休息”狀態,就可以大幅度地減小整個系統的電流的消耗。假設采樣可以在Ts=10 ms之內完成,采樣時消耗的電流為Is=1mA,采樣周期為TA=1 s,非測量狀態的電流消耗為Ib=0.04 mA,整個系統的平均電流消耗為:I平均= (TsIs+(TA-Ts)Ib) /TA=Ib+Ts/TA(Is-Ib) =0.0496 mA從公式中得出,在Ts

28、/TA采樣時消耗的電流對整個系統的平均電流影響并不很大,只要恰當地選擇Ib, Is,Ts,TA就可以達到降低功耗的目的。可以從以下幾個方面入手:(1)減小Ib,減小休息時的電流消耗,方法一是盡量減少在“休息”狀態下還要工作的模塊數量,二是選用低功耗元器件。(2)減小Is,采樣時,工作的元件要盡量降低功耗,選擇電流消耗較小的型號。(3)減小Ts,減小工作時間,完成采樣后盡快結束工作。(4)增大TA,加大采樣周期,盡量多“休息”,使系統的響應變慢。3.5.2 80C51的低功耗措施80C51是采用CMOS工藝的低功耗8位單片機芯片,在工作電壓為5V時,8051工作電流為150mA,而80C51為2

29、.4mA一24mA。8OC51具有正常、空閑、掉電三種工作狀態。它的時鐘頻率范圍為1.2MHz一12MHz,在工作電壓5V的正常狀態下運行,工作電流為24mA;在空閑方式下運行時,工作電流為3mA,在掉電方式下,工作電流為50uA。空閑和掉電方式都可以用軟件選擇運行,如果單片機處在空閑方式或掉電方式下,需要時才進人正常運行狀態,就可以大大減少單片機的功耗。空閑方式時,CPU停止工作,而RAM、串行口、計數器/定時器和中斷系統仍在工作,CPU內部的狀態(程序計數器、堆棧指針、程序狀態字、累加器、片內RAM的狀態)完整地保留下來。使用中斷或復位可以把CPU從空閑狀態喚醒進人正常狀態。掉電方式時,片

30、內振蕩器停止工作,所有的運行狀態都停止了,只加電維持片內RAM內容不被破壞。解除掉電工作方式,只能用硬件復位的方法,復位時不改變片內RAM的內容。80C51的功耗隨主振頻率的提高而增加,頻率越高,CMOS管處于放大區的時間越長,功耗就越大。通常在速度要求不高的測控系統中選擇6MHz晶振頻率。這不但降低了功耗,還增強了系統的穩定性。3.5.3 分塊間斷供電在一個系統中,并非電路的各部分都同時有效地工作,而給不工作的電路加上電壓,就是無謂地消耗功率,為此我們可以用局部供電,分塊供電,間斷供電的方法來控制某些電路的供電,在需要其工作時再給它加電,不需要時就不給它供電,即只要保證供電的電路能按預定的進

31、程使系統正常工作,并且把供電電壓“傳遞”給另一部分電路就可,那么這個系統的功耗就會大大降低。實踐證明,分塊間斷供電是極為有效的一種降低功耗的措施。電路分塊時,一般是按電路的功能來劃分的。完成相同功能的電路劃分在一起,如果有兩部分電路的功耗都比較大,最好能將它們分開,給它們間斷供電降低功耗。另外,采用盡量縮短功耗大的電路的工作時間辦法,也可以降低系統勘功耗。 軟件和功能說明開機時對溫度計的工作模式可進行選取,主要有兩種數據讀取方式:人為讀取和自動讀取。4.1 人為讀取在該讀取方式下的工作模式是需要人參與讀取的,其大致程序流程如圖9所示:開始鍵盤掃描鍵盤掃描相關參數設置溫度檢測是超過極限值?否報警

32、溫度顯示延時結束程序并顯示此刻溫度圖9 人為讀取程序流程圖4.2 自動讀取在一些工作場合要求測得一段時間內的若干組溫度,此時若是人為地進行數據讀取,顯然效率不高。所以在這次設計的溫度計的功能中包含了自動讀取這一功能。當參數設置為自動讀取的時候,系統會將顯示模塊關閉,并在RAM中開辟一個緩沖區用以存放要讀的數據。當此時數據讀完后系統將會進入待機狀態。激活后通過鍵盤進入數據查看欄目可進行數據查看和刪除。其程序流程圖如圖10所示:開始鍵盤掃描否自動讀取?是執行其他方式相關參數設置關顯示溫度檢測是超過限定值?否報警存入緩沖區結束程序延時圖10 自動讀取方式流程圖4.3 DS18B20的軟件設計系統軟件

33、設計系統對溫度檢測控并實時顯示溫度值。所選用的溫度傳感器芯片DS18B20屬于新一代適配微處理器的智能溫度傳感器,時序復雜,在編程及運行中均須嚴格安照時序進行。測溫系統的工作流程:初始化-獲取序列號的ROM操作命令-寫存儲器操作命令-讀轉換數據-處理數據-顯示溫度-啟動控制設備。主程序功能是調用各功能子程序、控制電熱設備開啟與停止。子程序包括:對DS18B20初始化子程序、讀子程序、寫子程序、溫度轉換子程序、數值計算子程序、顯示子程序。(見程序方框圖)此系統程序編寫雖然比AD590測溫復雜,但省去A/D轉換環節硬件,提高精度及抗干擾能力,系統穩定。程序框圖如11所示:開始顯示傳感器初始化發SK

34、IP ROM命令讀取溫度計發溫度轉換命令轉移為顯示代碼發讀存儲器命令圖11 程序框圖單片機實現溫度轉換讀取溫度數值程序的流程如圖12所示:開始初始化DS18B20否應答脈沖發起skip rom的命令發起Convert T的命令延時1s等待溫度轉換完成初始化DS18B20否應答脈沖是發起read scratchpad命令讀取第一二字節即為溫度數據是圖12 單片機實現溫度轉換讀取溫度數值程序流程 C語言源程序 #include#include#define uint unsigned int#define uchar unsigned charsbit DQ=P37;sbit P1_0=P10;s

35、bit P1_1=P11;sbit P1_2=P12;uchar LED_code10=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;uchar integer,point;void delayms(uint x)int i,j;for(i=0;ix;i+) for(j=0;j0) i-;DQ=1;i=4;while(i0)i-;void tmpre(void) uint i; while(DQ); while(DQ); i=4;while(i0)i-;void WR18B20(uchar n) uint i; uchar j; bit t

36、estb;for(j=1;j1;if(testb) DQ=0;i+;i+;DQ=1;i=8; while(i0) i-;else DQ=0; i=8; while(i0)i-; DQ=1; i+; i+; bit RDbit(void) uint i; bit n; DQ=0; i+; DQ=1; i+; i+; n=DQ; i=8; while(i0)i-; return n;uchar RD18B20(void) uchar i,j,n; n=0; for(i=1;i=8;i+) j=RDbit( ); n=(j1); return n;void start(void) RST18B20(

37、 ); tmpre( ); delayms(1); WR18B20(0xcc); WR18B20(0x44);void Temp(void) uchar i;uchar j;uchar m;uchar n;RST18B20( ); tmpre( ); delayms(1); WR18B20(0xcc); WR18B20(0xbe); i=RD18B20( ); j=RD18B20( );m=i4; n=j4; integer=m/n; point=(i&0x0f);void main( ) uint data1,data2,data3,data4; uchar P0_LED_code1,P0_

38、LED_code2; int i;data1=0;data2=0;data3=0;data4=0;for(;) delayms(2); start( ); for(i=0;i50;i+) P1_0=1; P0_LED_code1=LED_codedata2; P0=P0_LED_code1; delayms(5); P1_0=0; P1_1=1; P0_LED_code2=LED_codedata3; P0=P0_LED_code2; delayms(5); P1_1=0; Temp( );if(!(integer&0x80)data1=integer/100;data2=integer%100/10;data3=integer%10;data4=(int)(6.25*point)/10;else data1=0;data2=0;data3;data4; 結論溫度計的整體設計大致如上文所述,經過分析可知該溫度計的思路是可行的

溫馨提示

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

評論

0/150

提交評論