版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 1 緒論</b></p><p> 1.1 本課題的研究背景</p><p> 太陽(yáng)能是地球上取之不盡、用之不竭的最寶貴能源。它在防止和改善大氣污染方面,加強(qiáng)對(duì)太陽(yáng)能的研究和利用, 特別是重點(diǎn)發(fā)展太陽(yáng)能熱水器有著重大的意義和廣闊的前景。太陽(yáng)能熱水器是一種將太陽(yáng)輻射能轉(zhuǎn)變?yōu)闊崮? 把水逐漸加熱的熱交換裝置, 它是太陽(yáng)能熱利用的基礎(chǔ)元
2、件。太陽(yáng)能的開(kāi)發(fā)利用, 已越來(lái)越引起世界人們的注意。由于石油和能源的緊缺, 促使太陽(yáng)能熱水器有很大的發(fā)展。日本、法國(guó)、澳大利亞等國(guó), 大部分家用熱水來(lái)自太陽(yáng)能熱水器[1]。目前市場(chǎng)上太陽(yáng)能熱水器的控制系統(tǒng)大部分都存在著或多或少的缺點(diǎn):功能單一、操作復(fù)雜、控制不方便等。隨著人們生活水平的提高和電子技術(shù)的發(fā)展,這樣的太陽(yáng)能熱水器控制系統(tǒng)越來(lái)越不適應(yīng)人們的生活需求,開(kāi)發(fā)一種控制方便,操作靈活的太陽(yáng)能熱水器的控制系統(tǒng),已經(jīng)成為當(dāng)務(wù)之急[2]。&
3、lt;/p><p> 太陽(yáng)能熱水器單片機(jī)控制系統(tǒng)就是一種以單片機(jī)為控制系統(tǒng)核心的系統(tǒng),不但其機(jī)器性能顯著提高,還增加了難以實(shí)現(xiàn)的功能,同時(shí)也提高了控制的精確度,硬件與軟件相互配合實(shí)現(xiàn)太陽(yáng)能熱水器工作的智能化和自動(dòng)化[3]。</p><p> 單片機(jī)具有集成度高、運(yùn)算速度快、體積小、運(yùn)行可靠、價(jià)格低廉等特點(diǎn),因此在過(guò)程控制、數(shù)據(jù)采集、機(jī)電一體化、智能化儀表、家用設(shè)備以及網(wǎng)絡(luò)技術(shù)等方面得到廣泛
4、應(yīng)用[4]?,F(xiàn)今太陽(yáng)能熱水器的控制系統(tǒng)大多都有著功能不全面、操作性復(fù)雜、控制不方便等問(wèn)題,很多控制器只具有溫度和水位顯示功能,不具有溫度控制功能,即使熱水器具有輔助加熱功能,也可能由于加熱時(shí)間不能控制而產(chǎn)生過(guò)燒,從而浪費(fèi)電能。本課題設(shè)計(jì)的太陽(yáng)能熱水器控制系統(tǒng)以AT89S52單片機(jī)為檢測(cè)控制中心單元,不僅實(shí)現(xiàn)了時(shí)間、溫度和水位三種參數(shù)顯示功能,而且具有時(shí)間設(shè)定、溫度設(shè)定與控制功能??刂葡到y(tǒng)可以根據(jù)天氣情況利用輔助加熱裝置使蓄水箱內(nèi)的水溫達(dá)
5、到預(yù)先設(shè)定的溫度,從而達(dá)到24小時(shí)供應(yīng)熱水的目的。該控制器和以往顯示儀相比具有性價(jià)比高、溫度控制與顯示精度高、使用方便和性能穩(wěn)定等優(yōu)點(diǎn),提高了我國(guó)太陽(yáng)能應(yīng)用領(lǐng)域控制水平,具有可觀的經(jīng)濟(jì)效益和社會(huì)效益[5]。</p><p> 1.2 太陽(yáng)能熱水器的發(fā)展歷史和現(xiàn)狀</p><p> 1.2.1 太陽(yáng)能熱水器的發(fā)展歷史</p><p> 太陽(yáng)能熱水器是利用太陽(yáng)
6、能集熱器將太陽(yáng)輻射能轉(zhuǎn)變?yōu)闊崮埽⒂脕?lái)提高水溫的,是目前實(shí)際應(yīng)用最多、技術(shù)最成熟的太陽(yáng)能熱利用的一種裝置。它不僅可為家庭和機(jī)關(guān)、旅社、醫(yī)院等提供洗澡、洗衣、炊事等所需熱水(100℃以下),同時(shí)還可用于空調(diào)、干燥、農(nóng)業(yè)種植、水產(chǎn)養(yǎng)殖、海水淡化等。太陽(yáng)能熱水器的使用已有近百年的歷史,最早的太陽(yáng)能熱水器工業(yè)出現(xiàn)在18世紀(jì)的美國(guó)加州,最原始的太陽(yáng)能熱水器僅是一只漆黑的金屬圓桶。隨著科學(xué)技術(shù)的進(jìn)步,太陽(yáng)能熱水器也隨之不斷改進(jìn),由集熱和貯熱合為一體
7、逐步改進(jìn)為集熱和貯熱部分分開(kāi),采用先進(jìn)的太陽(yáng)能集熱器,先進(jìn)的保溫材料和冬季防凍技術(shù)及其他輔助裝置等?,F(xiàn)如今生產(chǎn)的先進(jìn)的太陽(yáng)能熱水器已實(shí)現(xiàn)了全年運(yùn)行,大大提高了太陽(yáng)能熱水器的熱效率和利用效率。目前,太陽(yáng)能熱水器是可再生能源技術(shù)領(lǐng)域商業(yè)化程度最高,推廣應(yīng)用最普遍的技術(shù)之一。以色列在政府的支持下,有85%的住宅都安裝了太陽(yáng)能熱水器。美國(guó)有130多萬(wàn)個(gè)游泳池都裝上了太陽(yáng)能集熱器,成為環(huán)保型的太陽(yáng)能游泳池。近年來(lái),太陽(yáng)能熱水器在我國(guó)迅猛發(fā)展,從2
8、0世紀(jì)70年代后期就開(kāi)始了開(kāi)發(fā)家用太陽(yáng)能熱水器。到20世紀(jì)90年代,隨著科技進(jìn)步,環(huán)境意識(shí)增強(qiáng)和人</p><p> 1.2.2 太陽(yáng)能熱水器的發(fā)展現(xiàn)狀</p><p> 目前國(guó)內(nèi)的太陽(yáng)能熱水器主要是采用的緊湊式自然循環(huán)系統(tǒng),這種系統(tǒng)的特點(diǎn)是制造簡(jiǎn)單、價(jià)格低廉。但如果從太陽(yáng)能熱水器使用的安全、質(zhì)量、方便以及操作性等方面來(lái)看,分離式強(qiáng)制循環(huán)系統(tǒng)更能滿足人們的要求。而采用分離式強(qiáng)制循環(huán)系
9、統(tǒng)時(shí)一般都要采用承壓儲(chǔ)水箱,這樣就對(duì)熱水器的連接部位的強(qiáng)度以及密封性有了一定的要求。平板型集熱器一般是金屬制成的,集熱器與儲(chǔ)水箱之間的連接采用的是金屬連接,因此可以承受較高的水壓,密封性能也較好。而真空管熱水器的集熱管與儲(chǔ)水箱之間的連接一般是用塑料或橡膠來(lái)密封,因此在承壓及密封方面效果差。另外,如果對(duì)太陽(yáng)能熱水器的水質(zhì)要求較高,那么通常是采用雙循環(huán)系統(tǒng),即集熱器加熱的是導(dǎo)熱工質(zhì),再通過(guò)導(dǎo)熱工質(zhì)把熱量傳遞給水,避免了水在循環(huán)過(guò)程中被二次污
10、染,保證了水質(zhì)。在平板型太陽(yáng)能集熱器中,傳熱介質(zhì)可以在集熱器與貯水箱內(nèi)的換熱器之間無(wú)障礙地流動(dòng),通過(guò)換熱器去加熱貯水箱內(nèi)的水,完成系統(tǒng)的雙循環(huán),這一點(diǎn)也是平板太陽(yáng)能熱水器明顯的優(yōu)勢(shì)之處[7]。</p><p> 根據(jù)我國(guó)所處的地理環(huán)境,太陽(yáng)能熱水器平均每平方米每年可節(jié)約的能源折合100-150公斤標(biāo)準(zhǔn)煤。由此可見(jiàn),在如今資源短缺,環(huán)境惡化的現(xiàn)實(shí)中,太陽(yáng)能熱水器的推廣和應(yīng)用,將在節(jié)約常規(guī)能源,減少環(huán)境污染和人類社
11、會(huì)可持續(xù)發(fā)展方面起到不可忽視的重要作用,具有極大的發(fā)展前途[8]。</p><p> 在全球能源形勢(shì)緊張、氣候變暖嚴(yán)重威脅經(jīng)濟(jì)發(fā)展,世界能源的日益緊缺、油價(jià)的不斷攀升和居民生活水平的高和洗浴舒適度要求提高的今天,世界各國(guó)都在尋求新的能源替代戰(zhàn)略,以求得可持續(xù)發(fā)展和在日后的發(fā)展中獲取優(yōu)勢(shì)地位。太陽(yáng)能以其清潔、源源不斷、安全等顯著優(yōu)勢(shì),成為關(guān)注重點(diǎn)。在太陽(yáng)能產(chǎn)業(yè)的發(fā)展中,太陽(yáng)能熱水器的熱利用轉(zhuǎn)換技術(shù)無(wú)疑是最為成熟的
12、[9]。今后,太陽(yáng)能熱水器將會(huì)向更節(jié)能、更高效、更環(huán)保等方向發(fā)展。</p><p> 1.3 本課題的研究目的和意義</p><p> 當(dāng)今計(jì)算機(jī)技術(shù)在飛速發(fā)展,微機(jī)應(yīng)用日益普及深入,微機(jī)在通信自動(dòng)化、工業(yè)自動(dòng)控制、電子測(cè)量、信息管理和信息系統(tǒng)等方面得到廣泛的應(yīng)用。嵌入式計(jì)算機(jī)系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟、硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功效等嚴(yán)格要
13、求的專業(yè)計(jì)算機(jī)系統(tǒng)。其最初應(yīng)用是基于單片機(jī)的。單片機(jī)小巧靈活,成本低,易于產(chǎn)品化。它面向控制,能針對(duì)性的解決從簡(jiǎn)單到復(fù)雜的各種控制任務(wù)[10]。</p><p> 太陽(yáng)能熱水器使用方便,節(jié)能,無(wú)污染,普及推廣迅速。它是人們?nèi)粘I钪胁豢苫蛉钡募矣迷O(shè)備,提高居民的生活質(zhì)量起了不可替代的作用。隨著科學(xué)技術(shù)的發(fā)展,人們對(duì)太陽(yáng)能熱水器的控制功能的要求也越來(lái)越高。目前市場(chǎng)上太陽(yáng)能熱水器的控制系統(tǒng)大部分都存在著或多或少的缺
14、點(diǎn):功能單一、操作復(fù)雜、控制不方便等。隨著人們生活水平的提高和電子技術(shù)的發(fā)展,這樣的太陽(yáng)能熱水器控制系統(tǒng)越來(lái)越不適應(yīng)人們的生活需求,開(kāi)發(fā)一種控制方便,操作靈活的太陽(yáng)能熱水器的控制系統(tǒng),已經(jīng)成為當(dāng)務(wù)之急[11]。本文設(shè)計(jì)了一種以單片機(jī)AT89S52為核心的太陽(yáng)能熱水器控制器,本設(shè)計(jì)具有很強(qiáng)的實(shí)用性,用成本低廉的器件以單片機(jī)技術(shù)對(duì)太陽(yáng)能熱水器的溫度、水位和時(shí)間的顯示和控制,并且本設(shè)計(jì)電路簡(jiǎn)單、實(shí)用性強(qiáng)、性價(jià)比高、控制靈活、顯示直觀醒目,可廣
15、泛應(yīng)用與家用太陽(yáng)能熱水器。</p><p><b> 2 總體方案</b></p><p><b> 2.1 設(shè)計(jì)要求</b></p><p> 本設(shè)計(jì)以AT89S52單片機(jī)為太陽(yáng)能熱水器控制系統(tǒng)的核心,分為單片機(jī)時(shí)鐘電路、單片機(jī)復(fù)位電路、溫度檢測(cè)電路、水位檢測(cè)電路、實(shí)時(shí)時(shí)鐘電路、鍵盤(pán)電路、顯示電路、報(bào)警電路等模
16、塊。本系統(tǒng)處于監(jiān)控狀態(tài)時(shí),具有以下功能:1、利用數(shù)碼管顯示溫度和時(shí)間;2、利用發(fā)光二極管顯示水位;3、當(dāng)水位較低時(shí)自動(dòng)上水,水滿時(shí)自動(dòng)停止;4、當(dāng)溫度低于下限溫度時(shí)自動(dòng)加熱,溫度達(dá)到上限溫度時(shí)自動(dòng)停止加熱;5、通過(guò)按鍵實(shí)現(xiàn)手動(dòng)加熱、手動(dòng)加水、時(shí)間顯示以及設(shè)置時(shí)間、上限溫度和下限溫度;6、清晨自動(dòng)上水。</p><p><b> 2.2 總體設(shè)計(jì)</b></p><p&
17、gt; 本設(shè)計(jì)控制系統(tǒng)中水溫利用溫度傳感器DS18B20讀入溫度數(shù)據(jù),在數(shù)碼管上顯示兩位數(shù)據(jù)。水位采用三個(gè)電極,一個(gè)是電源負(fù)極,當(dāng)電極接觸到水后,由于水的導(dǎo)電性,使得兩外兩根導(dǎo)線也是低電平,從而使三極管導(dǎo)通,P3.6和P3.7是低電平,當(dāng)兩根導(dǎo)線不接觸水的時(shí)候,輸出是高電平。通過(guò)P3.6 和P3.7引腳電平高低情況來(lái)控制發(fā)光二極管點(diǎn)亮的數(shù)目,從而來(lái)指示當(dāng)前的水位。當(dāng)水位比較低的時(shí)候,紅燈亮,水位在中間的時(shí)候,紅燈和黃燈亮,當(dāng)水位高的時(shí)
18、候三個(gè)燈都亮。時(shí)間通過(guò)時(shí)鐘芯片DS1302讀取時(shí)鐘數(shù)據(jù),然后在四位數(shù)碼管上顯示時(shí)分??刂萍訜嵫b置和加水裝置分別由兩個(gè)繼電器控制,繼電器采用三極管驅(qū)動(dòng)。</p><p> 本系統(tǒng)采用8個(gè)獨(dú)立式按鍵,按下S1鍵單片機(jī)復(fù)位;按下S5鍵可實(shí)現(xiàn)手動(dòng)上水功能,水滿自動(dòng)停止;按下S6鍵可實(shí)現(xiàn)手動(dòng)加熱功能,溫度達(dá)到上限溫度值自動(dòng)停止加熱;S2為溫度調(diào)整鍵,按一次可調(diào)整報(bào)警上限溫度值,按兩次可調(diào)整報(bào)警下限溫度值,按三次數(shù)碼管恢復(fù)
19、到正常溫度顯示;S8為時(shí)間調(diào)整鍵,按一次調(diào)整分,按兩次調(diào)整時(shí),按三次確定和保存時(shí)間;S3、S4是溫度時(shí)間加一和減一操作鍵;按下S7鍵切換溫度和時(shí)間顯示。系統(tǒng)組成框圖如圖1所示。</p><p><b> 圖1 系統(tǒng)組成框圖</b></p><p><b> 3 軟件設(shè)計(jì)</b></p><p> 系統(tǒng)軟件的設(shè)計(jì)采用
20、模塊化的結(jié)構(gòu)。太陽(yáng)能熱水器控制系統(tǒng)程序主要由主程序、延時(shí)子程序、溫度讀取子程序、溫度顯示子程序、時(shí)間讀取和顯示子程序、掃描鍵盤(pán)子程序、報(bào)警子程序構(gòu)成。</p><p> 3.1 主程序設(shè)計(jì)</p><p> 本控制系統(tǒng)的主程序是本設(shè)計(jì)的總控制程序,以AT89S52單片機(jī)為核心實(shí)現(xiàn)對(duì)太陽(yáng)能熱水器水位和水溫的檢測(cè)與顯示。主程序首先完成系統(tǒng)初始化設(shè)置,然后根據(jù)存儲(chǔ)的鍵盤(pán)狀態(tài)和檢測(cè)的水溫、水
21、位等狀態(tài)信號(hào)進(jìn)行相應(yīng)的處理。系統(tǒng)正常運(yùn)行時(shí),首先讀取水溫和水位,然后顯示溫度和水位,系統(tǒng)會(huì)根據(jù)顯示的水溫值和水位值判斷是否要進(jìn)行自動(dòng)加熱和自動(dòng)上水操作。當(dāng)檢測(cè)到的實(shí)際水溫小于設(shè)置的下限溫度時(shí),加熱指示燈亮,繼電器工作進(jìn)行加熱,水溫到達(dá)上限溫度時(shí)停止加熱;當(dāng)檢測(cè)到水位較低時(shí),加水指示燈亮,繼電器工作進(jìn)行加水,水位達(dá)到最高時(shí)停止加水;通過(guò)掃描按鍵來(lái)進(jìn)行相對(duì)應(yīng)的按鍵操作。主程序流程圖如圖2所示。</p><p><
22、;b> 圖2 主程序流程圖</b></p><p> 3.2 延時(shí)子程序設(shè)計(jì)</p><p> 延時(shí)子程序是用來(lái)實(shí)現(xiàn)數(shù)碼管顯示和掃描按鍵的延時(shí),num值不同,延時(shí)的時(shí)間也不同,具體程序如下:</p><p> void Delay(uint num)</p><p><b> {</b>&l
23、t;/p><p> while( --num );</p><p><b> }</b></p><p> 3.3 溫度讀取子程序設(shè)計(jì)</p><p> 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換,轉(zhuǎn)換
24、完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式以0.062 5 ℃/LSB形式表示。當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),表示測(cè)得的溫度值為負(fù)值,先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。DS18B20溫度傳感器主要用于對(duì)溫度進(jìn)行測(cè)量,數(shù)據(jù)可用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,并以0.06
25、25℃/LSB形式表示。</p><p> DS18B20的操作協(xié)議是:初始化→發(fā)ROM功能指令→發(fā)存儲(chǔ)操作指令→處理數(shù)據(jù)。</p><p><b> 圖3 讀溫度流程圖</b></p><p> 3.4 溫度顯示子程序設(shè)計(jì)</p><p> 7段LED數(shù)碼管是利用7個(gè)LED(發(fā)光二極管)外加一個(gè)小數(shù)點(diǎn)的LED
26、組合而成的顯示設(shè)備,可以顯示0~9等10個(gè)數(shù)字和小數(shù)點(diǎn),這類數(shù)碼管可以分為公陰極與共陽(yáng)極兩種,共陽(yáng)極就是把所有LED的陽(yáng)極連接到共同的結(jié)點(diǎn),而每個(gè) LED的陰極分別為a,b,c,d,e,f,g及dp(小數(shù)點(diǎn));共陰極就是把所有LED的陽(yáng)極連接到共同的結(jié)點(diǎn),而每個(gè) LED的陽(yáng)極分別為a,b,c,d,e,f,g及dp(小數(shù)點(diǎn))。</p><p> 根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。 靜態(tài)顯示驅(qū)
27、動(dòng):每個(gè)數(shù)碼管的每個(gè)段都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼的二~十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多。動(dòng)態(tài)顯示驅(qū)動(dòng):動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通控制,所以我們只要將需要顯示
28、的數(shù)碼管的選通控制打開(kāi),該位就顯示出字形[12]。</p><p> 本設(shè)計(jì)采用共陽(yáng)型數(shù)碼管,燈的負(fù)極依次接到數(shù)碼管的a-f段,采用動(dòng)態(tài)掃描電路,數(shù)碼管編碼說(shuō)明,如1表所示。溫度顯示流程圖如圖4所示。</p><p><b> 表1 控制命令表</b></p><p> 圖4 顯示子程序流程圖</p><p>
29、3.5 時(shí)間讀取和顯示子程序設(shè)計(jì)</p><p> DS1302內(nèi)部主要包括實(shí)時(shí)時(shí)鐘、輸入移位寄存器、31字節(jié)靜態(tài)RAM、電源控制部分、命令控制邏輯、振蕩器和分頻器等部分。</p><p> DS1302控制字:控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到DS1302中。位6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1(A4~A0)
30、:指示操作單元的地址;位0(最低有效位):如為0,表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作。控制字總是從最低位開(kāi)始輸出。在控制字指令輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從最低位(0位)開(kāi)始。同樣,在緊跟8位的控制字指令后的下一個(gè)SCLK脈沖的下降沿,讀出DS1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。</p><p> DS1302時(shí)序:CE輸入驅(qū)動(dòng)高時(shí)啟動(dòng)所有的數(shù)據(jù)傳輸。CE
31、輸入有兩個(gè)功能。首先,CE打開(kāi)控制邏輯,允許訪問(wèn)的移位寄存器的地址/命令序列。其次,CE提供了一個(gè)終止單字節(jié)或多字節(jié)數(shù)據(jù)傳輸方法。一個(gè)時(shí)鐘周期是由一個(gè)下降沿之后的上升沿序列。對(duì)于數(shù)據(jù)傳輸而言,數(shù)據(jù)必須在有效的時(shí)鐘的上升沿輸入,在時(shí)鐘的下降沿輸出。如果CE為低,所有的I/O引腳變?yōu)楦咦杩範(fàn)顟B(tài),數(shù)據(jù)傳輸終止。對(duì)于數(shù)據(jù)輸入:開(kāi)始的8個(gè)SCLK周期,輸入寫(xiě)命令字節(jié),數(shù)據(jù)字節(jié)在后8個(gè)SCLK周期的上升沿輸入。數(shù)據(jù)輸入位0開(kāi)始。對(duì)于數(shù)據(jù)輸出:開(kāi)始的
32、8個(gè)SCLK周期,輸入一個(gè)讀命令字節(jié),數(shù)據(jù)字節(jié)在后8個(gè)SCLK周期的下降沿輸出。通過(guò)DS1302讀取時(shí)間值,然后在四位數(shù)碼管上依次顯示時(shí)的十位、個(gè)位,分的十位、個(gè)位。時(shí)間的讀取和顯示流程圖如圖5和圖6所示。</p><p> 圖5 DS1302讀取時(shí)間流程圖</p><p> 圖6 LED顯示時(shí)間流程圖</p><p> 3.6 掃描鍵盤(pán)子程序設(shè)計(jì)</
33、p><p> 按鍵是用來(lái)向系統(tǒng)提供操作人員命令的接口,所以準(zhǔn)確無(wú)誤地辨認(rèn)每個(gè)鍵的動(dòng)作以及其所處的狀態(tài),是系統(tǒng)能否正常工作的關(guān)鍵。多數(shù)按鍵多采用機(jī)械彈性開(kāi)關(guān),一次高低電平的變化就是一次命令。但是按鍵的抖動(dòng)是難以避免的,為了穩(wěn)定操作,我們要防止抖動(dòng)的發(fā)生,就要消除抖動(dòng)的影響,可以從硬件和軟件兩方面解決。</p><p> 1、硬件消除抖動(dòng)。一般采用雙穩(wěn)態(tài)消抖電路。2、軟件消除按鍵抖動(dòng)。如果按鍵
34、較多硬件電路將無(wú)法勝任,因此常采用軟件的方法進(jìn)行消抖。在第一次檢測(cè)到有鍵按下時(shí),執(zhí)行一段延時(shí)子程序后再按確認(rèn)該鍵電平是否仍保持閉合狀態(tài),如果保持閉合狀態(tài)電平則確認(rèn)為真正有鍵按下,從而消除了抖動(dòng)的影響[13]。</p><p> 鍵盤(pán)一般有獨(dú)立式和矩陣式兩種,因?yàn)殒I盤(pán)較少所以用簡(jiǎn)單的獨(dú)立式鍵盤(pán),它的優(yōu)點(diǎn)是編程簡(jiǎn)單,缺點(diǎn)是占用I/O口多,適用于鍵盤(pán)較少的電路。本設(shè)計(jì)中將鍵盤(pán)程序作為主程序的一部份,采用掃描方式讀取鍵
35、盤(pán)動(dòng)作,根據(jù)讀取的值,鍵盤(pán)處理程序進(jìn)行相應(yīng)操作。鍵盤(pán)掃描子程序流程圖如圖7所示。</p><p> 圖7 鍵盤(pán)掃描子程序流程圖</p><p> 3.7 報(bào)警子程序設(shè)計(jì)</p><p> 系統(tǒng)正常運(yùn)行時(shí),當(dāng)檢測(cè)到溫度低于下限溫度或水位較低時(shí),報(bào)警電路工作,蜂鳴器響起,直到溫度高于下限溫度或水位不低時(shí),蜂鳴器停止工作。當(dāng)系統(tǒng)處于出錯(cuò)狀態(tài)時(shí),蜂鳴器也會(huì)報(bào)警。報(bào)警
36、工作流程圖如圖8所示。</p><p> 圖8 報(bào)警子程序流程圖</p><p><b> 4 仿真調(diào)試</b></p><p> 4.1 仿真軟件介紹</p><p> 本次設(shè)計(jì)是利用Proteus軟件來(lái)仿真的。Proteus軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件。它不
37、僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件[14]。它是目前最好的仿真單片機(jī)及外圍器件的工具。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。Proteus軟件是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24
38、/30/DSPIC33、AVR、ARM、8086和MSP430等,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。</p><p> Proteus軟件具有其它EDA工具軟件的功能。這些功能是:1、原理布圖 2、PCB自動(dòng)或人工布線 3、SPICE電路仿真</p><p> 革命性的特點(diǎn):1、互動(dòng)的電路仿真。2、仿真處理器及外圍電路。<
39、/p><p> Proteus提供了豐富的資源:1、可提供仿真元器件資源,仿真數(shù)字和模擬、交流和直流等數(shù)千種元器件,有30多個(gè)元器件。2、可提供仿真儀表資源。3、除了現(xiàn)實(shí)存在的儀器外,它還提供了一個(gè)圖形顯示功能,可以將線路上變化的信號(hào),以圖形的方式實(shí)時(shí)地顯示出來(lái),其作用與示波器相似[15]。</p><p> 4.2 系統(tǒng)仿真結(jié)果</p><p> 在Prote
40、us繪制好原理圖后,調(diào)入已經(jīng)編譯好的目標(biāo)代碼文件:*.HEX,可以在Proteus的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過(guò)程。打開(kāi)Proteus軟件,在元器件庫(kù)中選擇AT89S52單片機(jī),DS18B20,DS1302等元器件,連線結(jié)束后,點(diǎn)擊單片機(jī)下載程序。點(diǎn)擊開(kāi)始按鈕,系統(tǒng)上電進(jìn)入初始化狀態(tài),進(jìn)入工作狀態(tài),太陽(yáng)能熱水器控制器在2位LED數(shù)碼管上顯示當(dāng)前的水溫值,通過(guò)發(fā)光二極管點(diǎn)亮的數(shù)目來(lái)表示當(dāng)前的水位值,利用按鍵來(lái)執(zhí)行加水、加熱、顯示時(shí)間
41、、調(diào)整溫度、調(diào)整時(shí)間等相關(guān)操作。仿真圖如圖9所示:</p><p><b> 圖9 仿真圖</b></p><p><b> 結(jié) 論</b></p><p> 本次畢業(yè)設(shè)計(jì),我做的課題是“太陽(yáng)能熱水器控制器——軟件設(shè)計(jì)”。</p><p> 本設(shè)計(jì)利用AT89S52單片機(jī)作為系統(tǒng)核心實(shí)現(xiàn)了
42、溫度、水位和時(shí)間三種參數(shù)的實(shí)時(shí)顯示,加水加熱自動(dòng)和手動(dòng)控制,溫度預(yù)置等功能。采用C語(yǔ)言編寫(xiě)程序,軟件部分由主程序、延時(shí)子程序、溫度讀取子程序、溫度顯示子程序、時(shí)間讀取和顯示子程序、掃描鍵盤(pán)子程序、報(bào)警子程序構(gòu)成。</p><p> 本設(shè)計(jì)軟件設(shè)計(jì)是用C語(yǔ)言來(lái)編寫(xiě)的,與其他語(yǔ)言比起來(lái),有優(yōu)勢(shì)也弊端,結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻?/p>
43、晰,便于使用、維護(hù)以及調(diào)試。C語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。C語(yǔ)言的缺點(diǎn)主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點(diǎn)使得C在數(shù)據(jù)的安全性上有很大缺陷,C語(yǔ)言的語(yǔ)法限制不太嚴(yán)格,對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語(yǔ)言比其他高級(jí)語(yǔ)言較難掌握。在軟件編寫(xiě)好后,發(fā)現(xiàn)始終不能通過(guò)編譯,經(jīng)過(guò)老師的幫助,發(fā)現(xiàn)了諸多的問(wèn)題,最后將錯(cuò)誤
44、改正后,通過(guò)編譯,并實(shí)現(xiàn)仿真。</p><p> 本設(shè)計(jì)已基本實(shí)現(xiàn)了任務(wù)書(shū)所要求的的功能,但鑒于自身水平有限等原因,設(shè)計(jì)中可能會(huì)不足和有待改進(jìn)之處,望各位專家老師批評(píng)指正。</p><p><b> 致 謝</b></p><p> 彈指一揮間,大學(xué)四年已經(jīng)接近了尾聲。當(dāng)自己懷著忐忑不安的心情完成畢業(yè)設(shè)計(jì)的時(shí)候,意味著大學(xué)生活即將結(jié)束,
45、自己也從當(dāng)年一個(gè)懵懂的孩子變成了一個(gè)成熟的青年。本次設(shè)計(jì)是我大學(xué)生涯上的最后一次答卷,在完成畢業(yè)設(shè)計(jì)的整個(gè)過(guò)程中,我得到了許多同學(xué)和老師的幫助,尤其是我的指導(dǎo)老師紀(jì)劍祥,他在我畢業(yè)設(shè)計(jì)完成的過(guò)程中給予了很多的教誨、幫助和鼓勵(lì)。</p><p> 首先,我要感謝我的導(dǎo)師**,從選題到開(kāi)題報(bào)告,到外文翻譯,到中期檢查表,再到畢業(yè)論文初稿和終稿,一遍又一遍地指出每稿中的具體問(wèn)題,嚴(yán)格把關(guān),循循善誘。其次,我還要感謝同
46、組的蔡江同學(xué)和給予我?guī)椭耐瑢W(xué),沒(méi)有他們的幫助和提供資料,沒(méi)有他們的鼓勵(lì)與支持,我是不可能順利地完成本次設(shè)計(jì)的。最后,我要感謝培養(yǎng)我長(zhǎng)大含辛茹苦的父母,謝謝您們!</p><p> 最后,能夠成功地完成本次設(shè)計(jì),我非常地開(kāi)心!借此機(jī)會(huì),再次向在本次畢業(yè)設(shè)計(jì)中給予我關(guān)心和幫助的老師和同學(xué)表達(dá)我誠(chéng)摯的謝意。</p><p><b> 參 考 文 獻(xiàn)</b></p
47、><p> 1 楊宜德,劉茂州.太陽(yáng)能熱水器發(fā)展的前景廣闊[J].河南科技,1989.10</p><p> 2 劉福才,劉豐,劉立偉.AVR單片機(jī)在太陽(yáng)能熱水器智能控制中的應(yīng)用[J].中國(guó)儀器儀表,2000.6 </p><p> 3 孔星朗.單片機(jī)原理及其在家用電器中的應(yīng)用.海洋出版社</p><p> 4 李軍.檢測(cè)技術(shù)及儀
48、表.北京:中國(guó)輕工業(yè)出版社,2002.4</p><p> 5 張景文,王震宏,高為浪,李桂花.基于單片機(jī)的太陽(yáng)能熱水器智能控制系統(tǒng)[J].西華大學(xué)學(xué)報(bào)(自然科學(xué)版),2008.5</p><p> 6 趙大偉.太陽(yáng)能熱水器[J].新農(nóng)業(yè),2002.7 </p><p> 7 別玉,胡明輔,王艷青.平板型太陽(yáng)熱水器的現(xiàn)狀及發(fā)展趨勢(shì)[C].化學(xué)與化工技術(shù),
49、科技學(xué)術(shù)論文集.北京:原子能出版社,2005 </p><p> 8 胡潤(rùn)青.蓬勃發(fā)展的太陽(yáng)能熱水器產(chǎn)業(yè).可再生能源</p><p> 9 張忠.太陽(yáng)能熱水器的類型[J].農(nóng)村新技術(shù),2008.2</p><p> 10 王幸之,鐘愛(ài)琴,王雷,王閃.AT89S系列單片機(jī)原理與接口技術(shù)[M].北京:航空航天大學(xué)出版社,2004.5</p>
50、<p> 11 袁小平,陳躍.一種智能型太陽(yáng)能熱水器控制器的研制.江蘇煤炭</p><p> 12 范延濱,王正彥.太陽(yáng)能熱水器控制器中測(cè)量模型.電子測(cè)量技術(shù),2004.3</p><p> 13 唐德禮,鮑連升.太陽(yáng)能熱水器水溫水位控制器.十堰職業(yè)技術(shù)學(xué)院學(xué)報(bào),2002.15(4)</p><p> 14 宋光漢,方之棋.電氣實(shí)驗(yàn)技術(shù)與測(cè)量.北京
51、:中國(guó)計(jì)量出版社</p><p> 15 施文康.檢測(cè)技術(shù).北京:機(jī)械工業(yè)出版社,2002.1(189-207)</p><p><b> 附錄A:系統(tǒng)原理圖</b></p><p><b> 附錄B:程序清單</b></p><p> #include <AT89X52.h>&
52、lt;/p><p> #include "DS18B20.h" </p><p> #define uint unsigned int</p><p> #define uchar unsigned char //宏定義</p><p> #define SET P1_0
53、//定義溫度調(diào)整鍵</p><p> #define DEC P1_1 //定義減少鍵</p><p> #define ADD P1_2 //定義增加鍵</p><p> #define JIAS P1_6 //定義加水鍵</p><p>
54、 #define JIAR P1_7 //定義加熱鍵</p><p> #define BEEP P3_4 //定義蜂鳴器</p><p> #define S1 P3_7 //定義低水位</p><p> #define S2 P3_6
55、 //定義高水位</p><p> #define LED1 P1_3 //定義綠燈</p><p> #define LED2 P1_4 //定義黃燈</p><p> #define LED3 P1_5 //定義紅燈</p><p> #
56、define JDQ1 P3_0 //定義加水繼電器</p><p> #define JDQ2 P3_1 //定義加熱繼電器</p><p> bit shanshuo_st; //閃爍間隔標(biāo)志</p><p> bit beep_st;
57、 //蜂鳴器間隔標(biāo)志</p><p> char flag=0;</p><p> sbit D1=P0^6; //位選</p><p> sbit D2=P0^4;</p><p> sbit D3=P0^2;</p><p> sbit D4=P0^0;</p>
58、<p> sbit IO=P0^3; //數(shù)據(jù)口</p><p> sbit CLK=P0^1; //控制數(shù)據(jù)時(shí)鐘</p><p> sbit RST=P0^5; //使能端、復(fù)位端</p><p> sbit s1=P0^7; //定義溫度時(shí)間切換鍵</
59、p><p> sbit s2=P3^5; //定義時(shí)間調(diào)整鍵</p><p> char knum=0,snum,fnum;</p><p> /***********寫(xiě)時(shí)分秒地址************/</p><p> #define write_shi 0x84</p><
60、;p> #define write_fen 0x82</p><p> #define write_miao 0x80</p><p> /***********讀時(shí)分秒地址************/</p><p> #define read_shi 0x85</p><p> #define read_fen 0x8
61、3</p><p> #define read_miao 0x81</p><p> char shi,fen,miao; //讀出數(shù)據(jù)存儲(chǔ)變量</p><p> uchar d[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0};//不帶小數(shù)點(diǎn)</p><p>
62、uchar dd[]={0x38,0xfb,0x42,0xb2,0xf1,0xb4,0x34,0xfa,0x30,0xb0};//帶小數(shù)點(diǎn)</p><p> uchar x=0; //計(jì)數(shù)器</p><p> signed char m; //溫度值全局變量</p><p>
63、 uchar n; //溫度值全局變量</p><p> uchar set_st=0; //狀態(tài)標(biāo)志</p><p> signed char shangxian=38; //上限報(bào)警溫度,默認(rèn)值為38</p><p> signed char xiaxia
64、n=5; //下限報(bào)警溫度,默認(rèn)值為05</p><p> Uchar code LEDData[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0};</p><p> /*****延時(shí)子程序*****/</p><p> void Delay(uint num)</p>
65、<p><b> {</b></p><p> while( --num );</p><p><b> }</b></p><p> /*****初始化定時(shí)器0*****/</p><p> void InitTimer(void)</p><p>
66、<b> { </b></p><p><b> TMOD=0x1;</b></p><p><b> TH0=0x4c;</b></p><p> TL0=0x00; //50ms(晶振11.0592M)</p><p>
67、 EA=1; //全局中斷開(kāi)關(guān)</p><p><b> TR0=1;</b></p><p> ET0=1; //開(kāi)啟定時(shí)器0</p><p><b> }</b></p><p> /*****
68、讀取溫度*****/</p><p> void check_wendu(void)</p><p><b> {</b></p><p> uint a,b,c;</p><p> c=ReadTemperature()-5; //獲取溫度值并減去DS18B20的溫漂誤差</p>&
69、lt;p> a=c/100; //計(jì)算得到十位數(shù)字</p><p> b=c/10-a*10; //計(jì)算得到個(gè)位數(shù)字</p><p> m=c/10; //計(jì)算得到整數(shù)位</p><p> if(m<0){m=0;n=0;}
70、 //設(shè)置溫度顯示上限</p><p> if(m>99){m=99;n=9;} //設(shè)置溫度顯示上限 </p><p><b> }</b></p><p> /*****顯示開(kāi)機(jī)初始化等待畫(huà)面*****/</p><p> Disp_init() &l
71、t;/p><p><b> {</b></p><p> P2 = 0xf7; //顯示-</p><p><b> D1 = 0;</b></p><p> Delay(200);</p><p><b> D2=0;&
72、lt;/b></p><p> Delay(200); </p><p><b> D3=0;</b></p><p> Delay(200);</p><p><b> D4=0;</b></p><p> Delay(200);</p>
73、<p> D1=1; //關(guān)閉顯示</p><p><b> D2=1;</b></p><p><b> D3=1;</b></p><p><b> D4=1;</b></p><p><b> }
74、</b></p><p> /*****顯示溫度子程序*****/</p><p> Disp_Temperature() //顯示溫度</p><p><b> {</b></p><p> P2 =LEDData[m%10]; //顯示個(gè)位</
75、p><p><b> D1 = 1;</b></p><p><b> D2 = 1;</b></p><p><b> D3 = 0;</b></p><p><b> D4 = 1;</b></p><p> Delay(
76、300);</p><p> P2 =LEDData[m/10]; //顯示十位</p><p><b> D1 = 1;</b></p><p><b> D2 = 1;</b></p><p><b> D3 = 1;</b></p>
77、<p><b> D4 = 0;</b></p><p> Delay(300);</p><p> D1= 1; //關(guān)閉顯示</p><p><b> D2= 1;</b></p><p><b> D3= 1;<
78、;/b></p><p><b> D4= 1;</b></p><p><b> }</b></p><p> /*****顯示報(bào)警溫度子程序*****/</p><p> Disp_alarm(uchar baojing)</p><p><b>
79、 {</b></p><p> P2 =0x3c; //顯示C</p><p><b> D1 = 0;</b></p><p><b> D2 = 1;</b></p><p><b> D3 = 1;</b><
80、;/p><p><b> D4 = 1;</b></p><p> Delay(200);</p><p> P2 =LEDData[baojing%10]; //顯示個(gè)位</p><p><b> D1 = 1;</b></p><p><b> D
81、2 = 0;</b></p><p><b> D3 = 1;</b></p><p><b> D4 = 1;</b></p><p> Delay(200);</p><p> P2 =LEDData[baojing/10]; //顯示十位</p>&
82、lt;p><b> D1 = 1;</b></p><p><b> D2 = 1;</b></p><p><b> D3 = 0;</b></p><p><b> D4 = 1;</b></p><p> Delay(200);<
83、;/p><p> if(set_st==1)P2 =0x61;</p><p> else if(set_st==2)P2 =0x3d; //上限H、下限L標(biāo)示</p><p><b> D1 = 1;</b></p><p><b> D2 = 1;</b></p><
84、p><b> D3 = 1;</b></p><p><b> D4 = 0;</b></p><p> Delay(200);</p><p> D1 = 1; //關(guān)閉顯示</p><p><b> D2 = 1;</b
85、></p><p><b> D3 = 1;</b></p><p><b> D4 = 1;</b></p><p><b> }</b></p><p> /*****報(bào)警子程序*****/</p><p> void Alarm()
86、</p><p><b> {</b></p><p> if(x>=10){beep_st=~beep_st;x=0;}</p><p> if((m>=shangxian&&beep_st==1)||(m<xiaxian&&beep_st==1)||(flag==1&&
87、beep_st==1))BEEP=1;</p><p> else BEEP=0;</p><p> if(flag==2){</p><p> if(beep_st==1){BEEP=1;LED1=0;LED2=0;LED3=0;}</p><p> else {BEEP=0;LED1=1;LED2=1;LED3=1;}</
88、p><p><b> }</b></p><p> if(m<xiaxian) JDQ2=0;</p><p> if(m>=shangxian) JDQ2=1;</p><p><b> }</b></p><p> /*****DS1302讀數(shù)據(jù)****
89、*/</p><p> uchar read_1302(uchar add)//讀函數(shù)</p><p><b> {</b></p><p> uchar i,date;</p><p> RST=0; //禁止讀寫(xiě)數(shù)據(jù)</p><p> for(i=0;i
90、<8;i++)</p><p><b> {</b></p><p><b> RST=1;</b></p><p><b> CLK=0;</b></p><p> IO=add&0x01;</p><p><b>
91、add>>=1;</b></p><p><b> CLK=1;</b></p><p><b> }</b></p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p>
92、;<b> if(IO)</b></p><p> date=date|0x80;</p><p><b> else</b></p><p> date=date|0x00;</p><p><b> CLK=1;</b></p><p>
93、<b> date>>=1;</b></p><p><b> CLK=0;</b></p><p><b> }</b></p><p><b> RST=0;</b></p><p> date=date/16*10+date%1
94、6; //進(jìn)制轉(zhuǎn)換 16轉(zhuǎn)10進(jìn)制</p><p> IO=0; //數(shù)據(jù)讀完后,IO口必須為0,不然小時(shí)一直顯示</p><p> return date;</p><p><b> } </b></p><p> /*****DS1302寫(xiě)數(shù)據(jù)**
95、***/</p><p> void write_1302(uchar add,uchar dat) //寫(xiě)函數(shù)</p><p><b> {</b></p><p><b> uchar i;</b></p><p> RST=0; //禁止讀寫(xiě)數(shù)據(jù)</
96、p><p> CLK=0; </p><p> for(i=0;i<8;i++) //寫(xiě)地址</p><p><b> {</b></p><p> RST=1; //允許讀寫(xiě)數(shù)據(jù)</p><p><b> CLK=0;</
97、b></p><p> IO=add&0x01; </p><p><b> add>>=1;</b></p><p><b> CLK=1;</b></p><p><b> }</b></p><p> for(
98、i=0;i<8;i++) //寫(xiě)數(shù)據(jù)</p><p><b> {</b></p><p> RST=1; //允許讀寫(xiě)數(shù)據(jù)</p><p><b> CLK=0;</b></p><p> IO=dat&0x01; </p&g
99、t;<p><b> dat>>=1;</b></p><p><b> CLK=1;</b></p><p><b> }</b></p><p><b> RST=0;</b></p><p><b> }
100、</b></p><p> void init_1302() //初始化函數(shù) 設(shè)置時(shí)間</p><p><b> {</b></p><p> write_1302(0x8e,0x00);//保護(hù)取消,可以進(jìn)行讀寫(xiě)操作</p><p> write_1302(write_
101、miao,0x56);</p><p> write_1302(write_fen,0x49);</p><p> write_1302(write_shi,0x14);</p><p> write_1302(0x8e,0x80);//保護(hù)啟動(dòng),不能進(jìn)行讀寫(xiě)操作</p><p><b> }</b>
102、</p><p> void display(uchar shi,uchar fen,uchar miao) //顯示函數(shù)</p><p><b> {</b></p><p> if(knum==0)</p><p><b> {</b></p><p>&
103、lt;b> snum=30;</b></p><p><b> fnum=30;</b></p><p><b> }</b></p><p> if(knum==1)</p><p><b> {</b></p><p>&
104、lt;b> fnum++;</b></p><p><b> snum=30;</b></p><p><b> }</b></p><p> if(knum==2)</p><p><b> {</b></p><p>&l
105、t;b> snum++;</b></p><p><b> fnum=30;</b></p><p><b> }</b></p><p> if(snum>=30)</p><p><b> {</b></p><p>
106、;<b> D1 = 1;</b></p><p><b> D2 = 1;</b></p><p><b> D3 = 1;</b></p><p> D4 = 0; //位選</p><p> P2=d[shi
107、/10];//段選</p><p> Delay(200);</p><p> P2=0XFF;//消隱</p><p> if(miao%2==0)//小數(shù)點(diǎn)閃爍</p><p><b> {</b></p><p><b> D1
108、 = 1;</b></p><p><b> D2 = 1;</b></p><p><b> D3 = 0;</b></p><p><b> D4 = 1;</b></p><p> P2=dd[shi%10];</p><p>
109、 Delay(200);</p><p> P2=0XFF;//消隱</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> D
110、1 = 1;</b></p><p><b> D2 = 1;</b></p><p><b> D3 = 0;</b></p><p><b> D4 = 1;</b></p><p> P2=d[shi%10];</p><p>
111、 Delay(200);</p><p> P2=0XFF;//消隱</p><p><b> }</b></p><p> if(snum==60)</p><p><b> snum=0;</b></p><p><b> }<
112、;/b></p><p> if(fnum>=30)</p><p><b> {</b></p><p><b> D1 = 1;</b></p><p><b> D2 = 0;</b></p><p><b> D3
113、 = 1;</b></p><p><b> D4 = 1;</b></p><p> P2=d[fen/10];</p><p> Delay(200);</p><p> P2=0XFF; //消隱</p><p><b> D1 = 0;&
114、lt;/b></p><p><b> D2 = 1;</b></p><p><b> D3 = 1;</b></p><p><b> D4 = 1;</b></p><p> P2=d[fen%10];</p><p> Delay
115、(200);</p><p> P2=0XFF; //消隱</p><p> if(fnum==60)</p><p><b> fnum=0;</b></p><p><b> }</b></p><p><b> } </b>
116、;</p><p> void read_sf()</p><p><b> {</b></p><p> shi=read_1302(read_shi);</p><p> fen=read_1302(read_fen);</p><p> miao=read_1302(read_mi
117、ao);</p><p> display(shi,fen,miao);</p><p><b> }</b></p><p> /*****鍵盤(pán)掃描子程序*****/</p><p> void keyscan() //按鍵掃描函數(shù)</p><p>
118、 { </p><p> if(JIAS==0) //選擇按鍵按下</p><p><b> { </b></p><p> Delay(2000); //消抖 </p><
119、;p> do{}while(JIAS==0);</p><p><b> JDQ1=0;</b></p><p> if(S1==0&&S2==0) {LED1=0;LED2=0;LED3=0;flag=0;JDQ1=1;} </p><p><b> }</b></p><
120、;p> if(JIAR==0) //選擇按鍵按下</p><p><b> { </b></p><p> Delay(2000); //消抖 </p><p> do{}while(JIAR==0);</p>
121、<p><b> JDQ2=0;</b></p><p> if(m>=shangxian) JDQ2=1;</p><p><b> }</b></p><p><b> if(s1==0)</b></p><p> { Delay(2000);
122、</p><p><b> if(s1==0)</b></p><p><b> {</b></p><p> while(!s1)</p><p> read_sf(); //顯示時(shí)間</p><p><b>
123、; knum++;</b></p><p> if(knum==1) </p><p><b> { </b></p><p> Disp_Temperature(); //顯示溫度</p><p><b> }</b></p><
124、p><b> }</b></p><p> if(s2==0) //選擇按鍵按下</p><p><b> {</b></p><p> Delay(2000);</p><p><b> if(s2==0)</b></p
125、><p><b> {</b></p><p> while(!s2)</p><p> display(shi,fen,miao); //加上這句,按鍵按下就不會(huì)閃</p><p><b> knum++;</b></p><p> if(knum==1)
126、 //分閃爍</p><p><b> {</b></p><p> write_1302(0x8e,0x00);//保護(hù)取消</p><p> write_1302(write_miao,0x80);</p><p><b> }</b></p><p&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 太陽(yáng)能熱水器智能控制器-畢業(yè)設(shè)計(jì)
- 太陽(yáng)能熱水器的智能控制器-畢業(yè)設(shè)計(jì)
- 太陽(yáng)能熱水器控制器設(shè)計(jì)-畢業(yè)論文
- 太陽(yáng)能熱水器控制畢業(yè)設(shè)計(jì)論文
- 畢業(yè)論文太陽(yáng)能熱水器控制器設(shè)計(jì)
- 太陽(yáng)能熱水器控制器設(shè)計(jì)[開(kāi)題報(bào)告]
- 畢業(yè)論文(設(shè)計(jì))太陽(yáng)能熱水器控制器設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--太陽(yáng)能熱水器中央控制器的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)----太陽(yáng)能熱水器中央控制器的設(shè)計(jì)與實(shí)現(xiàn)
- 太陽(yáng)能熱水器
- 畢業(yè)設(shè)計(jì)--太陽(yáng)能熱水器智能控制系統(tǒng)
- 畢業(yè)設(shè)計(jì)--太陽(yáng)能熱水器智能控制系統(tǒng)
- 太陽(yáng)能熱水器溫度控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 太陽(yáng)能熱水器溫度控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---太陽(yáng)能熱水器智能控制系統(tǒng)
- 太陽(yáng)能熱水器中央控制器的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)-太陽(yáng)能熱水器控制電路設(shè)計(jì)
- 太陽(yáng)能熱水器畢業(yè)論文
- 太陽(yáng)能熱水器畢業(yè)論文
- 畢業(yè)設(shè)計(jì)----太陽(yáng)能熱水器控制電路設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論