版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精品文檔 你我共享摘要熱水器是一種可供浴室,洗手間及廚房使用的家用電器。目前市場上熱水器主要品種有電熱水器、太陽能熱水器、燃氣熱水器。就中國的具體情況而言,由于太陽能熱水器的使用受天氣原因的限制,使用范圍狹窄;燃氣熱水器由于以石油、天然氣為燃料,而燃料供應(yīng)量又難以滿足人們?nèi)找嬖鲩L的需求,且不利于環(huán)境,因此電熱水器越來越受到消費者的青睞。市場上傳統(tǒng)的機械式電熱水器控制功能不完善 ,而且精度低、可靠性差,生活質(zhì)量的提高使得消費者對電熱水器要求越來越趨向于智能化和數(shù)字化,因此智能家用電熱水器出現(xiàn)滿足了大眾的需求。它采用智能控制器為控制中心,具有抗干擾能力強 ,工作可靠穩(wěn)定,自帶flash閃存等特點,
2、完全滿足高性能的電熱水器的控制要求能。智能家用電熱水器控制器有對溫度精確控制,可靠的水位采集電路,防止干燒,時間設(shè)定等等功能。我們考慮到家電業(yè)的激烈競爭,節(jié)約生產(chǎn)成本,智能家用電熱水器控制器的設(shè)計主要采用簡單的器件:如51單片機,液晶屏顯示12864,ADC0809等配件構(gòu)成,與C語言軟件編程相結(jié)合;充分利用內(nèi)外圍功能,以提高產(chǎn)品的性價比,稍加改進,便能以較低成本應(yīng)用于實際批量生產(chǎn)中?!娟P(guān)鍵詞】智能控制器、功能、設(shè)計 目錄第一章 設(shè)計方案1.1 設(shè)計思想61.2 實現(xiàn)功能6第二章 硬件設(shè)計2.1 智能控制器的核心 72.2 矩陣式鍵盤按鍵功能 92.3 液晶屏顯示部分 10 2.4 A/D轉(zhuǎn)換
3、模塊 102.5 水溫及水位檢測電路 112.6 漏電檢測及報警電路 112.7 加熱及繼電器失控保護電路 11第三章 軟件設(shè)計3.1智能控制器子程序設(shè)計123.2主程序流程圖13總結(jié)14參考文獻14附錄15第一章 設(shè)計方案1.1 設(shè)計思想智能電熱水器控制器主體由51單片機組成。時間由單片機內(nèi)部的定時器計數(shù)器提供。由溫度傳感器ADC08098讀取外部溫度數(shù)據(jù)并傳輸?shù)接嬎銠C內(nèi)部。由液晶屏12864顯示溫度、時間,聯(lián)合控制開關(guān)輸出想要的數(shù)據(jù)。 輸入由接口芯片和串并轉(zhuǎn)換芯片74LS165從單片機的串口輸入。 1.主體部分由STC89C52單片機組成,單片機外接晶振。作為內(nèi)部定時器的輸入脈沖。時鐘由內(nèi)
4、部的定時器構(gòu)成。2 .AD轉(zhuǎn)換由ADC08098實現(xiàn),這是集AD轉(zhuǎn)換和串行輸出一身的芯片,它能將采集到的溫度直接轉(zhuǎn)換成串行信號輸入到單片機。3 .輸出通道使用電子開關(guān)配合光電二極管實現(xiàn)對加熱器的控制。4.顯示部分分兩部分。一部分是由于顯示時間一部分是用于顯示溫度。時間和溫度顯示當前時間和溫度,可以通過轉(zhuǎn)換開關(guān)實現(xiàn)當前時間和設(shè)定時間的轉(zhuǎn)換。溫度也是同理。顯示器由七段數(shù)碼管組成。四個用于顯示時間,兩個用于顯示溫度。六個數(shù)碼管通過一個I/O口擴展芯片8255A與單片機連接。5. 輸入設(shè)備采用一個I/O接口芯片。使用掃描的方法實現(xiàn)數(shù)據(jù)的輸入。輸出的并行數(shù)據(jù)通過一個并行/串行接口芯片實現(xiàn)串口的輸入。6.
5、控制開關(guān),由外部的電子開關(guān)直接輸入。硬件上使用I/O引腳直接輸入。在編程上由程序上直接掃描I/O引腳通過引腳電平的變化轉(zhuǎn)入相應(yīng)的中斷子程序,實現(xiàn)相應(yīng)的功能。7.輸出控制,由電平控制的光電二極管實現(xiàn)。光電二極管直接接到單片機的輸出引腳。1.2 實現(xiàn)功能設(shè)計的智能電熱水器將要實現(xiàn)的功能: 1、對溫度精確控制 .采用高性能的溫敏電阻實時采集熱水器內(nèi)水溫 ,將溫度信號轉(zhuǎn)變?yōu)殡妷盒盘柡笏蛦纹瑱C處理 ,可用高清晰度的數(shù)碼管進行實時顯示 2、可靠的水位采集電路,實時采集水位供查詢時進行顯示,當水位過低時給出提示并停止加熱,防止干燒。3、開機方式有立即開機和定時開機兩種 .24小時內(nèi)任意設(shè)定開機時間 .用省時
6、節(jié)能的方式準時加熱到特定溫度,既可免去等待燒水的時間,又避開用電高峰,節(jié)約電費. 4、自動檢測熱水器是否處于正常工作狀態(tài),并具有調(diào)溫、恒溫、防干燒、防超高溫、防漏電等多項自檢功能,使用戶在使用過程中安全更有保障。 第二章 硬件設(shè)計 2.1 智能控制器的核心我們采用了單片機(STC89RC52)為智能控制器的控制核心。STC89C52RC單片機:它具有抗干擾能力強 ,工作可靠穩(wěn)定 ,自帶 flash閃存等特點 ,完全滿足高性能的電熱水器的控制要求 .同時考慮到家電業(yè)的激烈競爭,節(jié)約生產(chǎn)成本,我們用盡量簡單的器件實現(xiàn)這些功能,并充分利用內(nèi)外圍功能,以提高產(chǎn)品的性價比,稍加改進,便能以較低成本應(yīng)用于
7、實際批量生產(chǎn)中。STC89C52RC單片機功能介紹:STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復位電路,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CP
8、U 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35Mhz,6T/12T可選。 和atmel的對比 ,STC89C52RC單片機有: 8K字節(jié)程序存儲空間; 512字節(jié)數(shù)據(jù)存儲空間; 內(nèi)帶4K字節(jié)EEPROM存儲空間; 可直接使用串口下載; STC89C52RC引腳功能:p0 口:p0口是一個8位漏極開路的雙向i/o口。作為輸出口,每位能驅(qū)動8個ttl邏輯電平。對p0端口寫“1”時,引腳用作高阻抗輸入。 當訪問外部程序和數(shù)據(jù)存儲器時,p0口也被作為低8位地址/數(shù)據(jù)復用。在
9、這種模式下, p0具有內(nèi)部上拉電阻。 在flash編程時,p0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。 p1 口:p1 口是一個具有內(nèi)部上拉電阻的8 位雙向i/o 口,p1 輸出緩沖器能驅(qū)動4 個 ttl 邏輯電平。對p1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。此外,p1.0和p1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(p1.0/t2)和時器/計數(shù)器2 的觸發(fā)輸入(p1.1/t2ex),具體如下表所示。 在flash編程和校驗時,p1口接收低8位地址字節(jié)
10、。引腳號第二功能p1.0 t2(定時器/計數(shù)器t2的外部計數(shù)輸入),時鐘輸出p1.1 t2ex(定時器/計數(shù)器t2的捕捉/重載觸發(fā)信號和方向控制)p1.5 mosi(在線系統(tǒng)編程用)p1.6 miso(在線系統(tǒng)編程用)p1.7 sck(在線系統(tǒng)編程用)p2 口:p2 口是一個具有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅(qū)動4 個 ttl 邏輯電平。對p2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行movx dptr) 時,p
11、2 口送出高八位地址。在這種應(yīng)用中,p2 口使用很強的內(nèi)部上拉發(fā)送1。在使用 8位地址(如movx ri)訪問外部數(shù)據(jù)存儲器時,p2口輸出p2鎖存器的內(nèi)容。在flash編程和校驗時,p2口也接收高8位地址字節(jié)和一些控制信號。p3 口:p3 口是一個具有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅(qū)動4 個 ttl 邏輯電平。對p3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。 p3口亦作為stc89c52特殊功能(第二功能)使用,如下表所示。在flash編程和校驗時,p3口也接收一些控制信號
12、。端口引腳 第二功能p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 into(外中斷0)p3.3 int1(外中斷1)p3.4 to(定時/計數(shù)器0)p3.5 t1(定時/計數(shù)器1)p3.6 wr(外部數(shù)據(jù)存儲器寫選通)p3.7 rd(外部數(shù)據(jù)存儲器讀選通)此外,p3口還接收一些用于flash閃存編程和程序校驗的控制信號。rst復位輸入。當振蕩器工作時,rst引腳出現(xiàn)兩個機器周期以上高電平將是單片機復位。ale/prog當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ale仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,
13、因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ale脈沖。對flash存儲器編程期間,該引腳還用于輸入編程脈沖(prog)。如有必要,可通過對特殊功能寄存器(sfr)區(qū)中的8eh單元的d0位置位,可禁止ale操作。該位置位后,只有一條movx和movc指令才能將ale激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ale禁止位無效。psen程序儲存允許(psen)輸出是外部程序存儲器的讀選通信號,當stc89c52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次psen有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次psen信
14、號。ea/vpp外部訪問允許,欲使cpu僅訪問外部程序存儲器(地址為0000h-ffffh),ea端必須保持低電平(接地)。需注意的是:如果加密位lb1被編程,復位時內(nèi)部會鎖存ea端狀態(tài)。如ea端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲器的指令。flash存儲器編程時,該引腳加上+12v的編程允許電源vpp,當然這必須是該器件是使用12v編程電壓vpp。 2.2 矩陣式鍵盤按鍵功能為了方便智能熱水器控制器功能的選擇,我們采用矩陣式鍵盤,矩陣式鍵盤的工作原理: 按鍵設(shè)置在行、列線交點上,行、列線分別連接到按鍵開關(guān)的 兩端。行線通過上拉電阻接到+5V 電源上。無按鍵按下時,行線處 于高電平
15、的狀態(tài), 而當有按鍵按下時, 行線電平與此行線相連的列 線電平?jīng)Q定。 2行列掃描法原理: 第一步, 使行線為編程的輸入線,列線是輸出線,拉低所有的列線, 判斷行線的變化,如果有按鍵按下,按鍵按下的對應(yīng)行線被拉低,否則 所有的行線都為高電平。 第二步, 在第一步判斷有鍵按下后, 延時 10ms 消除機械抖動,再次讀取行值,如果此行線還處于低電平狀態(tài)則進入下 一步,否則返回第一步重新判斷。第三步,開始掃描按鍵位置,采用逐 行掃描,每間隔 1ms 的時間,分別拉低第一列,第二列,第三列,第四 列,無論拉低哪一列其他三列都為高電平,讀取行值找到按鍵的位置, 分別把行值和列值儲存在寄存器里。第四步,從寄
16、存器中找到行值和列 值并把其合并,得到按鍵值,對此按鍵值進行編碼,按照從第一行第一 個一直到第四行第四個逐行進行編碼,編碼值從“0000” 至“1111” , 再進行譯碼,最后顯示按鍵號碼。 2.3 液晶屏顯示12864液晶一、概述 帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為12864, 內(nèi)置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面。可以顯示84行1616點陣的漢字. 也可完成圖形顯示.
17、低電壓低功耗是其又一顯著特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。 基本特性: l 低電源電壓(VDD:+3.0-+5.5V) l 顯示分辨率:12864點 l 內(nèi)置漢字字庫,提供8192個1616點陣漢字(簡繁體可選) l 內(nèi)置 128個168點陣字符 l 2MHZ時鐘頻率 l 顯示方式:STN、半透、正顯 l 驅(qū)動方式:1/32DUTY,1/5BIAS l 視角方向:6點 l 背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/51/10 l 通訊方式:串行、并口可選 l 內(nèi)置
18、DC-DC轉(zhuǎn)換電路,無需外加負壓 l 無需片選信號,簡化軟件設(shè)計 l 工作溫度: 0 - +55 ,存儲溫度: -20 - +60 模塊接口說明 *注釋1:如在實際應(yīng)用中僅使用串口通訊模式,可將PSB接固定低電平,也可以將模塊上的J8和“GND”用焊錫短接。*注釋2:模塊內(nèi)部接有上電復位電路,因此在不需要經(jīng)常復位的場合可將該端懸空。*注釋3:如背光和模塊共用一個電源,可以將模塊上的JA、JK用焊錫短接。2.2并行接口管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC3.0+5V電源正3V0-對比度(亮度)調(diào)整4RS(CS)H/LRS=“H”,表示DB7DB0為顯示數(shù)據(jù)RS=“L”,表示D
19、B7DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,數(shù)據(jù)被讀到DB7DB0R/W=“L”,E=“HL”, DB7DB0的數(shù)據(jù)被寫到IR或DR6E(SCLK)H/L使能信號7DB0H/L三態(tài)數(shù)據(jù)線8DB1H/L三態(tài)數(shù)據(jù)線9DB2H/L三態(tài)數(shù)據(jù)線10DB3H/L三態(tài)數(shù)據(jù)線11DB4H/L三態(tài)數(shù)據(jù)線12DB5H/L三態(tài)數(shù)據(jù)線13DB6H/L三態(tài)數(shù)據(jù)線14DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8位或4位并口方式,L:串口方式(見注釋1)16NC-空腳17/RESETH/L復位端,低電平有效(見注釋2)18VOUT-LCD驅(qū)動電壓輸出端19AVDD背光源正端(+5V)(見注釋
20、3)20KVSS背光源負端(見注釋3)*注釋1:如在實際應(yīng)用中僅使用并口通訊模式,可將PSB接固定高電平,也可以將模塊上的J8和“VCC”用焊錫短接。*注釋2:模塊內(nèi)部接有上電復位電路,因此在不需要經(jīng)常復位的場合可將該端懸空。 *注釋3:如背光和模塊共用一個電源,可以將模塊上的JA、JK用焊錫短接。 2.4 A/D轉(zhuǎn)換模塊A/D轉(zhuǎn)換器。 ADC0809是 8位逐次逼近型 A/D轉(zhuǎn)換器。帶 8個模擬量輸入通道,芯片內(nèi)帶通道地址譯碼鎖存器,輸出帶三態(tài)數(shù)據(jù)鎖存器,啟動信號為脈沖啟動方式。 C、B、A輸入的通道地址在 ALE有效時被鎖存。啟動信號 START啟動后開始轉(zhuǎn)換,EOC信號在START的下降
21、沿10S后才變無效的低電平,這要求查詢程序待EOC無效后再開始查詢,轉(zhuǎn)換結(jié)束后由OE產(chǎn)生信號輸出數(shù)據(jù)。ADC0809的內(nèi)部結(jié)構(gòu),由兩大部分組成。一部分為輸入通道,包括 8位模擬開關(guān),三條地址線的鎖存器和譯碼器,可以實現(xiàn) 8路模擬輸入通道的選擇。另一部分為一個 8位逐次逼近型 ADC0809的引腳排列:IN0IN7為 8個模擬通道輸入端。 START為啟動轉(zhuǎn)換信號。EOC為轉(zhuǎn)換結(jié)束信號。 OE為輸出允許信號。 CLOCK為外部時鐘脈沖輸入端,ADC0809的工作頻率范圍 10KHz1280KHz,當頻率為 500KHz時,轉(zhuǎn)換速度為128S。ALE為地址鎖存允許信號。 A、B、C為通道地址線,C
22、BA的 8種組合狀態(tài) 000111對應(yīng)了 8個通道選擇。 VREF(+)、VREF(-)為參考電壓輸入端。 Vcc為+5V電源。GND為接地。ADC0809進行模/數(shù)轉(zhuǎn)換,而單片機 AT89C51則完成將 8通道數(shù)據(jù)轉(zhuǎn)換處理并循環(huán)進行顯示。 ADC0809的啟動信號 START由單片機片選線 P2.7與寫信號 WR的或非產(chǎn)生,當一條向 ADC0809寫操作指令運行后, ADC0809的 START腳產(chǎn)生啟動脈沖,開始啟動 ADC0809進行模/數(shù)轉(zhuǎn)換。 ALE與START相連,即按打入的通道地址接通模擬量輸入通道,并啟動轉(zhuǎn)換。轉(zhuǎn)換完成后 EOC輸出高電平。我們可以利用 EOC信號通知單片機(查
23、詢法或中斷法)讀入已轉(zhuǎn)換的數(shù)據(jù)。也可以在啟動 ADC0809轉(zhuǎn)換后經(jīng)適當?shù)难訒r,再讀入已轉(zhuǎn)換的數(shù)據(jù)。允許信號 OE由讀信號 RD與片選線 P2.7或非產(chǎn)生,當一條 ADC0809的讀操作指令運行后, ADC0809的 OE腳產(chǎn)生輸出允許脈沖,使數(shù)據(jù)輸出。 AT89C51的 ALE腳輸出頻率為晶振頻率的 1/6(1MHz),AT89C51的 ALE腳與 ADC0809的 CLK腳相連,提供 ADC0809的工作時鐘。按圖 1接法,ADC0809的片選地址為7FFFH。輸出的數(shù)據(jù)為: Dout=Vin*255/5=Vin*51 ,其中 Vin為輸入的模擬電壓, Dout為輸出數(shù)據(jù)。 2.5水溫及水
24、位檢測電路熱敏電阻將溫度信息轉(zhuǎn)換為電壓信息,經(jīng) A/D轉(zhuǎn)換模塊中 PTB0輸入 CPU,查表后得到實時水溫。水位檢測為三個并聯(lián)的不同阻值的電阻,電路的電極電流較小(幾個微安 ),電腐蝕小,適用水電阻變化范圍大 (幾 K一 100K歐)。某電阻所在水位未到達,電阻截止;水位到達,電阻導通,組成并聯(lián)電路。將不同阻值所分得的電壓經(jīng) PTB1轉(zhuǎn)換后,可判斷出水位信息(高、中、低、干燒)。 2.6 漏電檢測及報警電路熱水器工作環(huán)境潮濕,為了保證使用者安全,控制器應(yīng)具備漏電檢測功能。檢測電路,在正常情況下,流過磁環(huán)的電流大小相等,方向相反,磁環(huán)檢測線圈無感應(yīng)電流信號,漏電檢測集成電路輸出低電平。當出現(xiàn)漏電
25、電流時,由了流過磁環(huán)的電流不平衡,于是磁環(huán)檢測線圈感應(yīng)出漏電信號,經(jīng)集成電路 M54123L放大輸出高電平,經(jīng)三極管倒相后輸出至 CPU。 CPU接收到漏電信號,則停止加熱保溫及鍵盤操作,結(jié)束工程程序并發(fā)出報警信號,電源指示燈閃爍警示,蜂鳴器連續(xù)嗚響。正常情況下, CPU每隔 10ms就發(fā)出一個漏電保護可靠性自檢脈沖,代替普通漏電開關(guān)的試驗按鈕,控制晶體管導通,于是磁環(huán)流過一個大于 10mA的電流,該電流作為模擬漏電信號被磁環(huán)檢測,經(jīng) M54123L放大及三極管倒相后,輸出至 CPU。CPU自動判斷是否為自檢信號以及自檢是否合格,有信號則自檢合格,繼續(xù)執(zhí)行程序;無信號則自檢不合格,自動停止加熱
26、保溫及鍵盤操作,結(jié)束工作程序并發(fā)出報警信號,電源指示燈閃爍警示,蜂鳴器連續(xù)嗚響,從而確保電熱水器的安全使用。在漏電保護及自檢不合格情況下,只有關(guān)閉電源及排除故障后,重新接通電源才能工作。 2.7加熱及繼電器失控保護電路在電熱水器正常工作狀態(tài)下,二繼電器動作觸點對加熱管的電源能執(zhí)行雙極斷開,可有效地保證當停止加熱時,加熱系統(tǒng)可完全與外電隔離,兩只單極繼電器同時出現(xiàn)故障的幾率是極低的,但在熱水器正常壽命期間,單只繼電器出現(xiàn)此故障卻是極有可能的,而且,此時如不及時處理解決,另一繼電器很有可能不久后也跟著產(chǎn)生此類故障而導致真正的危險。因此解決問題的關(guān)鍵是必須在有一繼電器出現(xiàn)此故障后,系統(tǒng)可以及時檢測到
27、,并依靠另一暫時尚可以正常工作的繼電器執(zhí)行系統(tǒng)的安全保護措施采用如圖所示的電路,可以有效地檢測到兩個繼電器中任一個或同時兩個觸點出現(xiàn)粘死、不斷開故障時的情況。 第三章 軟件設(shè)計3.1智能控制器子程序設(shè)計智能電熱水器控制器的系統(tǒng)軟件由主程序,中斷服務(wù)程序及若干功能模塊子程序組成。其中主控制器子程序包括:A/D轉(zhuǎn)換子程序(水位、水溫),鍵盤處理及顯示子程序,加熱控制子程序(使用輸出比較功能),漏電、干燒保護子程序, TBM模塊日歷鐘子程序,數(shù)據(jù)保存子程序,延時子程序等組成。中斷主要有定時中斷,鍵盤輸入中斷, TIM輸入捕捉中斷, TBM模塊中斷等。按鍵選擇子程序主要有按鍵處理子程序, LCD顯示子
28、程序, TBM模塊日歷鐘子程序。終端有定時中斷,按鍵中斷, TBM模塊中斷等。 1主程序。主程序要先初始化系統(tǒng)的工作參數(shù),主要是 CPU 的定時器, COP模塊、 A/D轉(zhuǎn)換、端口、鍵中斷等的工作模式參數(shù)設(shè)定。之后系統(tǒng)主程序循環(huán)調(diào)用各個功能模塊子程序。對相關(guān)事件的處理依靠標志位和判斷標志位實現(xiàn)。 3、加熱控制子程序。判斷標志位有否預約、加熱標志。之后依流程進行處理。為防止加熱絲頻繁啟動,加熱控制采用回差控制,停止加熱后只有實時水溫低于目標溫度一定溫度后,才會再次啟動加熱絲工作。為滿足不同功率要求,加熱方式有快速加熱和普通兩種,在一般情況下及預約狀態(tài)下均采用普通方式,以控制用電功率。 4、按鍵按
29、下,設(shè)置標志位,并通過動態(tài)掃描方式讀取鍵號,之后按標志位及鍵號利用輸出比較進行編碼發(fā)送。接收:利用輸入捕捉功能獲得建好,接受成功后設(shè)標志位并讀取鍵號供主程序進行處理。2鍵盤處理及顯示子程序。此程序主要是判斷 I/O口的高低電平進行的。有按鍵按下進入鍵中斷置標志位,等松開后再進行相應(yīng)的處理。在進行設(shè)置及查詢操作時會閃爍顯示設(shè)置及查詢結(jié)果,否則顯示實時水溫。5、延時子程序。所有工作多處用到定時及延時子程序鍵盤判斷消抖延時,閃爍顯示時的顯示及消隱延時,輸入捕捉,日歷鐘等。 6、安全保護子程序。在正常情況下,漏電檢測電路輸出高電平。一旦出現(xiàn)漏電現(xiàn)象,漏電檢測電路輸出的電平,引起中斷。并以最快速度使漏電
30、保護電路切斷整個電源電路,保證使用者安全。當溫度過高或水位過低時,自動關(guān)加熱并開啟蜂鳴器向主人報警有異常情況發(fā)生。3.2主程序流程圖該控制器的功能實現(xiàn)是通過鍵盤掃描和溫度傳感器以及水位傳感器(探針式)循環(huán)掃描,把信息傳遞給單片機。通過單片機中已編的程序來控制外部加熱裝置和進、出水裝置的。該控制器的所有功能只需要在鍵盤上操作就可以完成。首先單片機一直在循環(huán)檢測溫度和水位以及在循環(huán)掃描鍵盤。循環(huán)檢測溫度和水位就是要適時地把當前的水溫和水位反映出來。鍵盤掃描主要是便于適時的接受用戶的操作信息,從而就可以達到我們控制和設(shè)置水溫水位的目的。該控制電路的程序流程圖如圖17所示:圖17 程序流程圖(設(shè)計的程
31、序見附錄)總結(jié)經(jīng)過幾天的辛苦,終于完成了我的智能家用電熱水器控制器的設(shè)計,雖然沒有完全達到設(shè)計要求,但從心底里說,還是高興的,畢竟這次設(shè)計把實物都做了出來,高興之余不得不深思呀!在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計但這次設(shè)計真的讓我長進了很多,單片機課程設(shè)計重點就在于軟件算法的設(shè)計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學習理論有些東西是很難理解的,更談不上掌握。在這次設(shè)計的工程中, 我們圍要題目的關(guān)鍵字著手,開始搜集資料。通過各種渠道開始準備工作,比如:從網(wǎng)絡(luò)、圖書館搜集相關(guān)學術(shù)論
32、文、核心期刊、書籍等。通過一個多月的深入學習和研究,搜集了一大堆與畢業(yè)設(shè)計相關(guān)的資料,在老師的指導下,摒棄了一些無關(guān)緊要的內(nèi)容,保留了有參考價值的資料作為備用。在中國知網(wǎng)上,我們搜索了一些學術(shù)論文和期刊文章;在常見的搜索引擎中,我了解到一些相關(guān)的知識,同時,特意瀏覽了大量的外文網(wǎng)站,并將這些內(nèi)容列成提綱,便于以后查詢,以減少后期工作量。從這次的課程設(shè)計中,我真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。【參考文獻】1胡乾斌, 李光斌. 單片微型計算機原理和應(yīng)用
33、 M . 武漢:華中科技大學出版社,2001.2何立民. 單片機應(yīng)用技術(shù)選編M . 北京:北京航空航天大學出版社.20033李光飛,李良兒,樓然苗. 單片機C程序設(shè)計實例指導M . 北京:北京航空航天大學出版社.20034郁有文, 常健, 程繼紅. 傳感器原理及工程應(yīng)用M . 西安:西安電子科技大學出版.2003.附錄 智能電熱水器控制器電路圖智能電熱水器控制器程序:#include /*包含庫函數(shù) */*七段數(shù)碼,高電平有效,順序為.gfedcba*/unsigned char led=0,0,0,0;/*將六個LED定義成一個數(shù)組,用來顯示時、分和秒 */unsigned int coun
34、ter;/*counter作為定時器中斷次數(shù)的計數(shù)器*/unsigned char n,w=0,flag=0,flag1=0,flag2=0,start=0; /*n為閃爍次數(shù)計數(shù)器,w為顯示位計數(shù)器,flag為設(shè)置按鍵計數(shù)器,flag1和flag2均為延時消抖計數(shù)器,start為啟動狀態(tài)寄存器*/unsigned char K1_on=1,K2_on=1; /*K1_on和K2_on分別為開關(guān)1和開關(guān)2的開啟和關(guān)斷狀態(tài)寄存器*/unsigned char h_data=0,m_data=0,s_data=0;/*時鐘的時、分、秒計數(shù)器*/unsigned char hdata1_on=0,m
35、data1_on=3,hdata2_on=0,mdata2_on=7; /*開關(guān)1和開關(guān)2的開啟時間寄存器*/unsigned char hdata1_off=0,mdata1_off=5,hdata2_off=0,mdata2_off=9;/*開關(guān)1和開關(guān)2的關(guān)斷時間寄存器*/void display(void); /*申明顯示子程序*/ void delay(unsigned int j) /*定義可變延時子程序*/unsigned int i;for(i=0;i23)H1=H1%10;return H1;/*定義時的十位加1函數(shù)*/unsigned char H0_set(unsigne
36、d char H0) if(H0%10=3&H0/10=2) H0=H0/10*10;else H0=H0%10+1+H0/10*10;return H0; /*定義時的個位加1函數(shù)*/unsigned char M1_set(unsigned char M1) M1=(M1/10+1)*10+M1%10;if(M1=60)M1=M1%10;return M1;/*定義分的十位加1函數(shù)*/unsigned char M0_set(unsigned char M0) if(M0%10=9) M0=M0/10*10;else M0=M0%10+1+M0/10*10;return M0; /*定義分
37、的個位加1函數(shù)*/void display(void) /*定義顯示子程序*/char code num=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/*定義09的LED顯示段碼數(shù)組,0x00為不顯示(消隱)*/char code tv=0x7f,0xbf,0xdf,0xef,0xf7,0xfb; /*定義位碼數(shù)組,用于控制顯示碼送到哪個LED*/unsigned char k,i;switch(flag) /*根據(jù)設(shè)置所處的模式顯示時鐘*/ case 0:load_LED(h_data, m_data);break; /*顯示
38、時鐘*/case 1:load_LED(h_data, m_data);break; /*顯示修改時鐘設(shè)置*/case 2:load_LED(hdata1_on, mdata1_on);break;/*顯示設(shè)置開關(guān)1開啟時間設(shè)置*/case 3:load_LED(hdata1_off, mdata1_off);break; /*顯示設(shè)置開關(guān)1關(guān)斷時間設(shè)置*/case 4:load_LED(hdata2_on, mdata2_on);break; /*顯示設(shè)置開關(guān)2開啟時間設(shè)置*/case 5:load_LED(hdata2_off, mdata2_off);break; /*顯示設(shè)置開關(guān)2關(guān)斷
39、時間設(shè)置*/case 6:load_LED(hdata1_on, mdata1_on);break; /*顯示設(shè)置開關(guān)1設(shè)置好的開啟時間*/case 7:load_LED(hdata1_off, mdata1_off);break;/*顯示設(shè)置開關(guān)1設(shè)置好的關(guān)斷時間*/case 8:load_LED(hdata2_on, mdata2_on);break;/*顯示設(shè)置開關(guān)2設(shè)置好的開啟時間*/case 9:load_LED(hdata2_off, mdata2_off);break;/*顯示設(shè)置開關(guān)2設(shè)置好的關(guān)斷時間*/default:P1=0xFF;load_LED(h_data, m_da
40、ta);break;/*其它情況下,顯示時鐘*/ n+; /*n用來對顯示的次數(shù)進行計數(shù),以便控制對需要設(shè)置的位進行閃爍*/for(k=0;k180)/*每送顯示180次則進行一次閃爍*/n=0; if(k=w)/*如果送顯示的位是正準備調(diào)整的位,則需要閃爍顯示,以下兩句是控制閃爍顯示*/if(n50)flag1=0;flag+; /*用flag對調(diào)整鍵按下次數(shù)計數(shù),目的是通過一個按鍵實現(xiàn)多種功能 */ if(flag=10)flag=0; switch(flag)/*調(diào)整模式選擇,原理是通過調(diào)整鍵按下的次數(shù)來選擇*/ case 0:P1=0xFF;TR0=1;break; /*上電復位時不調(diào)
41、整,直接顯示時鐘,按10次調(diào)整鍵,退出設(shè)置模式,回到時鐘顯示模式 */ case 1:P1=0xFF;P1_0=0;TR0=0;break; /*按1次調(diào)整鍵,修改時鐘(校準) */case 2:P1=0xFF;P1_1=0;P1_3=0;P1_5=0;TR0=1;break; /*按2次調(diào)整鍵,設(shè)置開關(guān)1開啟時間 */case 3:P1=0xFF;P1_1=0;P1_3=0;P1_6=0;TR0=1;break; /*按3次調(diào)整鍵,設(shè)置開關(guān)1關(guān)斷時間 */case 4:P1=0xFF;P1_1=0;P1_4=0;P1_5=0;TR0=1;break; /*按4次調(diào)整鍵,設(shè)置開關(guān)2開啟時間 *
42、/case 5:P1=0xFF;P1_1=0;P1_4=0;P1_6=0;TR0=1;break; /*按5次調(diào)整鍵,設(shè)置開關(guān)2關(guān)斷時間 */case 6:P1=0xFF;P1_2=0;P1_3=0;P1_5=0;TR0=1;break; /*按6次調(diào)整鍵,顯示開關(guān)1開啟時間 */case 7:P1=0xFF;P1_2=0;P1_3=0;P1_6=0;TR0=1;break; /*按7次調(diào)整鍵,顯示開關(guān)1關(guān)斷時間 */case 8:P1=0xFF;P1_2=0;P1_4=0;P1_5=0;TR0=1;break; /*按8次調(diào)整鍵,顯示開關(guān)2開啟時間 */case 9:P1=0xFF;P1_2
43、=0;P1_4=0;P1_6=0;TR0=1;break; /*按9次調(diào)整鍵,顯示開關(guān)2關(guān)斷時間 */default:P1=0xFF;TR0=1;break; /*/ if(P3_1=0) /*移位控制鍵,在4個LED上來回移動,選擇需要設(shè)置的LED位*/delay(100); /*消抖*/while(P3_1=0) display();if(flag)/*當flag不等于0時,說明處于調(diào)整狀態(tài),此時通過移位鍵選擇調(diào)整哪一個LED*/w=w+1; /*移位鍵控制w加1,用于修改位碼,w代表4個LED數(shù)碼管的某一位*/if(w=4) w=0; /*/if(P3_2=0) /*加1操作*/ delay(100); /*消抖*/while(P3_2=0)display();if(flag)/*當處于調(diào)整模式時,對所選擇的LED進行加1*/sw
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中文古代文學名著筆試試題與解讀指導
- 2026年心理咨詢師考試案例分析模擬題
- 能源行業(yè)安全生產(chǎn)操作指南(標準版)
- 銀行柜面服務(wù)規(guī)范(標準版)
- 未來五年甘蔗企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 未來五年石英晶體元器件企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 未來五年器械健身服務(wù)市場需求變化趨勢與商業(yè)創(chuàng)新機遇分析研究報告
- 未來五年旅游健身娛樂企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 未來五年梭子蟹企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 未來五年糜子企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- Roland羅蘭樂器AerophoneAE-20電吹管ChineseAerophoneAE-20OwnersManual用戶手冊
- 2025年保安員資格考試題目及答案(共100題)
- 2024年中國螢石礦行業(yè)調(diào)查報告
- 黨群工作部室部管理制度
- 2025至2030年中國兔子養(yǎng)殖行業(yè)市場現(xiàn)狀調(diào)查及投資方向研究報告
- 委外施工安全試題及答案
- DBT29-320-2025 天津市建筑工程消能減震隔震技術(shù)規(guī)程
- 產(chǎn)品技術(shù)維護與保養(yǎng)手冊
- 2024年國家電網(wǎng)招聘之電工類考試題庫(突破訓練)
- 中建公司建筑機電設(shè)備安裝工程標準化施工手冊
- 心臟科醫(yī)生在心血管疾病治療及介入手術(shù)方面的總結(jié)
評論
0/150
提交評論