畢業(yè)設(shè)計---基于at89c52的太陽能熱水器控制系統(tǒng)_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  基于AT89C52的太陽能熱水器控制系統(tǒng)</p><p>  The Control System of the Solar Energy Water-heater based on AT89C52</p><p>  畢業(yè)論文(設(shè)計、創(chuàng)作)開題報告</p><p>  (由學(xué)生本人認(rèn)真填寫)</p><p> 學(xué)號姓名

2、導(dǎo)師姓名職稱</p><p> 開題時間2009年12月1日</p><p> 課題題目基于AT89C52的太陽能熱水器控制系統(tǒng)</p><p> 課題來源□導(dǎo)師指定 ■自定 □其他來源</p><p> 課題的目的、意義以及和本課題有關(guān)的國內(nèi)外現(xiàn)狀分析:1、目的:近些年來,太陽能的開發(fā)和利用已越來越受到人們的重視和青睞,因為節(jié)能、

3、環(huán)保、使用方便等因素,太陽能熱水器發(fā)展速度更是迅猛。安裝太陽能熱水器已成為房產(chǎn)開發(fā)商售房的誘人條件之一。在農(nóng)村,隨著農(nóng)民生活水平的提高,太陽能熱水器漸漸成為必備的家用裝置。所以,普通太陽能熱水器每次使用前需排水;不可缺水,空曬情況下上水會爆炸;冬天水溫不夠,需用電等問題急需解決。本設(shè)計通過單片機(jī)AT89C52控制A/D轉(zhuǎn)換芯片、發(fā)光二極管、LED驅(qū)動芯片實現(xiàn)熱水器液位及溫度檢測和顯示,并實現(xiàn)相應(yīng)控制。使用戶省心,使用方便,智能運行,用戶

4、不必做任何操作。2、意義:解決太陽能熱水器現(xiàn)存的一些問題,實現(xiàn)一定程度的智能控制,方便用戶,安全高效。3、現(xiàn)狀:進(jìn)入二十一世紀(jì)以來,隨著生產(chǎn)工藝和生產(chǎn)技術(shù)的發(fā)展,人們對產(chǎn)品的要求越來越高。而隨著新型電子技術(shù)和微型計算機(jī)的廣泛應(yīng)用與普及, 單片機(jī)控制系統(tǒng)以其控制精度高, 性能穩(wěn)定、可靠, 設(shè)置操作方便, 造價低等特點, 被應(yīng)用到太陽能熱水器的控制中來,增強(qiáng)了系統(tǒng)的可視性, 使得溫度及液位檢測和顯示系統(tǒng)更加智能化、人性化。</p>

5、;<p> 研究目標(biāo)、研究內(nèi)容和準(zhǔn)備解決的問題:1.目標(biāo):通過設(shè)計一個基于AT89C52的太陽能熱水器的溫度和液位顯示及簡單的控制系統(tǒng),從而實現(xiàn)一定程度的智能控制,方便用戶使用。2.內(nèi)容:利用集成溫度傳感器DS18B20和液位傳感器LM1042分別進(jìn)行溫度檢測和液位檢測后,將檢測到的信息傳送給單片機(jī),單片機(jī)經(jīng)過相應(yīng)的處理控制電磁閥的開啟及溫度和液位的顯示。3.準(zhǔn)備解決的問題:如何實現(xiàn)溫度及液位的顯示,如何實現(xiàn)智能上水、缺水

6、上水和手動上水的功能,如何實現(xiàn)輸水管道排空水控制,在水箱上水或洗浴完畢后自動把上水管道內(nèi)的水排出。</p><p>  畢業(yè)論文(設(shè)計、創(chuàng)作)任務(wù)書</p><p><b>  指導(dǎo)教師簽名:</b></p><p>  2009年12 月 8 日</p><p><b>  目 錄</b><

7、;/p><p><b>  目錄I</b></p><p><b>  摘要II</b></p><p>  AbstractIII</p><p><b>  第一章 緒論1</b></p><p>  1.1 開發(fā)背景及意義1</p&g

8、t;<p>  1.2 本文研究的內(nèi)容2</p><p>  第二章 系統(tǒng)硬件設(shè)計3</p><p>  2.1 系統(tǒng)總體功能概述3</p><p>  2.2 核心芯片選擇4</p><p>  2.3 液位檢測5</p><p>  2.3.1 液位傳感器5</p>

9、<p>  2.3.2 AD轉(zhuǎn)換電路6</p><p>  2.4 溫度檢測8</p><p>  2.5 顯示電路9</p><p>  2.5.1 溫度顯示電路9</p><p>  2.5.2 液位顯示電路10</p><p>  2.6 電源電路12</p>&

10、lt;p>  第三章 系統(tǒng)軟件設(shè)計13</p><p>  3.1 軟件功能概述13</p><p>  3.2 主程序設(shè)計13</p><p>  3.3 定時器T0中斷程序14</p><p>  3.4 定時器T1中斷程序15</p><p>  3.5 A/D轉(zhuǎn)換及液位顯示程序15&

11、lt;/p><p>  3.6 溫度采集程序16</p><p>  3.7 LED顯示程序17</p><p><b>  結(jié)論19</b></p><p><b>  參考文獻(xiàn)20</b></p><p><b>  附錄21</b><

12、;/p><p><b>  摘 要</b></p><p>  當(dāng)前能源緊缺,用電緊張,太陽能是綠色能源,得到廣大用戶的喜愛。本文介紹了用液位檢測集成芯片LM1042、溫度傳感器DS18B20和A/D轉(zhuǎn)換芯片ADC0804,以AT89C52 單片機(jī)作為主控元件的太陽能熱水器液位和溫度顯示及控制系統(tǒng)。對太陽能熱水器的控制系統(tǒng)進(jìn)行了全新的智能設(shè)計,可以實現(xiàn):水箱中水位、水溫

13、的智能控制與顯示;自動排空水箱至淋浴器間管道(也是上水管道) 中的存水;智能處理再利用管道排空的水等。使太陽能熱水器操作性能、利用功能、擴(kuò)展范圍、產(chǎn)品檔次等諸多方面得到提高。解決了普通太陽能熱水器上水時水滿益出;上(下) 水管道需要保溫;使用前需要放出水管中大量冷水等問題。</p><p>  關(guān)鍵詞:太陽能;液位控制;溫度控制;水管排空</p><p><b>  Abstra

14、ct</b></p><p>  With the current energy and power shortage, solar energy which is green energy is becoming more and more popular with the majority of users. This article describes the control system of

15、 solar energy water-heater based on a liquid level detection LM1042, temperature sensor DS18B20, A / D conversion chip ADC0804 and AT89C52 microcontroller as a master device .Carried on an all new intelligence design to

16、the control system, it can carry out: Intelligence controlling and manifestation of water level</p><p>  Key words: solar energy; liquid control; temperature display; pipe line row empty</p><p>

17、<b>  第1章 緒 論</b></p><p>  1.1 開發(fā)背景及意義</p><p>  近些年來,太陽能的開發(fā)和利用已越來越受到人們的重視和青睞,因為節(jié)能、環(huán)保、使用方便等因素,太陽能熱水器發(fā)展速度更是迅猛。安裝太陽能熱水器已成為房產(chǎn)開發(fā)商售防的誘人條件之一,隨著人們的消費意識、消費層次和消費要求的提高,普通太陽能熱水器上水時水滿溢出;冬天太陽能水溫偏

18、低;上(下)水管道需要保溫;使用前需要放出管道中大量冷水等諸多弊病需要解決。針對上述問題,本文設(shè)計了以AT89C52單片機(jī)為核心的太陽能熱水器智能控制系統(tǒng),實現(xiàn)了水箱中水位及溫度的智能控制與顯示;自動排空水箱至淋浴器(上下水共用)管道間的存水;為了使排空管道時的水不浪費掉,在浴室內(nèi)部又設(shè)置了一個室內(nèi)水箱,以備他用。同時,也可實現(xiàn)手動上水,使用方便。使太陽能熱水器系統(tǒng)的操作性能、利用功能、擴(kuò)展范圍、產(chǎn)品檔次等諸多方面實現(xiàn)質(zhì)的飛躍。使用戶省

19、心、智能運行。</p><p>  1.2 本文研究的內(nèi)容</p><p>  本文經(jīng)過調(diào)研及收集相關(guān)技術(shù)資料,提出如下技術(shù)方案。以AT89C52為核心,利用液位傳感器LM1042、測溫元件DS18B20、發(fā)光二極管及數(shù)碼管實現(xiàn)以下性能:</p><p>  水溫數(shù)碼顯示,測溫范圍0~99℃,精度±0.5℃;</p><p>  

20、水位分五檔顯示(缺水、20﹪、50﹪、80﹪、100﹪);</p><p>  智能上水控制、具有缺水上水和手動上水等功能;</p><p>  輸水管道排空水控制,在水箱上水或洗浴完畢后自動把上水管道內(nèi)的水排出。</p><p>  系統(tǒng)控制和主要結(jié)構(gòu)框圖如圖1.1所示:</p><p>  第2章 系統(tǒng)硬件設(shè)計</p>&

21、lt;p>  2.1 系統(tǒng)總體功能概述</p><p>  該系統(tǒng)以AT89C52作為核心控制部件,外加液位傳感器、測溫元件、一片A/D轉(zhuǎn)換芯片、五個發(fā)光二極管、兩個數(shù)碼管及驅(qū)動芯片來達(dá)到系統(tǒng)的性能要求。LM1042外接的熱阻探針溫度的變化依賴于周圍材料的熱阻的大小,而空氣和液體的熱阻大小有很大差別,從而可以根據(jù)探針在液體中的深度不同時電阻的不同檢測出液位的深度信息,由LM1042內(nèi)部轉(zhuǎn)換電路網(wǎng)絡(luò)轉(zhuǎn)換為與

22、液位成線性關(guān)系的電壓信號,再由8位逐次逼近型A/D轉(zhuǎn)換芯片ADC0804將模擬信號轉(zhuǎn)換為數(shù)字信號,實現(xiàn)液位信息的輸入。AT89C52從ADC0804讀取液位信息后進(jìn)行數(shù)據(jù)處理,結(jié)合DS18B20測得的溫度進(jìn)行液位和溫度的顯示及閥門的控制。</p><p>  圖2.1為系統(tǒng)整體結(jié)構(gòu)圖:</p><p><b>  各部分功能:</b></p><p

23、>  1.電源部分提供+5V電壓供系統(tǒng)使用。</p><p>  2.按鍵部分用來實現(xiàn)手動上水。</p><p>  3.LM1042實現(xiàn)液位信息到電壓信號的轉(zhuǎn)換。</p><p>  4.ADC0804將液位傳感器輸出的電壓信號經(jīng)A/D轉(zhuǎn)換后送到單片機(jī)。</p><p>  5.DS18B20實現(xiàn)溫度檢測。</p>&l

24、t;p>  6.AT89C52為處理器,實現(xiàn)液位信息和溫度信息的接收、數(shù)據(jù)處理和輸出到發(fā)光二極管和數(shù)碼管顯示。</p><p>  2.2 核心芯片選擇</p><p>  核心控制系統(tǒng)采用ATMEL公司89系列的一款單片機(jī)AT89C52,此單片機(jī)包含一個8位CPU、256字節(jié)的片內(nèi)RAM和片內(nèi)Flash存儲器、4個8位的雙向可尋址I/O口、1個全雙工UART的串行接口、3個16位

25、的定時/計數(shù)器、多個優(yōu)先級的嵌套中斷結(jié)構(gòu)(8級中斷,可實現(xiàn)多個優(yōu)先級的嵌套)、一個片內(nèi)振蕩器和時鐘電路。</p><p>  在AT89C52單片機(jī)結(jié)構(gòu)中,顯著的特點是內(nèi)部含有Flash存儲器,使用戶在開發(fā)過程中十分容易修改程序,縮短系統(tǒng)的開發(fā)周期。同時,它繼承了CMOS產(chǎn)品低功耗的特點,有兩種產(chǎn)生低功耗的方式:空閑方式和掉電方式。在空閑方式下,CPU停止工作,RAM和其他片內(nèi)的部件繼續(xù)工作,此時的電流大約是正常

26、工作方式下的15%。在掉電方式下,電流可降到15uA以下。</p><p>  AT89C52單片機(jī)有多種封裝方式:PDIP封裝、方形的PLCC和PQFP/TQFP封裝,使用方便。其引腳結(jié)構(gòu)圖如圖2.2:</p><p><b>  2.3 液位檢測</b></p><p>  2.3.1 液位傳感器</p><p>

27、;  本次設(shè)計液位傳感器選用集成芯片LM1042,實現(xiàn)液位信號到電壓信號的轉(zhuǎn)換。LM1042是用于液位檢測的專用集成電路,它內(nèi)部集成了所有控制熱阻探針、檢測熱阻探針的短路和開路所需的監(jiān)控電路,具有很強(qiáng)的功能。</p><p>  LM1042使用熱阻探針技術(shù)來測量非可燃性液體的液面高度,它能提供一正比于液位高度的輸出,可進(jìn)行單次或重復(fù)測量,所有控制熱阻探針、檢測熱阻探針的短路和開路所需的監(jiān)控電路都集成在LM104

28、2芯片內(nèi)部。此外該芯片還可采用其它傳感器信號或線性輸入作為輸入信號。</p><p>  該器件采用16腳DIP封裝。芯片的主要特點如下:</p><p>  可以選擇熱阻或線性信號作為輸入;</p><p>  集成有熱阻探針的控制電路;</p><p>  可單次測量或重復(fù)測量;</p><p>  在復(fù)位時切換,

29、延時功能可避免瞬態(tài)信號的影響;</p><p>  具有探針短路、開路檢測功能;</p><p>  電源或控制輸入端具有50V的瞬態(tài)電壓保護(hù)電路;</p><p>  電源范圍7.5~18V;</p><p><b>  內(nèi)部有電源調(diào)節(jié)器;</b></p><p>  可在-40℃~+80℃的工

30、作溫度范圍內(nèi)工作。</p><p>  熱阻探針工作的基本原理是基于功率在探針上耗散,探針溫度的變化依賴于周圍材料的熱阻的大小,由于空氣和其它氣體相對于水和油來說是熱的不良導(dǎo)體,利用這一點有可能測量探針等浸入液體媒介的深度。其原理如圖2.3所示:</p><p>  在測量周期中,一固定的驅(qū)動電流I施加到探針上,在測量的起始時刻和結(jié)束時刻探針兩端的電壓被采樣,得到電壓差ΔV0由于空氣的熱阻

31、RTHA大于油的熱阻RTHO,由它們引起的溫度變化分別為ΔT1和ΔT2,相應(yīng)的探針電阻也會隨著改變?yōu)棣1和ΔR2差值,在每單位長度上產(chǎn)生相應(yīng)的電壓變化ΔV1和ΔV2。電壓差ΔV由下式給出:ΔV=LAΔV1/L+(L-LA)ΔV1/L</p><p>  由于ΔV1>ΔV2,RTHA>RTHO,ΔV會隨著探針在空氣中長度的增加而增大。在實際應(yīng)用中,為獲得最佳效果,探針需要具有高的溫度系數(shù)和低的熱阻時間

32、常數(shù),為避免誤觸發(fā)探針短路開路檢測器,探針電壓必須介于0.7V和5.3V之間,對于200mA的電流容許的探針阻值范圍是3.5Ω到24Ω。</p><p>  在圖2.4中,7腳和10腳是用于探針2的調(diào)整,由于本系統(tǒng)只用到探針1,故只需將7腳和10腳接地即可;1 腳是熱阻探針輸入端;5腳是探針故障檢測端;6腳是電源端;3、4腳分別接PNP管的發(fā)射極和集電極用于給探針提供200mA的固定電流;16腳為模擬電壓輸出端,

33、輸出與液位成正比的模擬電壓;12、13腳用來調(diào)整探針的測量周期;9、14腳外接兩個電容作為探針的記憶電容,記憶探針的電壓值。</p><p>  2.3.2 AD轉(zhuǎn)換電路</p><p>  由于LM1042輸出的是模擬信號,須經(jīng)AD轉(zhuǎn)換器轉(zhuǎn)換成單片機(jī)可處理的數(shù)字信號,且考慮到該裝置是應(yīng)用于太陽能熱水器中,無需高精度,故選用8位AD轉(zhuǎn)換器ADC0804進(jìn)行AD轉(zhuǎn)換即可。</p>

34、;<p>  ADC0804型8位全MOS A/D轉(zhuǎn)換器是中速廉價型產(chǎn)品之一。片內(nèi)有三態(tài)數(shù)據(jù)輸出鎖存器,與微處理器兼容,輸入方式為單通道,轉(zhuǎn)換時間約為100μs。它的非線性誤差為±1LSB。電源電壓為+5V。其引腳圖如圖2.5所示:</p><p>  被轉(zhuǎn)換的電壓信號從Vin(+)和Vin(-)輸入。允許此信號是差動的或不共地的電壓信號,模擬地和數(shù)字地分別設(shè)置引入端,使數(shù)字電路的地電流不

35、影響模擬信號回路,以防止寄生耦合造成的干擾。Vref/2端不必外接電源,懸空即可。/CS是片選端,/WR是控制芯片啟動的輸入端;/INTR是轉(zhuǎn)換結(jié)束信號輸入端,輸出電平由高跳低則表示本次轉(zhuǎn)換已經(jīng)完成,可作為中斷或查詢信號。</p><p>  ADC0804片內(nèi)有時鐘電路,只要在外部“CLKR”和“CLK”兩端外接一對電阻和電容即可產(chǎn)生A/D轉(zhuǎn)換所需要的時鐘,其振蕩頻率為fclk≈1/1.1RC。本次設(shè)計選用R=

36、10kΩ,C=150pF,此時fclk≈640kHz。其與單片機(jī)的接口電路如圖2.6所示:</p><p><b>  2.4 溫度檢測</b></p><p>  對水箱水溫的測定,采用了較為先進(jìn)的DS18B20集成模塊溫度傳感器,該傳感器將溫度信號以數(shù)字量傳給單片機(jī),無需其他的外圍電路,一條口線,電路簡單,使用穩(wěn)定,可以方便的實現(xiàn)單片機(jī)對溫度參量的讀取。DS18

37、B20采用3腳PR_35封裝或8腳SOSI封裝,管腳排列如圖2.7所示。</p><p>  DS18B20內(nèi)部結(jié)構(gòu)如圖2.8所示,主要由4部分組成:64位ROM;溫度傳感器;溫度報警觸發(fā)器TH和TL;配置寄存器??紤]到系統(tǒng)功能的限制,傳感器的報警功能沒有使用。</p><p>  圖2.8 DS18B20的內(nèi)部結(jié)構(gòu)示意圖</p><p>  單總線即只有一根數(shù)據(jù)

38、線,系統(tǒng)中的數(shù)據(jù)交換、控制都由這根線完成。其基本的通信過程如下:</p><p>  主機(jī)通過拉低單總線至少480us產(chǎn)生復(fù)位脈沖。</p><p>  然后由主機(jī)釋放總線,并進(jìn)入接收模式。主機(jī)釋放總線時,會產(chǎn)生一由低電平跳變?yōu)楦唠娖降纳仙亍?lt;/p><p>  單總線器件檢測到該上升沿后,延時15~60us。</p><p>  單總線器

39、件通過拉低總線60~240us來產(chǎn)生應(yīng)答脈沖。</p><p>  主機(jī)接收到從機(jī)的應(yīng)答脈沖后,說明有單總線器件在線,然后主機(jī)就可以開始對從機(jī)進(jìn)行ROM命令和功能命令操作。</p><p>  所有的讀、寫時序至少需要60us,且每兩個獨立的時序之間至少需要1us的恢復(fù)時間。在寫時序中,主機(jī)將在拉低總線15us之內(nèi)釋放總線,并向單總線器件寫1;若主機(jī)拉低總線后能保持至少60us的低電平,則

40、向單總線器件寫0。單總線器件僅在主機(jī)發(fā)出讀時序時才向主機(jī)傳輸數(shù)據(jù),所以,當(dāng)主機(jī)向單總線發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時序,以便于單總線器件能傳輸數(shù)據(jù)。</p><p>  DS18B20可以使用外部電源VDD,也可以使用內(nèi)部的寄生電源,無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻。本系統(tǒng)選用外部電源,即在VDD端口接5V的電壓。故單片機(jī)與DS18B20的連接圖如圖2.9所示:</p&

41、gt;<p><b>  2.5 顯示電路</b></p><p>  2.5.1 溫度顯示電路</p><p>  常用的LED顯示器有7段或8段,有共陰極和共陽極種。本次設(shè)計選用的是7段共陰極。</p><p>  由于單片機(jī)I/O的電氣特性決定了單片機(jī)的端口的驅(qū)動能力有限,一般的,單片機(jī)的端口只是驅(qū)動TTL電平,不提供或

42、者提供很小的驅(qū)動電流,所以在帶負(fù)載時,單片機(jī)應(yīng)當(dāng)在I/O口加上驅(qū)動芯片。本次設(shè)計選用ICM7218數(shù)碼管驅(qū)動芯片。ICM7218 是INTERSIL公司生產(chǎn)的一種性能價格比較高的通用8 位L ED 數(shù)碼管驅(qū)動電路,28 腳雙列封裝,可與多種單片機(jī)接口使用。ICM7218 的輸出可直接驅(qū)動L ED顯示器,不需外接驅(qū)動電路,其構(gòu)成的顯示電路結(jié)構(gòu)簡單,使用方便。ICM7218A顯示電路如圖2.10所示:</p><p>

43、;  本系統(tǒng)顯示用的2位七段數(shù)碼管由數(shù)碼管專用驅(qū)動芯片ICM7218A驅(qū)動,27、3、1、25、2、24、26腳分別接數(shù)碼管的a~g,15、16腳為位選,分別控制2位數(shù)碼管的亮滅,ID0~7為數(shù)據(jù)線,接單片機(jī)P0口,/WRITE、MODE是寫控制位和模式控制位,分別接單片機(jī)P2.5、P2.6。</p><p>  2.5.2 液位顯示電路</p><p>  考慮到熱水器的液位顯示只需給

44、人以直覺上水量的多少(即當(dāng)前水量占總?cè)莘e百分比),而不必給出當(dāng)前液位的具體數(shù)值。故選用5個發(fā)光二極管,用它們的亮滅來顯示水位的五種狀態(tài)。發(fā)光二極管、按鍵與單片機(jī)連線如圖2.11所示:</p><p><b>  發(fā)光二極管</b></p><p>  發(fā)光二極管在兩端的電壓差超出其導(dǎo)通壓降時開始工作,發(fā)光二極管的導(dǎo)通壓降一般約為1.7~1.9V。此外,工作電流要滿足該

45、二極管的工作電流,滿足電流和電壓的要求,二極管就可以發(fā)光了。單片機(jī)系統(tǒng)中往往是數(shù)字信號,其電源不是5V就是0V,所以只要將二極管的正負(fù)極和電源對應(yīng)上就可以了。</p><p>  在發(fā)光二極管前面要接一個電阻,這個電阻的作用在于限制二級管的電流,從而達(dá)到減少功耗或者滿足端口對最大電流的限制。</p><p>  一般二極管的點亮電流為5mA~10mA,在5V電源驅(qū)動時,廠家多采用470 Ω

46、。限流電阻,在該設(shè)計中選用510Ω,這樣既不會超出單片機(jī)的I/O口最大限流,二極管也比較明亮。</p><p>  使用五個發(fā)光二極管來表示液位的五種狀態(tài):全亮?xí)r對應(yīng)水滿,全滅時對應(yīng)缺水,僅D1亮?xí)r對應(yīng)20﹪,僅D1和D2亮?xí)r對應(yīng)40﹪,D1、D2、D3亮?xí)r對應(yīng)60﹪,僅D5滅時對應(yīng)80﹪。</p><p><b>  按鍵</b></p><p&

47、gt;  當(dāng)有按鍵被按下時說明用戶要手動上水。按鍵使用上拉電阻方式接入單片機(jī)。未按下時對單片機(jī)輸入一個高電平,按下后輸入一個低電平。</p><p>  鍵的閉合與否,反映在行線輸出電壓上就是呈現(xiàn)出高電平或低電平,如果高電平表示斷開的話,那么低電平則表示閉合,所以通過對行線電平的高低狀態(tài)的檢測,便可以確認(rèn)按鍵按下與否。為了確保CPU對一次按鍵動作只確認(rèn)一次按鍵,必須消除抖動的影響。</p><

48、p><b>  電磁閥</b></p><p>  電磁閥在本次設(shè)計中是輸出設(shè)備,用來控制上下水,24V三極管電磁閥驅(qū)動電路圖如圖2.12所示。系統(tǒng)中用到三個電磁閥控制水箱和水管的連接。</p><p>  目前市場上的太陽能熱水器大都裝有管道保溫裝置,以防在冬天管道中的水結(jié)冰,即使不結(jié)冰,在使用前也要放掉管道中的全部冷水,不但給使用者帶來了很多的不便,也對水資

49、源形成了較大的浪費。為此設(shè)計了水管排空功能,在水箱下安裝一個電磁閥,當(dāng)關(guān)閉上水閥和水箱的閥門,停止向水箱加水后,開啟通往小水箱的電磁閥門,則單向閥進(jìn)氣使水管內(nèi)存水排至室內(nèi)小水箱,完全把水管內(nèi)的存留水排出水管,從而達(dá)到在使用時直接使用熱水和節(jié)水的目的。電磁閥的開關(guān)全由單片機(jī)控制,在上水和洗浴完畢后單片機(jī)發(fā)出電磁閥1和電磁閥2關(guān)閉,電磁閥3開啟的放水指令,10s后關(guān)閉電磁閥3,系統(tǒng)處在待命狀態(tài)。同時打開電磁閥2和電磁閥3即可給室內(nèi)水箱供水,

50、供水完畢后再執(zhí)行管道排空水指令使整個系統(tǒng)處在待命狀態(tài)。</p><p><b>  2.6 電源電路</b></p><p>  為了使單片機(jī)有一個穩(wěn)定的工作環(huán)境,且各組件都正常的工作,特別制作了5V的直流穩(wěn)壓電源。電源電壓器將220V的交流電壓變?yōu)樗桦妷褐担缓笸ㄟ^橋式整流電路將交流電壓變成脈動的直流電壓。由于其含有較大的紋波,必須通過濾波電路加以濾除,以得到平

51、滑的直流電壓最后通過穩(wěn)壓電路維持輸出直流電壓穩(wěn)定。</p><p>  本電路的特點是:電源輸出穩(wěn)定,具有較好的抗干擾能力。輸出標(biāo)準(zhǔn)的5V直流電壓。給整個控制系統(tǒng)供電,電源電路如圖2.13 所示:</p><p>  第3章 系統(tǒng)軟件設(shè)計</p><p>  3.1 軟件功能概述</p><p>  在系統(tǒng)的硬件確定以后,功能完善的軟件能

52、夠很好的指導(dǎo)和協(xié)調(diào)硬件的工作,可使系統(tǒng)發(fā)揮其最大的作用,并且便利以后的更新?lián)Q代升級。</p><p>  一個完整的系統(tǒng)都離不開對系統(tǒng)狀態(tài)的監(jiān)控,為了更好的協(xié)調(diào)軟件、硬件各個部分正常工作,就必須對整個系統(tǒng)進(jìn)行嚴(yán)密監(jiān)控。在本系統(tǒng)中定時器T0中斷服務(wù)程序擔(dān)任液位數(shù)據(jù)讀取、處理和輸出顯示任務(wù),每隔一定的時間對A/D轉(zhuǎn)換進(jìn)行一次采樣,并進(jìn)行相應(yīng)的處理,再經(jīng)過發(fā)光二極管來實現(xiàn)液位的顯示。而定時器T1中斷服務(wù)程序擔(dān)任溫度數(shù)據(jù)

53、讀取、處理和輸出顯示任務(wù),并經(jīng)LED顯示。而主程序完成的任務(wù)相對簡單,它只是完成系統(tǒng)初始化及檢測是否有鍵按下等工作。若有鍵按下,則進(jìn)入手動上水模式。</p><p>  3.2 主程序設(shè)計</p><p>  在本系統(tǒng)中主程序完成的任務(wù)相對簡單,它只是完成初始化等工作而進(jìn)入按鍵查詢等待方式。主程序的初始化主要包括:DS18B20初始化、T0和T1的初始化并啟動T0。按鍵查詢主要是S1鍵,

54、當(dāng)功能鍵S1按下就轉(zhuǎn)入手動上水子程序,每按一次上水一個檔位。主程序流程圖如圖3.1所示。</p><p>  3.3 定時器T0中斷程序</p><p>  T0定時時間為1S,即每隔1S執(zhí)行一次T0中斷服務(wù)程序。該程序完成的任務(wù)比較多,主要包括:(1)溫度信息的采集和顯示;(2)讀取、顯示和處理液位信息。至于完成哪項任務(wù)由標(biāo)志位TW決定。T0中斷服務(wù)程序流程圖如圖3.2所示:由于液位和

55、溫度均是變化比較緩慢的量,故只需每隔一定時間檢測一次。</p><p>  在此選定1s檢測一次,即1s進(jìn)行一次A/D轉(zhuǎn)換。由于本系統(tǒng)所用晶振為12MHZ,默認(rèn)為12分頻,故定時器每計時一次用時為12/11.0592μs,約為1μs。因為定時器為16位定時器,故最多計時65536次,即計時65536μs=65.536ms,此處用定時器T0定時50ms,則當(dāng)定時器定時20次,共定時20×50ms=1s,滿

56、足系統(tǒng)需求。T0定時50ms即計時50000次,則定時器初值為TH0=(65536-50000)/256=0x3c,TL0=(65536-50000)%256=0xB0。</p><p>  3.4 定時器T1中斷程序</p><p>  當(dāng)停止上水和洗浴完畢時,關(guān)閉電磁閥1、2,開啟電磁閥3,從而排空管道水,10s后關(guān)閉電磁閥。用T1來定時10S,其定時方式同T0,定時200次。T1中

57、斷程序的流程圖如圖3.3所示:</p><p>  圖3.3 T1中斷程序流程圖</p><p>  3.5 A/D轉(zhuǎn)換及液位顯示程序</p><p>  A/D轉(zhuǎn)換子程序主要完成A/D值的讀取、處理及液位信息的顯示。因為ADC0804進(jìn)行A/D轉(zhuǎn)換的過程中/INTR=1,轉(zhuǎn)換完成后/INTR=0,故啟動A/D轉(zhuǎn)換后要先檢測/INTR,當(dāng)/INTR為低電平時才進(jìn)

58、行A/D值讀取操作。將讀取得到的8位液位值,并經(jīng)發(fā)光二極管顯示。其流程圖如圖3.4所示,事先測得水滿時的液位,用wlmax表示,且用十六進(jìn)制表示,令wl=wlmax/5。</p><p>  3.6 溫度采集程序</p><p>  溫度采集子程序的功能是對DS18B20進(jìn)行初始化、查詢溫度采集和轉(zhuǎn)換是否完成,并且完成對溫度數(shù)據(jù)的處理以便送LED顯示。其程序流圖如圖3.5所示:</

59、p><p>  3.7 溫度顯示程序</p><p>  LED顯示子程序主要完成溫度值的顯示,本系統(tǒng)采用數(shù)碼管專用驅(qū)動芯片ICM7218驅(qū)動2位七段數(shù)碼管用于溫度值的顯示,只需要把要顯示的數(shù)據(jù)寫入ICM7218的RAM中即可,由于該芯片默認(rèn)驅(qū)動8位數(shù)碼管,必須寫入8字節(jié)顯示數(shù)據(jù),而此系統(tǒng)只用低2位,只需把高6位置為隨機(jī)數(shù)即可,故先通過ICM7218的控制位WR=0和MODE=1使芯片工作于

60、方式1,寫入控制字B*H,即選擇BCS碼譯碼選擇模式,然后使MODE=0使芯片工作于方式0,寫入8字節(jié)數(shù)據(jù)即可完成溫度值的LED顯示。溫度顯示子程序流程圖如圖3.6所示</p><p><b>  結(jié)論</b></p><p>  本次畢業(yè)設(shè)計主要是為了改善太陽能控制系統(tǒng)的功能,實現(xiàn)液位和溫度的檢測與顯示,上水控制及輸水管道排空水控制。該控制系統(tǒng)基本上考慮了太陽能熱水

61、器的功能擴(kuò)展和檔次提升的空間。通過反復(fù)實驗,系統(tǒng)的程序執(zhí)行狀況、模擬效果演示均是令人滿意的。</p><p>  整個系統(tǒng)存在如下特點:具有一定程度的智能性,可實現(xiàn)自動上水及液位和溫度信息的顯示,自動排空管道中的存水以節(jié)約用水且方便下次使用。但也存在一些不足。受AT89C52資源的限制,沒有設(shè)計看門狗電路。另外沒有加入加熱裝置,所以水溫受天氣影響較大。</p><p>  本次畢業(yè)設(shè)計讓我

62、進(jìn)一步鞏固了四年來學(xué)習(xí)的理論知識,還要做到理論與實踐相結(jié)合。如機(jī)型和元器件的選擇,要以性價比高為原則,以組成最小最優(yōu)化的系統(tǒng),硬件和軟件在一定程度上具有互換性,多用軟件可節(jié)省成本,這些都是在設(shè)計中應(yīng)該考慮的。學(xué)到了許多課本上學(xué)不到的知識軟件,通過這次畢業(yè)設(shè)計使動手能力和理論知識有了很大的提高。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]

63、鄭郁正.單片機(jī)原理及應(yīng)用.四川大學(xué)出版社.2003.</p><p>  [2] 求是科技.單片機(jī)典型模塊設(shè)計實例導(dǎo)航(第2版).人民郵電出版社.2008</p><p>  [3] 王慶. Protel 99 SE&DXP電路設(shè)計教程(附盤).電子工業(yè)出版社.2006</p><p>  [4] 康華光.電子技術(shù)基礎(chǔ)模擬部分.高等教育出版社.1999.&l

64、t;/p><p>  [5] 譚浩強(qiáng).C程序設(shè)計(第二版).清華大學(xué)出版社.1999</p><p>  [6] 張福安,李麗欣,等.基于μ’nsp處理器的太陽能熱水器智能控制系統(tǒng).德州學(xué)院學(xué)報第23卷第6期.2007年12月</p><p>  [7] 基于數(shù)字溫度傳感器DS18B20的分布式測溫系統(tǒng)的設(shè)計.吉林化工學(xué)院學(xué)報.第20卷 第3期.2003年9月</

65、p><p><b>  附錄</b></p><p>  #include <AT89X52.h></p><p>  #define ADIN P1</p><p>  #define ICMOUT P0</p><p>  #define ON 0</p><p&g

66、t;  #define OFF 1</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit D1=P2^0;</p><p>  sbit D2=P2^1;</p><p>  sbit D3=P2

67、^2;</p><p>  sbit D4=P2^3;</p><p>  sbit D5=P2^4;//發(fā)光二極管</p><p>  sbit ICMWR=P2^5;</p><p>  sbit ICMMODE=P2^6;</p><p>  sbit DQ=P2^7;//DS18B20數(shù)據(jù)輸出口</p&g

68、t;<p>  sbit ADCS=P3^0;</p><p>  sbit ADEND=P3^1;</p><p>  sbit ADWR=P3^6;</p><p>  sbit ADRD=P3^7;//AD</p><p>  sbit S1=P3^2;//按鍵</p><p>  sbit SOV

69、1=P3^3;</p><p>  sbit SOV2=P3^4;</p><p>  sbit SOV3=P3^5;//電磁閥</p><p>  uchar flag1;//溫度正負(fù)標(biāo)志位</p><p>  uchar TEMP[2];//當(dāng)前溫度值</p><p>  uchar ADV0,ADV;//AD值&

70、lt;/p><p>  unchar wl;</p><p>  uint T0c,T1c;</p><p>  uchar TW; //溫度液位選擇位</p><p>  uchar sflag; //手動上水模式標(biāo)志位</p><p>  uchar Tflag; //高溫標(biāo)志</p><p>

71、  //uchar EPflag; //排空水標(biāo)志位</p><p><b>  //延時程序</b></p><p>  void delayus(uchar us) </p><p><b>  {</b></p><p>  while(us--); //12M,一次6us </p&

72、gt;<p><b>  }</b></p><p>  void delayms(uint ms) // 毫秒級延時</p><p><b>  {</b></p><p><b>  uint ti;</b></p><p>  while(ms--)<

73、/p><p><b>  { </b></p><p>  for(ti=0;ti<112;ti++){}</p><p><b>  }</b></p><p><b>  }</b></p><p>  void delay(uint count)

74、</p><p><b>  {</b></p><p><b>  uint i;</b></p><p>  while(count)</p><p><b>  {</b></p><p><b>  i=200;</b>&l

75、t;/p><p>  while(i>0) i--;</p><p><b>  count--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //空操作</b&g

76、t;</p><p>  void _nop_ (void);</p><p>  //DS18B20程序段</p><p>  bit ds18b20_reset(void) //DS18B20復(fù)位和初始化</p><p>  { uchar data i;</p><p>  DQ=0;//發(fā)一個復(fù)位脈沖

77、</p><p>  delayus(80);</p><p><b>  DQ=1;</b></p><p>  delayus(12);</p><p>  if(DQ) return(0);</p><p>  delayus(80);</p><p>  ret

78、urn(1);</p><p><b>  }</b></p><p>  void ds18b20_write(uchar a) //DS18B20寫操作</p><p>  { uchar data i;</p><p><b>  bit c;</b></p><

79、;p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  c=(a>>i)&0x01;</p><p><b>  DQ=0;</b></p><p><b>  DQ=0;</b></p>

80、;<p>  delayus(0);</p><p><b>  DQ=c;</b></p><p>  delayus(10);</p><p><b>  } </b></p><p><b>  DQ=1;</b></p><p>&

81、lt;b>  }</b></p><p>  uchar ds18b20_read(void) //DS18B20讀一字節(jié)操作</p><p><b>  {</b></p><p>  uchar data i,a;</p><p>  for(i=0;i<8;i++)</p&

82、gt;<p><b>  {</b></p><p><b>  DQ=0;</b></p><p><b>  DQ=0;</b></p><p><b>  DQ=0;</b></p><p><b>  DQ=1;</b

83、></p><p>  delayus(0);</p><p><b>  a=(a>>1);</b></p><p>  if(DQ) a=a|0x80;</p><p>  delayus(10);</p><p><b>  }</b></p&

84、gt;<p><b>  DQ=1;</b></p><p><b>  return a;</b></p><p><b>  } </b></p><p>  uchar read_temp(void)</p><p><b>  {</b&g

85、t;</p><p>  uchar i,b,c,Th,Tm,Tl;</p><p>  ds18b20_reset();</p><p>  ds18b20_write(0xcc);</p><p>  ds18b20_write(0x44);</p><p>  delayms(50);</p>&l

86、t;p>  ds18b20_reset();</p><p><b>  delay(1);</b></p><p>  ds18b20_write(0xcc);</p><p>  ds18b20_write(0xbe);</p><p>  b=ds18b20_read();</p><p&

87、gt;  c=ds18b20_read();</p><p><b>  flag1=c;</b></p><p>  if(flag1) { //溫度為負(fù)</p><p>  TEMP[0]=0;</p><p>  TEMP[1]=0;</p><p><b>  }<

88、/b></p><p><b>  else{</b></p><p><b>  Th=c/100;</b></p><p>  Tm=(c%100)/10;</p><p>  Tl=c%10; //取溫度的各個位</p><p>  if(Th) {

89、 //溫度高于99度</p><p>  TEMP[0]=0x0f;</p><p>  TEMP[1]=0x0f;</p><p><b>  }</b></p><p><b>  else{</b></p><p>  TEMP[0]=Tl;<

90、/p><p>  TEMP[1]=Tm;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(TEMP[0]>7) Tflag=1; //高溫標(biāo)志</p><p>  else Tflag=0;</p>

91、<p>  return(TEMP[2]);</p><p><b>  }</b></p><p>  //LED顯示子程序</p><p>  void Icmdis(uchar TEMP[])</p><p><b>  {</b></p><p><

92、;b>  char i;</b></p><p><b>  ICMWR=0;</b></p><p>  ICMMODE=1;//ICM工作于模式1</p><p>  ICMOUT=0xB0;//輸出模式控制字</p><p>  ICMMODE=0;//ICM工作于模式0</p>&

93、lt;p>  for(i=0;i<2;i++)</p><p>  ICMOUT=TEMP[i];//輸出溫度值</p><p><b>  }</b></p><p>  //A/D轉(zhuǎn)換及液位顯示子程序</p><p>  void ADRun(void)</p><p><b

94、>  {</b></p><p><b>  ADCS=0;</b></p><p><b>  ADWR=0;</b></p><p><b>  _nop_();</b></p><p><b>  ADWR=1;</b></p

95、><p><b>  ADCS=1;</b></p><p><b>  }</b></p><p>  uchar ADRead(void)</p><p><b>  {</b></p><p><b>  ADV=ADIN;</b>

96、;</p><p>  if(ADV>wl*4){ //水位顯示為100%</p><p><b>  D1=ON;</b></p><p><b>  D2=ON;</b></p><p><b>  D3=ON;</b></p>

97、<p><b>  D4=ON;</b></p><p><b>  D5=ON;</b></p><p><b>  }</b></p><p><b>  else{</b></p><p>  if(ADV>wl*3){

98、 //水位顯示為80%</p><p><b>  D1=ON;</b></p><p><b>  D2=ON;</b></p><p><b>  D3=ON;</b></p><p><b>  D4=ON;</b></p>&l

99、t;p><b>  D5=OFF;</b></p><p><b>  }</b></p><p>  else{ //水位顯示為60%</p><p>  if(ADV>wl*2) { //水位顯示為40%</p><p><b> 

100、 D1=ON;</b></p><p><b>  D2=ON;</b></p><p><b>  D3=ON;</b></p><p><b>  D4=OFF;</b></p><p><b>  D5=OFF;</b></p>

101、;<p><b>  }</b></p><p><b>  else{</b></p><p>  if(ADV>wl) { //水位顯示為20%</p><p><b>  D1=ON;</b></p><p><b>  D2

102、=ON;</b></p><p><b>  D3=OFF;</b></p><p><b>  D4=OFF;</b></p><p><b>  D5=OFF;</b></p><p><b>  }</b></p><

103、p>  else { //水位顯示為缺水</p><p><b>  D1=ON;</b></p><p><b>  D2=OFF;</b></p><p><b>  D3=OFF;</b></p><p><b>  D4=OF

104、F;</b></p><p><b>  D5=OFF;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

105、  }</b></p><p>  return ADV;</p><p><b>  }</b></p><p>  //定時器T0中斷程序</p><p>  void T0Run(void)</p><p><b>  {</b></p>&l

106、t;p><b>  TH0=0x3C;</b></p><p><b>  TL0=0xB0;</b></p><p>  TR0=1;//啟動定時器T0</p><p><b>  }</b></p><p>  void timer0(void) inter

107、rupt 1</p><p><b>  {</b></p><p><b>  TH0=0x3C;</b></p><p><b>  TL0=0xB0;</b></p><p><b>  T0c++;</b></p><p>

108、  if(T0c>19)</p><p><b>  {</b></p><p><b>  T0c=0;</b></p><p><b>  if(TW){</b></p><p><b>  TW=0;</b></p><p&

109、gt;<b>  ADRun();</b></p><p><b>  ADRead();</b></p><p><b>  }</b></p><p><b>  else{</b></p><p>  read_temp();</p>

110、<p><b>  Icmdis();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //定時器T1中斷程序</p><p&

111、gt;  void T1Run(void)</p><p><b>  {</b></p><p><b>  TH1=0x3C;</b></p><p><b>  TL1=0xB0;</b></p><p>  TR1=1;//啟動定時器T0</p>

112、<p><b>  }</b></p><p>  void timer1(void) interrupt 3</p><p><b>  {</b></p><p><b>  TH1=0x3C;</b></p><p><b>  TL1=0xB0;&

113、lt;/b></p><p><b>  T1c++;</b></p><p>  if(T1c>199)</p><p><b>  {</b></p><p><b>  T1c=0;</b></p><p>  //EPflag=0;&

114、lt;/p><p><b>  SOV1=OFF;</b></p><p><b>  SOV2=OFF;</b></p><p><b>  SOV3=ON;</b></p><p><b>  }</b></p><p><b

115、>  }</b></p><p><b>  //主程序</b></p><p><b>  main()</b></p><p><b>  {</b></p><p>  char T0c=0;</p><p>  char T1c

116、=0;</p><p><b>  IE=0x8A;</b></p><p>  TMOD=0x11;</p><p><b>  T0Run();</b></p><p>  while(1){ </p><p>  if(S1==0){ ADV0=ADV;</p&

117、gt;<p>  sflag=1;// 手動上水模式標(biāo)志</p><p>  TW=1;//液位檢測標(biāo)志</p><p><b>  SOV1=ON;</b></p><p><b>  SOV2=ON;</b></p><p>  SOV3=OFF;//上水</p>

118、<p><b>  }</b></p><p><b>  else {</b></p><p>  if(sflag) {</p><p>  if(ADV>ADV0+wl){ //手動上水一個檔位后即停止上水</p><p><b>  sflag=0;</

119、b></p><p><b>  SOV1=OFF;</b></p><p><b>  SOV2=OFF;</b></p><p><b>  SOV3=OFF;</b></p><p><b>  }</b></p><p&g

120、t;<b>  }</b></p><p><b>  else{</b></p><p>  if(SOV1==OFF&&SOV2==OFF)</p><p><b>  { </b></p><p>  //EPflag=1; //排空管道水標(biāo)志<

121、/p><p><b>  T1Run();</b></p><p>  SOV3=ON; //排空管道內(nèi)的水</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(ADV<wl*(3-Tflag))

122、</p><p><b>  {</b></p><p><b>  SOV1=ON;</b></p><p><b>  SOV2=ON;</b></p><p>  SOV3=OFF;//水位較低上水</p><p><b>  }&

123、lt;/b></p><p><b>  else{</b></p><p><b>  SOV1=OFF;</b></p><p><b>  SOV2=OFF;</b></p><p><b>  SOV3=OFF;</b></p>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論