版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于AT89C52的太陽能熱水器控制系統(tǒng)</p><p> The Control System of the Solar Energy Water-heater based on AT89C52</p><p> 畢業(yè)論文(設計、創(chuàng)作)開題報告</p><p> ?。ㄓ蓪W生本人認真填寫)</p><p> 學號姓名
2、導師姓名職稱</p><p> 開題時間2009年12月1日</p><p> 課題題目基于AT89C52的太陽能熱水器控制系統(tǒng)</p><p> 課題來源□導師指定 ■自定 □其他來源</p><p> 課題的目的、意義以及和本課題有關的國內外現(xiàn)狀分析:1、目的:近些年來,太陽能的開發(fā)和利用已越來越受到人們的重視和青睞,因為節(jié)能、
3、環(huán)保、使用方便等因素,太陽能熱水器發(fā)展速度更是迅猛。安裝太陽能熱水器已成為房產開發(fā)商售房的誘人條件之一。在農村,隨著農民生活水平的提高,太陽能熱水器漸漸成為必備的家用裝置。所以,普通太陽能熱水器每次使用前需排水;不可缺水,空曬情況下上水會爆炸;冬天水溫不夠,需用電等問題急需解決。本設計通過單片機AT89C52控制A/D轉換芯片、發(fā)光二極管、LED驅動芯片實現(xiàn)熱水器液位及溫度檢測和顯示,并實現(xiàn)相應控制。使用戶省心,使用方便,智能運行,用戶
4、不必做任何操作。2、意義:解決太陽能熱水器現(xiàn)存的一些問題,實現(xiàn)一定程度的智能控制,方便用戶,安全高效。3、現(xiàn)狀:進入二十一世紀以來,隨著生產工藝和生產技術的發(fā)展,人們對產品的要求越來越高。而隨著新型電子技術和微型計算機的廣泛應用與普及, 單片機控制系統(tǒng)以其控制精度高, 性能穩(wěn)定、可靠, 設置操作方便, 造價低等特點, 被應用到太陽能熱水器的控制中來,增強了系統(tǒng)的可視性, 使得溫度及液位檢測和顯示系統(tǒng)更加智能化、人性化。</p>
5、;<p> 研究目標、研究內容和準備解決的問題:1.目標:通過設計一個基于AT89C52的太陽能熱水器的溫度和液位顯示及簡單的控制系統(tǒng),從而實現(xiàn)一定程度的智能控制,方便用戶使用。2.內容:利用集成溫度傳感器DS18B20和液位傳感器LM1042分別進行溫度檢測和液位檢測后,將檢測到的信息傳送給單片機,單片機經過相應的處理控制電磁閥的開啟及溫度和液位的顯示。3.準備解決的問題:如何實現(xiàn)溫度及液位的顯示,如何實現(xiàn)智能上水、缺水
6、上水和手動上水的功能,如何實現(xiàn)輸水管道排空水控制,在水箱上水或洗浴完畢后自動把上水管道內的水排出。</p><p> 畢業(yè)論文(設計、創(chuàng)作)任務書</p><p><b> 指導教師簽名:</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 本文研究的內容2</p><p> 第二章 系統(tǒng)硬件設計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轉換電路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)軟件設計13</p><p> 3.1 軟件功能概述13</p><p> 3.2 主程序設計13</p><p> 3.3 定時器T0中斷程序14</p><p> 3.4 定時器T1中斷程序15</p><p> 3.5 A/D轉換及液位顯示程序15&
11、lt;/p><p> 3.6 溫度采集程序16</p><p> 3.7 LED顯示程序17</p><p><b> 結論19</b></p><p><b> 參考文獻20</b></p><p><b> 附錄21</b><
12、;/p><p><b> 摘 要</b></p><p> 當前能源緊缺,用電緊張,太陽能是綠色能源,得到廣大用戶的喜愛。本文介紹了用液位檢測集成芯片LM1042、溫度傳感器DS18B20和A/D轉換芯片ADC0804,以AT89C52 單片機作為主控元件的太陽能熱水器液位和溫度顯示及控制系統(tǒng)。對太陽能熱水器的控制系統(tǒng)進行了全新的智能設計,可以實現(xiàn):水箱中水位、水溫
13、的智能控制與顯示;自動排空水箱至淋浴器間管道(也是上水管道) 中的存水;智能處理再利用管道排空的水等。使太陽能熱水器操作性能、利用功能、擴展范圍、產品檔次等諸多方面得到提高。解決了普通太陽能熱水器上水時水滿益出;上(下) 水管道需要保溫;使用前需要放出水管中大量冷水等問題。</p><p> 關鍵詞:太陽能;液位控制;溫度控制;水管排空</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ā)展速度更是迅猛。安裝太陽能熱水器已成為房產開發(fā)商售防的誘人條件之一,隨著人們的消費意識、消費層次和消費要求的提高,普通太陽能熱水器上水時水滿溢出;冬天太陽能水溫偏
18、低;上(下)水管道需要保溫;使用前需要放出管道中大量冷水等諸多弊病需要解決。針對上述問題,本文設計了以AT89C52單片機為核心的太陽能熱水器智能控制系統(tǒng),實現(xiàn)了水箱中水位及溫度的智能控制與顯示;自動排空水箱至淋浴器(上下水共用)管道間的存水;為了使排空管道時的水不浪費掉,在浴室內部又設置了一個室內水箱,以備他用。同時,也可實現(xiàn)手動上水,使用方便。使太陽能熱水器系統(tǒng)的操作性能、利用功能、擴展范圍、產品檔次等諸多方面實現(xiàn)質的飛躍。使用戶省
19、心、智能運行。</p><p> 1.2 本文研究的內容</p><p> 本文經過調研及收集相關技術資料,提出如下技術方案。以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> 輸水管道排空水控制,在水箱上水或洗浴完畢后自動把上水管道內的水排出。</p><p> 系統(tǒng)控制和主要結構框圖如圖1.1所示:</p><p> 第2章 系統(tǒng)硬件設計</p>&
21、lt;p> 2.1 系統(tǒng)總體功能概述</p><p> 該系統(tǒng)以AT89C52作為核心控制部件,外加液位傳感器、測溫元件、一片A/D轉換芯片、五個發(fā)光二極管、兩個數(shù)碼管及驅動芯片來達到系統(tǒng)的性能要求。LM1042外接的熱阻探針溫度的變化依賴于周圍材料的熱阻的大小,而空氣和液體的熱阻大小有很大差別,從而可以根據探針在液體中的深度不同時電阻的不同檢測出液位的深度信息,由LM1042內部轉換電路網絡轉換為與
22、液位成線性關系的電壓信號,再由8位逐次逼近型A/D轉換芯片ADC0804將模擬信號轉換為數(shù)字信號,實現(xiàn)液位信息的輸入。AT89C52從ADC0804讀取液位信息后進行數(shù)據處理,結合DS18B20測得的溫度進行液位和溫度的顯示及閥門的控制。</p><p> 圖2.1為系統(tǒng)整體結構圖:</p><p><b> 各部分功能:</b></p><p
23、> 1.電源部分提供+5V電壓供系統(tǒng)使用。</p><p> 2.按鍵部分用來實現(xiàn)手動上水。</p><p> 3.LM1042實現(xiàn)液位信息到電壓信號的轉換。</p><p> 4.ADC0804將液位傳感器輸出的電壓信號經A/D轉換后送到單片機。</p><p> 5.DS18B20實現(xiàn)溫度檢測。</p>&l
24、t;p> 6.AT89C52為處理器,實現(xiàn)液位信息和溫度信息的接收、數(shù)據處理和輸出到發(fā)光二極管和數(shù)碼管顯示。</p><p> 2.2 核心芯片選擇</p><p> 核心控制系統(tǒng)采用ATMEL公司89系列的一款單片機AT89C52,此單片機包含一個8位CPU、256字節(jié)的片內RAM和片內Flash存儲器、4個8位的雙向可尋址I/O口、1個全雙工UART的串行接口、3個16位
25、的定時/計數(shù)器、多個優(yōu)先級的嵌套中斷結構(8級中斷,可實現(xiàn)多個優(yōu)先級的嵌套)、一個片內振蕩器和時鐘電路。</p><p> 在AT89C52單片機結構中,顯著的特點是內部含有Flash存儲器,使用戶在開發(fā)過程中十分容易修改程序,縮短系統(tǒng)的開發(fā)周期。同時,它繼承了CMOS產品低功耗的特點,有兩種產生低功耗的方式:空閑方式和掉電方式。在空閑方式下,CPU停止工作,RAM和其他片內的部件繼續(xù)工作,此時的電流大約是正常
26、工作方式下的15%。在掉電方式下,電流可降到15uA以下。</p><p> AT89C52單片機有多種封裝方式:PDIP封裝、方形的PLCC和PQFP/TQFP封裝,使用方便。其引腳結構圖如圖2.2:</p><p><b> 2.3 液位檢測</b></p><p> 2.3.1 液位傳感器</p><p>
27、; 本次設計液位傳感器選用集成芯片LM1042,實現(xiàn)液位信號到電壓信號的轉換。LM1042是用于液位檢測的專用集成電路,它內部集成了所有控制熱阻探針、檢測熱阻探針的短路和開路所需的監(jiān)控電路,具有很強的功能。</p><p> LM1042使用熱阻探針技術來測量非可燃性液體的液面高度,它能提供一正比于液位高度的輸出,可進行單次或重復測量,所有控制熱阻探針、檢測熱阻探針的短路和開路所需的監(jiān)控電路都集成在LM104
28、2芯片內部。此外該芯片還可采用其它傳感器信號或線性輸入作為輸入信號。</p><p> 該器件采用16腳DIP封裝。芯片的主要特點如下:</p><p> 可以選擇熱阻或線性信號作為輸入;</p><p> 集成有熱阻探針的控制電路;</p><p> 可單次測量或重復測量;</p><p> 在復位時切換,
29、延時功能可避免瞬態(tài)信號的影響;</p><p> 具有探針短路、開路檢測功能;</p><p> 電源或控制輸入端具有50V的瞬態(tài)電壓保護電路;</p><p> 電源范圍7.5~18V;</p><p><b> 內部有電源調節(jié)器;</b></p><p> 可在-40℃~+80℃的工
30、作溫度范圍內工作。</p><p> 熱阻探針工作的基本原理是基于功率在探針上耗散,探針溫度的變化依賴于周圍材料的熱阻的大小,由于空氣和其它氣體相對于水和油來說是熱的不良導體,利用這一點有可能測量探針等浸入液體媒介的深度。其原理如圖2.3所示:</p><p> 在測量周期中,一固定的驅動電流I施加到探針上,在測量的起始時刻和結束時刻探針兩端的電壓被采樣,得到電壓差ΔV0由于空氣的熱阻
31、RTHA大于油的熱阻RTHO,由它們引起的溫度變化分別為ΔT1和ΔT2,相應的探針電阻也會隨著改變?yōu)棣1和ΔR2差值,在每單位長度上產生相應的電壓變化ΔV1和ΔV2。電壓差ΔV由下式給出:ΔV=LAΔV1/L+(L-LA)ΔV1/L</p><p> 由于ΔV1>ΔV2,RTHA>RTHO,ΔV會隨著探針在空氣中長度的增加而增大。在實際應用中,為獲得最佳效果,探針需要具有高的溫度系數(shù)和低的熱阻時間
32、常數(shù),為避免誤觸發(fā)探針短路開路檢測器,探針電壓必須介于0.7V和5.3V之間,對于200mA的電流容許的探針阻值范圍是3.5Ω到24Ω。</p><p> 在圖2.4中,7腳和10腳是用于探針2的調整,由于本系統(tǒng)只用到探針1,故只需將7腳和10腳接地即可;1 腳是熱阻探針輸入端;5腳是探針故障檢測端;6腳是電源端;3、4腳分別接PNP管的發(fā)射極和集電極用于給探針提供200mA的固定電流;16腳為模擬電壓輸出端,
33、輸出與液位成正比的模擬電壓;12、13腳用來調整探針的測量周期;9、14腳外接兩個電容作為探針的記憶電容,記憶探針的電壓值。</p><p> 2.3.2 AD轉換電路</p><p> 由于LM1042輸出的是模擬信號,須經AD轉換器轉換成單片機可處理的數(shù)字信號,且考慮到該裝置是應用于太陽能熱水器中,無需高精度,故選用8位AD轉換器ADC0804進行AD轉換即可。</p>
34、;<p> ADC0804型8位全MOS A/D轉換器是中速廉價型產品之一。片內有三態(tài)數(shù)據輸出鎖存器,與微處理器兼容,輸入方式為單通道,轉換時間約為100μs。它的非線性誤差為±1LSB。電源電壓為+5V。其引腳圖如圖2.5所示:</p><p> 被轉換的電壓信號從Vin(+)和Vin(-)輸入。允許此信號是差動的或不共地的電壓信號,模擬地和數(shù)字地分別設置引入端,使數(shù)字電路的地電流不
35、影響模擬信號回路,以防止寄生耦合造成的干擾。Vref/2端不必外接電源,懸空即可。/CS是片選端,/WR是控制芯片啟動的輸入端;/INTR是轉換結束信號輸入端,輸出電平由高跳低則表示本次轉換已經完成,可作為中斷或查詢信號。</p><p> ADC0804片內有時鐘電路,只要在外部“CLKR”和“CLK”兩端外接一對電阻和電容即可產生A/D轉換所需要的時鐘,其振蕩頻率為fclk≈1/1.1RC。本次設計選用R=
36、10kΩ,C=150pF,此時fclk≈640kHz。其與單片機的接口電路如圖2.6所示:</p><p><b> 2.4 溫度檢測</b></p><p> 對水箱水溫的測定,采用了較為先進的DS18B20集成模塊溫度傳感器,該傳感器將溫度信號以數(shù)字量傳給單片機,無需其他的外圍電路,一條口線,電路簡單,使用穩(wěn)定,可以方便的實現(xiàn)單片機對溫度參量的讀取。DS18
37、B20采用3腳PR_35封裝或8腳SOSI封裝,管腳排列如圖2.7所示。</p><p> DS18B20內部結構如圖2.8所示,主要由4部分組成:64位ROM;溫度傳感器;溫度報警觸發(fā)器TH和TL;配置寄存器??紤]到系統(tǒng)功能的限制,傳感器的報警功能沒有使用。</p><p> 圖2.8 DS18B20的內部結構示意圖</p><p> 單總線即只有一根數(shù)據
38、線,系統(tǒng)中的數(shù)據交換、控制都由這根線完成。其基本的通信過程如下:</p><p> 主機通過拉低單總線至少480us產生復位脈沖。</p><p> 然后由主機釋放總線,并進入接收模式。主機釋放總線時,會產生一由低電平跳變?yōu)楦唠娖降纳仙亍?lt;/p><p> 單總線器件檢測到該上升沿后,延時15~60us。</p><p> 單總線器
39、件通過拉低總線60~240us來產生應答脈沖。</p><p> 主機接收到從機的應答脈沖后,說明有單總線器件在線,然后主機就可以開始對從機進行ROM命令和功能命令操作。</p><p> 所有的讀、寫時序至少需要60us,且每兩個獨立的時序之間至少需要1us的恢復時間。在寫時序中,主機將在拉低總線15us之內釋放總線,并向單總線器件寫1;若主機拉低總線后能保持至少60us的低電平,則
40、向單總線器件寫0。單總線器件僅在主機發(fā)出讀時序時才向主機傳輸數(shù)據,所以,當主機向單總線發(fā)出讀數(shù)據命令后,必須馬上產生讀時序,以便于單總線器件能傳輸數(shù)據。</p><p> DS18B20可以使用外部電源VDD,也可以使用內部的寄生電源,無論是內部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻。本系統(tǒng)選用外部電源,即在VDD端口接5V的電壓。故單片機與DS18B20的連接圖如圖2.9所示:</p&
41、gt;<p><b> 2.5 顯示電路</b></p><p> 2.5.1 溫度顯示電路</p><p> 常用的LED顯示器有7段或8段,有共陰極和共陽極種。本次設計選用的是7段共陰極。</p><p> 由于單片機I/O的電氣特性決定了單片機的端口的驅動能力有限,一般的,單片機的端口只是驅動TTL電平,不提供或
42、者提供很小的驅動電流,所以在帶負載時,單片機應當在I/O口加上驅動芯片。本次設計選用ICM7218數(shù)碼管驅動芯片。ICM7218 是INTERSIL公司生產的一種性能價格比較高的通用8 位L ED 數(shù)碼管驅動電路,28 腳雙列封裝,可與多種單片機接口使用。ICM7218 的輸出可直接驅動L ED顯示器,不需外接驅動電路,其構成的顯示電路結構簡單,使用方便。ICM7218A顯示電路如圖2.10所示:</p><p>
43、; 本系統(tǒng)顯示用的2位七段數(shù)碼管由數(shù)碼管專用驅動芯片ICM7218A驅動,27、3、1、25、2、24、26腳分別接數(shù)碼管的a~g,15、16腳為位選,分別控制2位數(shù)碼管的亮滅,ID0~7為數(shù)據線,接單片機P0口,/WRITE、MODE是寫控制位和模式控制位,分別接單片機P2.5、P2.6。</p><p> 2.5.2 液位顯示電路</p><p> 考慮到熱水器的液位顯示只需給
44、人以直覺上水量的多少(即當前水量占總容積百分比),而不必給出當前液位的具體數(shù)值。故選用5個發(fā)光二極管,用它們的亮滅來顯示水位的五種狀態(tài)。發(fā)光二極管、按鍵與單片機連線如圖2.11所示:</p><p><b> 發(fā)光二極管</b></p><p> 發(fā)光二極管在兩端的電壓差超出其導通壓降時開始工作,發(fā)光二極管的導通壓降一般約為1.7~1.9V。此外,工作電流要滿足該
45、二極管的工作電流,滿足電流和電壓的要求,二極管就可以發(fā)光了。單片機系統(tǒng)中往往是數(shù)字信號,其電源不是5V就是0V,所以只要將二極管的正負極和電源對應上就可以了。</p><p> 在發(fā)光二極管前面要接一個電阻,這個電阻的作用在于限制二級管的電流,從而達到減少功耗或者滿足端口對最大電流的限制。</p><p> 一般二極管的點亮電流為5mA~10mA,在5V電源驅動時,廠家多采用470 Ω
46、。限流電阻,在該設計中選用510Ω,這樣既不會超出單片機的I/O口最大限流,二極管也比較明亮。</p><p> 使用五個發(fā)光二極管來表示液位的五種狀態(tài):全亮時對應水滿,全滅時對應缺水,僅D1亮時對應20﹪,僅D1和D2亮時對應40﹪,D1、D2、D3亮時對應60﹪,僅D5滅時對應80﹪。</p><p><b> 按鍵</b></p><p&
47、gt; 當有按鍵被按下時說明用戶要手動上水。按鍵使用上拉電阻方式接入單片機。未按下時對單片機輸入一個高電平,按下后輸入一個低電平。</p><p> 鍵的閉合與否,反映在行線輸出電壓上就是呈現(xiàn)出高電平或低電平,如果高電平表示斷開的話,那么低電平則表示閉合,所以通過對行線電平的高低狀態(tài)的檢測,便可以確認按鍵按下與否。為了確保CPU對一次按鍵動作只確認一次按鍵,必須消除抖動的影響。</p><
48、p><b> 電磁閥</b></p><p> 電磁閥在本次設計中是輸出設備,用來控制上下水,24V三極管電磁閥驅動電路圖如圖2.12所示。系統(tǒng)中用到三個電磁閥控制水箱和水管的連接。</p><p> 目前市場上的太陽能熱水器大都裝有管道保溫裝置,以防在冬天管道中的水結冰,即使不結冰,在使用前也要放掉管道中的全部冷水,不但給使用者帶來了很多的不便,也對水資
49、源形成了較大的浪費。為此設計了水管排空功能,在水箱下安裝一個電磁閥,當關閉上水閥和水箱的閥門,停止向水箱加水后,開啟通往小水箱的電磁閥門,則單向閥進氣使水管內存水排至室內小水箱,完全把水管內的存留水排出水管,從而達到在使用時直接使用熱水和節(jié)水的目的。電磁閥的開關全由單片機控制,在上水和洗浴完畢后單片機發(fā)出電磁閥1和電磁閥2關閉,電磁閥3開啟的放水指令,10s后關閉電磁閥3,系統(tǒng)處在待命狀態(tài)。同時打開電磁閥2和電磁閥3即可給室內水箱供水,
50、供水完畢后再執(zhí)行管道排空水指令使整個系統(tǒng)處在待命狀態(tài)。</p><p><b> 2.6 電源電路</b></p><p> 為了使單片機有一個穩(wěn)定的工作環(huán)境,且各組件都正常的工作,特別制作了5V的直流穩(wěn)壓電源。電源電壓器將220V的交流電壓變?yōu)樗桦妷褐?,然后通過橋式整流電路將交流電壓變成脈動的直流電壓。由于其含有較大的紋波,必須通過濾波電路加以濾除,以得到平
51、滑的直流電壓最后通過穩(wěn)壓電路維持輸出直流電壓穩(wěn)定。</p><p> 本電路的特點是:電源輸出穩(wěn)定,具有較好的抗干擾能力。輸出標準的5V直流電壓。給整個控制系統(tǒng)供電,電源電路如圖2.13 所示:</p><p> 第3章 系統(tǒng)軟件設計</p><p> 3.1 軟件功能概述</p><p> 在系統(tǒng)的硬件確定以后,功能完善的軟件能
52、夠很好的指導和協(xié)調硬件的工作,可使系統(tǒng)發(fā)揮其最大的作用,并且便利以后的更新?lián)Q代升級。</p><p> 一個完整的系統(tǒng)都離不開對系統(tǒng)狀態(tài)的監(jiān)控,為了更好的協(xié)調軟件、硬件各個部分正常工作,就必須對整個系統(tǒng)進行嚴密監(jiān)控。在本系統(tǒng)中定時器T0中斷服務程序擔任液位數(shù)據讀取、處理和輸出顯示任務,每隔一定的時間對A/D轉換進行一次采樣,并進行相應的處理,再經過發(fā)光二極管來實現(xiàn)液位的顯示。而定時器T1中斷服務程序擔任溫度數(shù)據
53、讀取、處理和輸出顯示任務,并經LED顯示。而主程序完成的任務相對簡單,它只是完成系統(tǒng)初始化及檢測是否有鍵按下等工作。若有鍵按下,則進入手動上水模式。</p><p> 3.2 主程序設計</p><p> 在本系統(tǒng)中主程序完成的任務相對簡單,它只是完成初始化等工作而進入按鍵查詢等待方式。主程序的初始化主要包括:DS18B20初始化、T0和T1的初始化并啟動T0。按鍵查詢主要是S1鍵,
54、當功能鍵S1按下就轉入手動上水子程序,每按一次上水一個檔位。主程序流程圖如圖3.1所示。</p><p> 3.3 定時器T0中斷程序</p><p> T0定時時間為1S,即每隔1S執(zhí)行一次T0中斷服務程序。該程序完成的任務比較多,主要包括:(1)溫度信息的采集和顯示;(2)讀取、顯示和處理液位信息。至于完成哪項任務由標志位TW決定。T0中斷服務程序流程圖如圖3.2所示:由于液位和
55、溫度均是變化比較緩慢的量,故只需每隔一定時間檢測一次。</p><p> 在此選定1s檢測一次,即1s進行一次A/D轉換。由于本系統(tǒng)所用晶振為12MHZ,默認為12分頻,故定時器每計時一次用時為12/11.0592μs,約為1μs。因為定時器為16位定時器,故最多計時65536次,即計時65536μs=65.536ms,此處用定時器T0定時50ms,則當定時器定時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> 當停止上水和洗浴完畢時,關閉電磁閥1、2,開啟電磁閥3,從而排空管道水,10s后關閉電磁閥。用T1來定時10S,其定時方式同T0,定時200次。T1中
57、斷程序的流程圖如圖3.3所示:</p><p> 圖3.3 T1中斷程序流程圖</p><p> 3.5 A/D轉換及液位顯示程序</p><p> A/D轉換子程序主要完成A/D值的讀取、處理及液位信息的顯示。因為ADC0804進行A/D轉換的過程中/INTR=1,轉換完成后/INTR=0,故啟動A/D轉換后要先檢測/INTR,當/INTR為低電平時才進
58、行A/D值讀取操作。將讀取得到的8位液位值,并經發(fā)光二極管顯示。其流程圖如圖3.4所示,事先測得水滿時的液位,用wlmax表示,且用十六進制表示,令wl=wlmax/5。</p><p> 3.6 溫度采集程序</p><p> 溫度采集子程序的功能是對DS18B20進行初始化、查詢溫度采集和轉換是否完成,并且完成對溫度數(shù)據的處理以便送LED顯示。其程序流圖如圖3.5所示:</
59、p><p> 3.7 溫度顯示程序</p><p> LED顯示子程序主要完成溫度值的顯示,本系統(tǒng)采用數(shù)碼管專用驅動芯片ICM7218驅動2位七段數(shù)碼管用于溫度值的顯示,只需要把要顯示的數(shù)據寫入ICM7218的RAM中即可,由于該芯片默認驅動8位數(shù)碼管,必須寫入8字節(jié)顯示數(shù)據,而此系統(tǒng)只用低2位,只需把高6位置為隨機數(shù)即可,故先通過ICM7218的控制位WR=0和MODE=1使芯片工作于
60、方式1,寫入控制字B*H,即選擇BCS碼譯碼選擇模式,然后使MODE=0使芯片工作于方式0,寫入8字節(jié)數(shù)據即可完成溫度值的LED顯示。溫度顯示子程序流程圖如圖3.6所示</p><p><b> 結論</b></p><p> 本次畢業(yè)設計主要是為了改善太陽能控制系統(tǒng)的功能,實現(xiàn)液位和溫度的檢測與顯示,上水控制及輸水管道排空水控制。該控制系統(tǒng)基本上考慮了太陽能熱水
61、器的功能擴展和檔次提升的空間。通過反復實驗,系統(tǒng)的程序執(zhí)行狀況、模擬效果演示均是令人滿意的。</p><p> 整個系統(tǒng)存在如下特點:具有一定程度的智能性,可實現(xiàn)自動上水及液位和溫度信息的顯示,自動排空管道中的存水以節(jié)約用水且方便下次使用。但也存在一些不足。受AT89C52資源的限制,沒有設計看門狗電路。另外沒有加入加熱裝置,所以水溫受天氣影響較大。</p><p> 本次畢業(yè)設計讓我
62、進一步鞏固了四年來學習的理論知識,還要做到理論與實踐相結合。如機型和元器件的選擇,要以性價比高為原則,以組成最小最優(yōu)化的系統(tǒng),硬件和軟件在一定程度上具有互換性,多用軟件可節(jié)省成本,這些都是在設計中應該考慮的。學到了許多課本上學不到的知識軟件,通過這次畢業(yè)設計使動手能力和理論知識有了很大的提高。</p><p><b> 參考文獻</b></p><p> [1]
63、鄭郁正.單片機原理及應用.四川大學出版社.2003.</p><p> [2] 求是科技.單片機典型模塊設計實例導航(第2版).人民郵電出版社.2008</p><p> [3] 王慶. Protel 99 SE&DXP電路設計教程(附盤).電子工業(yè)出版社.2006</p><p> [4] 康華光.電子技術基礎模擬部分.高等教育出版社.1999.&l
64、t;/p><p> [5] 譚浩強.C程序設計(第二版).清華大學出版社.1999</p><p> [6] 張福安,李麗欣,等.基于μ’nsp處理器的太陽能熱水器智能控制系統(tǒng).德州學院學報第23卷第6期.2007年12月</p><p> [7] 基于數(shù)字溫度傳感器DS18B20的分布式測溫系統(tǒng)的設計.吉林化工學院學報.第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ù)據輸出口</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;//溫度正負標志位</p><p> uchar TEMP[2];//當前溫度值</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; //手動上水模式標志位</p><p> uchar Tflag; //高溫標志</p><p>
71、 //uchar EPflag; //排空水標志位</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復位和初始化</p><p> { uchar data i;</p><p> DQ=0;//發(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) { //溫度為負</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; //高溫標志</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轉換及液位顯示子程序</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;// 手動上水模式標志</p><p> TW=1;//液位檢測標志</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; //排空管道水標志<
121、/p><p><b> T1Run();</b></p><p> SOV3=ON; //排空管道內的水</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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計---基于at89c52的太陽能熱水器控制系統(tǒng)
- 畢業(yè)設計--太陽能熱水器智能控制系統(tǒng)
- 畢業(yè)設計--太陽能熱水器智能控制系統(tǒng)
- 太陽能熱水器溫度控制系統(tǒng)畢業(yè)設計
- 太陽能熱水器溫度控制系統(tǒng)畢業(yè)設計
- 畢業(yè)設計---太陽能熱水器智能控制系統(tǒng)
- 基于STC89C52的紅外遙控智能太陽能熱水器控制系統(tǒng).pdf
- 太陽能熱水器控制系統(tǒng)的設計
- 太陽能熱水器控制畢業(yè)設計論文
- 太陽能熱水器控制器畢業(yè)設計
- 畢業(yè)設計---太陽能熱水器自動控制系統(tǒng)
- 畢業(yè)設計---太陽能熱水器自動上水控制系統(tǒng)設計
- 畢業(yè)設計---太陽能熱水器自動上水控制系統(tǒng)設計
- 太陽能熱水器智能控制器-畢業(yè)設計
- 太陽能熱水器
- 太陽能熱水器的智能控制器-畢業(yè)設計
- 太陽能熱水器自動上水控制系統(tǒng)設計
- 太陽能熱水器水位自動控制系統(tǒng)畢業(yè)設計論文
- 畢業(yè)設計-太陽能熱水器控制電路設計
- 畢業(yè)設計---基于plc的太陽能熱水器自動控制系統(tǒng)的設計
評論
0/150
提交評論