版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章 前言1.1太陽能熱水器的發(fā)展概況及市場競爭分析目前,中國已成為世界上最大的太陽能熱水器生產(chǎn)國,年產(chǎn)量約為世界各國之和,已有一百多家太陽能熱水器生產(chǎn)廠。但是與之配套的太陽能熱水器控制器卻一直處在研究與開發(fā)階段。這種控制器只具有溫度和液位顯示功能, 而且為分段顯示,溫度顯示誤差為10%,水位顯示誤差為25%。這種顯示器(還稱不上控制器)不具有溫度控制功能,當(dāng)由于天氣原因而光強(qiáng)不足時,就會給熱水器用戶帶來不便;即使熱水器具有輔助加熱功能,由于加熱時間不能控制而產(chǎn)生過燒,從而浪費大量的電能。本文設(shè)計的太陽能熱水器控制器以80C51單片機(jī)為檢測控制核心,采用DS12887 實時時鐘,不僅實現(xiàn)了時
2、間、溫度和水位三種參數(shù)實時顯示和FUZZY控制功能,而且具有時間設(shè)定、溫度設(shè)定與控制功能。溫度控制采用模糊控制, 控制器可以根據(jù)天氣情況利用輔助加熱裝置使蓄水箱內(nèi)的水溫在設(shè)定時間達(dá)到預(yù)先設(shè)定的溫度,從而達(dá)到24小時供應(yīng)熱水的目的。包括主、從兩大系統(tǒng):主系統(tǒng)的特點是在晴好的天氣利用太陽光能為熱水器加熱;從系統(tǒng)相當(dāng)于電熱水器,它在無光照的情況下利用電輔助加熱。它充分利用太陽能的豐富的免費的資源的優(yōu)勢,同時考慮到在陰天及夜間無法利用太陽能的缺點,充分發(fā)揮太陽能熱水器和電熱水器的各自優(yōu)勢。第二章 設(shè)計思路及要求2.1 本設(shè)計的目的和意義本設(shè)計具有很強(qiáng)的實用性,用成本低廉的電阻式傳感器以及電極配以單片機(jī)
3、技術(shù)對生產(chǎn)實際中的太陽能熱水器的水溫的控制以及水位的顯示。本裝置電路簡單、實用性強(qiáng)、性價比高、水溫控制靈活,水位顯示直觀醒目??蓮V泛應(yīng)用于家庭生活對太陽能熱水器的水位顯示與水溫控制。具有良好的市場前景。2.2 控制系統(tǒng)設(shè)計要求1、能夠根據(jù)水位和水溫兩個條件控制是否需要進(jìn)水,每次只進(jìn)整個水箱的四分之一水量,也可以在手動狀態(tài)下自由進(jìn)水(上滿時自由停止)或停止進(jìn)水。2、控制系統(tǒng)具有手動和自動切換功能;3、具有水溫和水位顯示功能;4、具有進(jìn)水超水位和超水溫報警指示;5、用水時若水溫達(dá)不到設(shè)置值時,可手動起動加熱裝置,這樣可在很大程度上節(jié)約電能;6、用水時可自由調(diào)節(jié)水溫;7、控制系統(tǒng)具體管道排空功能,這
4、樣防止冬天時因水管內(nèi)有積水而在夜間凍裂水管。2.3 本設(shè)計實現(xiàn)思路及方法水位由潛入儲水容器不同深度的水位電極和潛入容器底部的公共電極(導(dǎo)線)檢測;并由四個綠色LED發(fā)光二極管顯示:若無水則綠燈不亮;若有四分之一儲水箱的水亮一盞綠燈;通過觀察綠燈點亮的數(shù)量可識別水位的高低,這里取5段顯示,也可根據(jù)需要進(jìn)行增減。水溫由四個LED數(shù)碼管顯示,前三個數(shù)碼管顯示的為溫度最后一個數(shù)碼管我們只用到了四段碼顯示為溫度的符號C,水溫有效值最多可顯示為99.9。第3章 硬件設(shè)計3.1 控制系統(tǒng)組成及工作原理3.1.1 系統(tǒng)的組成 如圖2-1所示,本系統(tǒng)主要由控制器、自動控制閥、手動控制閥、水位檢測電極、水溫檢測傳
5、感器、電阻加熱絲、儲水箱等組成。 控制器:主要通過里面的電磁閥控制YV1和YV2的通斷,控制水溫檢測傳感器檢測水溫、控制水位檢測傳感器檢測水在水箱中的位置以及控制電阻加熱絲加熱。自動控制閥:主要通過控制器控制,當(dāng)水箱中的水的實際溫度大于所設(shè)置的溫度時,自動閥就自動打開往水箱中上水,直到上到上一個目標(biāo)水位為止。圖 2-1 系統(tǒng)組成示意圖 圖 2-1 系統(tǒng)組成示意圖手動控制閥:當(dāng)自動閥損壞時,可以通過手動閥進(jìn)行上下水。水位檢測電極:主要用來檢測水箱中水的位置,主要把水箱分成四等分,一共有五個電極,接地的電極放在最水箱的最底下,其余分別放在四等分點上,比如當(dāng)水箱中的水在第一等分和第二等分之間,則顯示
6、水箱中有四分之一的水,當(dāng)超過第二等分,則顯示二分之一的水。水溫檢測傳感器:主要用來檢測水箱中水的實際溫度。電阻加熱絲:主要用來加熱水箱中水,使其達(dá)到用戶所需要的溫度。 3.1.2 控制裝置的工作原理本控制系統(tǒng)分為手動和自動兩種控制方式,在系統(tǒng)處于自動狀態(tài)下,當(dāng)檢測溫度高于設(shè)置溫度,且水位未達(dá)到最高時,控制器打開電磁水閥YV1和YV2進(jìn)行上水,同時點亮上水指示燈,當(dāng)水位上至上一目標(biāo)水位時,自動停止上水(即關(guān)閉電磁水閥YV1和YV2),若水箱內(nèi)無水,則自動上水至最低水位處。在系統(tǒng)處于手自動狀態(tài)下,可自由上水或停止上水(上水時水箱水位必須未滿),若水位達(dá)到最高則自動停止上水;若需要啟動加熱器則必須先
7、設(shè)定加熱溫度,然后按下加熱鍵進(jìn)行加熱;若需洗浴時,則需打開手動閥YV4,系統(tǒng)自動打開電磁水閥YV2,可通過YV5自由調(diào)節(jié)水溫;當(dāng)電磁水閥YV1和YV2損壞或停電時,可通過打開YV5和YV6進(jìn)行上下水解決燃眉之急;此系統(tǒng)設(shè)置YV3是為了防止冬天氣溫過低引起水管因內(nèi)有積水而凍裂(即手動打開此閥放完水管中的積水)。3.2 主要原器件介紹3.2.1 AT89S51高性能8位單片機(jī)AT89S51是一個低功耗高性能CMOS 8位單片機(jī),4k Bytes Flash只讀程序存儲器(ROM),512 Bytes 內(nèi)部數(shù)據(jù)存儲器(RAM),該微處理器采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MC
8、S-51指令系統(tǒng),引腳兼容80C51和80C52芯片,片內(nèi)的Flash存儲器可以像常規(guī)程序存儲器一樣進(jìn)行燒寫,AT89S51片內(nèi)總共有256字節(jié)的用戶數(shù)據(jù)區(qū),而128字節(jié)的內(nèi)部擴(kuò)展數(shù)據(jù)區(qū)需通過清SFR(8EH)的位1并用MOVX指令訪問,片內(nèi)置通用8位中央處理器和Flash存儲單元,另一個256BytesRAM區(qū)與ATMEL之AT89系列8052兼容的單片機(jī)是一致的,AT89C51結(jié)合通用的8位微處理器和Flash存儲技術(shù)構(gòu)成功能強(qiáng)大單片微處理器,可提供許多高性能低價位的系統(tǒng)控制應(yīng)用場合。圖2-2 AT89S51引腳圖 (1)、AT89S51主要特點: 40個引腳,32kBytes的程序存儲器
9、,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,內(nèi)置時鐘振蕩器,其Flash存儲器,可反復(fù)擦寫1000次的Flash存儲器可有效地降低開發(fā)成本。軟件設(shè)置電 源省電模式,睡眠其間,定時/計數(shù)器,串行口和中斷口均停止工作,RAM中的數(shù)據(jù)被“凍結(jié)”,直到下次被中斷激活或硬件復(fù)位方可恢復(fù)工作。 (2)、AT89S51主要功能特性兼容MCS51指令系統(tǒng)32k可反復(fù)擦寫(1000次)Flash ROM32個雙向I/O口硬件看門狗WDT電路3個16位可編程定時/計數(shù)器時鐘頻率0-33MHz兩個串行中斷5128bit內(nèi)部RAM2個外部中斷源內(nèi)置
10、時鐘振蕩器中斷激活睡眠模式3級加密位雙重數(shù)據(jù)存儲器軟件設(shè)置睡眠和喚醒功能3.2.2數(shù)碼管顯示原理由單片機(jī)的定時器To做16位計數(shù)器(為便于數(shù)據(jù)處理,這里只用低8位計數(shù)值,即寄存器TL0中的值)。一邊記錄脈沖數(shù)量,一邊以厘米為單位由四位數(shù)碼管顯示出來。四位數(shù)碼管采用動態(tài)掃描方式顯示。長度計量儀采用0.5英寸共陽極連接的LED數(shù)碼管。LED數(shù)碼管由發(fā)光二極管作為顯示字段的數(shù)碼型顯示器件。右圖為LED數(shù)碼管外形和引腳圖,其中7只發(fā)光二極管分別對應(yīng)a-g筆段,構(gòu)成“日”字形,另一只發(fā)光二極管DP作為小數(shù)點,因此這種LED顯示器稱為八段數(shù)碼管。(如圖2-3所示)圖2-3 LED數(shù)碼管共陽極型LED數(shù)碼管
11、,是將各段發(fā)光二極管的陽極連在一起,作為公共端com,應(yīng)接高電平。ag、Dp各筆段中,某筆段接低電平時發(fā)光,高電平時不發(fā)光。為了節(jié)省單片機(jī)I/O口的數(shù)量,將各位數(shù)碼管的ag對應(yīng)筆畫并聯(lián)起來分別與單片機(jī)的P2.0P2.7引腳連接。顯示時,由P2口依次輸出各位數(shù)字的筆段碼,并依次由P1.0、P1.1、P1.2、P1.3輸出低電平位選信號接通數(shù)碼管的公共端,輪流進(jìn)行,循環(huán)不止,由于循環(huán)的頻率較高(約50Hz),加上人眼的視覺暫留,既保障了各位數(shù)字的對應(yīng)顯示,又不會出現(xiàn)閃爍現(xiàn)象,實現(xiàn)動態(tài)掃描顯示。3.3 AT89S51單片機(jī)的最小系統(tǒng) 4. 4.7F 10K6M20pf+5V Vcc EA GNDAT
12、89S51 RST 3 AT89S51單片機(jī)的最小系統(tǒng) XTAL1 XTAL220pf+5V圖2-4 AT89S51單片機(jī)最小系統(tǒng)所謂最小系統(tǒng),即指使單片機(jī)能正常工作的所需的最少的電路,即應(yīng)包含CPU及輔助電路、ROM、RAM及I/O端口等電路。由于AT89S51內(nèi)部已經(jīng)包含4KB的Flash Memory程序存儲器,所以無需再擴(kuò)展片外程序存儲器。在AT89S51的基礎(chǔ)上,加復(fù)位電路、時鐘電路、EA引腳信號及電源即可。結(jié)合資料及所學(xué)過的內(nèi)容,得到如圖2-4所示的單片機(jī)最小系統(tǒng)。圖2-4中,晶體振蕩器的頻率選6MHZ,復(fù)位電路采用上電復(fù)位,電路參數(shù)如圖中所示,以滿足系統(tǒng)復(fù)位時兩個機(jī)器周期的高電平
13、的要求。由于CPU的內(nèi)部已含有程序存儲器,所以EA引腳接高電平。圖2-5 時鐘電路3.4 AT89S51單片機(jī)時鐘電路該水位自動顯示控制器采用AT89C51單片機(jī),機(jī)內(nèi)有一高增益反相放大器,構(gòu)成自激振蕩電路,振蕩頻率取6MHz,外接6MHz晶振,兩個電容C1、C2取20pF,以便于起振蕩的作用。 右圖中XTAL1為內(nèi)部時鐘工作電路的輸入,XTAL2為來自反向振蕩器的輸出。3.5 AT89S51單片機(jī)復(fù)位電路該水位自動顯示控制器采用上電復(fù)位電路,由R14、C3構(gòu)成復(fù)位電路,在上電瞬間,產(chǎn)生一個脈沖,AT89S51將復(fù)位。為保證可靠復(fù)位,脈沖寬度應(yīng)大于兩個機(jī)器周期,這取決于R、C時間長數(shù)。取電容C
14、=10uF,電阻R=10K。圖2-7水位檢測電路3.6水位檢測電路的硬件設(shè)計實驗證明,純凈水幾乎是不導(dǎo)電的,但自然界存在的以及人們?nèi)粘J褂玫乃紩幸欢ǖ腗g2+、Ca2+等離子,它們的存在使水導(dǎo)電。本控制裝置就是利用水的導(dǎo)電性來完成的。我們把儲水箱大致分為四個等份,水位由潛入太陽能熱水器的儲水箱不同深度的水位電極和潛入儲水箱底部的公共電極(導(dǎo)線)進(jìn)行檢測;由單片機(jī)依次使各水位電極呈現(xiàn)高電平,由公共電極所接的三極管進(jìn)行電位轉(zhuǎn)換,水位到達(dá)的電極,轉(zhuǎn)換電位為低(0);水位沒有到達(dá)的電極,轉(zhuǎn)換電位為高(1);每檢測一位便得到一位數(shù)據(jù),5個電極檢測一遍以后便得到了5個串行數(shù)據(jù),然后把這5個數(shù)據(jù)轉(zhuǎn)化為
15、字節(jié)一路送發(fā)光二極管;在這里我們可以用發(fā)光二極管亮的盞數(shù)來顯示水位的高低。(若沒有發(fā)光二極管亮則表示箱內(nèi)沒有水或者只有少量的水,若有一個發(fā)光二極管燈亮則表示箱內(nèi)有四分之一箱的水,以此類推,若有四個發(fā)光二極管亮,則表示水箱水是滿的。)3.7水溫檢測電路的硬件設(shè)計本設(shè)計溫度傳感器選用AD590。AD590屬于半導(dǎo)體集成電路溫度傳感器,測溫范圍-55- +150,在其二端加上一定的工作電壓,其輸出電流與溫度變化成線性圖2-8 水溫檢測電路圖關(guān)系,1uA/K,誤差有幾種等級:1、0.5、0.3,本設(shè)計中選取0.5品種。OP07為高精度運算放大器,AD590電流流經(jīng)R1、RP1轉(zhuǎn)換為電壓信號,R2、RP
16、2為運算負(fù)反饋電阻,成反相比例放大器,將溫度信號轉(zhuǎn)換成0-5V的電壓信號,ADC0832再將其轉(zhuǎn)換為數(shù)字信號,輸入CPU。圖2-8為溫度檢測和A/D轉(zhuǎn)換電路圖。 3.8 鍵盤電路的硬件設(shè)計 P1.0- P1.7口作為按鍵的信號輸入端,鍵按下,就執(zhí)行該鍵的功能。其電路如圖2-9所示。(為了編程簡單、方便,采用獨立式鍵盤電路)圖2-9 鍵盤電路圖 3.9 驅(qū)動電路的硬件設(shè)計在單片機(jī)控制系統(tǒng)中,需要用開關(guān)量去控制和驅(qū)動一些執(zhí)行元件,如發(fā)光二極管、繼電器、電磁閥、晶閘管等。但AT89S51單片機(jī)驅(qū)動能力有限,且高電平比低電平驅(qū)動低那六小。一般情況下,需要加驅(qū)動接口電路,且用低電平驅(qū)動。如圖2-10所示
17、圖 2-10 驅(qū)動電路圖3.10顯示電路的硬件設(shè)計本設(shè)計采用共陽型數(shù)碼管,8個LED燈如圖2-11中接法,燈的負(fù)極依次接到數(shù)碼管的a-f段,采用動態(tài)掃描電路,并把顯示程序作為主程序。數(shù)碼管的段用P0口控制,P2.0口、P2.3口作為數(shù)碼管的位控制,P2.4作為指示燈的控制。P01P02P03P04P05P06P07P20P21P22P23P24RXDTXDAT89S51圖2-11 顯示電路圖第4章 軟件設(shè)計4.1 主程序流程圖主程序:ORG 0000H LJMP MAINORG 000BHLJMP CT0;轉(zhuǎn)定時器0中斷服務(wù)程序ORG 0030H;主程序MAIN: MOV 30H,#00H;0
18、.1秒單元MOV 20H,#B;置相應(yīng)標(biāo)志位MOV P2,#0FFH;P2口不顯示,電磁閥不通電,不加熱MOV SP,#5FH;設(shè)置堆棧深度SETB EA;開中斷SETB ET0;允許T0中斷MOV TMOD,#B;T0方式1定時,T1工作于方式1計數(shù)圖3-1 主程序流程圖調(diào)水位檢測程序調(diào)顯示程序調(diào)鍵盤處理程序初始化主程序MOV TH0,#3CH;定時常數(shù)MOV TL0,#0B7HMOV TH1,#00H;清計數(shù)單元MOV TL1,#00HSETB TR0;啟動定時定時器0SETB TR1;啟動T1MOV 28H,#60;設(shè)置初始溫度為60度MOV 40H,#0FFH;轉(zhuǎn)顯示狀態(tài)為全滅MOV
19、36H,#0;清溫度存放單元MOV 37H,#0MOV 2FH,#1;目標(biāo)水位為1LOOP:LCALL WATER;水位檢測LCALL DISP;顯示程序LCALL KEY;鍵盤處理程序SJMP LOOP4.2 中斷子程序CT0: MOV TH0,#3CH;重置時間初值MOV TL0,#0B0HPUSH ACC;保護(hù)現(xiàn)場PUSH PSWSETB RS0;選工作寄存器1組MOV R1,#30H;指向0.1秒單元INC R1CJNE R1,#10,RET_TIMEMOV R1,#00HCPL 00HLCALL TEST_TEMP;調(diào)溫度處理程序RET_TIME:POP PSW;恢復(fù)現(xiàn)場POP AC
20、CRETI;中斷返回4.3溫控進(jìn)水程序4.3.1溫度檢測程序TEST_TEMP:;溫度處理程序,將溫度存放在27H單元,設(shè)置的溫度存放于28H單元 JB 01H,RE_AD;若為設(shè)置狀態(tài),則不進(jìn)處理MOV SCON,#00H ;置串口方式0,禁止接收CLR ES ;串口禁中CLR P3.6 ;片選0832MOV A,#06H ;置CH0通道配置ADC0: MOV SBUF,A ;啟動A/DADC1: JNB TI,ADC1 ;串行發(fā)送啟動及通道配置信號CLR TI ;清發(fā)送中斷標(biāo)志SETB REN ;允許(啟動)串行接收ADC2: JNB RI,ADC2 ;接收第一字節(jié)CLR RI ;清接收中
21、斷標(biāo)志,同時啟動接收第二字節(jié)MOV A,SBUF ;讀第一字節(jié)數(shù)據(jù)MOV B,A ;暫存ADC3: JNB RI,ADC3 ;接收第二字節(jié)CLR RI ;清接收中斷標(biāo)志MOV A,SBUF ;讀第二字節(jié)數(shù)據(jù)ANL A,#0FH ;第二字節(jié)屏蔽高4位ANL B,#0F0H ;第一字節(jié)屏蔽低4位ORL A,B ;組合SWAP A ;高低4位互換,組成正確的A/D數(shù)據(jù)MOV 36H,A ;存A/D數(shù)據(jù)CLR REN ;兩通道A/D完畢,禁止接收SETB P3.6 ;清0832片選RET 4.3.2水溫控制上水程序圖3-2 水溫控制流程圖水溫控制上水是否正在上水?測量值設(shè)置值?是否最高?賦目標(biāo)水位值打
22、開上水閥水位是否為目標(biāo)值?關(guān)閉上水閥返回賦實際水位值YNYN程序: MOV 27H,36H MOV 42H,#00H JNC N05 MOV 42H,#05H;顯示小數(shù)0.5N05: JNB ACC.7,OK MOV A,#0OK: CJNE A,#64H,EADEAD: JNC ERRAD;溫度超過100則顯示99EAD1:MOV B,#10;轉(zhuǎn)換成十進(jìn)制數(shù),送顯示單元 DIV AB MOV 44H,A MOV 43H,B MOV 41H,#0CH;最后一位顯示C CLR 05H JNB 02H,RE_AD MOV A,27HY CJNE A,28H,EADDEADD:JC BSH;未到設(shè)定
23、溫度,不上水 MOV A,2EH CJNE A,#04H,SWSW: JNC RE_AD JB 03H,RE_AD MOV 2FH,2EH;未到設(shè)定溫度,上至高一檔水位 INC 2FH;目標(biāo)水位 CLR P2.6 CLR P2.7 SETB 03HRE_AD: RETERRAD: MOV A,#63H;溫度超過100則顯示99 SJMP EAD1BSH: SETB P2.6; SETB P2.7 CLR 03 SJMP RE_AD4.4 溫度顯示子程序DISP:MOV R0,#44H;顯示溫度及狀態(tài)信息MOV DPTR,#TABDISP1:MOV A,R0MOVC A,A+DPTRJNB 01
24、H,NDOT1JNB 00H,NDOT1MOV R5,45H水溫顯示取十位值DPTR#TAB查表的字段碼判斷是否閃爍?字段碼P0使十位LED有效延時1ms使十位LED無效取個位值.使溫度字母C的LED無效返回圖3-3 溫度顯示流程圖CJNE R5,#44H,NDOT1MOV A,#0FFHNDOT1:MOV P0,ACLR P2.0LCALL D1MSSETB P2.0DECR0MOV A,R0MOVC A,A+DPTRJB 05H,NDOT22CLR ACC.7NDOT22:JNB 01H,NDOT2JNB 00H,NDOT2MOV R5,45HCJNE R5,#43H,NDOT2 MOV
25、A,#0FFHNDOT2:MOV P0,ACLR P2.1 LCALL D1MSSETB P2.1DEC R0MOV A,R0MOVC A,A+DPTRJNB 01H,NDOT3JNB 00H,NDOT3MOV R5,45HCJNE R5,#42H,NDOT3MOV A,#0FFHNDOT3:MOV P0,ACLR P2.2LCALL D1MSSETB P2.2DEC R0MOV A,R0MOVC A,A+DPTRMOV P0,ACLR P2.3LCALL D1MSSETB P2.3D1MS:MOV R7,#25 DJNZ R7,$ RETTAB: DB 0C0H,0F9H,0A4H,0B0H
26、,99H DB 92H,82H,0F8H,80H,90H,0FFH,0afH,0C6H,00h,86HEND其它顯示程序參見附錄1NYNY有鍵閉合?KEY延時去抖動有鍵閉合?是何鍵?轉(zhuǎn)相應(yīng)鍵處理程序返回KEYYY圖3-4 鍵處理流程圖4.5 鍵盤處理程序KEY:ORL P1,#0FFH;鍵處理程序 MOV A,P1CPL AJZ RET_KEY;無鍵返回JNLCALL DISP;有鍵,延時去抖動ORL P1,#0FFHMOV A,P1CPL AJZ RET_KEY;無鍵返回ORL P1,#0FFH;有鍵,延時去抖動MOV A,P1JNB ACC.0,S1JNB ACC.1,S2JNB ACC.
27、2,S3JNB ACC.3,S4JNB ACC.4,S5JNB ACC.5,S6JNB ACC.6,S7JNB ACC.7,S8RET_KEY:RETS1: CPL 01H; 置預(yù)置標(biāo)志JNB 01H,SAVE_TEM;01H=0,存儲當(dāng)前預(yù)置的溫度MOV 45H,#44H; 01H=1,為預(yù)置狀態(tài),當(dāng)前預(yù)置對象存放于45H單元S11: LCALL DISP ORL P1,#0FFH;等待按鍵釋放 MOV A,P1 CPL A JNZ S11; 未釋放,繼續(xù)等待 RETSAVE_TEM:MOV A,44HANL A,#0FHMOV B,#10MUL ABADD A,43HMOV 28H,ASJ
28、MP S114.6基于單片機(jī)的太陽能熱水器控制系統(tǒng)的設(shè)計程序ORG 0000H LJMP MAINORG 000BHLJMP CT0;轉(zhuǎn)定時器0中斷服務(wù)程序ORG 0030H;主程序MAIN:MOV 30H,#00H;0.1秒單元MOV 20H,#B;置相應(yīng)標(biāo)志位MOV P2,#0FFH;P2口不顯示,電磁閥不通電,不加熱MOV SP,#5FH;設(shè)置堆棧深度SETB EA;開中斷SETB ET0;允許T0中斷MOV TMOD,#B;T0方式1定時,T1工作于方式1計數(shù)MOV TH0,#3CH;定時常數(shù)MOV TL0,#0B0HSETB TR0;啟動定時定時器0MOV 28H,#60;設(shè)置初始溫
29、度為60度MOV 40H,#0FFH;轉(zhuǎn)顯示狀態(tài)為全滅MOV 36H,#0;清溫度存放單元MOV 2FH,#1;目標(biāo)水位為1LOOP:LCALL WATER;水位檢測LCALL KEY;鍵盤處理程序LCALL DISP;顯示程序JMP LOOPCT0: MOV TH0,#3CH;重置時間初值MOV TL0,#0B0HPUSH ACC;保護(hù)現(xiàn)場PUSH PSWSETB RS0;選工作寄存器1組MOV R1,#30H;指向0.1秒單元INC R1CJNE R1,#10,RET_TIMEMOV R1,#00HCPL 00HLCALL TEST_TEMP;調(diào)溫度處理程序RET_TIME:POP PSW
30、;恢復(fù)現(xiàn)場POP ACCRETI;中斷返回TEST_TEMP:溫度處理程序,將溫度存放在27H單元,設(shè)置的溫度存放于28H單元 JB 01H,RE_AD;若為設(shè)置狀態(tài),則不進(jìn)處理MOV SCON,#00H ;置串口方式0,禁止接收CLR ES ;串口禁中CLR P3.6 ;片選0832MOV A,#06H ;置CH0通道配置ADC0: MOV SBUF,A ;啟動A/DADC1: JNB TI,ADC1 ;串行發(fā)送啟動及通道配置信號CLR TI ;清發(fā)送中斷標(biāo)志SETB REN ;允許(啟動)串行接收ADC2: JNB RI,ADC2 ;接收第一字節(jié)CLR RI ;清接收中斷標(biāo)志,同時啟動接收
31、第二字節(jié)MOV A,SBUF ;讀第一字節(jié)數(shù)據(jù)MOV B,A ;暫存ADC3: JNB RI,ADC3 ;接收第二字節(jié)CLR RI ;清接收中斷標(biāo)志MOV A,SBUF ;讀第二字節(jié)數(shù)據(jù)ANL A,#0FH ;第二字節(jié)屏蔽高4位ANL B,#0F0H ;第一字節(jié)屏蔽低4位ORL A,B ;組合SWAP A ;高低4位互換,組成正確的A/D數(shù)據(jù)MOV 36H,A ;存A/D數(shù)據(jù)CLR REN ;兩通道A/D完畢,禁止接收SETB P3.6 ;清0832片選RET MOV 27H,36H MOV 42H,#00H JNC N05 MOV 42H,#05H;顯示小數(shù)0.5N05: JNB ACC.7
32、,OK MOV A,#0OK: CJNE A,#64H,EADEAD: JNC ERRAD;溫度超過100則顯示99EAD1:MOV B,#10;轉(zhuǎn)換成十進(jìn)制數(shù),送顯示單元 DIV AB MOV 44H,A MOV 43H,B MOV 41H,#0CH;最后一位顯示C CLR 05H JNB 02H,RE_AD MOV A,27HY CJNE A,28H,EADDEADD:JC BSH;未到設(shè)定溫度,不上水 MOV A,2EH CJNE A,#04H,SWSW:JNC RE_AD JB 03H,RE_AD MOV 2FH,2EH;未到設(shè)定溫度,上至高一檔水位 INC 2FH;目標(biāo)水位 CLR
33、P2.6 CLR P2.7 SETB 03HRE_AD:RETERRAD: MOV A,#63H;溫度超過100則顯示99 SJMP EAD1BSH: SETB P2.6 SETB P2.7 CLR 03 SJMP RE_ADWATER:;水位檢測后存放于2EH單元,目標(biāo)水位2FH單元 JNB P3.2,KS1 JNB P3.3,KS2 JNB P3.4,KS3 JNB P3.7,KS4 MOV 2EH,#0;無水 CLR P2.6 CLR P2.7 SETB 03H MOV 2FH,#1RE_WAT:JNB 02H,RRE_WAT;手動方式則返回 MOV A,2EH CLR C SUBB A
34、,2FH JNZ RRE_WAT CLR 03H;清上水標(biāo)志 SETB P2.6;關(guān)電磁閥 SETB P2.7RRE_WAT:RETKS1:MOV 2EH,#4H JNB 03H,RE_WAT1 SETB P2.6;若水滿則關(guān)電磁閥 SETB P2.7 CLR 03H;SJMP RE_WATRE_WAT1:SETB 05H SJMP RE_WATKS2:MOV 2EH,#3H SJMP RE_WATKS3:MOV 2EH,#2H SJMP RE_WATKS4:MOV 2EH,#1H SJMP RE_WATKEY: ORL P1,#0FFH;鍵處理程序MOV A,P1CPL AJZ RET_KE
35、Y;無鍵返回LCALL DISP;有鍵,延時去抖動ORL P1,#0FFHMOV A,P1CPL AJZ RET_KEY;無鍵返回ORL P1,#0FFH;有鍵,延時去抖動MOV A,P1JNB ACC.0,S1JNB ACC.1,S2JNB ACC.2,S3JNB ACC.3,S4JNB ACC.4,S5JNB ACC.5,S6JNB ACC.6,S7JNB ACC.7,S8RET_KEY:RETS1: CPL 01H; 置預(yù)置標(biāo)志JNB 01H,SAVE_TEM;01H=0,存儲當(dāng)前預(yù)置的溫度MOV 45H,#44H; 01H=1,為預(yù)置狀態(tài),當(dāng)前預(yù)置對象存放于45H單元S11: LCAL
36、L DISP ORL P1,#0FFH;等待按鍵釋放 MOV A,P1 CPL A JNZ S11; 未釋放,繼續(xù)等待 RETSAVE_TEM:MOV A,44HANL A,#0FHMOV B,#10MUL ABADD A,43HMOV 28H,ASJMP S11S2: JNB 01H,S11;未按預(yù)置鍵,不處理DEC 45HMOV R0,45HCJNE R0,#41H,S11MOV 45H,#44HSJMP S11S3: JNB 01H,S11;未按預(yù)置鍵,不處理MOV R0,45HINC R0;相應(yīng)單元加1CJNE R0,#0AH,S11MOV R0,#00H;加到10清零SJMP S11
37、S4: JNB 01H,S11;未按預(yù)置鍵,不處理MOV R0,#09H;減到0后變?yōu)?SJMP S11S5: SETB P2.7 CPL P2.6SJMP S11S6: CPL 02H;自動標(biāo)志,02H=1自動,02H=0手動SETB P2.6SETB P2.7CLR 03HCLR 04HSJMP S11S7: JB 02H,S77CPL 03H;上水標(biāo)志,03H=1上水,03H=0停止JNB 03H,NO_ADD_WATERMOV A,2EHCLR CSUBB A,#4JZ S77CLR P2.6CLR P2.7S77:SJMP S11NO_ADD_WATER:SETB P2.6 SETB
38、 P2.7 SJMP S77S8: JB 02H,S88 CPL 04H;04H加熱標(biāo)志,1-加熱,0-不加熱 JNB 04H,S8_RE MOV A,27H CJNE A,#78H,S81S81:JNC S8_RECLR P2.5S88:SJMP S77S8_RE:CLR 04H;清加熱標(biāo)志 SETB P2.5 SJMP S88DISP: MOV R0,#44H;顯示溫度及狀態(tài)信息MOV DPTR,#TABDISP1:MOV A,R0MOVC A,A+DPTRJNB 01H,NDOT1JNB 00H,NDOT1MOV R5,45HCJNE R5,#44H,NDOT1MOV A,#0FFHND
39、OT1:MOV P0,ACLR P2.0LCALL D1MSSETB P2.0DECR0MOV A,R0MOVC A,A+DPTRJB 05H,NDOT22CLR ACC.7NDOT22:JNB 01H,NDOT2JNB 00H,NDOT2MOV R5,45HCJNE R5,#43H,NDOT2MOV A,#0FFHNDOT2: MOV P0,ACLR P2.1LCALL D1MSSETB P2.1DEC R0MOV A,R0MOVC A,A+DPTRJNB 01H,NDOT3JNB 00H,NDOT3MOV R5,45HCJNE R5,#42H,NDOT3MOV A,#0FFHNDOT3:M
40、OV P0,ACLR P2.2LCALL D1MSSETB P2.2EC R0MOV A,R0MOVC A,A+DPTRMOV P0,ACLR P2.3LCALL D1MSSETB P2.3MOV A,#0FFHJNB 02H,ZDCLR ACC.7;顯示自動標(biāo)志ZD:JNB 03H,S_SHUI;CLR ACC.6;顯示上水標(biāo)志S_SHUI:JNB 04H,N_JRCLR ACC.1;顯示加熱標(biāo)志N_JR: JNB 05H,N_CWCLR ACC.0;顯示超溫標(biāo)志N_CW:ORL A,#03CHMOV R5,2EHCJNE R5,#4,W80anl a,#bSJMP RE_DISPW80:CJNE R5,#3,W50 anl a,#b SJMP RE_DISPW50:CJNE R5,#2,W20 anl a,#b SJMP RE_DISPW20:CJNE R5,#1,RE_DISP anl a,#bRE_DISP: MOV P0,A MOV P2,R2 CLR P2.4 LCALL D1MS SETB P2.4 RETD1MS:MOV R7,#25 DJNZ R7,$ RETTAB: DB 0C0H,0F9H,0A4H,0B0H,9
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 隧道施工檢測標(biāo)準(zhǔn)化方案
- 防腐材料檢測實驗室管理方案
- 施工人員培訓(xùn)與驗收方案
- 橋梁交通導(dǎo)行管理方案
- 施工現(xiàn)場網(wǎng)格化管理方案
- 防火隔墻施工技術(shù)方案
- 糧庫安全檢查與評估方案
- 農(nóng)村衛(wèi)生條件改善技術(shù)方案
- 建筑物立面清潔驗收方案
- 隧道施工驗收流程方案
- 鋁材銷售技巧培訓(xùn)
- 肺奴卡菌病課件
- 2024-2025學(xué)年上學(xué)期深圳高一物理期末模擬卷1
- 胸痛中心聯(lián)合例會培訓(xùn)
- 天然氣長輸管道工程培訓(xùn)課件
- 江門市2025屆普通高中高三10月調(diào)研測試 英語試卷(含答案)
- 天鵝到家合同模板
- 人力資源行業(yè)招聘管理系統(tǒng)設(shè)計方案
- 中考字音字形練習(xí)題(含答案)-字音字形專項訓(xùn)練
- CTD申報資料撰寫模板:模塊三之3.2.S.4原料藥的質(zhì)量控制
- 2024屆新高考物理沖刺復(fù)習(xí):“正則動量”解決帶電粒子在磁場中的運動問題
評論
0/150
提交評論