基于51單片機(jī)的智能熱水器控制系統(tǒng).._第1頁
基于51單片機(jī)的智能熱水器控制系統(tǒng).._第2頁
基于51單片機(jī)的智能熱水器控制系統(tǒng).._第3頁
基于51單片機(jī)的智能熱水器控制系統(tǒng).._第4頁
基于51單片機(jī)的智能熱水器控制系統(tǒng).._第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄摘 要IABSTRACTII引言11 智能熱水器控制系統(tǒng)的總體設(shè)計方案11.1 方案的分析與選擇11.2 系統(tǒng)總體設(shè)計概述21.3 各功能模塊介紹31.3.1 控制模塊31.3.2 顯示模塊31.3.3 輸入模塊51.3.4 其它模塊61.4 本章小結(jié)82 硬件電路的設(shè)計與實現(xiàn)82.1 單片機(jī)最小系統(tǒng)硬件電路設(shè)計82.2 顯示模塊硬件電路設(shè)計82.3 溫度傳感器DS18B20電路設(shè)計92.4 電子式水位開關(guān)硬件電路設(shè)計102.5 時鐘芯片電路設(shè)計102.6 聲光報警電路設(shè)計112.7 按鍵設(shè)置模塊電路設(shè)計112.8 電源和開關(guān)模塊設(shè)計122.9 本章小結(jié)123 熱水器控制系統(tǒng)的軟件設(shè)計與

2、算法實現(xiàn)123.1 軟件總體流程圖133.2 顯示模塊程序設(shè)計143.2.1 寫命令子函數(shù)143.2.2 寫數(shù)據(jù)子函數(shù)143.3 溫度傳感器模塊程序設(shè)計153.4 時鐘芯片相關(guān)程序設(shè)計163.5 按鍵設(shè)置程序設(shè)計163.6 主程序和中斷服務(wù)程序設(shè)計173.7 本章小結(jié)174 測試、總結(jié)與評價174.1 軟件平臺仿真測試174.2 面包板電路搭建測試184.3 系統(tǒng)方案總結(jié)與評價195 結(jié)束語19參考文獻(xiàn)20致 謝21基于51單片機(jī)的智能熱水器控制系統(tǒng)摘 要隨著科技的進(jìn)步和人們生活水平的不斷提高,熱水器越來越普遍地走進(jìn)千家萬戶,給人們的生活帶來了極大的方便。同時,人們對熱水器的智能化和安全性都提

3、出了更高的要求。這就要求熱水器具有一個智能控制系統(tǒng),能夠自動獲取當(dāng)前水溫和水位信息,判斷實際溫度與預(yù)設(shè)溫度關(guān)系,從而實現(xiàn)加熱的自動控制。本文提出了一種基于51單片機(jī)的智能熱水器控制系統(tǒng)的解決方案,該方案采用DS18B20單線數(shù)字溫度傳感器來對水溫進(jìn)行檢測,使用DS1302時鐘芯片實現(xiàn)計數(shù)和定時功能,同時加入了水位判斷和報警設(shè)計。用戶通過按鍵和顯示屏來完成系統(tǒng)的參數(shù)設(shè)置,從而實現(xiàn)定時加熱、自動恒溫等功能。關(guān)鍵詞:單片機(jī),熱水器,控制,DS18B20The intelligent water heater control system based on 51 single chip microco

4、mputerAbstractWith the progress of science and technology and the continuous improvement of people's living standard, the water heater is more and more widely into the thousands, has brought great convenience to people's life.At the same time, people also hope that the water heater is not ju

5、st simply by switch or button commands, to heat water, also can according to the people set the temperature of the automatic constant temperature, timing, heating, automatic judgment function such as water level, the water heater of intelligence and security are put forward higher requirements.This

6、requires a water heater has a intelligent control system, can automatically access to current information, water temperature and water level determine the actual temperature and the preset temperature relations, so as to realize the automatic control of heating.This paper puts forward a kind of inte

7、lligent water heater control system based on 51 single chip solution, the scheme adopts DS18B20 single line digital temperature sensor to test the water temperature, using DS1302 clock chip realize counting and timing functions, at the same time joined the water judgment and alarm design.The user th

8、rough the buttons and screen to complete the system parameter setting, so as to realize the function such as timing, automatic constant temperature heating.Key Words:single chip microcomputer, water heater, control, DS18B20引言隨著人們對生活質(zhì)量的要求不斷提高,熱水器逐漸成為了城市居民生活的一個不可或缺的東西。經(jīng)過多年的發(fā)展和技術(shù)積累,整個熱水器行業(yè)也不斷涌現(xiàn)出新的產(chǎn)品,熱水

9、器的種類也越來越多,從最初的燃?xì)鉄崴饕患要?dú)大,到現(xiàn)在的燃?xì)鉄崴?、電熱水器、太陽能熱水器等多種熱水器都有一定的市場占有率。在熱水器的使用效果上,功能也越來越豐富,使用更加人性化,甚至結(jié)合最新的智能家居和物聯(lián)網(wǎng)理念,智能化程度大大提高,給人們的生活帶來了極大的方便?,F(xiàn)在的熱水器向著安全、節(jié)能、穩(wěn)定、高效、人性化的方向快速發(fā)展著。單片機(jī)是一種微控制器,體積小、功耗低、通過編程和外圍電路設(shè)計,可以完成多種智能控制任務(wù)。隨著單片機(jī)技術(shù)的迅速發(fā)展,越來越多的家用電器采用各種型號的單片機(jī)為控制核心,來完成和人類的交互,并通過相應(yīng)的程序和內(nèi)部運(yùn)算,實現(xiàn)一些智能化的控制,使家用電器的操作更加人性化,控制更加

10、智能化。在熱水器中,也廣泛采用了單片機(jī)作為控制核心,通過相應(yīng)的溫度傳感器,在熱水器的溫度控制上達(dá)到了更高的精度,完成了從最初的旋鈕調(diào)節(jié)逐漸向數(shù)字化調(diào)節(jié)方向轉(zhuǎn)變。同時,通過不同的傳感器,由單片機(jī)控制并指示熱水器的各種工作狀態(tài),在發(fā)生缺水、水溫過熱等情況時及時向用戶給出聲光報警,從而防止發(fā)生意外,保障了用戶的安全。本文所提出的智能熱水器控制系統(tǒng),以51系列單片機(jī)為控制核心,通過溫度傳感器、水位傳感器感知熱水器狀態(tài),并通過按鍵、顯示屏和用戶進(jìn)行人機(jī)交互,實現(xiàn)了定時加熱、自動恒溫的功能,同時也有過熱、缺水的報警設(shè)計,給用戶帶來方便。本設(shè)計具有成本低、實用性強(qiáng)、溫度控制精度高的特點。1 智能熱水器控制系

11、統(tǒng)的總體設(shè)計方案本設(shè)計所提到的智能熱水器控制系統(tǒng)主要是實現(xiàn)對溫度的自動控制、定時加熱控制和智能報警的功能,因此,智能熱水器控制系統(tǒng)主要分為控制模塊、顯示模塊、信息輸入模塊、加熱模塊、聲光報警模塊等幾部分構(gòu)成。1.1 方案的分析與選擇對于主控芯片,本方案選擇最簡單的8位51系列的單片機(jī),性能可靠,成本低,完全可以滿足本系統(tǒng)的要求。而且由于51系列的單片機(jī)在電子相關(guān)專業(yè)中的基礎(chǔ)性地位,對其使用和編程都比較熟練,可以極大縮短開發(fā)周期,更好地完成設(shè)計任務(wù)。對于顯示模塊,LED液晶顯示屏、LCD1602字符型液晶、LCD12864點陣型液晶三者都是簡單的、小型的顯示器件,均可完成顯示任務(wù)。LED液晶顯示

12、的內(nèi)容過于簡單,LCD1284更適合顯示圖像類信息,而LCD1602非常適合顯示少量的、豐富的字符信息。因此,選擇LCD1602字符型液晶。對于輸入模塊,分為用戶信息輸入和傳感器信息輸入。用戶信息輸入方面,使用按鍵進(jìn)行輸入要比旋鈕更容易控制,用戶也更易于接受,通過設(shè)置相應(yīng)的調(diào)節(jié)按鍵,可以十分精確地定位到用戶所希望達(dá)到的溫度。當(dāng)然,按鍵也有機(jī)械按鍵、電容按鍵等許多不同的種類,因為本系統(tǒng)處于實驗調(diào)試階段,故選取最簡單的機(jī)械按鍵。傳感器信息輸入分為兩個部分,第一部分是溫度信息輸入,使用溫度傳感器,用于告訴單片機(jī)當(dāng)前的水溫,實現(xiàn)溫度的自動控制;第二部分是水位信息輸入,使用水位傳感器,用來告訴單片機(jī)水量

13、信息,達(dá)到缺水報警的目的。溫度傳感器一般有熱敏電阻和數(shù)字式溫度傳感器DS18B20可供選擇。熱敏電阻的可靠性差,且輸出的是模擬量,需要進(jìn)行相應(yīng)的A/D轉(zhuǎn)換后才能輸入,比較麻煩,而相比之下,數(shù)字式溫度傳感器測溫范圍寬、以單線串行方式與單片機(jī)進(jìn)行通信,節(jié)約了單片機(jī)的I/O口資源,且直接輸出數(shù)字量,外圍電路簡單,因此最符合要求。水位信息輸入只需考慮是否是缺水狀態(tài),因此只要對是否缺水給出一個電平信息即可,直接封裝一個斷觸電點,一端接地,當(dāng)有水時,單片機(jī)對應(yīng)端口被拉低,無水時端口電平被拉高,來完成是否缺水的判斷即可。同時,為了實現(xiàn)精確的定時加熱功能,引入專門的時鐘芯片DS1302進(jìn)行計時,為單片機(jī)提供日

14、期和時間基準(zhǔn)。為了保證使用者的安全,加入聲光報警提示模塊,在加熱、缺水時給出提示。1.2 系統(tǒng)總體設(shè)計概述本系統(tǒng)采用51系列單片機(jī)為控制核心,以DS18B20單線數(shù)字式溫度傳感器獲取溫度信息,采用DS1302時鐘芯片為單片機(jī)提供日期基準(zhǔn),顯示方面采用LCD1602液晶顯示屏,以機(jī)械按鍵的形式供用戶輸入,設(shè)置當(dāng)前的系統(tǒng)時間、定時加熱的開始時間、水溫設(shè)定等,來完成整個控制器的控制工作。系統(tǒng)整體的結(jié)構(gòu)框圖如下圖1.1所示。5V電源模塊1602顯示單片機(jī)及其最小系統(tǒng)及電源接口溫度傳感器模塊水位傳感器模塊聲光報警模塊按鍵輸入時鐘電路圖1.1 系統(tǒng)整體框圖1.3 各功能模塊介紹要順利完成整個系統(tǒng)的設(shè)計工作

15、,就要對所采用的各個模塊的元器件進(jìn)行具體的選型,并通過元器件的數(shù)據(jù)手冊、操作說明的資料,詳細(xì)地了解各個元器件的性能、操作方法、硬件連接要求的內(nèi)容。1.3.1 控制模塊本設(shè)計采用的主控芯是51系列的單片機(jī)處理器STC89C52RC,這是一款采用了CMOS工藝進(jìn)行生產(chǎn)的8位處理器,該處理器具有相當(dāng)可靠的工作性能,正常工作的功耗極低,而且有著相當(dāng)豐富的系統(tǒng)資源,片內(nèi)的程序存儲空間達(dá)到了4K、具有512字節(jié)的RAM空間,可以滿足大多數(shù)的程序要求。指令系統(tǒng)完全兼容傳統(tǒng)的8051單片機(jī)內(nèi)核,有2K+的EEPROM存儲空間。要建立完整的控制模塊,還要為單片機(jī)配置其最小系統(tǒng)的外圍電路,主要包括晶振和復(fù)位電路,

16、單片機(jī)才能正常的工作。1.3.2 顯示模塊本設(shè)計所采用的LCD1602液晶顯示屏,是一種小型的、集成度很高的液晶顯示屏,可以顯示字母、數(shù)字、符號等,其特點是功耗低、體積小、輕薄、模塊化,而且由于其自帶字符庫,在顯示方面的實現(xiàn)上只需要按照要求對其進(jìn)行初始化、設(shè)定相關(guān)的顯示位置和顯示內(nèi)容即可,操作簡單。作為一個集成化的顯示模塊,其相應(yīng)的管腳的具體定義可以查閱操作手冊獲取,而與單片機(jī)的具體連接方式將在硬件設(shè)計部分詳細(xì)介紹。如下圖1.2所示為LCD1602的控制器接口的時序說明,在液晶的初始化、讀寫操作的相關(guān)的編程中,要參考該時序圖,結(jié)合單片機(jī)晶振的選取情況作出必要調(diào)整,只有正確的時序才能保證單片機(jī)給

17、出正確的控制指令。圖1.2 字符型液晶LCD1602的讀寫操作時序圖LCD1602自帶字符庫,這就在很大程度上方便了用戶的開發(fā),同時也節(jié)省了單片機(jī)的程序存儲空間,不需要在程序中對字符的顯示進(jìn)行定義。如下圖1.3所示。圖1.3 字符型液晶LCD1602的字符庫1.3.3 輸入模塊對于單片機(jī)而言,要對其進(jìn)行一定是設(shè)置,就必須要有用戶進(jìn)行相關(guān)的指令輸入,單片機(jī)要對熱水器的熱水溫度狀態(tài)和是否缺水進(jìn)行感知,要有相關(guān)的傳感器進(jìn)行信號輸入。輸入模塊分別為用戶指令輸入、溫度數(shù)據(jù)輸入和是否缺水的信號輸入。指令輸入由4個獨(dú)立按鍵完成,溫度輸入由DS18B20來完成,是否缺水的信號由電子式水位開關(guān)提供。指令輸入模塊

18、采用4個獨(dú)立按鍵完成。獨(dú)立按鍵的觸發(fā)方式為低電平有效,在平時的系統(tǒng)開啟狀態(tài)下,單片機(jī)相應(yīng)端口保持高電平狀態(tài),當(dāng)按鍵被按下,獨(dú)立按鍵兩端連通,然后接地,單片機(jī)的相應(yīng)的連接端口的電平被地線拉低,從而能夠被單片機(jī)捕捉到按鍵動作。4個獨(dú)立按鍵分別是設(shè)定鍵、鍵值增加、鍵值減小、確認(rèn)這個4個功能定義,通過這4個按鍵,結(jié)合軟件和算法編程,進(jìn)行按鍵狀態(tài)掃描,然后對相應(yīng)的鍵值動作設(shè)定正確的響應(yīng)邏輯,就能夠為用戶提供完整的參數(shù)設(shè)置功能。溫度輸入模塊主要采用的是一種數(shù)字式集成單線溫度傳感器,型號為DS18B20。圖1.4 數(shù)字式單線溫度傳感器DS18B20封裝及引腳圖在DS18B20的芯片手冊中,閱讀單線傳輸協(xié)議的

19、時序要求,如下圖1.5所示。圖1.5 DS18B20的讀寫操作時序水位信號輸入選擇電子式水位開關(guān)BZ2401,供電電壓范圍在5V-24V,有三根線,電源線、地線和信號線。該產(chǎn)品通過內(nèi)置芯片檢測水位信號,由內(nèi)部芯片處理,當(dāng)判斷到有水時,芯片輸出與電源電壓相同的高電平,當(dāng)判斷到無水時,芯片輸出0V,產(chǎn)品正常供電后,與單片機(jī)通過數(shù)據(jù)線和地線連接。1.3.4 其它模塊為了實現(xiàn)準(zhǔn)確的定時功能,本系統(tǒng)采用了專門的時鐘芯片DS1302,來提供詳細(xì)的日期和時間基準(zhǔn)。同時,設(shè)置3個LED燈和蜂鳴器,組成其聲光提示和報警模塊。DS1302是一款涓流充電時鐘保持芯片,由DALLAS公司出品,可以通過簡單的串口同單片

20、機(jī)進(jìn)行通信,芯片內(nèi)部有自己的獨(dú)立時鐘電路和一個31字節(jié)的靜態(tài)RAM,能夠向單片機(jī)提供詳細(xì)的時鐘信息,如日期年月日,時間時分秒等,對于每月的天數(shù)和閏年能夠自動進(jìn)行處理,保證日期記錄的準(zhǔn)確性。在硬件連接上,其使用三個數(shù)據(jù)線同單片機(jī)的相應(yīng)端口進(jìn)行連接,分別為復(fù)位、數(shù)據(jù)和串行時鐘。其芯片正常工作的功率極低,在日期時間數(shù)據(jù)的保持和記錄時消耗的功率不足1mW。其封裝形式和管腳定義如下圖1.6所示。圖1.6 DS1302的封裝和管腳定義在使用時,該芯片要外接32.768KHz的晶振,需要簡單的外圍電路。如下圖1.7所示為其一種典型的應(yīng)用電路。圖1.7 一種典型的DS1302應(yīng)用電路圖聲光報警模塊所采用的LE

21、D燈和小型的蜂鳴器就比較常見,電路特性也很容易掌握,在LED燈的使用時,要注意選擇合適的顏色,同時要根據(jù)最大電流限制,加上合適的限流電阻,從而保護(hù)LED燈工作在正常的電壓電流條件下。蜂鳴器的驅(qū)動無法靠單片機(jī)的端口直接完成,要使用相應(yīng)型號的三極管進(jìn)行放大,如9012、8550等型號,通過三極管驅(qū)動蜂鳴器,才能正常發(fā)聲。1.4 本章小結(jié)本章對系統(tǒng)的總體方案進(jìn)行了設(shè)計,同時詳細(xì)確定了系統(tǒng)所應(yīng)該具有的功能模塊,對控制模塊、顯示模塊、輸入模塊等模塊的主要實現(xiàn)方案和元器件的選擇方案進(jìn)行了分析與比較,從而確定了系統(tǒng)所需要使用的各個元器件。同時,根據(jù)元器件的資料和數(shù)據(jù)手冊,對主要元器件的硬件連接、使用和操作方

22、法進(jìn)行了重點研究,為硬件電路的搭建和軟件編程提供了基礎(chǔ)。2 硬件電路的設(shè)計與實現(xiàn)2.1 單片機(jī)最小系統(tǒng)硬件電路設(shè)計單片機(jī)最小系統(tǒng)包括晶振、復(fù)位電路等。單片機(jī)內(nèi)部已經(jīng)具有時鐘震蕩電路,因此,我們搭建單片機(jī)最小系統(tǒng),只需要在其XTAL1和XTAL2兩個引腳之間加入反饋電路,就可以讓單片機(jī)得到時鐘信號。一般的反饋電路就是石英晶體振蕩器和兩個30uf的旁路電容,電容值的大小是根據(jù)其晶振頻率高低進(jìn)行調(diào)整的。在單片機(jī)的最小系統(tǒng)的電路中,石英晶體振蕩器的頻率越高,單片機(jī)內(nèi)部時鐘信號的周期就越短,單片機(jī)的指令執(zhí)行速度就越快。本設(shè)計中在單片機(jī)時鐘頻率的設(shè)置方面采用12MHz,同時對單片機(jī)的復(fù)位引腳設(shè)置相應(yīng)的復(fù)位

23、按鍵,以供用戶在必要的時候?qū)纹瑱C(jī)進(jìn)行重啟操作。對于本系統(tǒng)的各個傳感器接口,也要進(jìn)行引出,以供各個傳感器、電源、數(shù)據(jù)線接口使用。最小系統(tǒng)可以在萬用板上手工搭建,也可以直接使用PCB板上焊接好的成品模塊,其硬件原理圖如下圖2.1所示。圖2.1 單片機(jī)最小系統(tǒng)及其接口電路設(shè)計2.2 顯示模塊硬件電路設(shè)計本設(shè)計選用字符型液晶LCD1602為顯示器件,將LCD1602的數(shù)據(jù)引腳都接入單片機(jī)的P0端口,即P0.0P0.7分別對應(yīng)地和1602顯示屏的8根數(shù)據(jù)線DB0DB7相連接。如圖2.2所示,特殊功能端RS、RW、E通過網(wǎng)絡(luò)標(biāo)號,分別接P1.0,P1.1和P1.2。模塊的VEE端可以調(diào)節(jié)顯示模塊顯示字符

24、的亮度和對比度,在實際電路中采用10K歐姆藍(lán)白臥式可調(diào)電阻102,通過擰動,可以改變顯示字符的效果。圖2.2 顯示模塊及其接口電路設(shè)計2.3 溫度傳感器DS18B20電路設(shè)計DS18B20溫度傳感器與單片機(jī)的連接比較簡單,直接將其數(shù)據(jù)線連接到單片機(jī)的P2.1端口上,即網(wǎng)絡(luò)標(biāo)號DQ,電源和地線也連接到單片機(jī)主板上,同時數(shù)據(jù)線用電源電壓通過4.7K的電阻上拉。圖2.3 溫度傳感器及其接口電路設(shè)計2.4 電子式水位開關(guān)硬件電路設(shè)計缺水判斷由電子式水位開關(guān)完成,有水時輸出高電平,無水時輸出低電平。高電平等于電源電壓,因此其供電選擇為5V,數(shù)據(jù)線和地線接入單片機(jī)主板,如下圖2.4所示,網(wǎng)絡(luò)標(biāo)號WATER

25、對應(yīng)單片機(jī)的P2.2端口。圖2.4 電子式水位開關(guān)接口電路設(shè)計2.5 時鐘芯片電路設(shè)計時鐘芯片DS1302的RST、SCLK和I/O三個端口與單片機(jī)相連,進(jìn)行數(shù)據(jù)交換,如下圖2.5所示,網(wǎng)絡(luò)標(biāo)號分別為RST、SCK和IO,分別與單片機(jī)的P3.7、P3.5和P3.6相連,實現(xiàn)與單片機(jī)的通信。通過參考DS1302時鐘芯片的經(jīng)典電路設(shè)計方案,設(shè)計本系統(tǒng)所需要電路結(jié)構(gòu)。DS1302具有涓流充電功能,可以設(shè)置雙電源,其中VCC1為備用電源,在電路中另外引出,接一塊型號為CR2302的紐扣電池。VCC2在主板上直接取電。在X1和X2兩個引腳之間接入32.768KHz的晶振,為芯片提供基本時鐘信號。圖2.5

26、 時鐘芯片電路設(shè)計2.6 聲光報警電路設(shè)計報警電路分為燈光報警和聲音報警,用于對系統(tǒng)的各種需要報警的狀態(tài)進(jìn)行響應(yīng),并通過聲音和燈光對用戶進(jìn)行提示。如下圖2.6所示為聲音報警模塊電路設(shè)計,蜂鳴器使用與單片機(jī)相同的+5V電源,使用三極管9013進(jìn)行控制,集電極接單片機(jī)端口,網(wǎng)絡(luò)標(biāo)號為BEEP對應(yīng)單片機(jī)的P2.0端口。圖2.6 蜂鳴器電路設(shè)計燈光報警和提示選用高亮度高壽命的LED燈,共陽極接法,單片機(jī)給出低電平點亮。設(shè)置3個LED燈,串接510歐姆電阻,D1用于指示加熱狀態(tài);D2用來指示水位狀態(tài);D3用來指示溫度過熱狀態(tài)。這三個燈分別接單片機(jī)的端口P2.5、P2.4和P2.3來完成相關(guān)的功能。圖2.

27、7 指示燈電路設(shè)計2.7 按鍵設(shè)置模塊電路設(shè)計本系統(tǒng)的時鐘設(shè)置、溫度設(shè)置都需要通過按鍵來完成,采用4個獨(dú)立按鍵的設(shè)計,一端接地,按下后將單片機(jī)的端口電平拉低,由單片機(jī)完成按鍵動作的捕捉。功能定義為設(shè)置鍵、確定鍵、值增加鍵和值減小鍵,網(wǎng)絡(luò)標(biāo)號分別為SELT、ENTER、UP和DOWN,對應(yīng)接單片機(jī)的P1.3、P1.4、P1.5和P1.6四個端口。圖2.8 按鍵模塊電路設(shè)計2.8 電源和開關(guān)模塊設(shè)計本系統(tǒng)的外接+5V電源工作,為了控制方便,加入電源總開關(guān),同時使用一個LED燈指示電源狀態(tài)。在電源與地線之間并聯(lián)兩個濾波電容,濾除電源紋波。圖2.9 電源模塊電路設(shè)計2.9 本章小結(jié)本章主要在PROTE

28、L99SE的軟件環(huán)境下完成了電路硬件原理圖的設(shè)計,通過對主要元器件電氣特性的研究,合理、規(guī)范、安全地構(gòu)建了系統(tǒng)功能實現(xiàn)的硬件平臺。3 熱水器控制系統(tǒng)的軟件設(shè)計與算法實現(xiàn)軟件設(shè)計是整個系統(tǒng)的靈魂,優(yōu)秀、可靠的軟件設(shè)計能夠充分發(fā)揮硬件的資源,并能夠出色完成系統(tǒng)的預(yù)期功能。軟件系統(tǒng)主要的設(shè)計思路如下:1、在系統(tǒng)打開后,顯示當(dāng)前的系統(tǒng)時間信息和水溫信息,如果水溫低于設(shè)定值則開始加熱;如果水溫高于設(shè)定值或狀態(tài)為缺水就進(jìn)行聲光報警。2、響應(yīng)按鍵操作。當(dāng)用戶按下設(shè)置鍵時,進(jìn)入功能選擇菜單,功能選擇菜單有三個,第一個是設(shè)置時間,第二個是設(shè)置定時加熱開始的時間和結(jié)束的時間,第三個是設(shè)置溫度范圍的上限和下限。在軟

29、件程序的設(shè)計中,充分體現(xiàn)了模塊化的設(shè)計思想,整個軟件系統(tǒng)主要包括了整體初始化函數(shù)、LCD1602基礎(chǔ)函數(shù)、DS18B20基礎(chǔ)函數(shù)、DS1302基礎(chǔ)函數(shù)、按鍵掃描設(shè)置策略基礎(chǔ)函數(shù)幾個大的部分,然后在主程序中進(jìn)行相關(guān)模塊的函數(shù)調(diào)用,如傳感器狀態(tài)讀取、溫度智能判斷、報警處理策略、鍵盤掃描等,完成系統(tǒng)所預(yù)期的操作功能。3.1 軟件總體流程圖開始LCD顯示屏、1302時鐘芯片、定時器、獨(dú)立按鍵、溫度傳感器、各種端口初始化正常模式?調(diào)用時間顯示函數(shù)0.5s時間到?調(diào)用溫度讀取函數(shù)溫度顯示函數(shù)調(diào)用報警模塊函數(shù)調(diào)用按鍵掃描函數(shù)NNYY圖3.1 軟件系統(tǒng)總體流程圖3.2 顯示模塊程序設(shè)計顯示模塊程序主要包括初始

30、化、寫命令子函數(shù)、寫數(shù)據(jù)子函數(shù)都是其重要的基礎(chǔ)功能函數(shù),因此都要在軟件系統(tǒng)程序設(shè)計的底層庫中進(jìn)行包含。LCD設(shè)置參數(shù)及端口定義sbit rs=P10; /LCD1602sbit rw=P11; /LCD1602sbit e=P12; /LCD16023.2.1 寫命令子函數(shù)1602的操作需要對其進(jìn)行命令輸入,它有自己的指令庫。而對于這些命令的寫入,需要編寫特定的寫命令子函數(shù)。void write_com(uchar com) /寫指令函數(shù)rw=0;delay1(5);rs=0;delay1(5);e=1;delay1(5);P0=com;delay1(5);e=0;delay1(5);其中de

31、lay1為編寫的延時函數(shù),如下所示:void delay1(uint z) /延時函數(shù)uint x,y;for(x=z;x>0;x-)for(y=10;y>0;y-);3.2.2 寫數(shù)據(jù)子函數(shù)對命令進(jìn)行寫入之后,緊接著就要進(jìn)行所要顯示的字符數(shù)據(jù)的輸入,通過寫數(shù)據(jù)子函數(shù)來完成。void write_dat(uchar dat) rs=1;/選擇寫數(shù)據(jù) rw=0; P0=dat; e=1; delay(5);/無延時不能正常工作 e=0;根據(jù)以上兩個基本函數(shù),來編寫1602的初始化函數(shù)、顯示字符串函數(shù)、顯示兩位十進(jìn)制數(shù)字函數(shù),完成在時間設(shè)定、溫度設(shè)定的過程中進(jìn)行的各種顯示,如以下為時間

32、顯示部分的程序代碼。void Time_Display(void)read_rtc();Date_dispaly(0x80+0x40+12,time_data6); /顯示秒Date_dispaly(0x80+0x40+9,time_data5); /顯示分Date_dispaly(0x80+0x40+6,time_data4); /顯示時Date_dispaly(0x80+14,time_data3); /顯示日Date_dispaly(0x80+11,time_data2); /顯示月Week_dispaly(0x80+0x40+15,time_data1); /顯示周Date_dispa

33、ly(0x80+8,time_data0); /顯示年 /Year/10*16+Year%10Hour=time_data4/16*10+time_data4%16;Minute=time_data5/16*10+time_data5%16;Second=time_data6/16*10+time_data6%16;除此之外,還要編寫在進(jìn)行時間設(shè)定過程中和在溫度設(shè)定過程中要顯示的內(nèi)容,結(jié)合用戶的輸入,設(shè)置合適的光標(biāo)顯示處理。3.3 溫度傳感器模塊程序設(shè)計溫度傳感器的端口定義在P2.1端口。sbit DQ = P21;在溫度傳感器的基礎(chǔ)函數(shù)設(shè)計里邊,主要是進(jìn)行溫度獲取和處理,讀取溫度的函數(shù)包括讀

34、整數(shù)部分和讀小數(shù)部分,通過對DS18B20的數(shù)據(jù)格式進(jìn)行解析,編寫合適的讀取溫度子函數(shù)。主要基礎(chǔ)函數(shù)設(shè)計包括模塊初始化函數(shù)、單線串行傳輸協(xié)議延時函數(shù)、總線協(xié)議配置、字節(jié)數(shù)據(jù)發(fā)送、字節(jié)數(shù)據(jù)接收等多個部分。在主程序中對這些函數(shù)進(jìn)行調(diào)用,配合LCD顯示函數(shù),來完成對溫度顯示、判斷等多種功能。3.4 時鐘芯片相關(guān)程序設(shè)計時鐘芯片的數(shù)據(jù)傳輸定義在單片機(jī)的P3.5、P3.6和P3.7這三個端口。sbit sck=P35; /時鐘端口sbit io=P36; /時鐘端口sbit rst=P37; /時鐘端口在DS1302相關(guān)的程序設(shè)計中,主要就是對芯片的寫入數(shù)據(jù)和讀取數(shù)據(jù)的函數(shù)進(jìn)行編寫,然后再編寫相應(yīng)的日期

35、設(shè)定函數(shù)。使用write_ds1302_byt函數(shù)進(jìn)行數(shù)據(jù)準(zhǔn)備工作,使用write_ds1302函數(shù)對數(shù)據(jù)進(jìn)行寫入,使用read_ds1302函數(shù)對時間數(shù)據(jù)進(jìn)行讀出,使用set_rtc函數(shù)對時間進(jìn)行設(shè)置。3.5 按鍵設(shè)置程序設(shè)計按鍵設(shè)置程序主要是按鍵掃描策略,因為按鍵掃描和定義邏輯比較復(fù)雜,不僅要識別按下按鍵的次數(shù)、哪個按鍵,還要配合LCD顯示函數(shù),對不同的鍵值和狀態(tài)進(jìn)行顯示,并通過控制LCD1602的光標(biāo)位置與開閉,提示用戶進(jìn)行設(shè)置。按鍵掃描和設(shè)置程序單獨(dú)做成一個子函數(shù),在主程序中循環(huán)調(diào)用。在進(jìn)行按鍵編程操作中,因為使用的是機(jī)械按鍵,會存在抖動的現(xiàn)象,造成檢測不準(zhǔn)確或按下次數(shù)誤判,一般采用軟

36、件去抖的方式,即通過延時的方式,保證單片機(jī)讀取到的鍵值的準(zhǔn)確性。按鍵定義為4個,分別是設(shè)置鍵、確認(rèn)鍵、鍵值增加和鍵值減小。使用變量SELT表示設(shè)置鍵狀態(tài),同時設(shè)定一個全局變量Select_num記錄設(shè)置鍵被按下的次數(shù),不同的次數(shù)就對應(yīng)著不同的設(shè)置功能,根據(jù)按鍵功能設(shè)定,設(shè)置鍵按下的次數(shù)為1時,光標(biāo)指向設(shè)置時間功能,同時標(biāo)記進(jìn)入調(diào)節(jié)模式;當(dāng)按下次數(shù)為2時,光標(biāo)指向設(shè)置定時功能;當(dāng)按下次數(shù)為3時,光標(biāo)指向設(shè)置溫度功能;當(dāng)按下次數(shù)為4時,取消標(biāo)記調(diào)節(jié)模式,并回到正常模式。使用變量ENTER表示確認(rèn)鍵的狀態(tài),同時使用Enter_num記錄該鍵被按下的次數(shù)。對于Enter_num的每一個取值,都要首先檢

37、查變量Select_num的值,來判斷處于哪有功能設(shè)定的模式下,進(jìn)而顯示不同的內(nèi)容,并控制光標(biāo)的移動。并根據(jù)不同功能模式下按下確認(rèn)鍵的次數(shù),判斷系統(tǒng)當(dāng)前要修改的數(shù)據(jù)是哪一個,該不該結(jié)束調(diào)試,返回正常狀態(tài)。通過設(shè)置鍵和確認(rèn)鍵按下次數(shù)的排列組合,構(gòu)建了系統(tǒng)在調(diào)試模式下的每一個具體的調(diào)試狀態(tài),也就是說Select_num和Enter_num值的組合就確定了當(dāng)前調(diào)整的數(shù)據(jù)。對于鍵值增加和鍵值減小的按鍵,當(dāng)這兩個按鍵按下時,使用if條件判斷Select_num和Enter_num值的組合情況,執(zhí)行相應(yīng)的數(shù)據(jù)增加1或者是數(shù)據(jù)減小1的操作。由于鍵盤檢測循環(huán)進(jìn)行,連續(xù)按增加或減小按鍵可以起到連續(xù)調(diào)節(jié)的效果。同時,注意每一個數(shù)據(jù)的范圍,防止設(shè)置超出范圍。3.6 主程序和中斷服務(wù)程序設(shè)計主程序中主要包含各個功能函數(shù)的調(diào)用。在程序運(yùn)行開始,對各個模塊、端口和定時器初始化操作,然后進(jìn)入循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)中通過標(biāo)志位判斷系統(tǒng)處于調(diào)節(jié)模式還是正常模式,并不斷執(zhí)行鍵盤掃描函數(shù)。正常模式下執(zhí)行溫度顯示和時間顯示,調(diào)用報警模塊的子函數(shù),進(jìn)行溫度、水位狀態(tài)的檢測和判斷。在程序中設(shè)置了相應(yīng)的判斷標(biāo)志位,通過這些變量值的判斷來確定是否達(dá)到報警條件。水溫低于設(shè)定溫度則開啟加熱指示燈,高于設(shè)定溫度則報警,如果缺水的話,也進(jìn)行報警。中斷服務(wù)程序主要使用了定時器中斷,使用定時器T0定時50m

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論