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

下載本文檔

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

文檔簡介

1、第一章 系統(tǒng)總體設(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è)置加熱溫度和控制運行模式。本系統(tǒng)硬件電路設(shè)計主要包括七部分分別包括單片機最下系統(tǒng)電路、鍵盤電路、數(shù)碼管及指示燈顯示電路、溫度采集電路、電源電路、報警電路設(shè)計、報警電路設(shè)計、加熱管控制電路設(shè)計。關(guān)鍵詞: 單片機,數(shù)碼管顯示,單總線,DS18B20I目 錄摘 要I目

2、錄II第一章 系統(tǒng)總體設(shè)計1第二章 硬件系統(tǒng)設(shè)計42.1單片機最小系統(tǒng)電路42.2 鍵盤電路52.3 數(shù)碼管及指示燈顯示電路62.4 溫度采集電路72.5 電源電路112.6報警電路設(shè)計122.7加熱管控制電路設(shè)計12第三章 軟件系統(tǒng)設(shè)計143.1主程序流程圖143.2各個模塊的流程圖153.2.1讀取溫度DS18B20模塊的流程153.2.2鍵盤掃描處理流程183.2.3報警處理流程19第四章 總 結(jié)20參考文獻21附錄A 系統(tǒng)源程序22附錄B 系統(tǒng)硬件總圖3131第一章 系統(tǒng)總體設(shè)計第一章 系統(tǒng)總體設(shè)計本系統(tǒng)的設(shè)計可以用于水溫控制系統(tǒng)和電飯煲等各種電器電路中。它以單片機AT89S52為核心

3、,通過數(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)、冰箱、電飯煲、電風(fēng)扇等家電產(chǎn)品以至手持式高速高效的計算機和電子設(shè)備,均需要提供溫度控制功能。以計算機為例,當(dāng)中的中央處理器的運行速度愈快,所耗散的熱量便愈多,為免計算機系統(tǒng)過熱而受損,有關(guān)系統(tǒng)必須加強溫度過高保護功能。傳統(tǒng)的溫度采集電路相當(dāng)復(fù)雜,需要經(jīng)過溫度采集、信號放大、濾波、A/D轉(zhuǎn)換等一系列工作才能得到溫度的

4、數(shù)字量,并且這種方式不僅電路復(fù)雜,元器件個數(shù)多,而且線性度和準確度都不理想,抗干擾能力弱。現(xiàn)在常用的溫度傳感器芯片不但功率消耗低、準確率高,而且比傳統(tǒng)的溫度傳感器有更好的線性表現(xiàn),最重要的一點是使用起來方便。自動控制儀器儀表總的發(fā)展趨勢是高性能、數(shù)字化、集成化、智能化和網(wǎng)絡(luò)化。智能溫度控制系統(tǒng)的設(shè)計是為了滿足市場對成本低、性能穩(wěn)定、可遠程監(jiān)測、控制現(xiàn)場溫度的需求而做的課題,具有較為廣闊的市場前景。本系統(tǒng)的核心控制芯片選用的是51系列單片機AT89S52。單片機之所以在各個技術(shù)領(lǐng)域中能得到迅猛發(fā)展,這與單片機所構(gòu)成的計算機應(yīng)用系統(tǒng)的特點是密不可分的,其主要優(yōu)點如下:(1)單片機構(gòu)成的應(yīng)用系統(tǒng)有較

5、大的可靠性。(2)系統(tǒng)構(gòu)建簡潔、易行,能方便的實現(xiàn)系統(tǒng)功能。(3)由于構(gòu)成的系統(tǒng)是一個計算機系統(tǒng),相當(dāng)多的功能由軟件實現(xiàn),故具有柔性特點。(4)有優(yōu)異的性能價格比。 本設(shè)計是一個基于單片機的熱水器溫度控制系統(tǒng)的電路,其結(jié)構(gòu)框圖如圖2.1:圖1.1 系統(tǒng)結(jié)構(gòu)框圖Figur1.1 The block diagram of system其硬件模塊如下:(1)單片機最小系統(tǒng)電路部分。(2)鍵盤掃描電路部分(3)數(shù)碼管溫度顯示和運行指示燈電路部分。(4)溫度采集電路部分。(5)繼電器控制部分。(6)報警部分。良好的設(shè)計方案可以減少軟件設(shè)計的工作量,提高軟件的通用性,擴展性和可讀性。本系統(tǒng)的設(shè)計方案和步驟

6、如下:(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é)合起來,即成一個較完善的系統(tǒng)。首先接通電源系統(tǒng)開始工作,系統(tǒng)開始工作后,通過按鍵設(shè)定溫度值的上限值和下限值,確定按鍵將設(shè)定的溫度值存儲到指定的地址空間,溫度傳感器開始實時檢測,調(diào)用顯示子程序顯示檢測結(jié)果,調(diào)用比較當(dāng)前顯示溫度值與開始設(shè)定的溫度值比較,如果當(dāng)前顯示值低于設(shè)定值就通過繼電器起動加熱裝置,直到達到設(shè)定值停止加熱,之后進行

7、保溫,如果溫度高于上限進行報警。第二章 硬件系統(tǒng)設(shè)計 第二章 硬件系統(tǒng)設(shè)計本次設(shè)計主要思路是通過對單片機編程將由溫度傳感器DS18B20采集的溫度外加驅(qū)動電路顯示出來,包括對繼電器的控制,進行升溫,當(dāng)溫度達到上下限蜂鳴器進行報警。P1.0開關(guān)按鈕是用于確認設(shè)定溫度的,初始按下表示開始進入溫度設(shè)定狀態(tài),然后通過P1.2和P1.4設(shè)置溫度的升降,按下P1.7時,表示確認所設(shè)定的溫度,然后轉(zhuǎn)入升溫或降溫。P2.3所接的發(fā)光二極管用于表示保溫狀態(tài),P2.5所接的發(fā)光二極管用于表示加熱狀態(tài)。P2.5接繼電器,P3.1是溫度信號線。2.1單片機最小系統(tǒng)電路因為89S52單片機內(nèi)部自帶8K的ROM和256字

8、節(jié)的RAM,因此不必構(gòu)建單片機系統(tǒng)的擴展電路。如圖3.1,單片機最小系統(tǒng)有復(fù)位電路和振蕩器電路。值得注意的一點是單片機的31腳必須接高電平,否則系統(tǒng)將不能運行。因為該引腳不接時為低電平,單片機將直接讀取外部程序存儲器,而系統(tǒng)沒有外部程序存儲器,所以必須接VCC。在按鍵兩端并聯(lián)一個電解電容,濾除交流干擾,增加系統(tǒng)抗干擾能。圖2.1 單片機最小系統(tǒng)圖Figur2.1 The diagram of SCM minimum system2.2 鍵盤電路鍵盤是單片機應(yīng)用系統(tǒng)中的主要輸入設(shè)備,單片機使用的鍵盤分為編碼鍵盤和非編碼鍵盤。編碼鍵盤采用硬件線路來實現(xiàn)鍵盤的編碼,每按下一個鍵,鍵盤能夠自動生成按鍵

9、代碼,并有去抖功能。因此使用方便,但硬件較復(fù)雜。非編碼鍵盤僅僅提供鍵開關(guān)狀態(tài),由程序來識別閉合鍵,消除抖動,產(chǎn)生相應(yīng)的代碼,轉(zhuǎn)入執(zhí)行該鍵的功能程序。非編碼鍵盤中鍵的數(shù)量較少,硬件簡單,在單片機中應(yīng)用非常廣泛。圖為按鍵和AT89S52的接線圖,檢測儀共設(shè)有4個按鍵,每個按鍵由軟件來決定其功能,4個按鍵功能分別為:(1)SW1:設(shè)定按鍵(設(shè)定按鍵)(2)SW2:加法按鍵(溫度加5)(3)SW3:減法按鍵(溫度減5)(4)SW4:退出設(shè)置鍵(系統(tǒng)初始化) 圖2.2 鍵盤接線電路Figur2.2 The wiring circuit of keyboard2.3 數(shù)碼管及指示燈顯示電路(1)數(shù)碼管顯示

10、說明各個數(shù)碼管的段碼都是單片機的數(shù)據(jù)口輸出,即各個數(shù)碼管輸入的段碼都是一樣的,為了使其分別顯示不同的數(shù)字,可采用動態(tài)顯示的方式,即先只讓最低位顯示0(含點),經(jīng)過一段延時,再只讓次低位顯示1,如此類推。由視覺暫留,只要我們的延時時間足夠短,就能夠使得數(shù)碼的顯示看起來非常的穩(wěn)定清楚,過程如表3-1。表2.1 數(shù)碼管編碼表 Table2.1 Table of digital tube段碼位碼顯示器狀態(tài)08H01H0ABH02H112H04H222H08H3A1H10H424H20H504H40H6AAH80H7本論文中使用了3個數(shù)碼管,其中前兩位使用動態(tài)掃描顯示實測溫度,在設(shè)置加熱溫度的時候,兩個

11、數(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滅,綠色LED亮,表示目前處于保溫狀態(tài),用戶可以使用熱水器;當(dāng)溫度再次下降到設(shè)定溫度5以下時,綠色LED滅,紅色加熱的LED燈亮,不斷循環(huán)。圖2.3 LED數(shù)碼管顯示電路圖Figure2.3 Circuit diagram of LED digital tube2.4 溫度采集電

12、路(1) DS18B20介紹Dallas最新單線數(shù)字溫度傳感器DS18B20簡介新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。DS18B20、DS1822“一線總線”數(shù)字化溫度傳感器同DS18B20一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為 -55+125,在-10+85范圍內(nèi),精度為0.5。DS1822的精度較差為2?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。其D

13、S18B20的管腳配置和封裝結(jié)構(gòu)如圖2.4所示。引腳定義: 1)DQ為數(shù)字信號輸入/輸出端; 2)GND為電源地; 3)VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。 圖2.4 DS18B20封裝Figure2.4 The package of DS18B20(2)DS18B20的單線(1wire bus)系統(tǒng)單線總線結(jié)構(gòu)是DS18B20的突出特點,也是理解和編程的難點。從兩個角度來理解單線總線:第一,單線總線只定義了一個信號線,而且DS18B20智能程度較低(這點可以與微控制器和SPI器件間的通信做一個比較),所以DS18B20和處理器之間的通信必然要通過嚴格的時序控制來完成。第二

14、,DS18B20的輸出口是漏級開路輸出,這里給出一個微控制器和DS18B20連接原理圖。這種設(shè)計使總線上的器件在合適的時間驅(qū)動它。顯然,總線上的器件與(wired AND)關(guān)系。這就決定:(1)微控制器不能單方面控制總線狀態(tài)。之所以提出這點,是因為相當(dāng)多的文獻資料上認為,微控制器在讀取總線上數(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、截止是為確保:在總線操作的間隙總線處于空閑狀態(tài),即高態(tài)。還確保微控制器在寫1的時候DS18B20可以正確讀入。由于DS18B20采用的是1Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。1) DS18B20的復(fù)位時序。2) DS18B20的讀時序。對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀

16、時序過程,至少需要60us才能完成。3)DS18B20的寫時序?qū)τ贒S18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。(3)DS18B20的供電方式當(dāng)DQ或VDD引腳為高電平時,這個電路便“取”的電源。寄生電路的優(yōu)點是雙重的,遠程溫度控制監(jiān)測無需本地電源,缺少正常電源條件下也可以讀ROM。為了使DS18B20能完成準確的溫度變換,當(dāng)溫度變換發(fā)生時,DQ

17、線上必須提供足夠的功率。有兩種方法確保 DS18B20 在其有效變換期內(nèi)得到足夠的電源電流。第一種方法是發(fā)生溫度變換時,在 DQ 線上提供一強的上拉,這期間單總線上不能有其它的動作發(fā)生。通過使用一個 MOSFET 把DQ線直接接到電源可實現(xiàn)這一點,這時DS18B20 工作在寄生電源工作方式,在該方式下 VDD 引腳必須連接到地。 另一種方法是 DS18B20 工作在外部電源工作方式,這種方法的優(yōu)點是在 DQ 線上不要求強的上拉,總線上主機不需要連接其它的外圍器件便在溫度變換期間使總線保持高電平,這樣也允許在變換期間其它數(shù)據(jù)在單總線上傳送。此外,在單總線上可以并聯(lián)多個 DS18B20,而且如果它

18、們?nèi)坎捎猛獠侩娫垂ぷ鞣绞?,那么通過發(fā)出相應(yīng)的命令便可以同時完成溫度變換。(4)DS18B20設(shè)計中應(yīng)注意的幾個問題DS18B20具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用接口線少等優(yōu)點,但在實際應(yīng)用中也應(yīng)注意以下幾方面的問題:較小的硬件開銷需要相對復(fù)雜的軟件進行補償,由于DS18B20 與微處理器間采用串行數(shù)據(jù)傳送。因此, 在對DS18B20 進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在DS18B20 有關(guān)資料中均未提及1Wire上所掛DS18B20數(shù)量問題,容易使人誤認為可以掛任意多個DS18B20,在實際應(yīng)用中并非如此。當(dāng)1Wire上所掛DS18B20超過8個時,

19、就需要考慮微處理器的總線驅(qū)動問題,這一點在進行多點測溫系統(tǒng)設(shè)計時要加以注意。連接DS18B20的總線電纜是有長度限制的。實際應(yīng)用中,測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC 和地線,屏蔽層在源端單點接地。本文以廣泛應(yīng)用的數(shù)字溫度傳感器DS18B20為例,說明了1Wire總線的操作過程和基本原理。事實上,基于1Wire總線的產(chǎn)品還有很多種,如1Wire總線的E2PROM、實時時鐘、電子標(biāo)簽等。他們都具有節(jié)省I/O資源、結(jié)構(gòu)簡單、開發(fā)快捷、成本低廉、便于總線擴展等優(yōu)點,因此有廣闊的應(yīng)用空間,具有較大的推廣價值。本設(shè)計將溫度傳感器DS18B20與單片機TXD引腳相連

20、,讀取溫度傳感器的數(shù)值。DS18B20與單片機連接圖如圖所示2.5所示。圖2.5 DS18B20與單片機連接圖Figure2.5 The connected diagram of DS18B20 and microcontroller2.5 電源電路采用L7805穩(wěn)壓塊,輸出為5V。電子組件要正常運作都需要電源電壓供電,一般常用的電源電壓為+5V或+12V,因為數(shù)字IC (Ingegrated Circuit:集成電路)所供給的電壓為+5V,而CMOS IC所供給的電壓為+12V,7805是一個穩(wěn)壓塊。7805穩(wěn)壓管把高電壓轉(zhuǎn)換到低電壓,7805穩(wěn)壓管具有保護單片機的作用。7805輸出端要并聯(lián)

21、上一個電解電容,濾除交流電干擾,防止損壞單片機系統(tǒng)。本設(shè)計采用兩種供電方式,一種為DC718V直流穩(wěn)壓電源變換成5V的直流電;另一種為四節(jié)干電池共6V經(jīng)二極管加壓后得到將近5V的直流電源,電源配以開關(guān)和指示燈,以方便使用。圖2.6 系統(tǒng)電源設(shè)計圖Figure2.6 The design of the system power2.6報警電路設(shè)計同時可以在系統(tǒng)里設(shè)定溫度上限值,由于加熱停止后,加熱管還有余熱當(dāng)采集到的外界溫度高于當(dāng)前所設(shè)定溫度上限值時,程序就會進入報警子程序,觸發(fā)蜂鳴器進行報警。報警電路原理圖如圖2.7所示。圖2.7 報警電路圖Figure2.7 Circuit of alarm

22、diagram圖中的三極管8550的作用是增加驅(qū)動能力,比9012的驅(qū)動電流還大些,因此選用8550。當(dāng)程序進入報警子程序時,把P2.7置0,就會觸發(fā)蜂鳴器,為了使報警聲音效果更好,對P2.7取反,發(fā)出報警嘟嚕聲音。2.7加熱管控制電路設(shè)計繼電器是常用的輸出控制接口,可以做交直流信號的輸出切換。它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動控制電路中,它實際上是用較小的電流去控制較大電流的一種“自動開關(guān)”。故在電路中起著自動調(diào)節(jié)、安全保護、轉(zhuǎn)換電路等作用。繼電器控制接點操作說明如下:(1)COM:Common,共同點。輸出控制接點的共同接點。(2)NC:Normal

23、 Close常閉點。以Com為共同點,NC與COM在平時是呈導(dǎo)通狀態(tài)的。(3)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)通,這樣就激活了連接回路,接線圖2.8所示。圖2.8 單片機控制繼電器電路圖Figure2.7 Circuit of the relay controlled of MCU 第三章 軟件系統(tǒng)設(shè)計第三章 軟件系統(tǒng)設(shè)計本系統(tǒng)采用的是循環(huán)查詢方式,來顯示和控制溫度的。主要包括四段程序的設(shè)計:DS18B20讀溫度程序,數(shù)

24、碼管的驅(qū)動程序,鍵盤掃描程序,以及報警處理程序。3.1主程序流程圖圖3.1 主程序流程圖Figure3.1 Flowchart of main program3.2各個模塊的流程圖3.2.1讀取溫度DS18B20模塊的流程由于DS18B20采用的是一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念。因此系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操

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

26、,在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。DS18B20的讀時序:(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之間能夠正

27、確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。系統(tǒng)程序設(shè)計主要包括三部分:讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、顯示溫度子程序。圖3.2讀取溫度DS18B20模塊的流程圖Figure3.2 Flowchart of the DS18B20 module reading the temperature程序代碼為:GET_TEMPER:SETB DQ;讀出轉(zhuǎn)換后的溫度值 LCALL INIT_1820;先復(fù)位DS18B20 JBFLAG1, TSS2 RET; 判斷DS1820是否存在?若DS18B20不存在則返回TSS2:MOV A,#0CCH;D

28、S18B20 已經(jīng)被檢測到!跳過ROM匹配LCALL WRITE_1820MOV A,#44H; 發(fā)出溫度轉(zhuǎn)換命令LCALL WRITE_1820LCALL DISPLAY; 這里通過調(diào)用顯示子程序?qū)崿F(xiàn)延時一段時間,等待AD轉(zhuǎn)換結(jié)束,12位的話750微秒。LCALLINIT_1820;準備讀溫度前先復(fù)位MOVA,#0CCH;跳過ROM匹配LCALLWRITE_1820MOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITE_1820LCALLREAD_18200;將讀出的溫度數(shù)據(jù)保存到35H/36HRET3.2.2鍵盤掃描處理流程此流程為鍵盤掃描處理,CPU通過檢測各數(shù)據(jù)線的狀態(tài)(0或1)就能

29、知道是否有按鍵閉合以及哪個按鍵閉合。鍵盤管理程序的功能是檢測是否有按鍵閉合,如果有按鍵閉合,消除抖動,根據(jù)鍵號轉(zhuǎn)到相應(yīng)的鍵處理程序,按鍵流程圖如圖3.3所示。 圖 3.3鍵盤掃描子程序流程圖Figure3.2 Flowchart of the subroutine of keyboard3.2.3 報警處理流程運行程序后,溫度傳感器DS18B20即可對環(huán)境進行溫度采集,并送LED數(shù)碼管顯示。我們可以在程序里設(shè)定溫度上限值,當(dāng)采集到的外界溫度高于當(dāng)前所設(shè)定溫度上限值時,程序就會進入報警子程序,觸發(fā)蜂鳴器進行報警。其程序流程圖如圖3.4所示。圖3.4 報警子程序流程圖Figure3.4 The s

30、ubroutine flowchart of alarm第四章 總 結(jié) 通過本次的設(shè)計,使我們不僅對單片機這門課程有了更深刻的認識,懂得了如何運用課本知識結(jié)合實際來完成定時器的顯示和編程方法以及數(shù)碼顯示電路的驅(qū)動方法,使我們能夠很快的適應(yīng)現(xiàn)代控制技術(shù)發(fā)展的需求,同時也提高了我們的思維能力和實際操作能力,為以后更好的走上工作崗位奠定了堅實的基礎(chǔ)。 另外,這次的設(shè)計還讓我更進一步的認識了關(guān)于AT89S52等芯片的引腳功能以及使用方法,使我學(xué)會了應(yīng)用不同的芯片來配合完成整個設(shè)計的操作。 在做硬件電路的這段時間里,從思考設(shè)計到對電路的調(diào)試經(jīng)過了許多困難。同樣在對軟件進行設(shè)計時,也可為一路坎坷。但是通過

31、對軟硬件不斷撞墻,不斷思考解決問題的過程中,我學(xué)會了很多東西,同時對單片機也有了更深的認識。在做設(shè)計的時候,很需要耐心和對事物的細心,很多時候一個簡單問題的一個簡單的疏忽就會導(dǎo)致整個電路的不工作,只有不斷的檢查不斷的調(diào)試,才能真正完成一個設(shè)計的制作。只有不斷的發(fā)現(xiàn)問題解決問題,才能從問題中改變自己,提升自己對單片機的能力。 此設(shè)計雖然能夠完成溫度的顯示和控制,但功能和精度有待于進一步提高。后可以通過加入PID算法優(yōu)化控制功能,并通過液晶顯示屏實時顯示溫度。參考文獻1 陳東光 編著單片微型計算機原理及C語言程序設(shè)計華中科技大學(xué)出版社 2004.42 武慶生 仇梅 編著 單片機原理與應(yīng)用 電子科技

32、大學(xué)出版社 1998.23 華中理工大學(xué)電子學(xué)教研室編 電子技術(shù)基礎(chǔ)數(shù)字部分(第四版)高等教育出版社 2000.64 趙晶 編著電路設(shè)計與制版Protel 99se 的高級應(yīng)用 人民郵電出版社 2000.15 趙麗娟 邵欣編著基于單片機的溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn) 機械制造6 郭炳坤 簡單的恒溫箱溫控電路J.儀器與未來,1991附錄A 系統(tǒng)源程序附錄A 系統(tǒng)源程序EMPER_LEQU29H;用于保存讀出溫度的低8位TEMPER_HEQU28H;用于保存讀出溫度的高8位FLAG1EQU38H;是否檢測到DS18B20標(biāo)志位A_BITEQU20H;數(shù)碼管個位數(shù)存放內(nèi)存位置B_BITEQU21H;數(shù)碼

33、管十位數(shù)存放內(nèi)存位置B1EQU70H;溫度小數(shù)點位A1EQU71H;設(shè)定溫度值DQ EQUP3.1;DQ為DS18B20數(shù)據(jù)位BELLEQUP2.7;/蜂鳴報警ORG0000H;單片機內(nèi)存分配申明!AJMPMAIN0;/前面的都是定義MAIN:MOVR0,#5M1:CPLP2.3ACALLDELAY125DJNZR0,M1;/此段為燈閃5次,無實際意義MAIN0:MOVA1,#80;默認加熱為80度MAIN1:LCALLD1820;調(diào)用讀溫度子程序 LCALLDISPLAY;調(diào)用數(shù)碼管顯示子程序 MOVA,29H CLRC CJNEA,A1,MAIN1_1 SETBBELL;/溫度相等,關(guān)閉蜂

34、鳴器 AJMPMAIN1_1_A;/下等不用叫蜂鳴器MAIN1_1:JCMAIN1_2;為1轉(zhuǎn)移,表示小于設(shè)定溫度 CPLBELL;蜂鳴器斷續(xù)鳴叫MAIN1_1_A:CLRP2.3;/下面是表示沒達到溫度 SETBP2.5 AJMPMAIN2;/主要是檢測溫度是否小于設(shè)定的溫度,小于,則開發(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;/再次查看 CL

35、RP2.3 JNBP1.0,$;/等按鍵完全松手才進入! SETBP2.3 SETBP2.5;/檢測到P1.0按鍵后后進入設(shè)定溫度MAIN2_1:ACALLDISPLAY1 JBP1.2, MAIN2_2 ACALLDELAY125 JBP1.2, MAIN2_2 JNBP1.2, $ 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:

36、JBP1.4, MAIN2_3ACALLDELAY125JBP1.4, MAIN2_3JNBP1.4, $MOVA, A1CJNEA, #99, ZY1MOVB, #4AJMPZY2ZY1:MOVB, #5ZY2:CLRCMOVA, A1SUBBA, BMAIN2_2_1:JNCMAIN2_2_2MOVA1, #0AJMPMAIN2_3;/上面這一段是-5度按鍵,按下-5度MAIN2_2_2:MOVA1, AMAIN2_3:JBP1.6, MAIN2_1ACALLDELAY125JBP1.6, MAIN2_1CLRP2.3JNBP1.6, $SETBP2.3AJMPMAIN1;/上面這一段是退

37、出的意思的!D1820:LCALLGET_TEMPER;調(diào)用讀溫度子程序MOVB1, 29HMOVA, 29HMOVC,40H;將28H中的最低位移入CRRCAMOVC, 41HRRCAMOVC,42HRRCAMOVC, 43HRRCAMOV29H, ARET;/上面這一段是讀取溫度后進行轉(zhuǎn)換的意思!INIT_1820:SETBDQ;這是DS18B20復(fù)位初始化子程序NOPCLRDQ;主機發(fā)出延時復(fù)位脈沖MOVR1,#3TSR1:MOVR0, #107DJNZR0, $DJNZR1, TSR1SETBDQ;然后拉高數(shù)據(jù)線NOPNOPNOPNOPMOVR0, #25HTSR2:JNBDQ,TSR

38、3;等待DS18B20回應(yīng)DJNZR0, TSR2LJMPTSR4;延時TSR3:SETBFLAG1; 置標(biāo)志位,表示DS1820存在LJMPTSR5TSR4:CLRFLAG1; 清標(biāo)志位,表示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)被檢測到!跳過R

39、OM匹配LCALLWRITE_1820MOVA,#44H;發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE_1820LCALLDISPLAY;這里通過調(diào)用顯示子程序?qū)崿F(xiàn)延時一段時間,等待A/D轉(zhuǎn)換結(jié)束,12位的話750微秒LCALLINIT_1820;準備讀溫度前先復(fù)位MOVA,#0CCH;跳過ROM匹配LCALLWRITE_1820MOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITE_1820LCALLREAD_18200;將讀出的溫度數(shù)據(jù)保存到28H/29HRETWRITE_1820:MOVR2,#8;一共8位數(shù)據(jù)CLRC;寫DS18B20的子程序(有具體的時序要求)WR1:CLRDQMOVR3, #6DJNZR3, $RRCAMOVDQ, CMOVR3, #23DJNZR3,$SETBDQNOPDJNZR2,WR1SETBDQRETREAD_18200:MOVR4,#2;將溫度高位和低位從DS18B20中讀出MOVR1,#29H;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)RE00:MOVR2,#8;數(shù)據(jù)一共有8位RE01:C

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論