基于單片機水溫控制器的設(shè)計畢業(yè)論文_第1頁
基于單片機水溫控制器的設(shè)計畢業(yè)論文_第2頁
基于單片機水溫控制器的設(shè)計畢業(yè)論文_第3頁
基于單片機水溫控制器的設(shè)計畢業(yè)論文_第4頁
基于單片機水溫控制器的設(shè)計畢業(yè)論文_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 基于單片機的水溫控制器的設(shè)計摘 要本系統(tǒng)的設(shè)計可以用于熱水器溫度控制系統(tǒng)和飲水機等各種電器電路中。它以單片機AT89S52為核心,通過3個數(shù)碼管顯示溫度和4個按鍵實現(xiàn)人機對話,使用單總線溫度轉(zhuǎn)換芯片DS18B20實時采集溫度并通過數(shù)碼管顯示,并提供各種運行指示燈用來指示系統(tǒng)現(xiàn)在所處狀態(tài),如:溫度設(shè)置、加熱、停止加熱等,整個系統(tǒng)通過四個按鍵來設(shè)置加熱溫度和控制運行模式。關(guān)鍵詞: 單片機;數(shù)碼管顯示;單總線;DS18B20I 目 錄1 緒論- 1 -2 系統(tǒng)總體設(shè)計- 2 -2.1硬件總體設(shè)計- 2 -2.1.1硬件系統(tǒng)子模塊- 2 -2.2 軟件總體設(shè)計- 2 -3 硬件系統(tǒng)設(shè)計- 4 -3.

2、1硬件電路分析和設(shè)計報告- 4 -3.1.1單片機最小系統(tǒng)電路- 4 -3.1.2 鍵盤電路- 5 -3.1.3 數(shù)碼管及指示燈顯示電路- 5 -3.1.4 溫度采集電路- 7 -3.1.5 電源電路- 11 -3.1.6報警電路設(shè)計- 12 -3.1.7加熱管控制電路設(shè)計- 12 -4 系統(tǒng)軟件設(shè)計- 14 -4.1主程序流程圖- 14 -4.2各個模塊的流程圖- 16 -4.2.1讀取溫度DS18B20模塊的流程- 16 -4.2.2鍵盤掃描處理流程- 18 -4.2.3 報警處理流程- 18 -5 系統(tǒng)調(diào)試- 20 -5.1 硬件電路調(diào)試- 20 -5.2 軟件調(diào)試- 20 -5.3 系

3、統(tǒng)操作說明- 21 -5.4數(shù)據(jù)測試- 21 -總 結(jié)- 23 -致 謝- 24 -參考文獻(xiàn)- 25 -附錄一:系統(tǒng)源程序- 26 -附錄二:系統(tǒng)硬件總圖- 35 - 15 - 基于單片機的水溫控制器的設(shè)計1 緒論本系統(tǒng)的設(shè)計可以用于水溫控制系統(tǒng)和電飯煲等各種電器電路中。它以單片機AT89S52為核心,通過數(shù)碼管顯示溫度和語音提示實現(xiàn)人機對話,使用溫度轉(zhuǎn)換芯片DS18B20實時采集溫度并通過數(shù)碼管顯示,并提供各種運行指示燈用來指示系統(tǒng)現(xiàn)在所處狀態(tài),如:溫度設(shè)置、加熱、停止加熱等,整個系統(tǒng)通過四個按鍵來設(shè)置加熱溫度和控制運行模式。溫度控制系統(tǒng)可以說是無所不在,熱水器系統(tǒng)、空調(diào)系統(tǒng)、冰箱、電飯煲、

4、電風(fēng)扇等家電產(chǎn)品以至手持式高速高效的計算機和電子設(shè)備,均需要提供溫度控制功能。以計算機為例,當(dāng)中的中央處理器的運行速度愈快,所耗散的熱量便愈多,為免計算機系統(tǒng)過熱而受損,有關(guān)系統(tǒng)必須加強溫度過高保護(hù)功能。傳統(tǒng)的溫度采集電路相當(dāng)復(fù)雜,需要經(jīng)過溫度采集、信號放大、濾波、AD轉(zhuǎn)換等一系列工作才能得到溫度的數(shù)字量,并且這種方式不僅電路復(fù)雜,元器件個數(shù)多,而且線性度和準(zhǔn)確度都不理想,抗干擾能力弱?,F(xiàn)在常用的溫度傳感器芯片不但功率消耗低、準(zhǔn)確率高,而且比傳統(tǒng)的溫度傳感器有更好的線性表現(xiàn),最重要的一點是使用起來方便。自動控制儀器儀表總的發(fā)展趨勢是高性能、數(shù)字化、集成化、智能化和網(wǎng)絡(luò)化。智能溫度控制系統(tǒng)的設(shè)計

5、是為了滿足市場對成本低、性能穩(wěn)定、可遠(yuǎn)程監(jiān)測、控制現(xiàn)場溫度的需求而做的課題,具有較為廣闊的市場前景。本系統(tǒng)的核心控制芯片選用的是51系列單片機AT89S52,單片機在各個技術(shù)領(lǐng)域中的迅猛發(fā)展,與單片機所構(gòu)成的計算機應(yīng)用系統(tǒng)的特點有關(guān): 單片機構(gòu)成的應(yīng)用系統(tǒng)有較大的可靠性。 系統(tǒng)構(gòu)建簡潔、易行,能方便的實現(xiàn)系統(tǒng)功能。 由于構(gòu)成的系統(tǒng)是一個計算機系統(tǒng),相當(dāng)多的功能由軟件實現(xiàn),故具有柔性特點。 有優(yōu)異的性能價格比。2 系統(tǒng)總體設(shè)計2.1硬件總體設(shè)計設(shè)計并制作一個基于單片機的熱水器溫度控制系統(tǒng)的電路,其結(jié)構(gòu)框圖如圖2-1:電源單片機AT89S52數(shù)碼管顯示繼電器溫度傳感器DS18B20報警鍵盤指示燈圖

6、 21 系統(tǒng)結(jié)構(gòu)框圖2.1.1硬件系統(tǒng)子模塊(1) 單片機最小系統(tǒng)電路部分(2) 鍵盤掃描電路部分(3) 數(shù)碼管溫度顯示和運行指示燈電路部分(4) 溫度采集電路部分(5) 繼電器控制部分(6) 報警部分2.2 軟件總體設(shè)計良好的設(shè)計方案可以減少軟件設(shè)計的工作量,提高軟件的通用性,擴(kuò)展性和可讀性。本系統(tǒng)的設(shè)計方案和步驟如下:(1) 根據(jù)需求按照系統(tǒng)的功能要求,逐級劃分模塊。(2) 明確各模塊之間的數(shù)據(jù)流傳遞關(guān)系,力求數(shù)據(jù)傳遞少,以增強各模塊的獨立性,便于軟件編制和調(diào)試。(3) 確定軟件開發(fā)環(huán)境,選擇設(shè)計語言,完成模塊功能設(shè)計,并分別調(diào)試通過。(4) 按照開發(fā)式軟件設(shè)計結(jié)構(gòu),將各模塊有機的結(jié)合起來

7、,即成一個較完善的系統(tǒng)。首先接通電源系統(tǒng)開始工作,系統(tǒng)開始工作后,通過按鍵設(shè)定溫度值的上限值和下限值,確定按鍵將設(shè)定的溫度值存儲到指定的地址空間,溫度傳感器開始實時檢測,調(diào)用顯示子程序顯示檢測結(jié)果,調(diào)用比較當(dāng)前顯示溫度值與開始設(shè)定的溫度值比較,如果當(dāng)前顯示值低于設(shè)定值就通過繼電器起動加熱裝置,直到達(dá)到設(shè)定值停止加熱,之后進(jìn)行保溫,如果溫度高于上限進(jìn)行報警。3 硬件系統(tǒng)設(shè)計3.1硬件電路分析和設(shè)計報告本次設(shè)計主要思路是通過對單片機編程將由溫度傳感器DS18B20采集的溫度外加驅(qū)動電路顯示出來,包括對繼電器的控制,進(jìn)行升溫,當(dāng)溫度達(dá)到上下限蜂鳴器進(jìn)行報警。P1.7開關(guān)按鈕是用于確認(rèn)設(shè)定溫度的,初始

8、按下表示開始進(jìn)入溫度設(shè)定狀態(tài),然后通過P1.5和P1.6設(shè)置溫度的升降,再次按下P1.7時,表示確認(rèn)所設(shè)定的溫度,然后轉(zhuǎn)入升溫或降溫。P2.3所接的發(fā)光二極管用于表示加熱狀態(tài),P2.5所接的發(fā)光二極管用于表示保溫狀態(tài)。P2.3接繼電器。P3.1是溫度信號線。整個電路都是通過軟件控制實現(xiàn)設(shè)計要求。3.1.1單片機最小系統(tǒng)電路因為89S52單片機內(nèi)部自帶8K的ROM和256字節(jié)的RAM,因此不必構(gòu)建單片機系統(tǒng)的擴(kuò)展電路。如圖31,單片機最小系統(tǒng)有復(fù)位電路和振蕩器電路。值得注意的一點是單片機的31腳必須接高電平,否則系統(tǒng)將不能運行。因為該腳不接時為低電平,單片機將直接讀取外部程序存儲器,而系統(tǒng)沒有外

9、部程序存儲器,所以必須接VCC。在按鍵兩端并聯(lián)一個電解電容,濾除交流干擾,增加系統(tǒng)抗干擾能力。圖31 單片機最小系統(tǒng)圖3.1.2 鍵盤電路鍵盤是單片機應(yīng)用系統(tǒng)中的主要輸入設(shè)備,單片機使用的鍵盤分為編碼鍵盤和非編碼鍵盤。編碼鍵盤采用硬件線路來實現(xiàn)鍵盤的編碼,每按下一個鍵,鍵盤能夠自動生成按鍵代碼,并有去抖功能。因此使用方便,但硬件較復(fù)雜。非編碼鍵盤僅僅提供鍵開關(guān)狀態(tài),由程序來識別閉合鍵,消除抖動,產(chǎn)生相應(yīng)的代碼,轉(zhuǎn)入執(zhí)行該鍵的功能程序。非編碼鍵盤中鍵的數(shù)量較少,硬件簡單,在單片機中應(yīng)用非常廣泛。圖為按鍵和AT89S52的接線圖,檢測儀共設(shè)有4個按鍵,每個按鍵由軟件來決定其功能,4個按鍵功能分別為

10、:(1) SW1:設(shè)定按鍵(設(shè)定按鍵)(2) SW2:加法按鍵(當(dāng)前位加5)(3) SW3:減法按鍵(當(dāng)前位減5)(4) SW4:退出設(shè)置鍵(系統(tǒng)初始化) 圖32 單片機最小系統(tǒng)3.1.3 數(shù)碼管及指示燈顯示電路(1)數(shù)碼管顯示說明各個數(shù)碼管的段碼都是單片機的數(shù)據(jù)口輸出,即各個數(shù)碼管輸入的段碼都是一樣的,為了使其分別顯示不同的數(shù)字,可采用動態(tài)顯示的方式,即先只讓最低位顯示0(含點),經(jīng)過一段延時,再只讓次低位顯示1,如此類推。由視覺暫留,只要我們的延時時間足夠短,就能夠使得數(shù)碼的顯示看起來非常的穩(wěn)定清楚,過程如表3-1。表3-1 數(shù)碼管編碼表段碼位碼顯示器狀態(tài)08H01H0abH02H112H

11、04H222H08H3a1H10H424H20H504H40H6aaH80H7本論文中使用了3個數(shù)碼管,其中前兩位使用動態(tài)掃描顯示實測溫度,在設(shè)置加熱溫度的時候,兩個數(shù)碼管是閃爍,以提示目前處在溫度設(shè)置狀態(tài)。第三位數(shù)碼管靜態(tài)顯示符號“”。(2)運行指示燈說明本熱水器溫度控制系統(tǒng)中共使用到3個LED指示燈和3個數(shù)碼管。右上角的紅色LED是電源指示燈;數(shù)碼管右邊的紅色LED是加熱指示燈,當(dāng)剛開機或溫度降到設(shè)定溫度5以下時,該燈會亮,表示目前處于加熱狀態(tài);當(dāng)溫度上升到設(shè)定溫度時,該LED滅,同時數(shù)碼管右邊的綠色LED亮,表示目前處于保溫狀態(tài),用戶可以使用熱水器;當(dāng)溫度再次下降到設(shè)定溫度5以下時,綠色

12、LED滅,紅色加熱的LED燈亮,不斷循環(huán)。圖33 LED數(shù)碼管顯示電路圖3.1.4 溫度采集電路(1) DS18B20介紹Dallas最新單線數(shù)字溫度傳感器DS18B20簡介新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟(jì)。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨特而且經(jīng)濟(jì)的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。DS18B20、DS1822“一線總線”數(shù)字化溫度傳感器同DS18B20一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為 -55+125,在-10+85范圍內(nèi),精度為0.5。DS1

13、822的精度較差為2?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。其DS18B20的管腳配置和封裝結(jié)構(gòu)如圖3-4所示。 圖3-4 DS18B20封裝引腳定義: DQ為數(shù)字信號輸入/輸出端; GND為電源地; VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。 (2)DS18B20的單線(1wire bus)系統(tǒng)單線總線結(jié)構(gòu)是DS18B20的突出特點,也是理解和編程的難點。從兩個角度來理解單線總線:第一,單線總線只定義了一個信號線,而且DS18B20智能程度較低(這點可以與微控制器和SPI器件間的通信做一個比較),所以DS18B20和處理器之間的通信必然要通過嚴(yán)格的

14、時序控制來完成。第二,DS18B20的輸出口是漏級開路輸出,這里給出一個微控制器和DS18B20連接原理圖。這種設(shè)計使總線上的器件在合適的時間驅(qū)動它。顯然,總線上的器件與(wired AND)關(guān)系。這就決定:(1)微控制器不能單方面控制總線狀態(tài)。之所以提出這點,是因為相當(dāng)多的文獻(xiàn)資料上認(rèn)為,微控制器在讀取總線上數(shù)據(jù)之前的I/O口的置1操作是為了給DS18B20一個發(fā)送數(shù)據(jù)的信號。這是一個錯誤的觀點。如果當(dāng)前DS18b20發(fā)送0,即使微控制器I/O口置1,總線狀態(tài)還是0;置1操作是為了是I/O口截止(cut off),以確保微控制器正確讀取數(shù)據(jù)。(2)除了DS18B20發(fā)送0的時間段,其他時間其

15、輸出口自動截止。自動截止是為確保:1時,在總線操作的間隙總線處于空閑狀態(tài),即高態(tài)。2時,確保微控制器在寫1的時候DS18B20可以正確讀入。由于DS18B20采用的是1Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。 DS18B20的復(fù)位時序,如圖3-5 圖3-5 DS18B20的復(fù)位時序圖 DS18B20的讀時序?qū)τ贒S18B20的讀時序分為讀0時序和讀1時序兩個過程。對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內(nèi)就得釋放單總線

16、,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。DS18B20的讀時序圖如圖3-6所示。圖3-6 DS18B20的讀時序 DS18B20的寫時序?qū)τ贒S18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。如圖3-7所示。圖3-7 DS18B20的寫時序圖(3)DS18B20的供電方式在圖3-8中示出了

17、DS18B20的寄生電源電路。當(dāng)DQ或VDD引腳為高電平時,這個電路便“取”的電源。寄生電路的優(yōu)點是雙重的,遠(yuǎn)程溫度控制監(jiān)測無需本地電源,缺少正常電源條件下也可以讀ROM。為了使DS18B20能完成準(zhǔn)確的溫度變換,當(dāng)溫度變換發(fā)生時,DQ線上必須提供足夠的功率。有兩種方法確保 DS18B20 在其有效變換期內(nèi)得到足夠的電源電流。第一種方法是發(fā)生溫度變換時,在 DQ 線上提供一強的上拉,這期間單總線上不能有其它的動作發(fā)生。如圖3-8 所示,通過使用一個 MOSFET 把 DQ 線直接接到電源可實現(xiàn)這一點,這時DS18B20 工作在寄生電源工作方式,在該方式下 VDD 引腳必須連接到地。 圖3-8

18、DS18B20供電方式1另一種方法是 DS18B20 工作在外部電源工作方式,如圖 3-9 所示。這種方法的優(yōu)點是在 DQ 線上不要求強的上拉,總線上主機不需要連接其它的外圍器件便在溫度變換期間使總線保持高電平,這樣也允許在變換期間其它數(shù)據(jù)在單總線上傳送。此外,在單總線上可以并聯(lián)多個 DS18B20,而且如果它們?nèi)坎捎猛獠侩娫垂ぷ鞣绞?,那么通過發(fā)出相應(yīng)的命令便可以同時完成溫度變換。 圖3-9 DS18B20供電方式2(4)DS18B20設(shè)計中應(yīng)注意的幾個問題DS18B20具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用接口線少等優(yōu)點,但在實際應(yīng)用中也應(yīng)注意以下幾方面的問題:較小的硬件開銷需要相對

19、復(fù)雜的軟件進(jìn)行補償,由于DS18B20 與微處理器間采用串行數(shù)據(jù)傳送。因此, 在對DS18B20 進(jìn)行讀寫編程時,必須嚴(yán)格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在DS18B20 有關(guān)資料中均未提及1Wire上所掛DS18B20數(shù)量問題,容易使人誤認(rèn)為可以掛任意多個DS18B20,在實際應(yīng)用中并非如此。當(dāng)1Wire上所掛DS18B20超過8個時,就需要考慮微處理器的總線驅(qū)動問題,這一點在進(jìn)行多點測溫系統(tǒng)設(shè)計時要加以注意。連接DS18B20的總線電纜是有長度限制的。實際應(yīng)用中,測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC 和地線,屏蔽層在源端單點接地。本文以廣泛應(yīng)用

20、的數(shù)字溫度傳感器DS18B20為例,說明了1Wire總線的操作過程和基本原理。事實上,基于1Wire總線的產(chǎn)品還有很多種,如1Wire總線的E2PROM、實時時鐘、電子標(biāo)簽等。他們都具有節(jié)省I/O資源、結(jié)構(gòu)簡單、開發(fā)快捷、成本低廉、便于總線擴(kuò)展等優(yōu)點,因此有廣闊的應(yīng)用空間,具有較大的推廣價值。本設(shè)計將溫度傳感器DS18B20與單片機TXD引腳相連,讀取溫度傳感器的數(shù)值。DS18B20與單片機連接圖如圖所示3-10所示。圖3-10 DS18B20與單片機連接圖3.1.5 電源電路采用L7805穩(wěn)壓塊,輸出為5V。電子組件要正常運作都需要電源電壓供電,一般常用的電源電壓為+5V或+12V,因為數(shù)字

21、IC (Ingegrated Circuit:集成電路)所供給的電壓為+5V,而CMOS IC所供給的電壓為+12V,7805是一個穩(wěn)壓塊。7805穩(wěn)壓管把高電壓轉(zhuǎn)換到低電壓,7805穩(wěn)壓管具有保護(hù)單片機的作用。L7805輸出端要并聯(lián)上一個電解電容,濾除交流電干擾,防止損壞單片機系統(tǒng)。本設(shè)計采用兩種供電方式,一種為DC718V直流穩(wěn)壓電源變換成5V的直流電;另一種為四節(jié)干電池共6V經(jīng)二極管加壓后得到將近5V的直流電源,電源配以開關(guān)和指示燈,以方便使用。黃色發(fā)光二極管表示保溫,紅色的表示加熱狀態(tài)。圖3-11 系統(tǒng)電源設(shè)計圖3.1.6報警電路設(shè)計同時可以在系統(tǒng)里設(shè)定溫度上限值,由于加熱停止后,加熱

22、管還有余熱當(dāng)采集到的外界溫度高于當(dāng)前所設(shè)定溫度上限值時,程序就會進(jìn)入報警子程序,觸發(fā)蜂鳴器進(jìn)行報警。報警電路原理圖如圖所示。圖3-12 報警電路圖圖中的三極管8550的作用是增加驅(qū)動能力,比9012的驅(qū)動電流還大些,因此選用8550。當(dāng)程序進(jìn)入報警子程序時,把P2.7置0,就會觸發(fā)蜂鳴器,為了使報警聲音效果更好,對P2.7取反,發(fā)出報警嘟嚕聲音。3.1.7加熱管控制電路設(shè)計繼電器是常用的輸出控制接口,可以做交直流信號的輸出切換。它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動控制電路中,它實際上是用較小的電流去控制較大電流的一種“自動開關(guān)”。故在電路中起著自動調(diào)節(jié)、安

23、全保護(hù)、轉(zhuǎn)換電路等作用。繼電器控制接點操作說明如下:COM:Common,共同點。輸出控制接點的共同接點。NC:Normal Close常閉點。以Com為共同點,NC與COM在平時是呈導(dǎo)通狀態(tài)的。NO:Normal Open常開點。NO與COM在平時是呈開路狀態(tài)的,當(dāng)繼電器動作時,NO與COM導(dǎo)通,NC與COM則呈開路狀態(tài)。當(dāng)89S52的P2.5輸出高電平時,繼電器不導(dǎo)通,反之當(dāng)輸出低電平時,繼電器導(dǎo)通,這樣就激活了連接回路。圖3-13 單片機控制繼電器電路圖4 系統(tǒng)軟件設(shè)計本系統(tǒng)采用的是循環(huán)查詢方式,來顯示和控制溫度的。主要包括四段程序的設(shè)計:DS18B20讀溫度程序,數(shù)碼管的驅(qū)動程序,鍵盤

24、掃描程序,以及抱經(jīng)處理程序。4.1主程序流程圖圖 4-1 主程序流程圖4.2各個模塊的流程圖4.2.1讀取溫度DS18B20模塊的流程由于DS18B20采用的是一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念。因此系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)DS18B20雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點

25、, DS18B20必須首先調(diào)用啟動溫度轉(zhuǎn)換函數(shù),根據(jù)數(shù)據(jù)手冊上對應(yīng)轉(zhuǎn)換時間來超作,如為12位轉(zhuǎn)換,則應(yīng)該是最大750mS,另外在對DS18B20超作時,時序要求非常嚴(yán)格,因此最好禁止系統(tǒng)中斷。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設(shè)備,而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。DS18B2

26、0的讀時序:(1)對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。 (2)對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。DS18B20的寫時序:(1)對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。 (2)對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單

27、總線。 系統(tǒng)程序設(shè)計主要包括三部分:讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、顯示溫度子程序。圖4-2讀取溫度DS18B20模塊的流程圖程序代碼為:GET_TEMPER:SETBDQ;讀出轉(zhuǎn)換后的溫度值LCALLINIT_1820;先復(fù)位DS18B20JBFLAG1,TSS2RET;判斷DS1820是否存在?若DS18B20不存在則返回TSS2:MOVA,#0CCH;DS18B20已經(jīng)被檢測到!跳過ROM匹配LCALLWRITE_1820MOVA,#44H;發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE_1820LCALL DISPLAY;這里通過調(diào)用顯示子程序?qū)崿F(xiàn)延時一段時間,等待AD轉(zhuǎn)換結(jié)束,12位的話7

28、50微秒LCALLINIT_1820;準(zhǔn)備讀溫度前先復(fù)位MOVA,#0CCH;跳過ROM匹配LCALLWRITE_1820MOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITE_1820LCALLREAD_18200;將讀出的溫度數(shù)據(jù)保存到35H/36HRET4.2.2鍵盤掃描處理流程此流程為鍵盤掃描處理,CPU通過檢測各數(shù)據(jù)線的狀態(tài)(0或1)就能知道是否有按鍵閉合以及哪個按鍵閉合。鍵盤管理程序的功能是檢測是否有按鍵閉合,如果有按鍵閉合,消除抖動,根據(jù)鍵號轉(zhuǎn)到相應(yīng)的鍵處理程序,按鍵流程圖如圖4-3所示。 圖 4-3鍵盤掃描子程序流程圖4.2.3 報警處理流程運行程序后,溫度傳感器DS18B2

29、0即可對環(huán)境進(jìn)行溫度采集,并送LED數(shù)碼管顯示。我們可以在程序里設(shè)定溫度上限值,當(dāng)采集到的外界溫度高于當(dāng)前所設(shè)定溫度上限值時,程序就會進(jìn)入報警子程序,觸發(fā)蜂鳴器進(jìn)行報警。其程序流程圖如圖4-4所示。圖4-4 報警子程序流程圖5 系統(tǒng)調(diào)試5.1 硬件電路調(diào)試仔細(xì)檢查所接電路,按照硬件原理圖接線,理論上是能實現(xiàn)的,如果數(shù)碼管不顯示,則應(yīng)該檢查線路是否正確,或是因為單片機沒有工作,還有集電極和發(fā)射極是否接對。如果只顯示兩個八,則可能是DS18B20沒有接正確,檢查上拉電路是否接好。另外要注意的是,由單片機輸出的控制信號比較小,需要進(jìn)行放大才能驅(qū)動繼電器工作,否則就不能實現(xiàn)升溫過程,通常選用8550三

30、極管來進(jìn)行放大。還有220V交流電綠色接頭和加熱管黃色接頭必須接正確,否則導(dǎo)致電路燒壞。蜂鳴器是低電平有效。如果能注意這些問題,電路基本不會出錯。5.2 軟件調(diào)試如果硬件電路檢查后,沒有問題卻實現(xiàn)不了設(shè)計要求,則可能是軟件編程的問題,首先應(yīng)檢查初始化程序,然后是讀溫度程序,顯示程序,以及繼電器控制程序,對這些分段程序,要注意邏輯順序,調(diào)用關(guān)系,以及涉及到了標(biāo)號,有時會因為一個標(biāo)號而影響程序的執(zhí)行,除此之外,還要熟悉各指令的用法,以免出錯。還有一個容易忽略的問題就是,源程序生成的代碼是否燒入到單片機中,如果這一過程出錯,那不能實現(xiàn)設(shè)計要求也是情理之中的事。本人在設(shè)計的時候在偉福仿真軟件進(jìn)行調(diào)試,

31、通過此軟件進(jìn)行調(diào)試可以很方便的觀察單片機內(nèi)部各個寄存器及內(nèi)部存儲器變化情況,以方便進(jìn)行調(diào)試。圖為單片機功能調(diào)試圖。圖5-1 單片機功能調(diào)試圖硬件與軟件調(diào)試相結(jié)合,仔細(xì)檢查各個模塊的設(shè)計,舊能順利完成任務(wù),實現(xiàn)設(shè)計要求,在調(diào)試過程中必須認(rèn)真耐心,不能有一點馬虎,否則遺漏一個小的問題就會導(dǎo)致整個設(shè)計的失敗。- 21 - 5.3 系統(tǒng)操作說明本系統(tǒng)上電后數(shù)碼管顯示當(dāng)前測量溫度,此時加熱指示燈和保溫指示燈均不點亮;若此時按“自動加熱”鍵,則單片機自動將預(yù)加熱溫度設(shè)置為80并開始加熱,送出一個加熱信號,并點亮加熱指示燈;若按“溫度設(shè)置”鍵,則進(jìn)入預(yù)加熱溫度設(shè)置界面,此時數(shù)碼管閃爍顯示預(yù)設(shè)置溫度,此時通過

32、按鍵“”和“”進(jìn)行設(shè)置溫度,預(yù)設(shè)置溫度按“5”遞增或遞減,設(shè)置好溫度后再按一次“溫度設(shè)置”鍵確定,單片機保存預(yù)設(shè)置溫度,并開始加熱。此時單片機通過數(shù)碼管顯示實時檢測的溫度并和預(yù)設(shè)置溫度進(jìn)行對比,如果實測溫度大于或等于預(yù)設(shè)置溫度,則單片機發(fā)出停止加熱信號并熄滅加熱指示燈,點亮保溫指示燈,且當(dāng)超過預(yù)設(shè)溫度時發(fā)出報警;當(dāng)溫度下降到預(yù)設(shè)置溫度以下5度時,單片機再次發(fā)出加熱信號,同時熄滅保溫指示燈,點亮加熱指示燈,依次循環(huán)控制。5.4數(shù)據(jù)測試1靜態(tài)數(shù)據(jù)測試取一桶凈水,改變它的溫度,觀察數(shù)碼管上顯示的溫度值,并用溫度計進(jìn)行測溫,記錄兩組數(shù)據(jù),比較差異。記錄表如下:表5-1 靜態(tài)溫度數(shù)據(jù)測試表溫度12345

33、6顯示溫度234763778490測量溫度244763808491有測試數(shù)據(jù)可知,本系統(tǒng)測溫結(jié)果與溫度計測溫基本一致,能滿足設(shè)計,證明了設(shè)計的合理性。2動態(tài)數(shù)據(jù)測試進(jìn)行溫度設(shè)定,通過設(shè)定溫度值(75),觀察加熱管的加熱情況,以及數(shù)碼管的顯示值,再用溫度計測量水溫,每隔一段時間記錄一次數(shù)據(jù),將兩組值進(jìn)行比較。記錄表如下:(設(shè)定前溫度為25)表5-2 靜態(tài)溫度數(shù)據(jù)測試表組數(shù)分組12345678910111213顯示溫度25293439424853586267707375測量溫度25283438424953596367717475通過上表可看出在加熱的過程中,顯示的溫度與實測的溫度近似一樣,說明系統(tǒng)

34、的設(shè)計達(dá)到精度要求,但還是略有偏差,基本不影響設(shè)計結(jié)果。整個測試過程表明設(shè)計達(dá)到了任務(wù)書的要求,證明了該方案是合理可行的,順利完成了設(shè)計,達(dá)到了預(yù)想結(jié)果。 總 結(jié) 通過本次的設(shè)計,使我們不僅對單片機這門課程有了更深刻的認(rèn)識,懂得了如何運用課本知識結(jié)合實際來完成定時器的顯示和編程方法以及數(shù)碼顯示電路的驅(qū)動方法,使我們能夠很快的適應(yīng)現(xiàn)代控制技術(shù)發(fā)展的需求,同時也提高了我們的思維能力和實際操作能力,為以后更好的走上工作崗位奠定了堅實的基礎(chǔ)。 另外,這次的設(shè)計還讓我更進(jìn)一步的認(rèn)識了關(guān)于AT89S52等芯片的引腳功能以及使用方法,使我學(xué)會了應(yīng)用不同的芯片來配合完成整個設(shè)計的操作。 在做硬件電路的這段時間

35、里,從思考設(shè)計到對電路的調(diào)試經(jīng)過了許多困難。同樣在對軟件進(jìn)行設(shè)計時,也可為一路坎坷。但是通過對軟硬件不斷撞墻,不斷思考解決問題的過程中,我學(xué)會了很多東西,同時對單片機也有了更深的認(rèn)識。在做設(shè)計的時候,很需要耐心和對事物的細(xì)心,很多時候一個簡單問題的一個簡單的疏忽就會導(dǎo)致整個電路的不工作,只有不斷的檢查不斷的調(diào)試,才能真正完成一個設(shè)計的制作。只有不斷的發(fā)現(xiàn)問題解決問題,才能從問題中改變自己,提升自己對單片機的能力。 此設(shè)計雖然能夠完成溫度的顯示和控制,但功能和精度有待于進(jìn)一步提高。以后可以通過加入PID算法優(yōu)化控制功能,并通過液晶顯示屏實時顯示溫度。 參考文獻(xiàn)l 樂建波 編著溫度控制系統(tǒng)化學(xué)工業(yè)

36、出版社2 美Ken C.Pohlmann 數(shù)字音頻原理及應(yīng)用.蘇菲.第4版.北京:電子工業(yè)出版社,2005,23 謝自美 編著 電子線路設(shè)計實驗測試(第二版) 華中科技大學(xué)出版社 20004 陳東光 編著單片微型計算機原理及C語言程序設(shè)計華中科技大學(xué)出版社 2004.45 武慶生 仇梅 編著 單片機原理與應(yīng)用 電子科技大學(xué)出版社 1998.26 譚浩強 編著C程序設(shè)計.北京:清華大學(xué)出版社1999年7 華中理工大學(xué)電子學(xué)教研室編 電子技術(shù)基礎(chǔ)模擬部分(第四版)高等教育出版社 1999.68 華中理工大學(xué)電子學(xué)教研室編 電子技術(shù)基礎(chǔ)數(shù)字部分(第四版)高等教育出版社 2000.69 趙晶 編著電路

37、設(shè)計與制版Protel 99se 的高級應(yīng)用 人民郵電出版社 2000.110 電子制作2004.1011 王彬 任艷穎 編著Digital IC System Design 西安電子科技大學(xué)出版社 2005.912 趙麗娟 邵欣編著基于單片機的溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn) 機械制造13 郭炳坤 簡單的恒溫箱溫控電路J.儀器與未來,199114 Guiyun Tian Foundation and Application of Microcontraller 高等教育出版社 2004.1115(美)Bjarne Stroustrup THE C+ PROGRAMMING LANGUAGE, SPE

38、CIAL EDITION Addison Wesley 1997附錄一:系統(tǒng)源程序EMPER_LEQU29H;用于保存讀出溫度的低8位TEMPER_HEQU28H;用于保存讀出溫度的高8位FLAG1EQU38H;是否檢測到DS18B20標(biāo)志位A_BITEQU20H;數(shù)碼管個位數(shù)存放內(nèi)存位置B_BITEQU21H;數(shù)碼管十位數(shù)存放內(nèi)存位置B1EQU70H;溫度小數(shù)點位A1EQU71H;設(shè)定溫度值DQEQUP3.1;DQ為DS18B20數(shù)據(jù)位BELLEQUP2.7;/蜂鳴報警ORG0000H;單片機內(nèi)存分配申明!AJMPMAIN0;/前面的都是定義MAIN:MOVR0,#10M1:CPLP2.3A

39、CALLDELAY125DJNZR0,M1;/此段為燈閃5次,無實際意義;/MAIN0:MOVA1,#80;默認(rèn)加熱為80度MAIN1:LCALLD1820;調(diào)用讀溫度子程序 LCALLDISPLAY;調(diào)用數(shù)碼管顯示子程序 MOVA,29H CLRC CJNEA,A1,MAIN1_1 SETBBELL;/溫度相等,關(guān)閉蜂鳴器 AJMPMAIN1_1_A;/下等不用叫蜂鳴器MAIN1_1:JCMAIN1_2;為1轉(zhuǎn)移,表示小于設(shè)定溫度 CPLBELL;蜂鳴器斷續(xù)鳴叫MAIN1_1_A:CLRP2.3;/下面是表示沒達(dá)到溫度 SETBP2.5 AJMPMAIN2;/主要是檢測溫度是否小于設(shè)定的溫度

40、,小于,則開發(fā)熱管CLRP2.3MAIN1_2:SETBBELL;/關(guān)閉蜂鳴器 CLRP2.5;/開發(fā)熱管 SETBP2.3;/上面的是大于,關(guān)發(fā)熱管MAIN2:JBP1.0,MAIN1;/看P1.0有否按下 ACALLDELAY125;/延時防抖動,常用的手法,網(wǎng)上很多介紹的 JBP1.0,MAIN1;/再次查看 CLRP2.3 JNBP1.0,$;/等按鍵完全松手才進(jìn)入! SETBP2.3 SETBP2.5;/檢測到P1.0按鍵后后進(jìn)入設(shè)定溫度MAIN2_1:ACALLDISPLAY1 JBP1.2,MAIN2_2 ACALLDELAY125 JBP1.2,MAIN2_2 JNBP1.2,

41、$ MOVA,#5 ADDA,A1 CLRC CJNEA,#100,MAIN2_1_1 MOVA,#99 AJMPMAIN2_1_3;/上面這一段是+5度按鍵,按下+5度MAIN2_1_1:JCMAIN2_1_3MAIN2_1_2:CLRCMOVA,#99MAIN2_1_3:MOVA1,AMAIN2_2:JBP1.4,MAIN2_3ACALLDELAY125JBP1.4,MAIN2_3JNBP1.4,$MOVA,A1CJNEA,#99,ZY1MOVB,#4AJMPZY2ZY1:MOVB,#5ZY2:CLRCMOVA,A1SUBBA,BMAIN2_2_1:JNCMAIN2_2_2MOVA1,#0

42、AJMPMAIN2_3;/上面這一段是-5度按鍵,按下-5度MAIN2_2_2:MOVA1,AMAIN2_3:JBP1.6,MAIN2_1ACALLDELAY125JBP1.6,MAIN2_1CLRP2.3JNBP1.6,$SETBP2.3AJMPMAIN1;/上面這一段是退出的意思的!D1820:LCALLGET_TEMPER;調(diào)用讀溫度子程序MOVB1,29HMOVA,29HMOVC,40H;將28H中的最低位移入CRRCAMOVC,41HRRCAMOVC,42HRRCAMOVC,43HRRCAMOV29H,AMOVA,B1MOVB,#10HMULABMOVB,#10HDIVABMOVB,

43、#10MULABMOVB,#10HDIVABMOVB1,ARET;/上面這一段是讀取溫度后進(jìn)行轉(zhuǎn)換的意思!;/;/;/INIT_1820:SETBDQ;這是DS18B20復(fù)位初始化子程序NOPCLRDQ;主機發(fā)出延時537微秒的復(fù)位低脈沖MOVR1,#3TSR1:MOVR0,#107DJNZR0,$DJNZR1,TSR1SETBDQ;然后拉高數(shù)據(jù)線NOPNOPNOPNOPMOVR0,#25HTSR2:JNBDQ,TSR3;等待DS18B20回應(yīng)DJNZR0,TSR2LJMPTSR4;延時TSR3:SETBFLAG1;置標(biāo)志位,表示DS1820存在LJMPTSR5TSR4:CLRFLAG1;清標(biāo)

44、志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#117TSR6:DJNZR0,TSR6;時序要求延時一段時間TSR7:SETBDQRETGET_TEMPER:SETBDQ;讀出轉(zhuǎn)換后的溫度值LCALLINIT_1820;先復(fù)位DS18B20JBFLAG1,TSS2RET;判斷DS1820是否存在?若DS18B20不存在則返回TSS2:MOVA,#0CCH;DS18B20已經(jīng)被檢測到!跳過ROM匹配LCALLWRITE_1820MOVA,#44H;發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE_1820LCALLDISPLAY;這里通過調(diào)用顯示子程序?qū)崿F(xiàn)延時一段時間,等待AD轉(zhuǎn)換結(jié)束,

45、12位的話750微秒LCALLINIT_1820;準(zhǔn)備讀溫度前先復(fù)位MOVA,#0CCH;跳過ROM匹配LCALLWRITE_1820MOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITE_1820LCALLREAD_18200;將讀出的溫度數(shù)據(jù)保存到35H/36HRETWRITE_1820:MOVR2,#8;一共8位數(shù)據(jù)CLRC;寫DS18B20的子程序(有具體的時序要求)WR1:CLRDQMOVR3,#6DJNZR3,$RRCAMOVDQ,CMOVR3,#23DJNZR3,$SETBDQNOPDJNZR2,WR1SETBDQRETREAD_18200:MOVR4,#2;將溫度高位和低位從

46、DS18B20中讀出MOVR1,#29H;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)RE00:MOVR2,#8;數(shù)據(jù)一共有8位RE01:CLRC;讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)SETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,#9RE10:DJNZR3,RE10MOVC,DQMOVR3,#23RE20:DJNZR3,RE20RRCADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00RET;/上面的這些都是溫度采集的!DISPLAY:MOVA,29H;將29H中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制MO

47、VB,#10;10進(jìn)制/10=10進(jìn)制DIVAB;顯示子程序MOVA_BIT,A;十位在AMOVB_BIT,B;個位在BMOVDPTR,#NUMTAB;指定查表啟始地址MOVR0,#1DPL1:MOVR1,#25;顯示1000次DPLOP:MOVA,B_BIT;取個位數(shù)MOVCA,A+DPTR;查個位數(shù)的7段代碼MOVP0,A;送出個位的7段代碼CLRP2.2;開個位顯示ACALLD1MS;顯示1MSSETBP2.2MOVA,A_BIT;取十位數(shù)MOVCA,A+DPTR;查十位數(shù)的7段代碼MOVP0,A;送出十位的7段代碼CLRP2.1;開十位顯示ACALLD1MS;顯示1MSSETBP2.1

48、MOVP0,#0FFHDJNZR1,DPLOP;100次沒完循環(huán)DJNZR0,DPL1;4個100次沒完循環(huán)RET;/上面這段顯示實時溫度;/DISPLAY1:MOVA,A1;將29H中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制MOVB,#10;10進(jìn)制/10=10進(jìn)制DIVAB;顯示子程序MOVA_BIT,A;十位在AMOVB_BIT,B;個位在BMOVDPTR,#NUMTAB;指定查表啟始地址MOVR0,#1DPL11:MOVR1,#25;顯示1000次DPLOP1:MOVA,B_BIT;取個位數(shù)MOVCA,A+DPTR;查個位數(shù)的7段代碼MOVP0,A;送出個位的7段代碼CLRP2.2;開個位顯示ACA

49、LLD1MS;顯示1MSSETBP2.2MOVA,A_BIT;取十位數(shù)MOVCA,A+DPTR;查十位數(shù)的7段代碼MOVP0,A;送出十位的7段代碼CLRP2.1;開十位顯示ACALLD1MS;顯示1MSSETBP2.1MOVP0,#0FFHDJNZR1,DPLOP1;100次沒完循環(huán)DJNZR0,DPL11;4個100次沒完循環(huán)RET;/上面這段顯示設(shè)置溫度D1MS:MOVR7,#50;1MS延時DJNZR7,$RETDELAY10:MOVR6,#20;10MS延時D3:MOVR5,#255DJNZR5,$DJNZR6,D3RETDELAY125:MOVR6,#255;125MS延時D1:MOVR5,#255DJNZR5,$DJNZR6,D1RETDELAY1S:MOVR7,#8;1S延時D2:LCALLDELAY125DJNZR7,D2RET;/這些都是延時,長短而已NUMTAB:DB0C0H,0F9H,0A4H,0B0HDB99H,92H,82H,0F8HDB80H,90H,88H,83HDB0C6H,0A1H,86H,8EH;/數(shù)碼管的具體值EN

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論