太陽能熱水器控制器設計—畢業設計論文_第1頁
太陽能熱水器控制器設計—畢業設計論文_第2頁
太陽能熱水器控制器設計—畢業設計論文_第3頁
太陽能熱水器控制器設計—畢業設計論文_第4頁
太陽能熱水器控制器設計—畢業設計論文_第5頁
已閱讀5頁,還剩49頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1 緒論11 本課題的研究背景 太陽能是地球上取之不盡、用之不竭的最寶貴能源。它在防止和改善大氣污染方面,加強對太陽能的研究和利用, 特別是重點發展太陽能熱水器有著重大的意義和廣闊的前景。太陽能熱水器是一種將太陽輻射能轉變為熱能, 把水逐漸加熱的熱交換裝置, 它是太陽能熱利用的基礎元件。太陽能的開發利用, 已越來越引起世界人們的注意。由于石油和能源的緊缺, 促使太陽能熱水器有很大的發展。日本、法國、澳大利亞等國, 大部分家用熱水來自太陽能熱水器1。目前市場上太陽能熱水器的控制系統大部分都存在著或多或少的缺點:功能單一、操作復雜、控制不方便等。隨著人們生活水平的提高和電子技術的發展,這樣的太陽能

2、熱水器控制系統越來越不適應人們的生活需求,開發一種控制方便,操作靈活的太陽能熱水器的控制系統,已經成為當務之急2。 太陽能熱水器單片機控制系統就是一種以單片機為控制系統核心的系統,不但其機器性能顯著提高,還增加了難以實現的功能,同時也提高了控制的精確度,硬件與軟件相互配合實現太陽能熱水器工作的智能化和自動化3。 單片機具有集成度高、運算速度快、體積小、運行可靠、價格低廉等特點,因此在過程控制、數據采集、機電一體化、智能化儀表、家用設備以及網絡技術等方面得到廣泛應用4。現今太陽能熱水器的控制系統大多都有著功能不全面、操作性復雜、控制不方便等問題,很多控制器只具有溫度和水位顯示功能,不具有溫度控制

3、功能,即使熱水器具有輔助加熱功能,也可能由于加熱時間不能控制而產生過燒,從而浪費電能。本課題設計的太陽能熱水器控制系統以at89s52單片機為檢測控制中心單元,不僅實現了時間、溫度和水位三種參數顯示功能,而且具有時間設定、溫度設定與控制功能。控制系統可以根據天氣情況利用輔助加熱裝置使蓄水箱內的水溫達到預先設定的溫度,從而達到24小時供應熱水的目的。該控制器和以往顯示儀相比具有性價比高、溫度控制與顯示精度高、使用方便和性能穩定等優點,提高了我國太陽能應用領域控制水平,具有可觀的經濟效益和社會效益5。12 太陽能熱水器的發展歷史和現狀1.2.1 太陽能熱水器的發展歷史 太陽能熱水器是利用太陽能集熱

4、器將太陽輻射能轉變為熱能,并用來提高水溫的,是目前實際應用最多、技術最成熟的太陽能熱利用的一種裝置。它不僅可為家庭和機關、旅社、醫院等提供洗澡、洗衣、炊事等所需熱水(100以下),同時還可用于空調、干燥、農業種植、水產養殖、海水淡化等。太陽能熱水器的使用已有近百年的歷史,最早的太陽能熱水器工業出現在18世紀的美國加州,最原始的太陽能熱水器僅是一只漆黑的金屬圓桶。隨著科學技術的進步,太陽能熱水器也隨之不斷改進,由集熱和貯熱合為一體逐步改進為集熱和貯熱部分分開,采用先進的太陽能集熱器,先進的保溫材料和冬季防凍技術及其他輔助裝置等。現如今生產的先進的太陽能熱水器已實現了全年運行,大大提高了太陽能熱水

5、器的熱效率和利用效率。目前,太陽能熱水器是可再生能源技術領域商業化程度最高,推廣應用最普遍的技術之一。以色列在政府的支持下,有85%的住宅都安裝了太陽能熱水器。美國有130多萬個游泳池都裝上了太陽能集熱器,成為環保型的太陽能游泳池。近年來,太陽能熱水器在我國迅猛發展,從20世紀70年代后期就開始了開發家用太陽能熱水器。到20世紀90年代,隨著科技進步,環境意識增強和人的生活水平的提高,使中國太陽能熱水器的應用獲得了巨大動力,以每年25%-30%的速度快速增長。到2000年,全國太陽能熱水器總使用面積達2600萬平方米。太陽能熱水器市場的擴大,使熱水器產業也得到迅速崛起和發展,全國有近1000多

6、家生產企業,年總銷量達6000萬平方米,產量已躍居世界首位,產值60多億元6。1.2.2 太陽能熱水器的發展現狀目前國內的太陽能熱水器主要是采用的緊湊式自然循環系統,這種系統的特點是制造簡單、價格低廉。但如果從太陽能熱水器使用的安全、質量、方便以及操作性等方面來看,分離式強制循環系統更能滿足人們的要求。而采用分離式強制循環系統時一般都要采用承壓儲水箱,這樣就對熱水器的連接部位的強度以及密封性有了一定的要求。平板型集熱器一般是金屬制成的,集熱器與儲水箱之間的連接采用的是金屬連接,因此可以承受較高的水壓,密封性能也較好。而真空管熱水器的集熱管與儲水箱之間的連接一般是用塑料或橡膠來密封,因此在承壓及

7、密封方面效果差。另外,如果對太陽能熱水器的水質要求較高,那么通常是采用雙循環系統,即集熱器加熱的是導熱工質,再通過導熱工質把熱量傳遞給水,避免了水在循環過程中被二次污染,保證了水質。在平板型太陽能集熱器中,傳熱介質可以在集熱器與貯水箱內的換熱器之間無障礙地流動,通過換熱器去加熱貯水箱內的水,完成系統的雙循環,這一點也是平板太陽能熱水器明顯的優勢之處7。根據我國所處的地理環境,太陽能熱水器平均每平方米每年可節約的能源折合100-150公斤標準煤。由此可見,在如今資源短缺,環境惡化的現實中,太陽能熱水器的推廣和應用,將在節約常規能源,減少環境污染和人類社會可持續發展方面起到不可忽視的重要作用,具有

8、極大的發展前途8。在全球能源形勢緊張、氣候變暖嚴重威脅經濟發展,世界能源的日益緊缺、油價的不斷攀升和居民生活水平的高和洗浴舒適度要求提高的今天,世界各國都在尋求新的能源替代戰略,以求得可持續發展和在日后的發展中獲取優勢地位。太陽能以其清潔、源源不斷、安全等顯著優勢,成為關注重點。在太陽能產業的發展中,太陽能熱水器的熱利用轉換技術無疑是最為成熟的9。今后,太陽能熱水器將會向更節能、更高效、更環保等方向發展。13 本課題的研究目的和意義當今計算機技術在飛速發展,微機應用日益普及深入,微機在通信自動化、工業自動控制、電子測量、信息管理和信息系統等方面得到廣泛的應用。嵌入式計算機系統是以應用為中心,以

9、計算機技術為基礎,軟、硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功效等嚴格要求的專業計算機系統。其最初應用是基于單片機的。單片機小巧靈活,成本低,易于產品化。它面向控制,能針對性的解決從簡單到復雜的各種控制任務10。太陽能熱水器使用方便,節能,無污染,普及推廣迅速。它是人們日常生活中不可或缺的家用設備,提高居民的生活質量起了不可替代的作用。隨著科學技術的發展,人們對太陽能熱水器的控制功能的要求也越來越高。目前市場上太陽能熱水器的控制系統大部分都存在著或多或少的缺點:功能單一、操作復雜、控制不方便等。隨著人們生活水平的提高和電子技術的發展,這樣的太陽能熱水器控制系統越來越不適應人們的生

10、活需求,開發一種控制方便,操作靈活的太陽能熱水器的控制系統,已經成為當務之急11。本文設計了一種以單片機at89s52為核心的太陽能熱水器控制器,本設計具有很強的實用性,用成本低廉的器件以單片機技術對太陽能熱水器的溫度、水位和時間的顯示和控制,并且本設計電路簡單、實用性強、性價比高、控制靈活、顯示直觀醒目,可廣泛應用與家用太陽能熱水器。2 總體方案21 設計要求本設計以at89s52單片機為太陽能熱水器控制系統的核心,分為單片機時鐘電路、單片機復位電路、溫度檢測電路、水位檢測電路、實時時鐘電路、鍵盤電路、顯示電路、報警電路等模塊。本系統處于監控狀態時,具有以下功能:1、利用數碼管顯示溫度和時間

11、;2、利用發光二極管顯示水位;3、當水位較低時自動上水,水滿時自動停止;4、當溫度低于下限溫度時自動加熱,溫度達到上限溫度時自動停止加熱;5、通過按鍵實現手動加熱、手動加水、時間顯示以及設置時間、上限溫度和下限溫度;6、清晨自動上水。22 總體設計本設計控制系統中水溫利用溫度傳感器ds18b20讀入溫度數據,在數碼管上顯示兩位數據。水位采用三個電極,一個是電源負極,當電極接觸到水后,由于水的導電性,使得兩外兩根導線也是低電平,從而使三極管導通,p3.6和p3.7是低電平,當兩根導線不接觸水的時候,輸出是高電平。通過p3.6 和p3.7引腳電平高低情況來控制發光二極管點亮的數目,從而來指示當前的

12、水位。當水位比較低的時候,紅燈亮,水位在中間的時候,紅燈和黃燈亮,當水位高的時候三個燈都亮。時間通過時鐘芯片ds1302讀取時鐘數據,然后在四位數碼管上顯示時分。控制加熱裝置和加水裝置分別由兩個繼電器控制,繼電器采用三極管驅動。 本系統采用8個獨立式按鍵,按下s1鍵單片機復位;按下s5鍵可實現手動上水功能,水滿自動停止;按下s6鍵可實現手動加熱功能,溫度達到上限溫度值自動停止加熱;s2為溫度調整鍵,按一次可調整報警上限溫度值,按兩次可調整報警下限溫度值,按三次數碼管恢復到正常溫度顯示;s8為時間調整鍵,按一次調整分,按兩次調整時,按三次確定和保存時間;s3、s4是溫度時間加一和減一操作鍵;按下

13、s7鍵切換溫度和時間顯示。系統組成框圖如圖1所示。溫度顯示 a t 8 9 s 5 2報警電路水位顯示鍵盤電路加熱器繼電器溫度傳感器水位檢測電路加水電磁閥繼電器水箱時鐘芯片 圖1 系統組成框圖3 軟件設計系統軟件的設計采用模塊化的結構。太陽能熱水器控制系統程序主要由主程序、延時子程序、溫度讀取子程序、溫度顯示子程序、時間讀取和顯示子程序、掃描鍵盤子程序、報警子程序構成。31 主程序設計本控制系統的主程序是本設計的總控制程序,以at89s52單片機為核心實現對太陽能熱水器水位和水溫的檢測與顯示。主程序首先完成系統初始化設置,然后根據存儲的鍵盤狀態和檢測的水溫、水位等狀態信號進行相應的處理。系統正

14、常運行時,首先讀取水溫和水位,然后顯示溫度和水位,系統會根據顯示的水溫值和水位值判斷是否要進行自動加熱和自動上水操作。當檢測到的實際水溫小于設置的下限溫度時,加熱指示燈亮,繼電器工作進行加熱,水溫到達上限溫度時停止加熱;當檢測到水位較低時,加水指示燈亮,繼電器工作進行加水,水位達到最高時停止加水;通過掃描按鍵來進行相對應的按鍵操作。主程序流程圖如圖2所示。nyyn自動加水yn水位低?y自動加熱顯示溫度、水位溫度下限?讀取溫度、水位、時間n系統初始化掃描按鍵開始水位最高?溫度=上限?圖2 主程序流程圖32 延時子程序設計 延時子程序是用來實現數碼管顯示和掃描按鍵的延時,num值不同,延時的時間也

15、不同,具體程序如下:void delay(uint num)while( -num );33 溫度讀取子程序設計讀出溫度子程序的主要功能是讀出ram中的9字節,在讀出時需進行crc校驗,校驗有錯時不進行溫度數據的改寫。當ds18b20接收到溫度轉換命令后,開始啟動轉換,轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節。單片機可通過單線接口讀到該數據,讀取時低位在前,高位在后,數據格式以0.062 5 /lsb形式表示。當符號位s=0時,表示測得的溫度值為正值,直接將二進制位轉換為十進制;當s=1時,表示測得的溫度值為負值,先將補碼變換為原碼,再計算十進制

16、值。ds18b20溫度傳感器主要用于對溫度進行測量,數據可用16位符號擴展的二進制補碼讀數形式提供,并以0.0625lsb形式表示。ds18b20的操作協議是:初始化發rom功能指令發存儲操作指令處理數據。yy發18b20復位命令發跳過rom命令發讀取溫度命令讀取操作crc校驗9字節完?crc校驗對?移入溫度暫存器結束nn圖3 讀溫度流程圖34 溫度顯示子程序設計7段led數碼管是利用7個led(發光二極管)外加一個小數點的led組合而成的顯示設備,可以顯示09等10個數字和小數點,這類數碼管可以分為公陰極與共陽極兩種,共陽極就是把所有led的陽極連接到共同的結點,而每個 led的陰極分別為a

17、,b,c,d,e,f,g及dp(小數點);共陰極就是把所有led的陽極連接到共同的結點,而每個 led的陽極分別為a,b,c,d,e,f,g及dp(小數點)。根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。 靜態顯示驅動:每個數碼管的每個段都由一個單片機的i/o端口進行驅動,或者使用如bcd碼的二十進制譯碼器譯碼進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用i/o端口多。動態顯示驅動:動態驅動是將所有數碼管的8個顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,位選通由各自獨立的i/o線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼

18、管會顯示出字形,取決于單片機對位選通控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形12。本設計采用共陽型數碼管,燈的負極依次接到數碼管的a-f段,采用動態掃描電路,數碼管編碼說明,如1表所示。溫度顯示流程圖如圖4所示。表1 控制命令表p2.7p2.6p2.5p2.4p2.3p2.2p2.1p2.0eddpcgbfa00010100028h111101011ebh20011001032h310100010a2h411100001e1h510100100a4h60010010024h711101010eah80010000020h910100000a0hh0110000161

19、hl001100013dh-11110111f7hc001111003chds18b20讀取數值顯示個位結束數碼管位選、段選顯示十位圖4 顯示子程序流程圖35 時間讀取和顯示子程序設計ds1302內部主要包括實時時鐘、輸入移位寄存器、31字節靜態ram、電源控制部分、命令控制邏輯、振蕩器和分頻器等部分。ds1302控制字:控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入到ds1302中。位6:如果為0,則表示存取日歷時鐘數據,為1表示存取ram數據;位5至位1(a4a0):指示操作單元的地址;位0(最低有效位):如為0,表示要進行寫操作,為1表示進行讀操作。控制字總是從最低

20、位開始輸出。在控制字指令輸入后的下一個sclk時鐘的上升沿時,數據被寫入ds1302,數據輸入從最低位(0位)開始。同樣,在緊跟8位的控制字指令后的下一個sclk脈沖的下降沿,讀出ds1302的數據,讀出的數據也是從最低位到最高位。 ds1302時序:ce輸入驅動高時啟動所有的數據傳輸。ce輸入有兩個功能。首先,ce打開控制邏輯,允許訪問的移位寄存器的地址/命令序列。其次,ce提供了一個終止單字節或多字節數據傳輸方法。一個時鐘周期是由一個下降沿之后的上升沿序列。對于數據傳輸而言,數據必須在有效的時鐘的上升沿輸入,在時鐘的下降沿輸出。如果ce為低,所有的i/o引腳變為高阻抗狀態,數據傳輸終止。對

21、于數據輸入:開始的8個sclk周期,輸入寫命令字節,數據字節在后8個sclk周期的上升沿輸入。數據輸入位0開始。對于數據輸出:開始的8個sclk周期,輸入一個讀命令字節,數據字節在后8個sclk周期的下降沿輸出。通過ds1302讀取時間值,然后在四位數碼管上依次顯示時的十位、個位,分的十位、個位。時間的讀取和顯示流程圖如圖5和圖6所示。開始初始化使ds1302沒寫保護復位產生一個高電平寫1302地址延時向該地址寫數據數據寫完?地址增加yn復位產生一個高電平寫1302地址延時向該地址寫數據數據寫完?地址增加yn顯示數據圖5 ds1302讀取時間流程圖開始初始化讀取ds1302顯示分顯示時結束圖6

22、 led顯示時間流程圖36 掃描鍵盤子程序設計按鍵是用來向系統提供操作人員命令的接口,所以準確無誤地辨認每個鍵的動作以及其所處的狀態,是系統能否正常工作的關鍵。多數按鍵多采用機械彈性開關,一次高低電平的變化就是一次命令。但是按鍵的抖動是難以避免的,為了穩定操作,我們要防止抖動的發生,就要消除抖動的影響,可以從硬件和軟件兩方面解決。1、硬件消除抖動。一般采用雙穩態消抖電路。2、軟件消除按鍵抖動。如果按鍵較多硬件電路將無法勝任,因此常采用軟件的方法進行消抖。在第一次檢測到有鍵按下時,執行一段延時子程序后再按確認該鍵電平是否仍保持閉合狀態,如果保持閉合狀態電平則確認為真正有鍵按下,從而消除了抖動的影

23、響13。 鍵盤一般有獨立式和矩陣式兩種,因為鍵盤較少所以用簡單的獨立式鍵盤,它的優點是編程簡單,缺點是占用i/o口多,適用于鍵盤較少的電路。本設計中將鍵盤程序作為主程序的一部份,采用掃描方式讀取鍵盤動作,根據讀取的值,鍵盤處理程序進行相應操作。鍵盤掃描子程序流程圖如圖7所示。提取鍵值開始掃描鍵值有鍵按下?有鍵按下?延時去抖動nyny調用鍵盤處理程序結束圖7 鍵盤掃描子程序流程圖37 報警子程序設計 系統正常運行時,當檢測到溫度低于下限溫度或水位較低時,報警電路工作,蜂鳴器響起,直到溫度高于下限溫度或水位不低時,蜂鳴器停止工作。當系統處于出錯狀態時,蜂鳴器也會報警。報警工作流程圖如圖8所示。開始

24、溫度水位檢測nyy水位低?tt下限?蜂鳴器響n圖8 報警子程序流程圖4 仿真調試41 仿真軟件介紹本次設計是利用proteus軟件來仿真的。proteus軟件是英國labcenter electronics公司出版的eda工具軟件。它不僅具有其它eda工具軟件的仿真功能,還能仿真單片機及外圍器件14。它是目前最好的仿真單片機及外圍器件的工具。proteus是世界上著名的eda工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到pcb設計,真正實現了從概念到產品的完整設計。proteus軟件是目前世界上唯一將電路仿真軟件、pcb設計軟件和虛擬模型仿真軟件三合一的設計平臺

25、,其處理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086和msp430等,并持續增加其他系列處理器模型。在編譯方面,它也支持iar、keil和mplab等多種編譯器。proteus軟件具有其它eda工具軟件的功能。這些功能是:1、原理布圖 2、pcb自動或人工布線 3、spice電路仿真革命性的特點:1、互動的電路仿真。2、仿真處理器及外圍電路。proteus提供了豐富的資源:1、可提供仿真元器件資源,仿真數字和模擬、交流和直流等數千種元器件,有30多個元器件。2、可提供仿真儀表資源。3、除了現實存在的儀器外,它還提供了一個圖形顯

26、示功能,可以將線路上變化的信號,以圖形的方式實時地顯示出來,其作用與示波器相似15。42 系統仿真結果在proteus繪制好原理圖后,調入已經編譯好的目標代碼文件:*.hex,可以在proteus的原理圖中看到模擬的實物運行狀態和過程。打開proteus軟件,在元器件庫中選擇at89s52單片機,ds18b20,ds1302等元器件,連線結束后,點擊單片機下載程序。點擊開始按鈕,系統上電進入初始化狀態,進入工作狀態,太陽能熱水器控制器在2位led數碼管上顯示當前的水溫值,通過發光二極管點亮的數目來表示當前的水位值,利用按鍵來執行加水、加熱、顯示時間、調整溫度、調整時間等相關操作。仿真圖如圖9所

27、示:圖9 仿真圖結 論本次畢業設計,我做的課題是“太陽能熱水器控制器軟件設計”。本設計利用at89s52單片機作為系統核心實現了溫度、水位和時間三種參數的實時顯示,加水加熱自動和手動控制,溫度預置等功能。采用c語言編寫程序,軟件部分由主程序、延時子程序、溫度讀取子程序、溫度顯示子程序、時間讀取和顯示子程序、掃描鍵盤子程序、報警子程序構成。本設計軟件設計是用c語言來編寫的,與其他語言比起來,有優勢也弊端,結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便于使用、維護以及調試。c語言是以函數形式提供給用戶的,這些函數可方便的調

28、用,并具有多種循環、條件語句控制程序流向,從而使程序完全結構化。c語言的缺點主要表現在數據的封裝性上,這一點使得c在數據的安全性上有很大缺陷,c語言的語法限制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。從應用的角度,c語言比其他高級語言較難掌握。在軟件編寫好后,發現始終不能通過編譯,經過老師的幫助,發現了諸多的問題,最后將錯誤改正后,通過編譯,并實現仿真。本設計已基本實現了任務書所要求的的功能,但鑒于自身水平有限等原因,設計中可能會不足和有待改進之處,望各位專家老師批評指正。致 謝彈指一揮間,大學四年已經接近了尾聲。當自己懷著忐忑不安的心情完成畢業設計的時候,

29、意味著大學生活即將結束,自己也從當年一個懵懂的孩子變成了一個成熟的青年。本次設計是我大學生涯上的最后一次答卷,在完成畢業設計的整個過程中,我得到了許多同學和老師的幫助,尤其是我的指導老師紀劍祥,他在我畢業設計完成的過程中給予了很多的教誨、幫助和鼓勵。首先,我要感謝我的導師紀劍祥,從選題到開題報告,到外文翻譯,到中期檢查表,再到畢業論文初稿和終稿,一遍又一遍地指出每稿中的具體問題,嚴格把關,循循善誘。其次,我還要感謝同組的蔡江同學和給予我幫助的同學,沒有他們的幫助和提供資料,沒有他們的鼓勵與支持,我是不可能順利地完成本次設計的。最后,我要感謝培養我長大含辛茹苦的父母,謝謝您們!最后,能夠成功地完

30、成本次設計,我非常地開心!借此機會,再次向在本次畢業設計中給予我關心和幫助的老師和同學表達我誠摯的謝意。參 考 文 獻 1 楊宜德,劉茂州.太陽能熱水器發展的前景廣闊j.河南科技,1989.10 2 劉福才,劉豐,劉立偉.avr單片機在太陽能熱水器智能控制中的應用j.中國儀器儀表,2000.6 3 孔星朗.單片機原理及其在家用電器中的應用.海洋出版社 4 李軍.檢測技術及儀表.北京:中國輕工業出版社,2002.4 5 張景文,王震宏,高為浪,李桂花.基于單片機的太陽能熱水器智能控制系統j.西華大學學報(自然科學版),2008.5 6 趙大偉.太陽能熱水器j.新農業,2002.7 7 別玉,胡明

31、輔,王艷青.平板型太陽熱水器的現狀及發展趨勢c.化學與化工技術,科技學術論文集.北京:原子能出版社,2005 8 胡潤青.蓬勃發展的太陽能熱水器產業.可再生能源 9 張忠.太陽能熱水器的類型j.農村新技術,2008.2 10 王幸之,鐘愛琴,王雷,王閃.at89s系列單片機原理與接口技術m.北京:航空航天大學出版社,2004.511 袁小平,陳躍.一種智能型太陽能熱水器控制器的研制.江蘇煤炭12 范延濱,王正彥.太陽能熱水器控制器中測量模型.電子測量技術,2004.313 唐德禮,鮑連升.太陽能熱水器水溫水位控制器.十堰職業技術學院學報,2002.15(4) 14 宋光漢,方之棋.電氣實驗技術

32、與測量.北京:中國計量出版社15 施文康.檢測技術.北京:機械工業出版社,2002.1(189-207)附錄a:系統原理圖附錄b:程序清單#include #include ds18b20.h #define uint unsigned int#define uchar unsigned char /宏定義#define set p1_0 /定義溫度調整鍵#define dec p1_1 /定義減少鍵#define add p1_2 /定義增加鍵#define jias p1_6 /定義加水鍵#define jiar p1_7 /定義加熱鍵#define beep p3_4 /定義蜂鳴器#de

33、fine s1 p3_7 /定義低水位#define s2 p3_6 /定義高水位#define led1 p1_3 /定義綠燈#define led2 p1_4 /定義黃燈#define led3 p1_5 /定義紅燈#define jdq1 p3_0 /定義加水繼電器#define jdq2 p3_1 /定義加熱繼電器bit shanshuo_st; /閃爍間隔標志bit beep_st; /蜂鳴器間隔標志char flag=0;sbit d1=p06; /位選sbit d2=p04;sbit d3=p02;sbit d4=p00;sbit io=p03; /數據口sbit clk=p01

34、; /控制數據時鐘sbit rst=p05; /使能端、復位端sbit s1=p07; /定義溫度時間切換鍵sbit s2=p35; /定義時間調整鍵char knum=0,snum,fnum;/*寫時分秒地址*/#define write_shi 0x84#define write_fen 0x82#define write_miao 0x80/*讀時分秒地址*/#define read_shi 0x85#define read_fen 0x83#define read_miao 0x81char shi,fen,miao; /讀出數據存儲變量uchar d=0x28,0xeb,0x32,0

35、xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0;/不帶小數點uchar dd=0x38,0xfb,0x42,0xb2,0xf1,0xb4,0x34,0xfa,0x30,0xb0;/帶小數點uchar x=0; /計數器signed char m; /溫度值全局變量uchar n; /溫度值全局變量uchar set_st=0; /狀態標志signed char shangxian=38; /上限報警溫度,默認值為38signed char xiaxian=5; /下限報警溫度,默認值為05uchar code leddata=0x28,0xeb,0x32,0xa2,0xe1

36、,0xa4,0x24,0xea,0x20,0xa0;/*延時子程序*/void delay(uint num) while( -num );/*初始化定時器0*/void inittimer(void) tmod=0x1;th0=0x4c;tl0=0x00; /50ms(晶振11.0592m)ea=1; /全局中斷開關tr0=1;et0=1; /開啟定時器0/*讀取溫度*/void check_wendu(void)uint a,b,c;c=readtemperature()-5; /獲取溫度值并減去ds18b20的溫漂誤差a=c/100; /計算得到十位數字b=c/10-a*10; /計算得

37、到個位數字m=c/10; /計算得到整數位 if(m99)m=99;n=9; /設置溫度顯示上限 /*顯示開機初始化等待畫面*/disp_init() p2 = 0xf7; /顯示-d1 = 0;delay(200);d2=0;delay(200); d3=0;delay(200);d4=0;delay(200);d1=1; /關閉顯示d2=1;d3=1;d4=1;/*顯示溫度子程序*/disp_temperature() /顯示溫度p2 =leddatam%10; /顯示個位 d1 = 1;d2 = 1;d3 = 0;d4 = 1;delay(300);p2 =leddatam/10; /顯

38、示十位d1 = 1;d2 = 1;d3 = 1;d4 = 0;delay(300);d1= 1; /關閉顯示d2= 1;d3= 1;d4= 1;/*顯示報警溫度子程序*/disp_alarm(uchar baojing)p2 =0x3c; /顯示cd1 = 0;d2 = 1;d3 = 1;d4 = 1;delay(200);p2 =leddatabaojing%10; /顯示個位d1 = 1;d2 = 0;d3 = 1;d4 = 1;delay(200);p2 =leddatabaojing/10; /顯示十位d1 = 1;d2 = 1;d3 = 0;d4 = 1;delay(200);if(

39、set_st=1)p2 =0x61;else if(set_st=2)p2 =0x3d; /上限h、下限l標示d1 = 1;d2 = 1;d3 = 1;d4 = 0;delay(200);d1 = 1; /關閉顯示d2 = 1;d3 = 1;d4 = 1;/*報警子程序*/void alarm() if(x=10)beep_st=beep_st;x=0;if(m=shangxian&beep_st=1)|(mxiaxian&beep_st=1)|(flag=1&beep_st=1)beep=1;else beep=0;if(flag=2)if(beep_st=1)beep=1;led1=0;l

40、ed2=0;led3=0;else beep=0;led1=1;led2=1;led3=1;if(m=shangxian) jdq2=1;/*ds1302讀數據*/uchar read_1302(uchar add)/讀函數uchar i,date;rst=0; /禁止讀寫數據for(i=0;i=1;clk=1;for(i=0;i=1;clk=0;rst=0;date=date/16*10+date%16; /進制轉換 16轉10進制io=0; /數據讀完后,io口必須為0,不然小時一直顯示return date; /*ds1302寫數據*/void write_1302(uchar add,

41、uchar dat) /寫函數 uchar i;rst=0; /禁止讀寫數據clk=0; for(i=0;i=1;clk=1;for(i=0;i=1;clk=1;rst=0;void init_1302() /初始化函數 設置時間write_1302(0x8e,0x00);/保護取消,可以進行讀寫操作write_1302(write_miao,0x56);write_1302(write_fen,0x49);write_1302(write_shi,0x14);write_1302(0x8e,0x80);/保護啟動,不能進行讀寫操作void display(uchar shi,uchar fe

42、n,uchar miao) /顯示函數if(knum=0)snum=30;fnum=30;if(knum=1)fnum+;snum=30;if(knum=2)snum+;fnum=30;if(snum=30) d1 = 1; d2 = 1; d3 = 1; d4 = 0; /位選p2=dshi/10;/段選delay(200);p2=0xff;/消隱if(miao%2=0)/小數點閃爍d1 = 1; d2 = 1; d3 = 0; d4 = 1; p2=ddshi%10;delay(200);p2=0xff;/消隱elsed1 = 1; d2 = 1; d3 = 0; d4 = 1; p2=d

43、shi%10; delay(200);p2=0xff;/消隱 if(snum=60)snum=0;if(fnum=30) d1 = 1; d2 = 0; d3 = 1; d4 = 1; p2=dfen/10;delay(200);p2=0xff; /消隱 d1 = 0; d2 = 1; d3 = 1; d4 = 1; p2=dfen%10;delay(200);p2=0xff; /消隱if(fnum=60)fnum=0; void read_sf()shi=read_1302(read_shi);fen=read_1302(read_fen);miao=read_1302(read_miao)

44、;display(shi,fen,miao);/*鍵盤掃描子程序*/void keyscan() /按鍵掃描函數 if(jias=0) /選擇按鍵按下 delay(2000); /消抖 dowhile(jias=0); jdq1=0; if(s1=0&s2=0) led1=0;led2=0;led3=0;flag=0;jdq1=1; if(jiar=0) /選擇按鍵按下 delay(2000); /消抖 dowhile(jiar=0); jdq2=0; if(m=shangxian) jdq2=1; if(s1=0) delay(2000);if(s1=0)while(!s1) read_sf(); /顯示時間 knum+; if(knum=1) disp_temperature(); /顯示溫度 if(s2=0) /選擇按鍵按下delay(2000);if(s2=0)while(!s2)display(shi,fen,miao); /加上這句,按鍵按下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論