欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16171|回復: 7
打印 上一主題 下一主題
收起左側

基于單片機的太陽能熱水器控制器的設計文檔 附程序與電路圖

  [復制鏈接]
跳轉到指定樓層
樓主
ID:419006 發表于 2018-11-1 13:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
太陽能熱水器控制器的設計

摘 要
    本文分析了太陽能熱水器的基本構造并且簡單介紹了其工作原理,設計了與之配套的太陽能熱水器控制器。該控制器利用SST89E58單片機作為核心器件控制整個系統運作;溫度傳感器DS18B20可以用來實時檢測水溫,并將檢測到的數據送至單片機進行處理后顯示;由4個按鍵組成的模擬水位用來檢測實時水位,當不同的按鍵按下時,可以模擬出相應的水位;由芯片8155控制的4個數碼管是用來顯示水位和水溫的;由LED燈和蜂鳴器組成的報警電路實現了聲光報警,當水位或是水溫超出了正常范圍,報警電路就會啟動;由繼電器控制1個LED燈的亮滅來模擬輔助加熱系統是否工作。
本篇論文從硬件電路的原理分析、軟件編程的實現過程、電路仿真和調試等內容進行分析,實現了控制器的檢測、顯示和控制功能。

目 錄
摘要
Abstract
第一章 緒論
1.1背景
1.2 現狀分析
第二章 太陽能熱水器的結構及工作原理
2.1太陽能熱水器的結構及工作原理
2.2 控制器結構及工作原理
第三章 控制器硬件設計
3.1 控制器總體設計
3.2 單片機及其外圍電路
3.2.1 單片機簡介
3.2.2 晶振電路
3.2.3 手動復位電路
3.3 顯示電路
3.3.1 數碼管簡介
3.3.2 8155簡介
3.4溫度檢測電路
3.4.1 溫度傳感器DS18B20簡介
3.4.2 溫度檢測電路設計
3.5 水位檢測電路及自動上水
3.5.1 水位檢測電路設計
3.5.2 自動上水設計
3.6 溫度設定及報警電路
3.6.1 溫度設定
3.6.2 報警電路設計



3.7 輔助加熱電路
第四章 控制器軟件設計
4.1主程序設計
4.2 溫度檢測子程序
4.3 水位檢測子程序
4.4 報警子程序
4.5 顯示子程序
4.6 輔助加熱子程序
4.7 自動上水子程序
4.8 溫度設定子程序
第五章 電路調試及結果
5.1程序編譯與仿真結果
5.2 硬件電路調試
5.3 調試過程中遇到的問題
總結
參考文獻
致謝
附錄

第一章 緒論
1.1背景

隨著社會的進步,人類文明在不斷提高的同時,卻面臨著一個非常嚴峻的問題:世界上的不可再生能源——煤炭、石油、天然氣的存儲量在以極快的速度減少,在不久的將來,這些寶貴的資源將逐漸從地球上消失。與此同時,使用這些能源給我們周圍的環境帶來了巨大的破壞。藍藻爆發、臭氧空洞、二噁英事件等環境問題在不斷的出現,生態平衡遭到了嚴重的破壞。所以,人類急需發現更多無污染的可再生資源,在這時,太陽能這個無窮無盡的綠色資源得到了人們的青睞。使用它不僅可以解決能源短缺的問題,而且不用擔心它會消耗盡,只要太陽 升起,人們就可以得到儲量豐富的太陽能;另外,太陽能的使用不會產生CO2等有害氣體,絕對不會對環境產生任何的污染,有效地緩解了現存的環境問題。太陽能技術也因此得到了飛速的發展,太陽能汽車、太陽能電池、太陽能熱水器等新型產品不斷出現在市場上,其中,以太陽能熱水器發展的最為廣泛,也得到了大眾的認可。根據不完全統計,太陽能熱水器的銷售量已遠遠超過了其他種類的熱水器。隨著太陽能技術的不斷改革,此款熱水器會有一個更廣闊、更長遠的發展。

太陽能熱水器給人們提供著安全、綠色、節能的熱水,而且造價比較低廉,在技術上也比較成熟,因此受到人們的喜愛。在整個太陽能熱水器系統中,除了熱水器本身之外,還有一個系統也起到了及其重要的作用,即控制器。它是用戶與熱水器之間的交流介質,通過控制器,可以將熱水器的水位水溫信息及時反饋給用戶,而用戶也可以通過控制器對熱水器進行操作,比如,當熱水器的水箱沒水時,用戶可以選擇自動上水功能來加水,當雨雪天氣時,沒有足夠的熱量來滿足水的溫度,用戶就可以啟動輔助加熱功能,通過加熱棒來加熱水,這樣,無論何時用戶都可以使用到熱水。

1.2 現狀分析

太陽能熱水器的銷量一直成增長趨勢,十幾年前,市場的主導還是電加熱型的熱水器,太陽能熱水器寥寥無幾,而如今,幾乎每家每戶都在使用太陽能熱水器,以其廉價、節能、環保的優勢占領了絕大部分市場。隨著人們越來越濃厚的環保意識,對這種綠色的太陽能熱水器的需求會越來越大。但是與之配套的控制器卻一直沒有達到成熟的階段。目前,大多數控制器只具有簡單的檢測、顯示功能,還需要人為的上水,當水溫達不到滿意的溫度時,用戶束手無策。因此,一個多功能的控制器一旦問世,一定會得到人們的喜愛。這種控制器的市場前景非常廣闊。

這種控制器以單片機為核心器件,單片機的價格低廉、工作穩定、設計簡單,非常適合這種控制器的生產,智能化的單片機還能夠根據不同的需求作出相應的調整,滿足了不同用戶的多方面需求。另外,單片機系統耗能較少,能夠最大程度的節約能源,保護設備,增加設備的使用壽命。它適用于各個地方的各種需求,且安裝快捷,使用方便,所以它的市場前景廣闊,是目前市面上其他熱水器種類的升級產品。總之,無論從價格還是技術來說,太陽能熱水器及其控制器都具有很大的優勢。


第二章 太陽能熱水器的結構及工作原理
2.1太陽能熱水器的結構及工作原理

    太陽能熱水器的組成很簡單,包括存儲熱水的保溫水箱、用于吸收太陽光能量并把它轉換為熱量的集熱器、冷水和熱水循環流動的水管,再加上幾個閥門,用來控制水的流向。其結構圖如下所示:

圖2-1太陽能熱水器結構原理圖

太陽能熱水器產生熱水的過程也非常簡單,利用冷熱水密度不同的原理就可以完成水循環,集熱器可以很好的保留太陽光的能量,從而將其轉換為水的熱量,當有水從集熱器中流過時,冷水被加熱為熱水,再流向保溫水箱儲存起來,以供用戶隨時使用,直到水溫達到設定值,循環閥門關閉。水循環過程如下圖所示:

     

圖2-2太陽能熱水器水循環原理圖

2.2 控制器結構及工作原理

控制器的核心器件為SST89E58單片機,下圖中T1代表保溫水箱中的溫度傳感器DS18B20,由它負責實時溫度值的檢測,再發送給單片機進行顯示;T2負責水位的檢測,并完成自動上水功能;F1、F4分別代表冷水閥門和熱水閥門;冷水和熱水分別經F2、F3循環流動,最終存儲在保溫水箱中;電加熱系統負責在雨雪天氣進行加熱,來達到設定溫度;控制器還應有報警功能,當數據超過了正常范圍,報警器啟動,提醒用戶。


圖2-3控制系統結構簡圖


工作原理:

白天集熱器工作時,打開閥門F2、F3,冷水從水箱流向集熱器,經過加熱后的熱水經F3流向保溫水箱。溫度傳感器T1實時檢測水溫,當溫度達到設定值時,關閉閥門F2,F3。用戶使用水時,打開閥門F4。沒有水時,打開閥門F1上水。當陽光不足的陰雨天氣時,水溫達不到設定值,可以啟動輔助加熱系統。


第三章 控制器硬件設計

控制器通過顯示電路能夠及時的反映出熱水器的實時狀態,包括水的溫度、水箱中剩余的水量,它的輔助加熱系統使人們在陰雨天氣也能夠使用到熱水,報警功能能夠督促人們去改變熱水器的狀態,使之處于正常的工作范圍。總之,控制器為人們使用太陽能熱水器帶來了方便。對本課題進行分析之后,擬出了三個方案,如下所示:

方案一:以FPGA為基礎設計系統

本方案以VHDL語言和EDA技術為基礎,設計了一款太陽能熱水器控制器,該系統的實現基于FPGA,控制器的硬件電路和軟件程序相結合,完成了對水箱中的水溫、水位等信息的采集和顯示。

方案二:以CPLD為基礎設計系統

本方案以芯片EPMl270作為核心器件,將控制器的外接電路檢測得到的水溫水位信息進行處理和分析,并從LCD液晶顯示屏上展示給用戶,有效地解決了使用太陽能熱水器過程中遇到的問題。

方案三:以單片機SST89E58為基礎設計太陽能熱水器控制系統

本方案以SST89E58作為中心環節,它與80C51完全兼容,選擇DS18B20為溫度傳感器、8155作為接口芯片,再加上鍵盤、顯示電路,實現了對太能熱水器的水溫水位的檢測和控制。控制器還有一套輔助加熱的從系統,以繼電器作為啟動從系統的開關。

通過對以上三個方案的優缺點的分析,從實際的可行度,個人的知識掌握情況以及節約成本考慮,本設計選用第三種方案。


3.1 控制器總體設計

本設計的核心器件為SST89E58單片機,由它控制所有的功能完成運行,溫度的檢測需要用到溫度傳感器,這里選用DS18B20,水位的檢測需要用到水位傳感器,為了方便實驗,本設計中用四個按鍵來模擬不同的水位,不同的按鍵按下會得到相應的水位信息,顯示用到數碼管,并由芯片8155作為接口電路,還需要由蜂鳴器和LED組成的報警電路來實現聲光報警,輔助加熱系統必須要用到繼電器,以此來控制開關。根據以上設計,得到控制系統方框圖如下:

圖3-1 控制系統方框圖

3.2 單片機及其外圍電路

基于單片機設計的電路簡單,I/O口擴展方便,因此可以外接多個電路,完全滿足了控制器的需求,對單片機的編程也可使用匯編和C語言,編程方便;此外,單片機價格低廉、工作穩定、耗能較少,非常適合實驗使用。

3.2.1 單片機簡介

單片機是一個集成在芯片上的計算機,SST89E58與80C51完全兼容,編程方便,程序被保存在ROM中,因此具有掉電保存功能,單片機擁有大量的I/O口和外擴I/O口,可以基于單片機設計很多電路,它的總線結構負責片內所有部件的通信,提高了工作過程中的可靠程度。片內有256個數據存儲空間,絕對能夠滿足控制器的需求。在本設計中只使用到了單片機的某些引腳,例如外接石英晶體和電容的X1、X2等,單片機引腳圖如下所示:

     

圖3-2 單片機引腳排列圖

部分引腳功能介紹:

表3-1 芯片引腳介紹      

3.2.2 晶振電路

時鐘電路提供了系統所需要的時鐘信號,控制著單片機的工作節奏。其電路圖如下所示,圖中X1為石英晶體振蕩器,C1、C2是兩個值為30pF的反饋電容,它們構成的外部電路從XTAL1 、XTAL2端輸入,與片內的反相器相結合,產生震蕩脈沖,再經過分頻電路,得到需要的時鐘信號,以供單片機使用。本設計中晶振的頻率為11.0592MHz。


圖3-3 晶振電路

3.2.3 手動復位電路

單片機的復位電路用于產生復位信號,并從RST端輸入,當單片機檢測到RST端有超過2個周期的高電平后,系統進行復位,本設計采用手動復位,如圖3-4所示,當按下圖中的按鍵時,RST電平變高,單片機復位。

      

圖3-4 手動復位電路

3.3 顯示電路

控制器的顯示電路可以顯示水箱中水的剩余量以及水的溫度,使人們及時的了解熱水器的工作狀態,采用數碼管與8155的結合來顯示,這樣便有效的節省了大量的I/O端口,功耗低,應用非常廣泛,且設計方便,硬件電路也較為簡單。

3.3.1 數碼管簡介

為了對采集到的水溫和水位的進行顯示,要用到4個數碼管。其中2個用來顯示水位的高低,另外2個用來顯示實時的水溫。

發光二極管的縮寫字母是LED,它是能夠將電信號轉換為光信號的發光器件。數碼管就是由多個LED按照數字8的形狀排列而成的。本設計中使用的是8段數碼管,其發光二極管的排列形狀如圖3-5(a)。

                    

圖3-5 8段LED顯示器

在使用過程中,為了給發光二極管提供電壓使其發光,會把8個二極管的一端相連,給予高電平或是接地,連接方式有以下2種:

?共陽極。此方法給8個發光二極管的陽極端提供高電平,如圖3-5(b)所示,另一端提供低電平的二極管會被點亮,否則滅。

?共陰極。此方法將8個發光二極管的陰極端接地,如圖3-5(c)所示,另一端提供高電平的二極管會被點亮,否則滅。

本設計中用到的是共陰極接法,所以給陽極引腳加上高電平二極管就會發光。

3.3.2 8155簡介

本設計中用8155作4位數碼管的接口芯片。如圖3-6所示,其中PA口為位碼輸出口,PA4~PA7為輸出位控線,由于8155的高電平輸出電流很小,數碼管會很暗,所以在每個數碼管的位控線上要加入一個三極管來放大電流。PB口控制段碼的輸出值。


                       圖3-6 顯示電路

    使用8155作數碼管的接口芯片時,8155只能輸出顯示的段碼,而不能夠控制輸出的內容,動態控制的實現要依靠軟件程序。在程序設計的時候,需要設置一個顯示緩沖區,將要顯示的數值存放到這個區域,本設計中用到4個數碼管,因此設置了4個單元,地址為30H~33H。在每一個數碼管被點亮之后,應加一段延時程序,以保證該數碼管有足夠的顯示亮度。

3.4溫度檢測電路

溫度檢測電路可以實時的反映出當前的水溫,選擇DS18B20主要由于其硬件電路簡單,只需一條數據線與單片機相連即可,成本較低,誤差小,非常適用于熱水器溫度的檢測。

3.4.1 溫度傳感器DS18B20簡介

DS18B20的主要特征如下表所示:

表3-2 DS18B20的主要特征

DS18B20芯片封裝結構:

                           

圖3-7 DS18B20芯片封裝

DS18B20引腳功能:

·引腳1:GND 電壓地   ·引腳2:DQ 單數據總線   ·引腳3:VDD 電源電壓

DS18B20的工作原理:

DS18B20一個芯片即可完成溫度的檢測和數字數據的輸出, 增強了其抗干擾能力。它的一個工作周期可分為溫度檢測和數據處理這兩個部分。18B20共有三種存儲器,它們分別是:ROM 、RAM 和EEPROM。

控制器對18B20操作流程:

在DS18B20工作之前,先要進行一段時間的復位。復位結束后,單片機給出高電平,以便接收一個存在脈沖。至此,單片機和18B20達成了基本的通信協議,接下來將完成兩者間的數據通信。之后控制器發送ROM指令,一共有5條指令,由5個工作周期完成,當單片機只外接一個DS18B20時,可以跳過ROM指令,在本設計中就跳過了ROM指令。接下來控制器發送存儲器操作指令,該指令包括寫RAM數據、讀RAM數據、將RAM數據復制到EEPROM、溫度轉換、將EEPROM中的報警值復制到RAM、工作方式切換。當存儲器操作指令結束后,將執行溫度轉換指令或讀數據指令。

若要讀出實時的水溫數據則需要執行兩個工作周期,第一個周期為復位、跳過ROM指令、執行溫度轉換存儲器操作指令、等待500uS溫度轉換時間。接下來執行第二個周期,為復位、跳過ROM指令、執行讀RAM的存儲器操作指令、讀數據。至此,DS18B20的工作完成,之后單片機便可以對數據做相應的處理。

3.4.2 溫度檢測電路設計

單片機和溫度傳感器的電路圖:

      

圖3-8 溫度檢測電路

如上圖所示,DS18B20的數據端口與單片機的P1.0相連,硬件電路非常簡單,溫度數據經過處理后會送到數碼管顯示。

3.5 水位檢測電路及自動上水3.5.1 水位檢測電路設計

蓄水箱的水位也是控制器需要檢測的一個重要數據,最好是采用連續液位傳感器,這樣測得的數據可以準確的反映出蓄水箱的真實水位,但是為了簡化實驗,本設計采用分段式液位傳感器,并用四個按鍵來代替水位。由于單片機實驗板上獨立按鍵個數有限,這里采用矩陣鍵盤中的部分按鍵來設計電路。KEY1按下代表水位為0%,KEY5按下代表水位為30%,KEY9按下代表水位為60%,KEY13按下代表水位為90%。鍵盤上有行線和列線之分,本矩陣電路有4條列線4條行線。在行線和列線的交點處放置了一個按鍵,由于行線和列線分別連接著按鍵的不同端,當按鈕沒有被按下時,行線和列線是不相通的。當有按鍵按下時,對應的行線變為低電平。這樣就能采集到是哪個鍵按下。矩陣鍵盤原理圖如下:

圖3-9 矩陣鍵盤電路

    將圖中P2.0~P2.4連接到單片機后,在軟件編程時,只需將P2.4清0,水位檢測電路就完成了,當按鍵1按下時,數碼管會顯示00,當按鍵5按下時,數碼管會顯示30,當按鍵9按下時,數碼管會顯示60,當按鍵13按下時,數碼管會顯示90。

                                 

3.5.2 自動上水設計

當蓄水箱沒水時,希望通過一個按鍵的控制來實現自動上水。在實際應用中,應用一個按鍵來控制電磁閥的開閉,以調整水位的多少,而在實驗中,電磁閥的開閉難以實現,只能通過數碼管顯示水位來假設水位的上升。在軟件設計時,需要用到外部中斷1,并由INT1引腳引入中斷請求。當芯片檢測到有中斷信號時,進入中斷程序,數碼管自動顯示為“00→30→60→90”,然后退出中斷,返回到主程序,自動上水功能至此完成。

3.6 溫度設定及報警電路

溫度的設定是利用單片機的計數中斷功能,按鍵按下,進入相應的中斷,溫度值相應改變。聲光報警電路利用LED燈和蜂鳴器的組合,成本低廉,設計方便,電路簡單。

3.6.1 溫度設定

在太陽能熱水器控制器使用過程中,用戶會根據自身需求設定一個溫度值,當處于加熱狀態時,達到這個溫度就會停止加熱,溫度不再上升。溫度設定需要用到2個定時器中斷,分別用來完成溫度的加1和溫度的減1。這樣用戶就可以根據實際需求來設定0~99中的任意一個數。

將4個定時器TL0、TH0、TL1、TH1的初始值設置為FFH,這樣,當有按鍵按下時,相當于從T0或T1中輸入了脈沖,對應的定時器的值加1,進入中斷服務程序,完成中斷工作后,返回到主程序。在軟件設計時,只需將定時器方式選擇寄存器(TMOD)中的C/設置為1即表示在計數工作方式,計數脈沖由2個按鍵負責提供。那么當采集到一個按鍵按下時就會進入相應的中斷,對溫度值進行加減。

3.6.2 報警電路設計

當水溫、水位過高或過低時,系統應該發出警告信號來提醒用戶,考慮到自然水本身溫度只有幾度,如果設置低溫報警,那么一上水系統就會報警,這是不希望出現的狀況,所以本設計只設置一個高溫報警值,這個值可以由用戶隨意設定。水位報警值分別為沒水時的00%和溢水時的90%。在控制器的工作過程中,單片機會不斷的將實時水溫和水位與報警設定值進行比較,一旦到達這個值,報警燈會啟動,蜂鳴器響,當實時數據下降到正常范圍內,報警燈會滅掉,蜂鳴器不響。此部分電路設計非常簡單,只需由P1.1和P1.2引腳分別控制一個蜂鳴器和1個LED燈,當需要報警時,將對應的引腳設置成需要的值即可。報警電路圖如下所示:

         

圖3-10 報警電路圖


3.7 輔助加熱電路

輔助加熱由繼電器來控制,繼電器是一種很好的控制開關,價格低,控制方便,配合一個LED燈來模擬加熱過程,使電路簡單易行。

當天氣晴朗時,陽光很充足,熱水器水箱中的水能夠被加熱到滿意溫度,但是當雨雪天氣,集熱器吸收的能量無法使溫度達到設定值,所以控制器還需要一套輔助加熱系統,當水溫滿足不了用戶的需求時,可以通過按鍵開啟加熱系統,水箱中的加熱棒便開始發熱工作,當水被加熱到設定值時,加熱系統自動關閉。

本設計中使用的繼電器的型號是SRD-05VDC-SL-C。電磁繼電器一般由銜鐵、線圈、鐵芯、觸點簧片等幾部分組成。當給繼電器兩端加上一個電壓時,電磁效應就此產生,開關打到常開觸點。當線圈斷電后,電磁的吸力也隨之消失,開關打到常閉觸點。

輔助加熱的電路圖如下所示:

在仿真時,由于軟件中沒有SRD-05VDC-SL-C型號的繼電器,所以用G2R-14-AC120型號的繼電器代替,兩者的工作原理相似。

     

圖3-11 輔助加熱電路圖

輔助加熱功能由外部中斷0實現,當采集到按鍵按下時,進入中斷。當輔助加熱時,單片機的P2.6口輸出的是高電平,三極管導通,開關打到常開狀態,發光二極管被點亮,當不需要輔助加熱時,P2.6口輸出的是低電平,三極管未導通,開關在常閉狀態,發光二極管不亮。圖中的D1為一個續流二極管,當線圈突然斷電后,電流不會立刻消失,剩余的能量會損壞線圈,為了防止這種現象發生,用一個二極管構成一個回路,使能量慢慢釋放完,保護了線圈,增加了它的壽命。

當蓄水箱中沒水時,是嚴禁啟動輔助加熱的,否則加熱器會燒壞。在軟件設計的時候,當進入輔助加熱中斷后,應先判斷是否有水,即33H中的值是否為0,當為0時,跳出中斷,不對P2.6的狀態做任何改變,當不為0時,P2.6輸出高電平,即開啟輔助加熱系統。




第四章 控制器軟件設計4.1主程序設計

控制器的功能比較多,代碼也有幾百行,為了方便修改和設計,這里采用模塊化結構,包括主程序、溫度檢測子程序、水位檢測子程序、報警子程序、顯示子程序以及4個中斷程序:輔助加熱子程序、自動上水子程序和溫度設定子程序。由主程序調用不同的子程序來實現控制器的所有功能。

在編寫系統初始化程序時需要注意以下幾點:

?設置4個單元的顯示緩沖區30H~33H,數碼管顯示的數字存放在這里。

?在50H、51H中存放溫度設定的初始值。

?程序會使用到中斷,所以在初始化時必須對與中斷相關的寄存器進行一些設置。

主程序流程圖如下所示:

                    

圖4-1 主程序流程圖


4.2 溫度檢測子程序

將采集到的溫度值轉換成數字數據后送到單片機進行處理,得到一個3位數的值,由于實際生活中顯示的溫度只需要2位就可以滿足,這里放棄了百位值的顯示,處理后的數據送到33H、32H保存并通過數碼管顯示。

4.3 水位檢測子程序

4個按鍵的一端分別接到P2口的4個引腳,當按鍵按下時,對應的引腳電平變低。判斷出哪個按鍵按下后數碼管會顯示出對應的值。流程圖如下所示:

               

圖4-2 水位檢測流程圖

4.4 報警子程序

將檢測到的水溫、水位與報警值進行比較,當超出范圍時,報警燈亮,當又回到正常范圍內時,報警燈暗。報警子程序流程圖如下所示:

              

圖4-3 報警流程圖

4.5 顯示子程序

當采集到水溫水位的數據后,被保存在30H~33H中,然后調用顯示子程序,在每個時間點被點亮的數碼管只有一個,但是時間間隔太短,人眼無法分辨出,所以平時看到的都是4個數碼管同時亮著。

4.6 輔助加熱子程序

輔助加熱功能由外部中斷0實現,當采集到按鍵按下時,進入中斷。進入中斷后首先判斷是否有水,沒水就退出,不需要加熱;如果有水,開啟加熱,當加熱到設定值后,停止加熱。輔助加熱流程圖如下:

                     

圖4-4 輔助加熱流程圖

4.7 自動上水子程序

自動上水功能需要用到外部中斷1,當檢測到相應按鍵按下時,進入中斷,然后控制數碼管從00到30到60到90的顯示,完成后退出中斷。

4.8 溫度設定子程序

溫度設定需要用到2個定時器中斷,定時器中斷0用來完成溫度加1度,定時器中1用來完成溫度減1度。當進入溫度加1中斷后,判斷當前值的個位是否為9,若為9,則十位加1,個位清0;若不為9,則INC 50H即可。調用顯示后返回主程序。當進入溫度減1中斷后,判斷當前值的個位是否為0,若為0,則十位減1,個位變為9;若不為0,則DEC 50H即可。調用顯示后返回主程序。



第五章 電路調試及結果
5.1程序編譯與仿真結果

程序編譯的目的是為了檢測編寫的程序是否成功,或找出其中錯誤,以便更好的改善,保證能夠正確的實現系統的軟件功能。本設計用的開發工具是KeilC,并使用匯編語言進行編程,程序編譯后的結果如下圖所示:

                    

圖5-1 編譯后的結果

程序編譯正確之后,即可用仿真電路圖進行調試。仿真電路圖如下所示,由于矩陣鍵盤的效果與獨立按鍵的效果一樣,為了方便仿真,在此仿真時用獨立按鍵代替矩陣鍵盤,并用80C51代替SST89E58進行仿真:

圖5-2 仿真電路圖

點擊開始按鈕,程序開始運行,以下選取幾種仿真結果:

  • 當按鍵2按下時,代表此時水位為30%,改變DS18B20的值,使之為22

數碼管顯示應為3022,如下所示:

圖5-3 仿真結果顯示

(2)當按鍵3按下時,代表水位為60%,改變DS18B20的值,使之為40。數碼管顯示應為6040,如下所示:

圖5-4 仿真結果顯示

(3)當按鍵4按下時,代表水位為90%,達到報警值,此時不管溫度值為多少,系統都會報警,蜂鳴器會響,LED燈D1亮,如下所示:

圖5-5 仿真結果顯示

  • 當水溫達不到設定值時,開啟輔助加熱系統,按下按鍵5,繼電器打到常開狀態,LED燈D3亮,代表正在加熱,如下圖所示:

         

圖5-6 仿真結果顯示

  • 當按鍵6按下時,代表正在自動上水,數碼管顯示00-30-60-90,每個數字停留顯示幾秒,如下所示:

                    

                     

                     

                     

圖5-7 仿真結果顯示

(6)當按鍵7按下時,溫度的設定值加1,由25變為26,如下所示:

→→

圖5-8 仿真結果顯示

  • 當按鍵8按下時,溫度的設定值減1,由25變為24,如下所示:

→→

圖5-9 仿真結果顯示


5.2 硬件電路調試

硬件實物圖如下所示:

圖5-10 硬件實物圖

提供外部電源后硬件便開始工作,這里選取幾種結果演示:

  • 當KEY9按下時,代表水位為30%,此時水溫為23,則數碼管顯示結果為:

圖5-11硬件結果顯示

(2)當KEY5按下時,代表水位為60%,此時水溫為30,則數碼管顯示結果為:

圖5-12硬件結果顯示

(3)當KEY1按下時,代表水位為90%,此時達到報警值,不管水溫為多少,系統都會報警,蜂鳴器響,LED燈被點亮,結果如下所示:

圖5-13硬件結果顯示

  • 當KEY17按下時,單片機檢測到計數脈沖,進入定時器中斷0,用戶自己設置的溫度值加1,結果如下圖所示:

圖5-14 硬件結果顯示

  • 當KEY18按下時,單片機檢測到計數脈沖,進入定時器中斷1,用戶自己設置的溫度值減1,結果如下圖所示:

圖5-15 硬件結果顯示

5.3 調試過程中遇到的問題
  • 一開始由于將溫度傳感器的正負極接反了,導致不管檢測到什么溫度,數碼管顯示的都是0,一直修改程序也沒有什么作用,仔細的研究了DS18B20的引腳說明后才發現問題的所在,重新焊接了之后,問題得到了解決。
  • 在處理溫度設置的中斷子程序方面,由于先前沒有考慮到保護現場的問題,導致退出中斷后改變了原先的數值,經過改善后,在剛跳轉進入中斷子程序的時候就加上PUSH 語句,在中斷最后加上POP語句,就很好的阻止了沖突,實現了中斷。
  • 起初的設計中水位檢測電路是選擇的電極式水位傳感器,其工作原理是:根據水位的不同,傳感器輸出的電阻就會不同,水位越高,電阻越小,將這個電阻值接入AD轉換芯片,經過處理后得到數字信號,傳輸給單片機進行顯示,但實際設計過程中,一直沒能處理好芯片TLC1549的工作時序,導致程序頻頻出錯,至此還沒有得到解決的方法,所以只能選擇用按鍵來模擬水位。


總結

通過設計之前所學的知識都得到了廣泛的應用,加深了理論與實際的聯系。提高了本人的動手能力,自己的創新意識也得到了培養,使自己對單片機的了解更加的全面了。一開始接觸這個課題的時候,完全沒有思路,雖然很熟悉太陽能熱水器,控制器的功能也理解,但要自己動手用軟件和硬件來實現,卻無從下手。從網上找了很多資料,也借鑒了其他人設計的控制器,在一番深入的了解之后終于得到了一個初步的設計思路,并在之后的代碼編寫和硬件焊接過程中,不斷的完善,最終完成了本次設計。

在這次設計中,接觸到了溫度傳感器,這款芯片是本人從來沒有使用過的,雖然它與單片機的連接非常簡單,但是硬件的簡化導致了軟件的開銷,所以在軟件編程時,溫度檢測這一模塊的代碼困擾了本人很久,查了很多資料,對傳感器的工作原理也了解了很多,可是編寫的代碼始終不能運行,經過了三周左右的努力,終于發現了代碼中的錯誤,原因是因為沒有給復位足夠的時間導致18B20不能工作,修改后成功的將溫度檢測模塊編寫完成。設計中另外一個難點是溫度設定中斷代碼的編寫,在一開始的設計思路中,進入中斷后沒有PUSH、POP的內容,在中斷子程序中修改溫度后回到主程序時發生了沖突,意識到這一點后修改了代碼,完成了中斷子程序的編寫。至于其他模塊的代碼編寫比較簡單,過程中并未遇到什么挫折。

硬件電路的焊接也不是非常順利,設計初的報警電路是由LED燈和蜂鳴器組成的,但是在下程序的過程中不小心把蜂鳴器弄壞了,所以在耽擱了一周之后才完成。本次硬件電路是基于之前課程設計中用過的單片機實驗板,因此布局布線比較簡單,這為硬件的搭建省了很多事,也為此次設計提供了很多方便。

三個多月的時間很快就過去了,在這段時間里,本人各方面的能力都得到了提升,總之,這次設計讓本人學到了很多。



致謝

經過幾個月的努力,本人的設計已經完成。回想這幾個月的學習,從開題到論文的順利完成,得到了老師和同學們的很多幫助。

首先要感謝本人的指導老師,在設計的過程中,從選題,設計方案,論文修改直至成稿一直給予了很多的指導和幫助,同時也提供了相關的參考資料,為本人解答疑惑,提供了很多關鍵性的建議。她嚴謹細致,一絲不茍的作風一直是本人學習、工作中的榜樣,他循循善誘的教導和不拘一格的思路給本人無盡的啟迪。

還有本人的室友和很多同學也給了很多的幫助,他們給予鼓勵與意見,讓本人度過了這段艱辛的時期。特別要感謝寢室的同學們,一直以來都在鼓勵本人,在做仿真時一直都在幫助本人,如果沒有她們的熱心幫忙,此次設計的完成將變得非常困難。

對于這次設計中給予本人幫助的老師和同學致以感謝!


附錄
附錄1:程序
GE_BIT   EQU 40H
SHI_BIT  EQU 41H
DI_8BIT  EQU 43H
GAO_8BIT EQU 44H
DQ       EQU P1.0                                ;溫度傳感器I/O口
            
              ORG                0000H
    LJMP              MAIN
    ORG              0003H
              LJMP              HEAT       ;輔助加熱               
    ORG 000BH                                                                                   
    LJMP  PLUS       ;溫度加1
              ORG              0013H
              LJMP              RISE     ;自動加水                              
    ORG 001BH                             
              LJMP MINUS                     ;溫度減1

              ORG              0020H
MAIN:MOV SP,#60H            
              MOV              30H,#0                            ;30H-33H顯示緩沖區
              MOV              31H,#0
              MOV              32H,#0
              MOV              33H,#0            
              MOV 50H,#5                               ;存放溫度設定值
              MOV 51H,#2
                MOV DPTR,#07100H                            ;選中8155
                MOV A,#3H
                 MOVX @DPTR,A
    MOV              IP,#0FH                                                        ;中斷優先級
              MOV              TCON,#05H          ;外部中斷脈沖觸發有效
              MOV              IE,#8FH                                                        ;中斷總允許,允許定時器和外部中斷
              MOV              TMOD,#55H                                          ;接通外部技術引腳T0T1
              MOV TH0,#0FFH
              MOV TL0,#0FFH
              MOV              TH1,#0FFH
              MOV              TL1,#0FFH
    SETB TR0                                                          ;啟動定時器
    SETB TR1
                 CLR P2.4
              CLR P2.6

TURN:
              LCALL WATER
              LCALL ZHUANHUAN ;調用讀溫度子程序
              LCALL DISPLAY
              LCALL WARN                            ;水溫水位報警
              AJMP TURN

WATER:                              ;水位按鍵判斷
      JNB P2.3 ,LOOP5
                JNB P2.2,LOOP4
                JNB P2.1,LOOP3
                JNB P2.0,LOOP2            
                LCALL DISP
                RET

LOOP2:MOV 32H,#0
      MOV 33H,#0
                LCALL DISP
                RET
LOOP3:MOV  32H,#0
      MOV 33H,#3
                LCALL DISP
                RET
LOOP4:MOV 32H,#0
      MOV 33H,#6
                LCALL DISP
                RET
LOOP5:MOV 32H,#0
      MOV 33H,#9
                LCALL DISP            
                RET

WARN:MOV A,51H                                                           ;水溫報警
     SWAP A
     ORL  A,50H                           
     MOV 52H,A                                                                      ;50H和51H 合并
     MOV A,31H
     SWAP A                                                                      ;30H和51H合并
     ORL A,30H
     CJNE A,52H,PD                                                        ;檢測到的溫度與設定溫度比較
     CLR P2.6
     CLR P1.2
              SETB P1.1
     LJMP EXIT
  PD:JC BBB                                                           ;溫度<設定值則 跳到BBB
     CLR P2.6
     CLR P1.2
              SETB P1.1
     SJMP EXIT
BBB:LCALL WARNING
EXIT:RET
                              
WARNING:MOV A,#0                                                        ;水位報警
     CJNE A,33H,PD1                                                        ;沒水時報警
     CLR P1.2
              SETB P1.1
     AJMP OUT1
PD1:MOV A,#9
     CJNE A,33H,BB                                          ;水滿時報警
     CLR P1.2
              SETB P1.1
     AJMP OUT1
  BB:SETB P1.2
     CLR P1.1
OUT1:RET               

/*4個中斷*/
PLUS:        ;溫度加1中斷
    PUSH 30H
    PUSH 31H
    MOV              TH0,#0FFH
    MOV              TL0,#0FFH
    MOV A,50H
              CJNE A,#9,CC
              MOV 50H,#0
              INC 51H
              AJMP CC1
              CC:INC 50H
  CC1:
              MOV 30H,50H
    MOV 31H,51H
              MOV R1,#07FH
CFU:LCALL DISP1                                             ;將設定值顯示一段時間
    DJNZ R1,CFU
              POP 30H
    POP 31H
  RETI
MINUS:      ;溫度減1中斷
    PUSH 30H
    PUSH 31H
    MOV              TH1,#0FFH
              MOV              TL1,#0FFH
    MOV A,50H
              CJNE A,#0,CC2
              MOV 50H,#9
              DEC 51H
              AJMP CC3
              CC2:DEC 50H
  CC3:
              MOV 30H,50H
    MOV 31H,51H
              MOV R1,#07FH
CFU1:LCALL DISP1
    DJNZ R1,CFU1
              POP 30H
    POP 31H
  RETI                                                                     

HEAT:      ;輔助加熱中斷
    MOV A,33H
              JZ OUT                                                        ;沒水時不能打開繼電器,JZ累加器判0轉移
    SETB P2.6            
OUT:RETI                                                      

RISE: MOV 32H,#0    ;自動上水
      MOV 33H,#0
      MOV R1,#0FFH
CFU2:LCALL DISP
      DJNZ R1,CFU2
                MOV 33H,#3
              MOV R1,#0FFH
CFU3:LCALL DISP
      DJNZ R1,CFU3
                MOV 33H,#6
                MOV R1,#0FFH
CFU4:LCALL DISP
      DJNZ R1,CFU4
                MOV 33H,#9
                MOV R1,#0FFH
CFU5:LCALL DISP
      DJNZ R1,CFU5
   RETI                                                      
/***顯示程序***/            
DISP:               
              MOV              A,#40H                            ;水位顯示子程序
              MOV              DPTR,#07101H
              MOVX              @DPTR,A
              MOV              A,32H
              MOV              DPTR,#TABLE
              MOVC              A,@A+DPTR
              MOV              DPTR,#07102H
              MOVX              @DPTR,A
              LCALL              DELAY00

              MOV              A,#80H
              MOV              DPTR,#07101H
              MOVX              @DPTR,A
              MOV              A,33H
              MOV              DPTR,#TABLE            
              MOVC              A,@A+DPTR
              MOV              DPTR,#07102H
              MOVX              @DPTR,A
              LCALL              DELAY
   RET

DISP1:
              MOV              A,#10H    ;溫度顯示子程序
              MOV              DPTR,#07101H
              MOVX              @DPTR,A
              MOV              A,30H
              MOV              DPTR,#TABLE
              MOVC              A,@A+DPTR
              MOV              DPTR,#07102H
              MOVX              @DPTR,A
              LCALL              DELAY00

              MOV              A,#20H
              MOV              DPTR,#07101H
              MOVX              @DPTR,A
              MOV              A,31H
              MOV              DPTR,#TABLE
              MOVC              A,@A+DPTR
              MOV              DPTR,#07102H
              MOVX              @DPTR,A
              LCALL              DELAY
              RET
  /*---------------------延時子程序--------------------                */
DELAY:              MOV R5,#0FH                           
DELAY4:              MOV R4,#0FH
DELAY5:              DJNZ R4,DELAY5
                            DJNZ R5,DELAY4
                  RET
DELAY00:MOV R6,#0AH                           
DELAY8:              MOV R7,#0AFH
DELAY9:              DJNZ R7,DELAY9
                            DJNZ R6,DELAY8
                            RET
               
;這是DS18B20復位初始化子程序
INIT_1820:
     SETB DQ
     NOP
     CLR DQ ;主機發出延時537微秒的復位低脈沖
     MOV R1,#3
DU_1:
     MOV R0,#107
     DJNZ R0,$
     DJNZ R1,DU_1
     SETB DQ ;然后拉高數據線
     NOP
     NOP
     NOP
     MOV R0,#25H
DU_2:JNB DQ,DU_3 ;等待DS18B20回應
     DJNZ R0,DU_2
     LJMP DU_4 ;延時
DU_3:SETB F0   ;置標志位,表示DS1820存在
     LJMP DU_5
DU_4:CLR F0   ;清標志位
     LJMP DU_7
DU_5:MOV R0,#117
DU_6:DJNZ R0,DU_6
DU_7:SETB DQ
     RET
;-------------------------------------------------
;寫DS18B20的子程序
WRITE_1820:MOV R2,#8
    CLR C
WR1:CLR DQ
    MOV R3,#6
    DJNZ R3,$
    RRC A
    MOV DQ,C
    MOV R3,#23
    DJNZ R3,$
    SETB DQ
    NOP
    DJNZ R2,WR1
    SETB DQ
    RET

;-------------------------------------------------
;讀DS18B20的子程序,
READ_1820:MOV R4,#2     
    MOV R1,#DI_8BIT ;低位存入DI_8BIT,高位存入GAO_8BIT
RE0:MOV R2,#8           
RE1:CLR C
    SETB DQ
    NOP
    NOP
    CLR DQ
    NOP
    NOP
    NOP
    SETB DQ
    MOV R3,#9
RE2:DJNZ R3,RE2
    MOV C,DQ
   MOV R3,#23
RE3:DJNZ R3,RE3
    RRC A
    DJNZ R2,RE1
    MOV @R1,A
    INC R1
    DJNZ R4,RE0
    RET   
;-------------------------------------------------
;讀出后轉換的溫度值
ZHUANHUAN:
    LCALL INIT_1820 ;先復位DS18B20
    JB F0,ZH1
    RET
ZH1:MOV A,#0CCH
    LCALL WRITE_1820
    MOV A,#44H
    LCALL WRITE_1820
    LCALL DISPLAY ;等待AD轉換結束,12位的話750微秒
    LCALL INIT_1820
    MOV A,#0CCH ;跳過ROM匹配
    LCALL WRITE_1820
    MOV A,#0BEH ;發出讀溫度命令
    LCALL WRITE_1820
    LCALL READ_1820
;CHULI
    MOV A,GAO_8BIT
    MOV A,DI_8BIT
    MOV  B,#16
    DIV  AB
    MOV 35H,A ;將DI_8BIT的高四位右移四位,存入35H中(溫度值)
    MOV A,B ;將TEMPER_L的低四位X10/16得小數后一位數.
    MOV B,#10
    MUL AB
    MOV B,#16
    DIV AB
    MOV 36H,A ;將小數后一位數.存入36H中
    MOV A,GAO_8BIT ;TEMPER_H中存放高8位數,權重16
    MOV B,#16
    MUL AB
    ADD A,35H ;35H中存入溫度值的整數部分
    MOV B,#10
    DIV AB
    MOV GE_BIT,B ;個位存入40H中
    MOV B,#10 ;
    DIV AB ;
    MOV SHI_BIT,B ;十位存入41H中
    RET  
;-------------------------------------------------
DISPLAY:
   MOV A,SHI_BIT   //顯示溫度十位
   MOV 31H,A
   MOV A,GE_BIT   //顯示溫度個位
   MOV 30H,A
   LCALL DISP1
   RET  

/*************** 段碼緩沖區 **********************************/
TABLE:  DB 0fcH,60H,0daH,0f2H,66H,0b6H,0beH,0e0H,0feH,0f6H
End


附錄2:原理圖

以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,方便保存):
單片機的太陽能熱水器控制器的設計論文.doc (16.57 MB, 下載次數: 158)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:444853 發表于 2018-12-15 16:28 | 只看該作者
有沒有源文件啊,圖不是很清楚
回復

使用道具 舉報

無效樓層,該帖已經被刪除
無效樓層,該帖已經被刪除
5#
ID:987436 發表于 2021-12-2 22:51 | 只看該作者
可以講一下實物焊接部分嗎


回復

使用道具 舉報

6#
ID:987436 發表于 2021-12-3 21:01 來自觸屏版 | 只看該作者
可以看看具體實物圖,或者清單嗎還有原理圖
回復

使用道具 舉報

7#
ID:987436 發表于 2021-12-4 00:54 來自觸屏版 | 只看該作者
我看不清8155部分能放一個清晰點多的圖嗎
回復

使用道具 舉報

8#
ID:941265 發表于 2021-12-4 08:27 | 只看該作者
51黑,有你更精彩!!!
回復

使用道具 舉報

9#
ID:23303 發表于 2021-12-23 13:40 | 只看該作者
下載學習一下,謝謝樓主分享!
回復

使用道具 舉報

10#
ID:969210 發表于 2022-1-3 14:30 來自觸屏版 | 只看該作者
秀,設計也想做這個,思路跟大佬的差不多,贊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表