太陽能熱水器溫控系統(tǒng)設計_第1頁
太陽能熱水器溫控系統(tǒng)設計_第2頁
太陽能熱水器溫控系統(tǒng)設計_第3頁
太陽能熱水器溫控系統(tǒng)設計_第4頁
太陽能熱水器溫控系統(tǒng)設計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 前言1.1太陽能熱水器的發(fā)展概況及市場競爭分析目前,中國已成為世界上最大的太陽能熱水器生產國,年產量約為世界各國之和,已有一百多家太陽能熱水器生產廠。但是與之配套的太陽能熱水器控制器卻一直處在研究與開發(fā)階段。這種控制器只具有溫度和液位顯示功能, 而且為分段顯示,溫度顯示誤差為10%,水位顯示誤差為25%。這種顯示器(還稱不上控制器)不具有溫度控制功能,當由于天氣原因而光強不足時,就會給熱水器用戶帶來不便;即使熱水器具有輔助加熱功能,由于加熱時間不能控制而產生過燒,從而浪費大量的電能。本文設計的太陽能熱水器控制器以80C51單片機為檢測控制核心,采用DS12887 實時時鐘,不僅實現(xiàn)了時

2、間、溫度和水位三種參數(shù)實時顯示和FUZZY控制功能,而且具有時間設定、溫度設定與控制功能。溫度控制采用模糊控制, 控制器可以根據(jù)天氣情況利用輔助加熱裝置使蓄水箱內的水溫在設定時間達到預先設定的溫度,從而達到24小時供應熱水的目的。包括主、從兩大系統(tǒng):主系統(tǒng)的特點是在晴好的天氣利用太陽光能為熱水器加熱;從系統(tǒng)相當于電熱水器,它在無光照的情況下利用電輔助加熱。它充分利用太陽能的豐富的免費的資源的優(yōu)勢,同時考慮到在陰天及夜間無法利用太陽能的缺點,充分發(fā)揮太陽能熱水器和電熱水器的各自優(yōu)勢。第二章 設計思路及要求2.1 本設計的目的和意義本設計具有很強的實用性,用成本低廉的電阻式傳感器以及電極配以單片機

3、技術對生產實際中的太陽能熱水器的水溫的控制以及水位的顯示。本裝置電路簡單、實用性強、性價比高、水溫控制靈活,水位顯示直觀醒目??蓮V泛應用于家庭生活對太陽能熱水器的水位顯示與水溫控制。具有良好的市場前景。2.2 控制系統(tǒng)設計要求1、能夠根據(jù)水位和水溫兩個條件控制是否需要進水,每次只進整個水箱的四分之一水量,也可以在手動狀態(tài)下自由進水(上滿時自由停止)或停止進水。2、控制系統(tǒng)具有手動和自動切換功能;3、具有水溫和水位顯示功能;4、具有進水超水位和超水溫報警指示;5、用水時若水溫達不到設置值時,可手動起動加熱裝置,這樣可在很大程度上節(jié)約電能;6、用水時可自由調節(jié)水溫;7、控制系統(tǒng)具體管道排空功能,這

4、樣防止冬天時因水管內有積水而在夜間凍裂水管。2.3 本設計實現(xiàn)思路及方法水位由潛入儲水容器不同深度的水位電極和潛入容器底部的公共電極(導線)檢測;并由四個綠色LED發(fā)光二極管顯示:若無水則綠燈不亮;若有四分之一儲水箱的水亮一盞綠燈;通過觀察綠燈點亮的數(shù)量可識別水位的高低,這里取5段顯示,也可根據(jù)需要進行增減。水溫由四個LED數(shù)碼管顯示,前三個數(shù)碼管顯示的為溫度最后一個數(shù)碼管我們只用到了四段碼顯示為溫度的符號C,水溫有效值最多可顯示為99.9。第3章 硬件設計3.1 控制系統(tǒng)組成及工作原理3.1.1 系統(tǒng)的組成 如圖2-1所示,本系統(tǒng)主要由控制器、自動控制閥、手動控制閥、水位檢測電極、水溫檢測傳

5、感器、電阻加熱絲、儲水箱等組成。 控制器:主要通過里面的電磁閥控制YV1和YV2的通斷,控制水溫檢測傳感器檢測水溫、控制水位檢測傳感器檢測水在水箱中的位置以及控制電阻加熱絲加熱。自動控制閥:主要通過控制器控制,當水箱中的水的實際溫度大于所設置的溫度時,自動閥就自動打開往水箱中上水,直到上到上一個目標水位為止。圖 2-1 系統(tǒng)組成示意圖 圖 2-1 系統(tǒng)組成示意圖手動控制閥:當自動閥損壞時,可以通過手動閥進行上下水。水位檢測電極:主要用來檢測水箱中水的位置,主要把水箱分成四等分,一共有五個電極,接地的電極放在最水箱的最底下,其余分別放在四等分點上,比如當水箱中的水在第一等分和第二等分之間,則顯示

6、水箱中有四分之一的水,當超過第二等分,則顯示二分之一的水。水溫檢測傳感器:主要用來檢測水箱中水的實際溫度。電阻加熱絲:主要用來加熱水箱中水,使其達到用戶所需要的溫度。 3.1.2 控制裝置的工作原理本控制系統(tǒng)分為手動和自動兩種控制方式,在系統(tǒng)處于自動狀態(tài)下,當檢測溫度高于設置溫度,且水位未達到最高時,控制器打開電磁水閥YV1和YV2進行上水,同時點亮上水指示燈,當水位上至上一目標水位時,自動停止上水(即關閉電磁水閥YV1和YV2),若水箱內無水,則自動上水至最低水位處。在系統(tǒng)處于手自動狀態(tài)下,可自由上水或停止上水(上水時水箱水位必須未滿),若水位達到最高則自動停止上水;若需要啟動加熱器則必須先

7、設定加熱溫度,然后按下加熱鍵進行加熱;若需洗浴時,則需打開手動閥YV4,系統(tǒng)自動打開電磁水閥YV2,可通過YV5自由調節(jié)水溫;當電磁水閥YV1和YV2損壞或停電時,可通過打開YV5和YV6進行上下水解決燃眉之急;此系統(tǒng)設置YV3是為了防止冬天氣溫過低引起水管因內有積水而凍裂(即手動打開此閥放完水管中的積水)。3.2 主要原器件介紹3.2.1 AT89S51高性能8位單片機AT89S51是一個低功耗高性能CMOS 8位單片機,4k Bytes Flash只讀程序存儲器(ROM),512 Bytes 內部數(shù)據(jù)存儲器(RAM),該微處理器采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MC

8、S-51指令系統(tǒng),引腳兼容80C51和80C52芯片,片內的Flash存儲器可以像常規(guī)程序存儲器一樣進行燒寫,AT89S51片內總共有256字節(jié)的用戶數(shù)據(jù)區(qū),而128字節(jié)的內部擴展數(shù)據(jù)區(qū)需通過清SFR(8EH)的位1并用MOVX指令訪問,片內置通用8位中央處理器和Flash存儲單元,另一個256BytesRAM區(qū)與ATMEL之AT89系列8052兼容的單片機是一致的,AT89C51結合通用的8位微處理器和Flash存儲技術構成功能強大單片微處理器,可提供許多高性能低價位的系統(tǒng)控制應用場合。圖2-2 AT89S51引腳圖 (1)、AT89S51主要特點: 40個引腳,32kBytes的程序存儲器

9、,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,內置時鐘振蕩器,其Flash存儲器,可反復擦寫1000次的Flash存儲器可有效地降低開發(fā)成本。軟件設置電 源省電模式,睡眠其間,定時/計數(shù)器,串行口和中斷口均停止工作,RAM中的數(shù)據(jù)被“凍結”,直到下次被中斷激活或硬件復位方可恢復工作。 (2)、AT89S51主要功能特性兼容MCS51指令系統(tǒng)32k可反復擦寫(1000次)Flash ROM32個雙向I/O口硬件看門狗WDT電路3個16位可編程定時/計數(shù)器時鐘頻率0-33MHz兩個串行中斷5128bit內部RAM2個外部中斷源內置

10、時鐘振蕩器中斷激活睡眠模式3級加密位雙重數(shù)據(jù)存儲器軟件設置睡眠和喚醒功能3.2.2數(shù)碼管顯示原理由單片機的定時器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ā)光二極管分別對應a-g筆段,構成“日”字形,另一只發(fā)光二極管DP作為小數(shù)點,因此這種LED顯示器稱為八段數(shù)碼管。(如圖2-3所示)圖2-3 LED數(shù)碼管共陽極型LED數(shù)碼管

11、,是將各段發(fā)光二極管的陽極連在一起,作為公共端com,應接高電平。ag、Dp各筆段中,某筆段接低電平時發(fā)光,高電平時不發(fā)光。為了節(jié)省單片機I/O口的數(shù)量,將各位數(shù)碼管的ag對應筆畫并聯(lián)起來分別與單片機的P2.0P2.7引腳連接。顯示時,由P2口依次輸出各位數(shù)字的筆段碼,并依次由P1.0、P1.1、P1.2、P1.3輸出低電平位選信號接通數(shù)碼管的公共端,輪流進行,循環(huán)不止,由于循環(huán)的頻率較高(約50Hz),加上人眼的視覺暫留,既保障了各位數(shù)字的對應顯示,又不會出現(xiàn)閃爍現(xiàn)象,實現(xiàn)動態(tài)掃描顯示。3.3 AT89S51單片機的最小系統(tǒng) 4. 4.7F 10K6M20pf+5V Vcc EA GNDAT

12、89S51 RST 3 AT89S51單片機的最小系統(tǒng) XTAL1 XTAL220pf+5V圖2-4 AT89S51單片機最小系統(tǒng)所謂最小系統(tǒng),即指使單片機能正常工作的所需的最少的電路,即應包含CPU及輔助電路、ROM、RAM及I/O端口等電路。由于AT89S51內部已經包含4KB的Flash Memory程序存儲器,所以無需再擴展片外程序存儲器。在AT89S51的基礎上,加復位電路、時鐘電路、EA引腳信號及電源即可。結合資料及所學過的內容,得到如圖2-4所示的單片機最小系統(tǒng)。圖2-4中,晶體振蕩器的頻率選6MHZ,復位電路采用上電復位,電路參數(shù)如圖中所示,以滿足系統(tǒng)復位時兩個機器周期的高電平

13、的要求。由于CPU的內部已含有程序存儲器,所以EA引腳接高電平。圖2-5 時鐘電路3.4 AT89S51單片機時鐘電路該水位自動顯示控制器采用AT89C51單片機,機內有一高增益反相放大器,構成自激振蕩電路,振蕩頻率取6MHz,外接6MHz晶振,兩個電容C1、C2取20pF,以便于起振蕩的作用。 右圖中XTAL1為內部時鐘工作電路的輸入,XTAL2為來自反向振蕩器的輸出。3.5 AT89S51單片機復位電路該水位自動顯示控制器采用上電復位電路,由R14、C3構成復位電路,在上電瞬間,產生一個脈沖,AT89S51將復位。為保證可靠復位,脈沖寬度應大于兩個機器周期,這取決于R、C時間長數(shù)。取電容C

14、=10uF,電阻R=10K。圖2-7水位檢測電路3.6水位檢測電路的硬件設計實驗證明,純凈水幾乎是不導電的,但自然界存在的以及人們日常使用的水都會含有一定的Mg2+、Ca2+等離子,它們的存在使水導電。本控制裝置就是利用水的導電性來完成的。我們把儲水箱大致分為四個等份,水位由潛入太陽能熱水器的儲水箱不同深度的水位電極和潛入儲水箱底部的公共電極(導線)進行檢測;由單片機依次使各水位電極呈現(xiàn)高電平,由公共電極所接的三極管進行電位轉換,水位到達的電極,轉換電位為低(0);水位沒有到達的電極,轉換電位為高(1);每檢測一位便得到一位數(shù)據(jù),5個電極檢測一遍以后便得到了5個串行數(shù)據(jù),然后把這5個數(shù)據(jù)轉化為

15、字節(jié)一路送發(fā)光二極管;在這里我們可以用發(fā)光二極管亮的盞數(shù)來顯示水位的高低。(若沒有發(fā)光二極管亮則表示箱內沒有水或者只有少量的水,若有一個發(fā)光二極管燈亮則表示箱內有四分之一箱的水,以此類推,若有四個發(fā)光二極管亮,則表示水箱水是滿的。)3.7水溫檢測電路的硬件設計本設計溫度傳感器選用AD590。AD590屬于半導體集成電路溫度傳感器,測溫范圍-55- +150,在其二端加上一定的工作電壓,其輸出電流與溫度變化成線性圖2-8 水溫檢測電路圖關系,1uA/K,誤差有幾種等級:1、0.5、0.3,本設計中選取0.5品種。OP07為高精度運算放大器,AD590電流流經R1、RP1轉換為電壓信號,R2、RP

16、2為運算負反饋電阻,成反相比例放大器,將溫度信號轉換成0-5V的電壓信號,ADC0832再將其轉換為數(shù)字信號,輸入CPU。圖2-8為溫度檢測和A/D轉換電路圖。 3.8 鍵盤電路的硬件設計 P1.0- P1.7口作為按鍵的信號輸入端,鍵按下,就執(zhí)行該鍵的功能。其電路如圖2-9所示。(為了編程簡單、方便,采用獨立式鍵盤電路)圖2-9 鍵盤電路圖 3.9 驅動電路的硬件設計在單片機控制系統(tǒng)中,需要用開關量去控制和驅動一些執(zhí)行元件,如發(fā)光二極管、繼電器、電磁閥、晶閘管等。但AT89S51單片機驅動能力有限,且高電平比低電平驅動低那六小。一般情況下,需要加驅動接口電路,且用低電平驅動。如圖2-10所示

17、圖 2-10 驅動電路圖3.10顯示電路的硬件設計本設計采用共陽型數(shù)碼管,8個LED燈如圖2-11中接法,燈的負極依次接到數(shù)碼管的a-f段,采用動態(tài)掃描電路,并把顯示程序作為主程序。數(shù)碼管的段用P0口控制,P2.0口、P2.3口作為數(shù)碼管的位控制,P2.4作為指示燈的控制。P01P02P03P04P05P06P07P20P21P22P23P24RXDTXDAT89S51圖2-11 顯示電路圖第4章 軟件設計4.1 主程序流程圖主程序:ORG 0000H LJMP MAINORG 000BHLJMP CT0;轉定時器0中斷服務程序ORG 0030H;主程序MAIN: MOV 30H,#00H;0

18、.1秒單元MOV 20H,#00000100B;置相應標志位MOV P2,#0FFH;P2口不顯示,電磁閥不通電,不加熱MOV SP,#5FH;設置堆棧深度SETB EA;開中斷SETB ET0;允許T0中斷MOV TMOD,#01010001B;T0方式1定時,T1工作于方式1計數(shù)圖3-1 主程序流程圖調水位檢測程序調顯示程序調鍵盤處理程序初始化主程序MOV TH0,#3CH;定時常數(shù)MOV TL0,#0B7HMOV TH1,#00H;清計數(shù)單元MOV TL1,#00HSETB TR0;啟動定時定時器0SETB TR1;啟動T1MOV 28H,#60;設置初始溫度為60度MOV 40H,#0

19、FFH;轉顯示狀態(tài)為全滅MOV 36H,#0;清溫度存放單元MOV 37H,#0MOV 2FH,#1;目標水位為1LOOP:LCALL WATER;水位檢測LCALL DISP;顯示程序LCALL KEY;鍵盤處理程序SJMP LOOP4.2 中斷子程序CT0: MOV TH0,#3CH;重置時間初值MOV TL0,#0B0HPUSH ACC;保護現(xiàn)場PUSH PSWSETB RS0;選工作寄存器1組MOV R1,#30H;指向0.1秒單元INC R1CJNE R1,#10,RET_TIMEMOV R1,#00HCPL 00HLCALL TEST_TEMP;調溫度處理程序RET_TIME:PO

20、P PSW;恢復現(xiàn)場POP ACCRETI;中斷返回4.3溫控進水程序4.3.1溫度檢測程序TEST_TEMP:;溫度處理程序,將溫度存放在27H單元,設置的溫度存放于28H單元 JB 01H,RE_AD;若為設置狀態(tài),則不進處理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ā)送中斷標志SETB REN ;允許(啟動)串行接收ADC2: JNB RI,ADC2 ;接收

21、第一字節(jié)CLR RI ;清接收中斷標志,同時啟動接收第二字節(jié)MOV A,SBUF ;讀第一字節(jié)數(shù)據(jù)MOV B,A ;暫存ADC3: JNB RI,ADC3 ;接收第二字節(jié)CLR RI ;清接收中斷標志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 水溫控制流程圖水溫控制上水是否正在上水?測量值

22、設置值?是否最高?賦目標水位值打開上水閥水位是否為目標值?關閉上水閥返回賦實際水位值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;轉換成十進制數(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,EADD

23、EADD:JC BSH;未到設定溫度,不上水 MOV A,2EH CJNE A,#04H,SWSW: JNC RE_AD JB 03H,RE_AD MOV 2FH,2EH;未到設定溫度,上至高一檔水位 INC 2FH;目標水位 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,R0MOV

24、C A,A+DPTRJNB 01H,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

25、,#43H,NDOT2 MOV 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 0C0

26、H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,0FFH,0afH,0C6H,00h,86HEND其它顯示程序參見附錄1NYNY有鍵閉合?KEY延時去抖動有鍵閉合?是何鍵?轉相應鍵處理程序返回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

27、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; 置預置標志JNB 01H,SAVE_TEM;01H=0,存儲當前預置的溫度MOV 45H,#44H; 01H=1,為預置狀態(tài),當前預置對象存放于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

28、A,43HMOV 28H,ASJMP S114.6基于單片機的太陽能熱水器控制系統(tǒng)的設計程序ORG 0000H LJMP MAINORG 000BHLJMP CT0;轉定時器0中斷服務程序ORG 0030H;主程序MAIN:MOV 30H,#00H;0.1秒單元MOV 20H,#00000100B;置相應標志位MOV P2,#0FFH;P2口不顯示,電磁閥不通電,不加熱MOV SP,#5FH;設置堆棧深度SETB EA;開中斷SETB ET0;允許T0中斷MOV TMOD,#01010001B;T0方式1定時,T1工作于方式1計數(shù)MOV TH0,#3CH;定時常數(shù)MOV TL0,#0B0HSE

29、TB TR0;啟動定時定時器0MOV 28H,#60;設置初始溫度為60度MOV 40H,#0FFH;轉顯示狀態(tài)為全滅MOV 36H,#0;清溫度存放單元MOV 2FH,#1;目標水位為1LOOP:LCALL WATER;水位檢測LCALL KEY;鍵盤處理程序LCALL DISP;顯示程序JMP LOOPCT0: MOV TH0,#3CH;重置時間初值MOV TL0,#0B0HPUSH ACC;保護現(xiàn)場PUSH PSWSETB RS0;選工作寄存器1組MOV R1,#30H;指向0.1秒單元INC R1CJNE R1,#10,RET_TIMEMOV R1,#00HCPL 00HLCALL T

30、EST_TEMP;調溫度處理程序RET_TIME:POP PSW;恢復現(xiàn)場POP ACCRETI;中斷返回TEST_TEMP:溫度處理程序,將溫度存放在27H單元,設置的溫度存放于28H單元 JB 01H,RE_AD;若為設置狀態(tài),則不進處理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ā)送中斷標志SETB REN ;允許(啟動)串行接收ADC2: JNB RI,AD

31、C2 ;接收第一字節(jié)CLR RI ;清接收中斷標志,同時啟動接收第二字節(jié)MOV A,SBUF ;讀第一字節(jié)數(shù)據(jù)MOV B,A ;暫存ADC3: JNB RI,ADC3 ;接收第二字節(jié)CLR RI ;清接收中斷標志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 MO

32、V 42H,#05H;顯示小數(shù)0.5N05: JNB ACC.7,OK MOV A,#0OK: CJNE A,#64H,EADEAD: JNC ERRAD;溫度超過100則顯示99EAD1:MOV B,#10;轉換成十進制數(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;未到設定溫度,不上水 MOV A,2EH CJNE A,#04H,SWSW:JNC RE_AD JB 03H,RE_AD MOV 2FH,2EH;

33、未到設定溫度,上至高一檔水位 INC 2FH;目標水位 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_ADWATER:;水位檢測后存放于2EH單元,目標水位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_WA

34、T;手動方式則返回 MOV A,2EH CLR C SUBB A,2FH JNZ RRE_WAT CLR 03H;清上水標志 SETB P2.6;關電磁閥 SETB P2.7RRE_WAT:RETKS1:MOV 2EH,#4H JNB 03H,RE_WAT1 SETB P2.6;若水滿則關電磁閥 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,#

35、0FFH;鍵處理程序MOV A,P1CPL AJZ RET_KEY;無鍵返回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; 置預置標志JNB 01H,SAVE_TEM;01H=0,存儲當前預置的溫度MOV 45H,#44H; 01H

36、=1,為預置狀態(tài),當前預置對象存放于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,ASJMP S11S2: JNB 01H,S11;未按預置鍵,不處理DEC 45HMOV R0,45HCJNE R0,#41H,S11MOV 45H,#44HSJMP S11S3: JNB 01H,S11;未按預置鍵,不處理MOV R0,45HINC R0;相應單元加1CJNE R0,#0

37、AH,S11MOV R0,#00H;加到10清零SJMP S11S4: JNB 01H,S11;未按預置鍵,不處理MOV R0,#09H;減到0后變?yōu)?SJMP S11S5: SETB P2.7 CPL P2.6SJMP S11S6: CPL 02H;自動標志,02H=1自動,02H=0手動SETB P2.6SETB P2.7CLR 03HCLR 04HSJMP S11S7: JB 02H,S77CPL 03H;上水標志,03H=1上水,03H=0停止JNB 03H,NO_ADD_WATERMOV A,2EHCLR CSUBB A,#4JZ S77CLR P2.6CLR P2.7S77:SJM

38、P S11NO_ADD_WATER:SETB P2.6 SETB P2.7 SJMP S77S8: JB 02H,S88 CPL 04H;04H加熱標志,1-加熱,0-不加熱 JNB 04H,S8_RE MOV A,27H CJNE A,#78H,S81S81:JNC S8_RECLR P2.5S88:SJMP S77S8_RE:CLR 04H;清加熱標志 SETB P2.5 SJMP S88DISP: MOV R0,#44H;顯示溫度及狀態(tài)信息MOV DPTR,#TABDISP1:MOV A,R0MOVC A,A+DPTRJNB 01H,NDOT1JNB 00H,NDOT1MOV R5,45

39、HCJNE 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,NDOT2MOV A,#0FFHNDOT2: MOV P0,ACLR P2.1LCALL D1MSSETB P2.1DEC R0MOV A,R0MOVC A,A+DPTRJNB 01H,NDOT3JNB 00H,NDOT3MOV R5,45HCJNE

40、 R5,#42H,NDOT3MOV A,#0FFHNDOT3:MOV 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;顯示自動標志ZD:JNB 03H,S_SHUI;CLR ACC.6;顯示上水標志S_SHUI:JNB 04H,N_JRCLR ACC.1;顯示加熱標志N_JR: JNB 05H,N_CWCLR ACC.0;顯示超溫標志N_CW:ORL A,#03CHMOV R5,2EHCJNE R5,#4,W80anl a,#11000011bSJMP RE_DISPW80:CJNE R5,#3,W50 anl a,#11100011b SJMP RE_DISPW50:CJNE R5,#2,W20 anl a,#11110011b SJMP RE_DISPW20:CJNE R5,#1,RE_DISP anl a,#11111011bRE_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,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論