基于51單片機的數(shù)字溫度計的設(shè)計_第1頁
基于51單片機的數(shù)字溫度計的設(shè)計_第2頁
基于51單片機的數(shù)字溫度計的設(shè)計_第3頁
基于51單片機的數(shù)字溫度計的設(shè)計_第4頁
基于51單片機的數(shù)字溫度計的設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘要···············································1一、引言··

2、;·············································2二、總體方案設(shè)計與論證···

3、;······························3 1、方案一··················

4、3;······················3 2、方案二··························

5、83;··············4三、系統(tǒng)硬件選擇··································

6、·····51、單片機的選擇···································52 89C51 引腳功能介紹:······

7、;····················· 63、溫度傳感器的選擇···························

8、;····8四硬件電路設(shè)計·······································10 1溫度檢測電路····

9、;·······························112顯示電路·················

10、3;·····················12五、系統(tǒng)軟件設(shè)計···························

11、············131概述·····································&

12、#183;·······132主程序流程圖·····································133C語言程序··&#

13、183;····································14六、設(shè)計體會············

14、·······························20附錄:參考文獻·················

15、83;·······················21摘要:隨著時代的進步和發(fā)展,單片機技術(shù)已經(jīng)普及到我們生活、工作、科研、各個領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù), 本文主要介紹了一個基于89C51單片機的測溫系統(tǒng),詳細描述了利用數(shù)字溫度傳感器DS18B20開發(fā)測溫系統(tǒng)的過程,重點對傳感器在單片機下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進行了詳盡分析,對各部分的電路也

16、一一進行了介紹,該系統(tǒng)可以方便的實現(xiàn)實現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定上下限報警溫度,它使用起來相當方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點,適合于我們?nèi)粘I詈凸ぁ⑥r(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴展。DS18B20與AT89C51結(jié)合實現(xiàn)最簡溫度檢測系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強,適合于惡劣環(huán)境下進行現(xiàn)場溫度測量,有廣泛的應(yīng)用前景。關(guān)鍵詞:單片機;溫度檢測;AT89C51;DS18B20;一、引言隨著科技的不斷發(fā)展,現(xiàn)代社會對各種信息參數(shù)的準確度和精確度的要求都有了幾何級的增長,而如何準確而又迅速的獲得這些參數(shù)就需要

17、受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計算機技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是滲透到社會的每一個領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實時測量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測量,因此研究溫度的測量方法和裝置具有重要的意義。測量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的發(fā)展經(jīng)歷了三個發(fā)展階段:傳統(tǒng)的分立式溫度傳感器模擬集成溫度傳感器智能集成溫度傳感器。目前的智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀90年代中期問世的,它是微電子技術(shù)、計算機技術(shù)

18、和自動測試技術(shù)(ATE)的結(jié)晶,特點是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(MCU)。社會的發(fā)展使人們對傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā)展,并朝著高精度、多功能、總線標準化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展,本文將介紹智能集成溫度傳感器DS18B20的結(jié)構(gòu)特征及控制方法,并對以此傳感器,89C51單片機為控制器構(gòu)成的數(shù)字溫度測量裝置的工作原理及程序設(shè)計作了詳細的介紹。與傳統(tǒng)的溫度計相比,其具有讀數(shù)方便,測溫范圍廣,測溫準確,輸出溫度采用數(shù)字顯示,

19、主要用于對測溫要求比較準確的場所,或科研實驗室使用。該設(shè)計控制器使用ATMEL公司的AT89C51單片機,測溫傳感器使用DALLAS公司DS18B20,用液晶來實現(xiàn)溫度顯示。二、系統(tǒng)方案論證與比較該系統(tǒng)主要由溫度測量和數(shù)據(jù)采集兩部分電路組成,實現(xiàn)的方法有很多種,下面將列出兩種在日常生活中和工農(nóng)業(yè)生產(chǎn)中經(jīng)常用到的實現(xiàn)方案。2. 1、方案一采用熱電偶溫差電路測溫,溫度檢測部分可以使用低溫?zé)崤?,熱電偶由兩個焊接在一起的異金屬導(dǎo)線所組成(熱電偶的構(gòu)成如圖 3.1),熱電偶產(chǎn)生的熱電勢由兩種金屬的接觸電勢和單一導(dǎo)體的溫差電勢組成。通過將參考結(jié)點保持在已知溫度并測量該電壓,便可推斷出檢測結(jié)點的溫度。數(shù)據(jù)采

20、集部分則使用帶有A/D 通道的單片機,在將隨被測溫度變化的電壓或電流采集過來,進行A/D 轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來。熱電偶的優(yōu)點是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來自導(dǎo)線環(huán)路的噪聲影響以及漂移較高的缺點,并且這種設(shè)計需要用到A/D 轉(zhuǎn)換電路,感溫電路比較麻煩。圖 3.1熱電偶電路圖系統(tǒng)主要包括對A/D0809 的數(shù)據(jù)采集,自動手動工作方式檢測,溫度的顯示等,這幾項功能的信號通過輸入輸出電路經(jīng)單片機處理。此外還有復(fù)位電路,晶振電路,啟動電路等。故現(xiàn)場輸入硬件有手動復(fù)位鍵、A/D 轉(zhuǎn)換芯片,處理芯片為51 芯片,

21、執(zhí)行機構(gòu)有4 位數(shù)碼管、報警器等。2. 2、方案二采用數(shù)字溫度芯片DS18B20 測量溫度,輸出信號全數(shù)字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0100 攝氏度時,最大線形偏差小于1 攝氏度。DS18B20 的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器AT89C51構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計算機連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用51 單片機控制,軟件編程的自由度大,可通過編程實現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實

22、現(xiàn)簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC 機通信上傳數(shù)據(jù),另外AT89S51 在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。該系統(tǒng)利用AT89C51芯片控制溫度傳感器DS18B20進行實時溫度檢測并顯示,能夠?qū)崿F(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報警溫度。該系統(tǒng)擴展性非常強,它可以在設(shè)計中加入時鐘芯片DS1302以獲取時間數(shù)據(jù),在數(shù)據(jù)處理同時顯示時間,并可以利用AT24C16芯片作為存儲器件,以此來對某些時間點的溫度數(shù)據(jù)進行存儲,利用鍵盤來進行調(diào)時和溫度查詢,獲得的數(shù)據(jù)可以通過MAX232芯片與計算機的RS232接口進行串口通信,方

23、便的采集和整理時間溫度數(shù)據(jù)。系統(tǒng)框圖如圖 3.3所示圖 3.3 DS18B20溫度測溫系統(tǒng)框圖從以上兩種方案,容易看出方案一的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案二的測溫裝置電路簡單、精確度較高、實現(xiàn)方便、軟件設(shè)計也比較簡單,故本次設(shè)計采用了方案二。三、系統(tǒng)器件選擇3.1、 單片機的選擇對于單片機的選擇,可以考慮使用8031與8051系列,由于8031沒有內(nèi)部RAM,系統(tǒng)又需要大量內(nèi)存存儲數(shù)據(jù),因而不適用。AT89C51 是美國 ATMEL 公司生產(chǎn)的低功耗,高性能 CMOS8 位單片機,片內(nèi)含 4kbytes 的可編程的 Flash 只讀程序存儲器,兼容標準 8051 指令

24、系統(tǒng)及引腳。它集 Flash 程序存儲器既可在線編程(ISP),也可用傳統(tǒng)方法進行編程,所以低價位 AT89C51單片機可為提供許多高性價比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域,對于簡單的測溫系統(tǒng)已經(jīng)足夠。單片機AT89C51 具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。主要特性如下圖-1所示:與MCS-51 兼容4K字節(jié)可編程閃爍存儲器壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:10年全靜態(tài)工作:0Hz-24Hz三級程序存儲器鎖定128*8位內(nèi)部RAM32可編程I/O線兩個16位定時器/計數(shù)器5個中斷源 AT89

25、C51單片機引腳如圖-1所示可編程串行通道 低功耗的閑置和掉電模式片內(nèi)振蕩器和時鐘電路 3.2 89C51 引腳功能介紹: AT89C51 單片機為40 引腳雙列直插式封裝,其引腳排列和邏輯符號如圖-1 所示:各引腳功能簡單介紹如下:VCC:供電電壓 GND:接地 P0口:P0口為一個8位漏級開路雙向I/O口,每個管腳可吸收8TTL門電流。當P1口的管腳寫“1”時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時,P0口作為原碼輸入口,當FLASH進行校驗時,P0輸出原碼,此時P0外部電位必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8

26、位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入“1”后,電位被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳電位被內(nèi)部上拉電阻拉高,且作為輸入。作為輸入時,P2口的管腳電位被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉的優(yōu)勢,當對外部八

27、位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入時,由于外部下拉為低電平,P3口將輸出電流(ILL),也是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口:P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 INT0(外部中斷0)P3.3 INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 WR (

28、外部數(shù)據(jù)存儲器寫選通)P3.7 RD (外部數(shù)據(jù)存儲器讀選通)同時P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高平時間。ALE / PROG :當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC

29、指令時ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取址期間,每個機器周期PSEN兩次有效。但在訪問內(nèi)部部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不出現(xiàn)。EA/VPP:當EA保持低電平時,訪問外部ROM;注意加密方式1時,EA將內(nèi)部鎖定為RESET;當EA端保持高電平時,訪問內(nèi)部ROM。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。3.3、溫度傳感器的選擇3.3.1. DS18B20 簡單介

30、紹:DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其體積更小、更適用于多種場合、且適用電壓更寬、更經(jīng)濟。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-55+125 攝氏度,可編程為9位12 位轉(zhuǎn)換精度,測溫分辨率可達0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶設(shè)定的報警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠端引入,也可以采用寄生電源方式產(chǎn)生;多個DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS

31、18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。DS18B20 的性能特點如下:獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)適應(yīng)電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數(shù)據(jù)線供電溫范圍55125,在-10+85時精

32、度為±0.5零待機功耗可編程的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現(xiàn)高精度測溫在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作以上特點使DS18B20非常適用與多點、遠距離溫度檢測系統(tǒng)。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)

33、器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖 4.2 所示,DQ 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源;GND為地信號;VDD為可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。其電路圖 4.3所示.。 圖 4.2 外部封裝形式 圖4.3 傳感器電路圖3.3.2 DS18B20使用中的注意事項DS18B20 雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應(yīng)用中也應(yīng)注意以下幾方面的問題:DS18B20 從測溫結(jié)束到將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時間,這是必須保證的,不然會出現(xiàn)轉(zhuǎn)換錯誤的現(xiàn)象,

34、使溫度輸出總是顯示85。在實際使用中發(fā)現(xiàn),應(yīng)使電源電壓保持在5V 左右,若電源電壓過低,會使所測得的溫度精度降低。較小的硬件開銷需要相對復(fù)雜的軟件進行補償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用PL/M、C等高級語言進行系統(tǒng)程序設(shè)計時,對DS1820操作部分最好采用匯編語言實現(xiàn)。在DS18B20的有關(guān)資料中均未提及單總線上所掛DS18B20 數(shù)量問題,容易使人誤認為可以掛任意多個DS18B20,在實際應(yīng)用中并非如此,當單總線上所掛DS18B20 超過8 個時,就需要解決微處理器的總線驅(qū)動問題,這

35、一點在進行多點測溫系統(tǒng)設(shè)計時要加以注意。在DS18B20測溫程序設(shè)計中,向DS18B20 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號,一旦某個DS18B20 接觸不好或斷線,當程序讀該DS18B20 時,將沒有返回信號,程序進入死循環(huán),這一點在進行DS18B20硬件連接和軟件設(shè)計時也要給予一定的重視。四.硬件電路設(shè)計本設(shè)計由DS18B20溫度傳感器芯片測量當前的溫度并將轉(zhuǎn)換后的結(jié)果送入單片機。然后通過A89C51單片機驅(qū)動兩位共陽極8段LED數(shù)碼管顯示測量溫度值。如附錄中本設(shè)計硬件電路圖所示,本電路主要有DS18B20溫度傳感器芯片,兩位共陽極數(shù)碼管,AT89C51單片機及相應(yīng)外

36、圍電路組成。其中DS18B20采用“一線制”與單片機相連。4.1、溫度檢測電路DS18B20 最大的特點是單總線數(shù)據(jù)傳輸方式,DS18B20 的數(shù)據(jù)I/O 均由同一條線來完成。DS18B20 的電源供電方式有2 種: 外部供電方式和寄生電源方式。工作于寄生電源方式時, VDD 和GND 均接地, 他在需要遠程溫度探測和空間受限的場合特別有用, 原理是當1 W ire 總線的信號線DQ 為高電平時, 竊取信號能量給DS18B20 供電, 同時一部分能量給內(nèi)部電容充電, 當DQ為低電平時釋放能量為DS18B20 供電。但寄生電源方式需要強上拉電路, 軟件控制變得復(fù)雜(特別是在完成溫度轉(zhuǎn)換和拷貝數(shù)據(jù)

37、到E2PROM 時) , 同時芯片的性能也有所降低。外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。因此本設(shè)計采用外部供電方式。如下圖所示:DS18B204.7K+5V+5V溫度傳感器DS18B20的測量范圍為-55+125,在-10+85時精度為±0.5。因為本設(shè)計只用于測量環(huán)境溫度,所以只顯示0+85。 4.2、顯示電路 本設(shè)計顯示電路采用兩位共陽極LED數(shù)碼管來顯示測量得到的溫度值。LED數(shù)碼管能在低電壓下工作,而且體積小、重量輕、使用壽命長,因次本設(shè)計選用此數(shù)碼管作為顯示器件。 一個LED數(shù)

38、碼管只能顯示一位的字符,如果字符位數(shù)不止一位,可以用幾個數(shù)碼管組成,但要控制多位的顯示電路需要有字段控制和字位控制,字段控制是指控制所要顯示的字符是什么,控制電路應(yīng)將字符的七段碼通過輸出口連接到LED的ag引腳,是某些段點亮,某些段處于熄滅狀態(tài)。字位控制是指控制在多位顯示器中,哪幾位發(fā)光或那幾位不發(fā)光,字位控制則需要通過字位碼作用于LED數(shù)碼管的公共引腳,是某一位或某幾位的數(shù)碼管可以發(fā)光。數(shù)碼管顯示電路分為動態(tài)顯示和靜態(tài)顯示。 靜態(tài)顯示方式是指每一個數(shù)碼管的字段控制是獨立的,每一個數(shù)碼管都需要配置一個8位輸出口來輸出該字位的七段碼。因此需要顯示多位時需要多個輸出口,通常片內(nèi)并口不夠用,需要在片

39、外擴展。 動態(tài)顯示又稱為掃描顯示方式,也就是在某一時刻只能讓一個字位處于選通狀態(tài),其他字位一律斷開,同時在字段線上發(fā)出該位要顯示的字段碼,這樣在某一時刻某一位數(shù)碼管就會被點亮,并顯示出相應(yīng)的字符。下一時刻改變所顯示的字位和字段碼,點亮另一個數(shù)碼管,顯示另一個字符。繞后一次掃描輪流點亮其他數(shù)碼管,只要掃描速度快,利用人眼的視覺殘留效應(yīng),會使人感覺到幾位數(shù)碼管都在穩(wěn)定的顯示。 本設(shè)計采用數(shù)碼管動態(tài)顯示,電路如下圖所示:顯示部分電路 圖-6圖中由單片機P1口串接74HC245驅(qū)動兩位共陽極數(shù)碼管,上拉電阻排為10K。由P2.0和P2.1通過PNP型三極管Q1,Q2驅(qū)動其字位。三極管發(fā)射極接高電平,當

40、P2.0或P2.1為低電平時使三極管導(dǎo)通選通數(shù)碼管的某一位。五、系統(tǒng)軟件設(shè)計5.1、 概述整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個控制系統(tǒng)的核心,專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來完成各種實質(zhì)性的功能如測量、計算、顯示、通訊等。每一個執(zhí)行軟件也就是一個小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實時性的要

41、求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。5.2總程序流程圖 對溫度傳感器進行設(shè)置,讀取溫度數(shù)據(jù)轉(zhuǎn)化顯示溫度開始結(jié)束5.3C語言程序#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#include<math.h>#include<INTRINS.H>#define uchar unsigned char#define uint unsigned int;/*/* 定義端口 */*/sbit seg1=P20;sbit seg2=P21;sbit seg3=P22;sbit s1=P30;sbit D

42、Q=P13;/ds18b20 端口sfr dataled=0x80;/顯示數(shù)據(jù)端口/*/* 全局變量 */*/uint temp;uchar flag_get,count,num,minute,second,x;uchar code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /7段數(shù)碼管段碼表共陽uchar str6;/*/* 函數(shù)聲明 */*/void delay1(uchar MS);unsigned int ReadTemperature(void);void Init_DS18B20(void);unsigned ch

43、ar ReadOneChar(void);void WriteOneChar(unsigned char dat);void delay(unsigned int i);/*/* 主函數(shù) */*/main()unsigned char TempH,TempL;TMOD|=0x01;/定時器設(shè)置TH0=0xef;TL0=0xf0;IE=0x82;TR0=1;P2=0x00; count=0;x=0;while(1) if(!s1) delay(300); if(!s1) x+; if(x=2) x=0; str5=0x39; /顯示C符號 str1=tabTempH/100; /百位溫度 str

44、2=tab(TempH%100)/10; /十位溫度 str3=tab(TempH%100)%10|0x80; /個位溫度,帶小數(shù)點 str4=tabTempL; if(flag_get=1) /定時讀取當前溫度 temp=ReadTemperature(); if(temp&0x8000) str0=0x40;/負號標志 temp=temp; / 取反加1 temp +=1; else str0=0; TempH=temp>>4; TempL=temp&0x0F; TempL=TempL*6/10;/小數(shù)近似處理 flag_get=0; /*/* 定時器中斷 */

45、*/void tim(void) interrupt 1 using 1/中斷,用于數(shù)碼管掃描和溫度檢測間隔TH0=0xef;/定時器重裝值TL0=0xf0;num+;if (num=50) num=0; flag_get=1;/標志位有效 second+; if(second>=60) second=0; minute+; if(x=0)count+;if(count=1) P2=0; dataled=str0;/數(shù)碼管掃描if(count=2) P2=1; dataled=str1;if(count=3) P2=2; dataled=str2; if(count=4) P2=3; d

46、ataled=str3; if(count=5) P2=4; dataled=str4; if(count=6) P2=5; dataled=str5; count=0; if(x=1) count+;if(count=1) str4=0;if(count=2) P2=4; dataled=str5; if(count=3) P2=0; dataled=str0;if(count=4) P2=1; dataled=str1; if(count=5) P2=2; dataled=str2; if(count=6) P2=3; dataled=str3; count=0; /*/* 延時函數(shù) */*/void delay(unsigned int i)/延時函數(shù) while(i-);/*/* 初始化 */*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ復(fù)位 delay(8); /稍做延時 DQ = 0; /單片機將DQ拉低 delay(80); /精確延時 大于 480us DQ = 1; /拉高總線 delay(10); x=DQ; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(5);/*/* 讀一個

溫馨提示

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

最新文檔

評論

0/150

提交評論