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

下載本文檔

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

文檔簡介

1、基于單片機(jī)的水溫控制器的設(shè)計摘 要本系統(tǒng)的設(shè)計可以用于熱水器溫度控制系統(tǒng)和飲水機(jī)等各種電器電路 中。它以單片機(jī) A T89S52為核心,通過 3個數(shù)碼管顯示溫度和 4個按鍵實(shí) 現(xiàn)人機(jī)對話,使用單總線溫度轉(zhuǎn)換芯片 DS18B20實(shí)時采集溫度并通過數(shù)碼 管顯示,并提供各種運(yùn)行指示燈用來指示系統(tǒng)現(xiàn)在所處狀態(tài),如:溫度設(shè) 置、加熱、停止加熱等,整個系統(tǒng)通過四個按鍵來設(shè)置加熱溫度和控制運(yùn) 行模式。關(guān)鍵詞:單片機(jī);數(shù)碼管顯示;單總線; DS18B20THE DESIGN OF THE CONTROLLER FORWATER TEMPERATURE BASED ON MCUABSTRACTT his sys

2、tem can be used in the design of the water heater temperature control system and various electrical appliances such as rice cookers circuit. The core of it is a microcomputer AT89S52. It realize interactive between people and device by three digital display temperature and four keys. The temperature

3、 conversion 1 -WIRE BUS chip DS18B20 real-time sampling and display the temperature through the digital and provide various indicator to indicate different states of the system now,eg. settings temperature,heating,stop etc. The whole system use four keys to set up the heating temperature and control

4、 mode.KEYWORDS: Microcomputer; Digital Display; 1-WIRE BUS; DS18B20目 錄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.1硬件電路分析和設(shè)計報告 . - 4 -3.1.1單片機(jī)最小系統(tǒng)電路 . - 4 -3.1.2 鍵盤電路 . - 5 -3.1.3 數(shù)碼管及指示燈顯示電路 . - 5 -3.1.4 溫度采集電路 . - 7 -3.1.5 電源電路 . - 11 -3.1.6

5、報警電路設(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 系統(tǒng)操作說明 . - 21 -5.4數(shù)據(jù)測試 . - 21 -總 結(jié) . - 23 -致 謝 . 錯 誤!未定義書簽。 參考文獻(xiàn) . - 24 -附錄一:系

6、統(tǒng)源程序 . - 25 -附錄二:系統(tǒng)硬件總圖 . - 34 -基于單片機(jī)的水溫控制器的設(shè)計1 緒論本系統(tǒng)的設(shè)計可以用于水溫控制系統(tǒng)和電飯煲等各種電器電路中。它以單片機(jī) AT89S52為核心,通過數(shù)碼管顯示溫度和語音提示實(shí)現(xiàn)人機(jī)對話,使用溫度轉(zhuǎn)換芯片 DS18B20實(shí)時采集溫度并通過數(shù)碼管顯示, 并提供各種運(yùn)行指示燈用來指示系統(tǒng)現(xiàn)在所 處狀態(tài),如:溫度設(shè)置、加熱、停止加熱等,整個系統(tǒng)通過四個按鍵來設(shè)置加熱溫度和 控制運(yùn)行模式。溫度控制系統(tǒng)可以說是無所不在,熱水器系統(tǒng)、空調(diào)系統(tǒng)、冰箱、電飯煲、電風(fēng)扇 等家電產(chǎn)品以至手持式高速高效的計算機(jī)和電子設(shè)備, 均需要提供溫度控制功能。 以計 算機(jī)為例,當(dāng)中

7、的中央處理器的運(yùn)行速度愈快,所耗散的熱量便愈多,為免計算機(jī)系統(tǒng) 過熱而受損,有關(guān)系統(tǒng)必須加強(qiáng)溫度過高保護(hù)功能。傳統(tǒng)的溫度采集電路相當(dāng)復(fù)雜,需要經(jīng)過溫度采集、信號放大、濾波、 AD 轉(zhuǎn)換等 一系列工作才能得到溫度的數(shù)字量,并且這種方式不僅電路復(fù)雜,元器件個數(shù)多,而且 線性度和準(zhǔn)確度都不理想, 抗干擾能力弱。 現(xiàn)在常用的溫度傳感器芯片不但功率消耗低、 準(zhǔn)確率高, 而且比傳統(tǒng)的溫度傳感器有更好的線性表現(xiàn), 最重要的一點(diǎn)是使用起來方便。 自動控制儀器儀表總的發(fā)展趨勢是高性能、數(shù)字化、集成化、智能化和網(wǎng)絡(luò)化。智 能溫度控制系統(tǒng)的設(shè)計是為了滿足市場對成本低、性能穩(wěn)定、可遠(yuǎn)程監(jiān)測、控制現(xiàn)場溫 度的需求而做的

8、課題,具有較為廣闊的市場前景。本系統(tǒng)的核心控制芯片選用的是 51系列單片機(jī) AT89S52,單片機(jī)在各個技術(shù)領(lǐng)域 中的迅猛發(fā)展,與單片機(jī)所構(gòu)成的計算機(jī)應(yīng)用系統(tǒng)的特點(diǎn)有關(guān):·單片機(jī)構(gòu)成的應(yīng)用系統(tǒng)有較大的可靠性。·系統(tǒng)構(gòu)建簡潔、易行,能方便的實(shí)現(xiàn)系統(tǒng)功能。·由于構(gòu)成的系統(tǒng)是一個計算機(jī)系統(tǒng), 相當(dāng)多的功能由軟件實(shí)現(xiàn), 故具有柔性特 點(diǎn)。·有優(yōu)異的性能價格比。2 系統(tǒng)總體設(shè)計設(shè)計并制作一個基于單片機(jī)的熱水器溫度控制系統(tǒng)的電路,其結(jié)構(gòu)框圖如圖 2-1:圖 2-1 系統(tǒng)結(jié)構(gòu)框圖(1 單片機(jī)最小系統(tǒng)電路部分(2 鍵盤掃描電路部分(3 數(shù)碼管溫度顯示和運(yùn)行指示燈電路部分

9、(4 溫度采集電路部分(5 繼電器控制部分(6 報警部分2.2 軟件總體設(shè)計良好的設(shè)計方案可以減少軟件設(shè)計的工作量, 提高軟件的通用性, 擴(kuò)展性和可讀性。 本系統(tǒng)的設(shè)計方案和步驟如下:(1 根據(jù)需求按照系統(tǒng)的功能要求,逐級劃分模塊。(2 明確各模塊之間的數(shù)據(jù)流傳遞關(guān)系, 力求數(shù)據(jù)傳遞少, 以增強(qiáng)各模塊的獨(dú)立性, 便于軟件編制和調(diào)試。 (3 確定軟件開發(fā)環(huán)境,選擇設(shè)計語言,完成模塊功能設(shè)計,并分別調(diào)試通過。(4 按照開發(fā)式軟件設(shè)計結(jié)構(gòu), 將各模塊有機(jī)的結(jié)合起來, 即成一個較完善的系統(tǒng)。 首先接通電源系統(tǒng)開始工作, 系統(tǒng)開始工作后, 通過按鍵設(shè)定溫度值的上限值和下 限值,確定按鍵將設(shè)定的溫度值存儲

10、到指定的地址空間,溫度傳感器開始實(shí)時檢測,調(diào) 用顯示子程序顯示檢測結(jié)果, 調(diào)用比較當(dāng)前顯示溫度值與開始設(shè)定的溫度值比較, 如果 當(dāng)前顯示值低于設(shè)定值就通過繼電器起動加熱裝置, 直到達(dá)到設(shè)定值停止加熱, 之后進(jìn) 行保溫,如果溫度高于上限進(jìn)行報警。3 硬件系統(tǒng)設(shè)計本次設(shè)計主要思路是通過對單片機(jī)編程將由溫度傳感器 DS18B20采集的溫度外加 驅(qū)動電路顯示出來,包括對繼電器的控制,進(jìn)行升溫,當(dāng)溫度達(dá)到上下限蜂鳴器進(jìn)行報 警。 P1.7開關(guān)按鈕是用于確認(rèn)設(shè)定溫度的,初始按下表示開始進(jìn)入溫度設(shè)定狀態(tài),然后 通過 P1.5和 P1.6設(shè)置溫度的升降,再次按下 P1.7時,表示確認(rèn)所設(shè)定的溫度,然后轉(zhuǎn)入 升

11、溫或降溫。 P2.3所接的發(fā)光二極管用于表示加熱狀態(tài), P2.5所接的發(fā)光二極管用于表 示保溫狀態(tài)。 P2.3接繼電器。 P3.1是溫度信號線。整個電路都是通過軟件控制實(shí)現(xiàn)設(shè)計 要求。因?yàn)?89S52單片機(jī)內(nèi)部自帶 8K 的 ROM 和 256字節(jié)的 RAM ,因此不必構(gòu)建單片機(jī)系統(tǒng) 的擴(kuò)展電路。如圖 3-1,單片機(jī)最小系統(tǒng)有復(fù)位電路和振蕩器電路。值得注意的一點(diǎn)是 單片機(jī)的 31腳 VPEA /必須接高電平,否則系統(tǒng)將不能運(yùn)行。因?yàn)樵撃_不接時為低電平, 單片機(jī)將直接讀取外部程序存儲器,而系統(tǒng)沒有外部程序存儲器,所以 VPEA /必須接 VCC 圖 3-1 單片機(jī)最小系統(tǒng)圖3.1.2 鍵盤電路鍵

12、盤是單片機(jī)應(yīng)用系統(tǒng)中的主要輸入設(shè)備, 單片機(jī)使用的鍵盤分為編碼鍵盤和非編 碼鍵盤。編碼鍵盤采用硬件線路來實(shí)現(xiàn)鍵盤的編碼,每按下一個鍵,鍵盤能夠自動生成 按鍵代碼,并有去抖功能。因此使用方便,但硬件較復(fù)雜。非編碼鍵盤僅僅提供鍵開關(guān) 狀態(tài),由程序來識別閉合鍵,消除抖動,產(chǎn)生相應(yīng)的代碼,轉(zhuǎn)入執(zhí)行該鍵的功能程序。 非編碼鍵盤中鍵的數(shù)量較少,硬件簡單,在單片機(jī)中應(yīng)用非常廣泛。圖為按鍵和 AT89S52的接線圖,檢測儀共設(shè)有 4個按鍵,每個按鍵由軟件來決定其 功能, 4個按鍵功能分別為:(1 SW1:設(shè)定按鍵 (設(shè)定按鍵 (2 SW2:加法按鍵 (當(dāng)前位加 5(3 SW3:減法按鍵 (當(dāng)前位減 5(4 S

13、W4:退出設(shè)置鍵 (系統(tǒng)初始化 12345673.1.3 數(shù)碼管及指示燈顯示電路(1數(shù)碼管顯示說明各個數(shù)碼管的段碼都是單片機(jī)的數(shù)據(jù)口輸出,即各個數(shù)碼管輸入的段碼都是一樣的,為了使其分別顯示不同的數(shù)字,可采用動態(tài)顯示的方式,即先只讓最低位顯示 0(含 點(diǎn) ,經(jīng)過一段延時,再只讓次低位顯示 1,如此類推。由視覺暫留,只要我們的延時時 間足夠短,就能夠使得數(shù)碼的顯示看起來非常的穩(wěn)定清楚,過程如表 3-1。 本論文中使用了 3個數(shù)碼管,其中前兩位使用動態(tài)掃描顯示實(shí)測溫度,在設(shè)置加熱 溫度的時候,兩個數(shù)碼管是閃爍,以提示目前處在溫度設(shè)置狀態(tài)。第三位數(shù)碼管靜態(tài)顯 示符號“”。(2運(yùn)行指示燈說明本熱水器溫度

14、控制系統(tǒng)中共使用到 3個 LED 指示燈和 3個數(shù)碼管。右上角的紅色 LED 是電源指示燈;數(shù)碼管右邊的紅色 LED 是加熱指示燈,當(dāng)剛開機(jī)或溫度降到設(shè)定溫度 5以下時, 該燈會亮,表示目前處于加熱狀態(tài);當(dāng)溫度上升到設(shè)定溫度時,該 LED 滅,同時數(shù)碼管 右邊的綠色 LED 亮,表示目前處于保溫狀態(tài),用戶可以使用熱水器;當(dāng)溫度再次下降到 設(shè)定溫度 5以下時,綠色 LED 滅,紅色加熱的 LED 燈亮,不斷循環(huán)。3.1.4 溫度采集電路(1 DS18B20介紹Dallas 最新單線數(shù)字溫度傳感器 DS18B20簡介新的“一線器件”體積更小、適用電 壓更寬、 更經(jīng)濟(jì)。 Dallas 半導(dǎo)體公司的數(shù)

15、字化溫度傳感器 DS1820是世界上第一片支持 “一 線總線”接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感 器網(wǎng)絡(luò), 為測量系統(tǒng)的構(gòu)建引入全新概念。 DS18B20、 DS1822“一線總線”數(shù)字化溫度 傳感器同 DS18B20一樣, DS18B20也支持“一線總線”接口,測量溫度范圍為 -55 +125,在 -10 +85范圍內(nèi) , 精度為±0.5。 DS1822的精度較差為±2。現(xiàn)場溫 度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。其 DS18B20的管 腳配置和封裝結(jié)構(gòu)如圖 3-4所示。 圖 3-4 DS18B20封裝引腳定義:

16、 DQ為數(shù)字信號輸入 /輸出端; GND為電源地; VDD為外接供電電源輸入端(在寄生電源接線方式時接地。(2 DS18B20的單線(1-wire bus系統(tǒng)單線總線結(jié)構(gòu)是 DS18B20的突出特點(diǎn),也是理解和編程的難點(diǎn)。從兩個角度來理解 單線總線:第一,單線總線只定義了一個信號線,而且 DS18B20智能程度較低(這點(diǎn)可 以與微控制器和 SPI 器件間的通信做一個比較,所以 DS18B20和處理器之間的通信必 然要通過嚴(yán)格的時序控制來完成。第二, DS18B20的輸出口是漏級開路輸出,這里給出 一個微控制器和 DS18B20連接原理圖。這種設(shè)計使總線上的器件在合適的時間驅(qū)動它。 顯然,總線上

17、的器件與(wired AND 關(guān)系。這就決定:(1微控制器不能單方面控 制總線狀態(tài)。之所以提出這點(diǎn),是因?yàn)橄喈?dāng)多的文獻(xiàn)資料上認(rèn)為,微控制器在讀取總線 上數(shù)據(jù)之前的 I/O口的置 1操作是為了給 DS18B20一個發(fā)送數(shù)據(jù)的信號。這是一個錯誤的 觀點(diǎn)。如果當(dāng)前 DS18b20發(fā)送 0,即使微控制器 I/O口置 1,總線狀態(tài)還是 0; 置 1操作是為 了是 I/O口截止(cut off,以確保微控制器正確讀取數(shù)據(jù)。(2除了 DS18B20發(fā)送 0的 時間段,其他時間其輸出口自動截止。自動截止是為確保:1時,在總線操作的間隙總 線處于空閑狀態(tài),即高態(tài)。 2時,確保微控制器在寫 1的時候 DS18B2

18、0可以正確讀入。 由于 DS18B20采用的是 1-Wire 總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳 輸,而對 AT89S52單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對 DS18B20芯片的訪問。 DS18B20的復(fù)位時序,如圖 3-5圖 3-5 DS18B20的復(fù)位時序圖 DS18B20的讀時序?qū)τ?DS18B20的讀時序分為讀 0時序和讀 1時序兩個過程。對于 DS18B20的讀時隙是從主機(jī)把單總線拉低之后,在 15秒之內(nèi)就得釋放單總線, 以讓 DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。 DS18B20在完成一個讀時序過程,至少需要 6

19、0us 才能完成。 DS18B20的讀時序圖如圖 3-6所示。 圖 3-6 DS18B20的讀時序 DS18B20的寫時序?qū)τ?DS18B20的寫時序仍然分為寫 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中示出了 DS18B20的寄生

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

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

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

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

24、為 5V 。電子組件要正常運(yùn)作都需要電源電壓供電,一般常 用的電源電壓為 +5V或 +12V,因?yàn)閿?shù)字 IC (Ingegrated Circuit:集成電路所供給的電 壓為 +5V, 而 CMOS IC所供給的電壓為 +12V, 7805是一個穩(wěn)壓塊。 7805穩(wěn)壓管把高電壓 轉(zhuǎn)換到低電壓, 7805穩(wěn)壓管具有保護(hù)單片機(jī)的作用。 L7805輸出端要并聯(lián)上一個電解電 容, 濾除交流電干擾, 防止損壞單片機(jī)系統(tǒng)。 本設(shè)計采用兩種供電方式, 一種為 DC718V直流穩(wěn)壓電源變換成 5V 的直流電;另一種為四節(jié)干電池共 6V 經(jīng)二極管加壓后得到將近5V 的直流電源, 電源配以開關(guān)和指示燈, 以方便使

25、用。 黃色發(fā)光二極管表示保溫, 紅色 的表示加熱狀態(tài)。 同時可以在系統(tǒng)里設(shè)定溫度上限值, 由于加熱停止后, 加熱管還有余熱當(dāng)采集到的 外界溫度高于當(dāng)前所設(shè)定溫度上限值時, 程序就會進(jìn)入報警子程序, 觸發(fā)蜂鳴器進(jìn)行報 警。報警電路原理圖如圖所示。 FM1圖 3-12 報警電路圖繼電器是常用的輸出控制接口, 可以做交直流信號的輸出切換。 它具有控制系統(tǒng) (又 稱輸入回路和被控制系統(tǒng)(又稱輸出回路,通常應(yīng)用于自動控制電路中,它實(shí)際上 是用較小的電流去控制較大電流的一種“自動開關(guān)”。 故在電路中起著自動調(diào)節(jié)、 安全 保護(hù)、轉(zhuǎn)換電路等作用。繼電器控制接點(diǎn)操作說明如下: COM :Common ,共同點(diǎn)。

26、輸出控制接點(diǎn)的共同接點(diǎn)。 NC :Normal Close常閉點(diǎn)。 以 Com 為共同點(diǎn), NC 與 COM 在平時是呈導(dǎo)通狀態(tài)的。 NO :Normal Open常開點(diǎn)。 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 單片機(jī)控制繼電器電路圖4 系統(tǒng)軟件設(shè)計 圖 4-1 主程序流程圖4.2.1讀取溫度 DS18B20模塊的流程由于 DS18B20采用的是一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對 AT89S

27、52單片機(jī)來 說,硬件上并不支持單總線協(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)點(diǎn),DS18B20必須首先調(diào)用啟動溫度轉(zhuǎn)換函數(shù),根據(jù)數(shù)據(jù)手冊上對應(yīng)轉(zhuǎn)換時間來超作, 如為 12位轉(zhuǎn)換,則應(yīng)該是最大 750mS ,另外在對 DS18B20超作時,時序要求非常嚴(yán)格, 因

28、此最好禁止系統(tǒng)中斷。由于 DS18B20是在一根 I/O線上讀寫數(shù)據(jù), 因此, 對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要 求。 DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了 幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機(jī)作為主設(shè)備,而 每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動啟動寫時序開始, 如果要求單總線器件回送數(shù) 據(jù),在進(jìn)行寫命令后,主機(jī)需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在 先。DS18B20的讀時序:(1對于 DS18B20的讀時序分為讀 0時序和讀 1時序兩個過程。(2對于 DS18B20的讀時隙是從主機(jī)把單總線拉低之后,在 15秒之

29、內(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)就得釋放單總線。系統(tǒng)程序設(shè)計主要包括三部分:讀出溫度子程序 、 溫度轉(zhuǎn)換命令子程序、顯示溫 度子程序。

30、 圖 4-2讀取溫度 DS18B20模塊的流程圖程序代碼為:GET_TEMPER: SETB DQ ;讀出轉(zhuǎn)換后的溫度值LCALL INIT_1820 ; 先復(fù)位 DS18B20JB FLAG1,TSS2RET ; 判斷 DS1820是否存在 ? 若 DS18B20不存在則返回TSS2: MOV A,#0CCH ;DS18B20已經(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微秒LCA

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

32、器 DS18B20即可對環(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ì)檢查所接電路, 按照硬件原理圖接線, 理論上是能實(shí)現(xiàn)的, 如果數(shù)碼管不顯示, 則應(yīng)該檢查線路是否正確,或是因?yàn)閱纹瑱C(jī)沒有工作,還有集電極和發(fā)射極是否接對。 如果只顯示兩個八,則可能是 DS18B20沒有接正確,檢查上拉電路是否接好。另外要注 意的是,由單片機(jī)輸出的控制信號比較小,需要進(jìn)行放大才能驅(qū)動繼電器工

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

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

35、若按“溫度設(shè)置”鍵,則進(jìn)入預(yù)加熱溫度設(shè)置界面, 此時數(shù)碼管閃爍顯示預(yù)設(shè)置溫度, 此時通過按鍵“+”和“-”進(jìn)行設(shè)置溫度, 預(yù)設(shè)置 溫度按“ 5”遞增或遞減,設(shè)置好溫度后再按一次“溫度設(shè)置”鍵確定,單片機(jī)保存預(yù) 設(shè)置溫度, 并開始加熱。 此時單片機(jī)通過數(shù)碼管顯示實(shí)時檢測的溫度并和預(yù)設(shè)置溫度進(jìn) 行對比, 如果實(shí)測溫度大于或等于預(yù)設(shè)置溫度, 則單片機(jī)發(fā)出停止加熱信號并熄滅加熱 指示燈,點(diǎn)亮保溫指示燈,且當(dāng)超過預(yù)設(shè)溫度時發(fā)出報警;當(dāng)溫度下降到預(yù)設(shè)置溫度以 下 5度時,單片機(jī)再次發(fā)出加熱信號,同時熄滅保溫指示燈,點(diǎn)亮加熱指示燈,依次循 環(huán)控制。取一桶凈水,改變它的溫度,觀察數(shù)碼管上顯示的溫度值,并用溫度

36、計進(jìn)行測溫, 記錄兩組數(shù)據(jù),比較差異。記錄表如下:表 5-1 靜態(tài)溫度數(shù)據(jù)測試表 有測試數(shù)據(jù)可知,本系統(tǒng)測溫結(jié)果與溫度計測溫基本一致,能滿足設(shè)計,證明了設(shè) 計的合理性。進(jìn)行溫度設(shè)定,通過設(shè)定溫度值(75,觀察加熱管的加熱情況,以及數(shù)碼管的 顯示值,再用溫度計測量水溫,每隔一段時間記錄一次數(shù)據(jù),將兩組值進(jìn)行比較。記錄 表如下:(設(shè)定前溫度為 25通過上表可看出在加熱的過程中 , 顯示的溫度與實(shí)測的溫度近似一樣 , 說明系統(tǒng)的設(shè) 計達(dá)到精度要求 , 但還是略有偏差 , 基本不影響設(shè)計結(jié)果。整個測試過程表明設(shè)計達(dá)到了任務(wù)書的要求, 證明了該方案是合理可行的, 順利完 成了設(shè)計,達(dá)到了預(yù)想結(jié)果。 總

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

38、西,同時對單片機(jī)也有了更深的認(rèn)識。在做設(shè)計的時 候,很需要耐心和對事物的細(xì)心,很多時候一個簡單問題的一個簡單的疏忽就會導(dǎo)致 整個電路的不工作,只有不斷的檢查不斷的調(diào)試,才能真正完成一個設(shè)計的制作。只 有不斷的發(fā)現(xiàn)問題解決問題,才能從問題中改變自己,提升自己對單片機(jī)的能力。 此設(shè)計雖然能夠完成溫度的顯示和控制, 但功能和精度有待于進(jìn)一步提高。 以后可 以通過加入 PID 算法優(yōu)化控制功能,并通過液晶顯示屏實(shí)時顯示溫度。參考文獻(xiàn)l 樂建波 編著溫度控制系統(tǒng)化學(xué)工業(yè)出版社2 美 Ken C.Pohlmann 數(shù)字音頻原理及應(yīng)用 . 蘇菲 . 第 4版 . 北京 :電子工業(yè)出版社, 2005,26 譚

39、浩強(qiáng) 編著 C 程序設(shè)計 . 北京 :清華大學(xué)出版社 1999年11 王彬 任艷穎 編著 Digital IC System Design 西安電子科技大學(xué)出版社 2005.9 12 趙麗娟 邵欣編著基于單片機(jī)的溫度監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn) 機(jī)械制造13 郭炳坤 簡單的恒溫箱溫控電路 J.儀器與未來 ,199115(美 Bjarne Stroustrup THE C+ PROGRAMMING LANGUAGE , SPECIAL EDITION Addison Wesley 1997附錄一:系統(tǒng)源程序EMPER_L EQU 29H; 用于保存讀出溫度的低 8位 TEMPER_H E QU 28H;

40、 用于保存讀出溫度的高 8位 FLAG1 EQU 38H; 是否檢測到 DS18B20標(biāo)志位 A_BIT EQU 20H; 數(shù)碼管個位數(shù)存放內(nèi)存位置 B_BIT EQU 21H; 數(shù)碼管十位數(shù)存放內(nèi)存位置 B1 EQU 70H; 溫度小數(shù)點(diǎn)位A1 EQU 71H; 設(shè)定溫度值DQ EQU P3.1 ;DQ 為 DS18B20數(shù)據(jù)位BELL EQU P2.7 ;/蜂鳴報警ORG 0000H ; 單片機(jī)內(nèi)存分配申明 !AJMP MAIN0;/前面的都是定義MAIN: MOV R0,#10ACALL DELAY125DJNZ R0,M1 ;/此段為燈閃 5次 , 無實(shí)際意義 ;/MAIN0: M O

41、V A1,#80 ; 默認(rèn)加熱為 80度MAIN1: L CALL D1820 ; 調(diào)用讀溫度子程序LCALL DISPLAY ; 調(diào)用數(shù)碼管顯示子程序 MOV A,29HCLR CCJNE A,A1,MAIN1_1SETB BELL ;/溫度相等 , 關(guān)閉蜂鳴器AJMP MAIN1_1_A ;/下等不用叫蜂鳴器 MAIN1_1: JC MAIN1_2 ; 為 1轉(zhuǎn)移 , 表示小于設(shè)定溫度 CPL BELL ; 蜂鳴器斷續(xù)鳴叫AJMP MAIN2MAIN1_2: SETB BELL ;/關(guān)閉蜂鳴器CLR P2.5 ;/開發(fā)熱管;/上面的是大于 , 關(guān)發(fā)熱管ACALL DELAY125 ;/延時

42、防抖動 , 常用的手法 , 網(wǎng)上很多介紹的JB P1.0,MAIN1;/再次查看JNB P1.0,$ ;/等按鍵完全松手才進(jìn)入 !MAIN2_1: ACALL DISPLAY1JB P1.2,MAIN2_2ACALL DELAY125JB P1.2,MAIN2_2JNB P1.2,$MOV A,#5ADD A,A1CLR CCJNE A,#100,MAIN2_1_1MOV A,#99AJMP MAIN2_1_3;/上面這一段是 +5度按鍵 , 按下 +5度MAIN2_1_1: JC MAIN2_1_3MAIN2_1_2: CLR CMOV A,#99MAIN2_1_3: MOV A1,AMAI

43、N2_2: JB P1.4,MAIN2_3ACALL DELAY125JB P1.4,MAIN2_3JNB P1.4,$MOV A,A1CJNE A,#99,ZY1MOV B,#4AJMP ZY2ZY1: MOV B,#5ZY2: CLR CMOV A,A1SUBB A,BMAIN2_2_1: JNC MAIN2_2_2MOV A1,#0AJMP MAIN2_3;/上面這一段是 -5度按鍵 , 按下 -5度 MAIN2_2_2: MOV A1,AMAIN2_3: JB P1.6,MAIN2_1ACALL DELAY125JB P1.6,MAIN2_1JNB P1.6,$AJMP MAIN1;/

44、上面這一段是退出的意思的 !D1820: LCALL GET_TEMPER ; 調(diào)用讀溫度子程序 MOV B1,29HMOV A,29HMOV C,40H ; 將 28H 中的最低位移入 C RRC AMOV C,41HMOV C,42HRRC AMOV C,43HRRC AMOV 29H,AMOV A,B1MOV B,#10HMUL ABMOV B,#10HDIV ABMOV B,#10MUL ABMOV B,#10HDIV ABMOV B1,ARET;/上面這一段是讀取溫度后進(jìn)行轉(zhuǎn)換的意思 !;/;/;/INIT_1820: SETB DQ ;這是 DS18B20復(fù)位初始化子程序 NOPC

45、LR DQ ;主機(jī)發(fā)出延時 537微秒的復(fù)位低脈沖 MOV R1,#3TSR1: MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB DQ ;然后拉高數(shù)據(jù)線NOPNOPNOPMOV R0,#25HTSR2: JNB DQ,TSR3 ; 等待 DS18B20回應(yīng)DJNZ R0,TSR2LJMP TSR4 ; 延時TSR3: SETB FLAG1 ; 置標(biāo)志位 , 表示 DS1820存在LJMP TSR5TSR4: CLR FLAG1 ; 清標(biāo)志位 , 表示 DS1820不存在LJMP TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6 ; 時序要

46、求延時一段時間TSR7: SETB DQRETGET_TEMPER: SETB DQ ;讀出轉(zhuǎn)換后的溫度值LCALL INIT_1820 ; 先復(fù)位 DS18B20JB FLAG1,TSS2RET ; 判斷 DS1820是否存在 ? 若 DS18B20不存在則返回TSS2: MOV A,#0CCH ;DS18B20已經(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微秒LCALL INIT_1820 ; 準(zhǔn)備讀溫度前先復(fù)位MOV A,#0CCH ; 跳過 ROM 匹配LCALL WRITE_1820MOV A,#0BEH ; 發(fā)出讀溫度命令LCALL WRITE_1820LCALL READ_18200 ; 將讀出的溫度數(shù)據(jù)保存到 35H/36HRETWRITE_1820: MOV R2,#8 ; 一共 8位數(shù)據(jù)CLR C ; 寫 DS18B20的子程序 (有具體的時序要求 WR1: CLR DQMOV R3,#6DJNZ R3,$RRC AMOV DQ,CMOV R

溫馨提示

  • 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

提交評論