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

下載本文檔

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

文檔簡介

1、基于單片機(jī)的太陽能熱水器控制系統(tǒng)的設(shè)計摘 要目前,太陽能熱水器控制器還一直處于研究與開發(fā)階段,市面在售的控制器絕大部分只具備 溫度和水位顯示功能,不具備溫度水位的自動控制功能。雖然有的控制器配有電加熱輔助裝置, 但都不是全智能型的,給用戶使用帶來許多不便。關(guān)鍵詞:單片機(jī)、太陽能熱水器、溫控系統(tǒng)第1章緒論1.1本設(shè)計的目的和意義本設(shè)計具有很強(qiáng)的實用性,用成本低廉的電阻式傳感器以及電極配以單片機(jī)技 術(shù)對生產(chǎn)實際中的太陽能熱水器的水溫的控制以及水位的顯示。本裝置電路簡單、 實用性強(qiáng)、性價比高、水溫控制靈活,水位顯示直觀醒目??蓮V泛應(yīng)用于家庭生活 對太陽能熱水器的水位顯示與水溫控制。具有良好的市場前景

2、。1. 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)具體管道排空功能,這樣防止冬天時因水管內(nèi)有積水而在夜間凍裂 水管。1. 3本設(shè)計實現(xiàn)思路及方法水位由潛入儲水容器不同深度的水位電極和潛入容器底部的公共電極(導(dǎo)線) 檢測;并由四個綠色led發(fā)光二極管顯示:若無水則綠燈

3、不亮;若有四分之一儲水 箱的水亮一盞綠燈;通過觀察綠燈點(diǎn)亮的數(shù)量可識別水位的高低,這里取5段顯示, 也可根據(jù)需要進(jìn)行增減。水溫由四個led數(shù)碼管顯示,前三個數(shù)碼管顯示的為溫度最后一個數(shù)碼管我們 只用到了四段碼顯示為溫度的符號c,水溫有效值最多可顯示為99. 9c。第2章硬件設(shè)計2. 1控制系統(tǒng)組成及工作原理2.1.1系統(tǒng)的組成如圖2-1所示,本系統(tǒng)主要由控制器、自動控制閥、手動控制閥、水位檢測電 極、水溫檢測傳感器、電阻加熱絲、儲水箱等組成??刂破鳎褐饕ㄟ^里而的電磁閥控制yv1和yv2的通斷,控制水溫檢測傳感器 檢測水溫、控制水位檢測傳感器檢測水在水箱中的位置以及控制電阻加熱絲加熱。自動控制

4、閥:主要通過控制器控制,當(dāng)水箱中的水的實際溫度大于所設(shè)置的溫 度時,自動閥就自動打開往水箱中上水,直到上到上一個目標(biāo)水位為止。手動控制閥:當(dāng)自動閥損壞時,可以通過手動閥進(jìn)行上下水。水位檢測電極:主要用來檢測水箱中水的位置,主要把水箱分成四等分,一共 有五個電極,接地的電極放在最水箱的最底下,其余分別放在四等分點(diǎn)上,比如當(dāng) 水箱中的水在第一等分和第二等分之間,則顯示水箱中有四分之一的水,當(dāng)超過第 二等分,則顯示二分之一的水。水溫檢測傳感器:主要用來檢測水箱中水的實際溫度。電阻加熱絲:主要用來加熱水箱中水,使其達(dá)到用戶所需要的溫度。2.1.2控制裝置的工作原理本控制系統(tǒng)分為手動和自動兩種控制方式,

5、在系統(tǒng)處于自動狀態(tài)下,當(dāng)檢測溫 度高于設(shè)置溫度,且水位未達(dá)到最高時,控制器打開電磁水閥yv1和yv2進(jìn)行上水, 同時點(diǎn)亮上水指示燈,當(dāng)水位上至上一目標(biāo)水位時,自動停止上水(即關(guān)閉電磁水 閥yv1和yv2),若水箱內(nèi)無水,則自動上水至最低水位處。在系統(tǒng)處于手自動狀態(tài)下,可自由上水或停止上水(上水時水箱水位必須未滿), 若水位達(dá)到最高則自動停止上水;若需要啟動加熱器則必須先設(shè)定加熱溫度,然后 按下加熱鍵進(jìn)行加熱;若需洗浴時,則需打開手動閥yv4,系統(tǒng)自動打開電磁水閥 yv2,可通過yv5自由調(diào)節(jié)水溫;當(dāng)電磁水閥yv1和yv2損壞或停電時,可通過打開 yv5和yv6進(jìn)行上下水解決燃眉之急;此系統(tǒng)設(shè)置

6、yv3是為了防止冬天氣溫過低引起 水管因內(nèi)有積水而凍裂(即手動打開此閥放完水管中的積水)。2. 2主要原器件介紹2. 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)mcs-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 (8ei

7、i)的位1并用movx 指令訪問,片內(nèi)置通用8位屮央處理器和flash存儲單元,另一個256bytesram區(qū) 與atmel之a(chǎn)t89系列8052兼容的單片機(jī)是一致的,at89c51結(jié)合通用的8位微處理 器和flash存儲技術(shù)構(gòu)成功能強(qiáng)大單片微處理器,可提供許多高性能低價位的系統(tǒng) 控制應(yīng)用場合。(1) 、at89s51主要特點(diǎn):40個引腳,32kbytes的程序存儲器,32個外部雙向輸入/輸出(i/o)端口,同 時內(nèi)含2個外屮斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,內(nèi)置時 鐘振蕩器,其flash存儲器,可反復(fù)擦寫1000次的flash存儲器可有效地降低開發(fā) 成本。軟件設(shè)置電源省

8、電模式,睡眠其間,定時/計數(shù)器,串行口和中斷口均停止 工作,ram屮的數(shù)據(jù)被“凍結(jié)”,直到下次被屮斷激活或硬件復(fù)位方可恢復(fù)工作。(2) 、at89s51主要功能特性兼容mcs51指令系統(tǒng)32k可反復(fù)擦寫(1000次)flash rom32個雙向t/0 口硬件看門狗wdt電路3個16位可編程定吋/計數(shù)器時鐘頻率0-33mhz兩個串行中斷512x8bit 內(nèi)部 ram2個外部屮斷源內(nèi)置時鐘振蕩器中斷激活睡眠模式3級加密位雙重數(shù)據(jù)存儲器軟件設(shè)置睡眠和喚醒功能2. 2. 2數(shù)碼管顯示原理由單片機(jī)的定時器to做16位計數(shù)器(為便于數(shù)據(jù)處理,這里只用低8位計數(shù) 值,即寄存器tl0屮的值)。一邊記錄脈沖數(shù)量

9、,一邊以厘米為單位由四位數(shù)碼管 顯示出來。四位數(shù)碼管采用動態(tài)掃描方式顯示。長度計量儀采用0. 5英寸共陽極連接的led數(shù)碼管。led數(shù)碼管由發(fā)光二極管作為顯示字段的數(shù)碼型顯示器件。右圖為led數(shù)碼管 外形和引腳圖,其中7只發(fā)光二極管分別對應(yīng)g筆段,構(gòu)成“日”字形,另一只 發(fā)光二極管dp作為小數(shù)點(diǎn),因此這種led顯示器稱為八段數(shù)碼管。(如圖2-3所示) 共陽極型led數(shù)碼管,是將各段發(fā)光二極管的陽極連在一起,作為公共端com, 應(yīng)接高電平。a一一g、dp各筆段中,某筆段接低電平時發(fā)光,高電平時不發(fā)光。為了節(jié)省單片機(jī)i/o 口的數(shù)量,將各位數(shù)碼管的ag對應(yīng)筆畫并聯(lián)起來分別 與單片機(jī)的p2. 0一一

10、p2. 7引腳連接。顯示時,由p2 口依次輸出各位數(shù)字的筆段碼, 并依次由p1o、pl.l、pl. 2、p1.3輸出低電平位選信號接通數(shù)碼管的公共端,輪流 進(jìn)行,循環(huán)不止,由于循環(huán)的頻率較高(約50i1z),加上人眼的視覺暫留,既保障 了各位數(shù)字的對應(yīng)顯示,又不會出現(xiàn)閃爍現(xiàn)彖,實現(xiàn)動態(tài)掃描顯示。2.3 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ù) 位電路、時鐘

11、電路、ea引腳信號及電源即可。結(jié)合資料及所學(xué)過的內(nèi)容,得到如圖 2-4所示的單片機(jī)最小系統(tǒng)。圖2-4中,晶體振蕩器的頻率選6mhz,復(fù)位電路采用上電復(fù)位,電路參數(shù)如圖 屮所示,以滿足系統(tǒng)復(fù)位時兩個機(jī)器周期的高電平的要求。由于cpu的內(nèi)部已含有 程序存儲器,所以ea引腳接高電平。2. 4 at89s51單片機(jī)時鐘電路該水位自動顯示控制器采用at89c51單片機(jī),機(jī)內(nèi)有一高增益反相放大器,構(gòu) 成自激振蕩電路,振蕩頻率取6miiz,外接6miiz晶振,兩個電容cl、c2取20pf,以 便于起振蕩的作用。右圖中xtal1為內(nèi)部時鐘工作電路的輸入,xtal2為來自反向振蕩器的輸出。2. 5 at89s5

12、1單片機(jī)復(fù)位電路vccrst/vpdat89c51vss該水位自動顯示控制器采用上電復(fù)位電路,由r14、c3構(gòu)成復(fù)位電路,在c3-101-1 f 二二r14-10kq l圖2-6復(fù)位電路上電瞬間,產(chǎn)牛一個脈沖,at89s51將復(fù)位。為保證可靠復(fù)位,脈沖寬度應(yīng)大于兩個 機(jī)器周期,這取決于r、c時間長數(shù)。取電容c二10uf,電阻r二10k。26水位檢測電路的硬件設(shè)計實驗證明,純凈水幾乎是不導(dǎo)電的,但自然界存在的以及人們?nèi)粘J褂玫乃?會含有一定的mg冬c屮等離子,它們的存在使水導(dǎo)電。本控制裝置就是利用水的導(dǎo)我們把儲水箱大致分為四個等份,水位由潛入太陽能熱水器的儲水箱不同深度 的水位電極和潛入儲水箱

13、底部的公共電極(導(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)化為字 節(jié)一路送發(fā)光二極管;在這里我們可以用發(fā)光二極管亮的盞數(shù)來顯示水位的高低。(若沒有發(fā)光二極管亮則表示箱內(nèi)沒有水或者只有少量的水,若有一個發(fā)光二極管 燈亮則表示箱內(nèi)有四分之一箱的水,以此類推,若有四個發(fā)光二極管亮,則表示水 箱水是滿的。)27水溫檢測電路的硬件設(shè)計本設(shè)計溫度傳感器選用ad590o ad590屬于半導(dǎo)體集成

14、電路溫度傳感器,測溫 范圍-55°c-+150°c,在其二端加上一定的工作電壓,其輸出電流與溫度變化成線性圖2-8水溫檢測電路圖關(guān)系,lua/。k,誤差有幾種等級:±1、±0.5、±0.3°c,本設(shè)計中選取±05°c品 種。0p07為高精度運(yùn)算放大器,ad590電流流經(jīng)rl、rp1轉(zhuǎn)換為電壓信號,r2、rp2 為運(yùn)算負(fù)反饋電阻,成反相比例放大器,將溫度信號轉(zhuǎn)換成0-5v的電壓信號,adc0832 再將其轉(zhuǎn)換為數(shù)字信號,輸入cpu。圖2-8為溫度檢測和a/d轉(zhuǎn)換電路圖。2.8鍵盤電路的硬件設(shè)計p1.0- p1.7 口

15、作為按鍵的信號輸入端,鍵按下,就執(zhí)行該鍵的功能。其電路如 圖2-9所示。(為了編程簡單、方便,采用獨(dú)立式鍵盤電路)2.9驅(qū)動電路的硬件設(shè)計在單片機(jī)控制系統(tǒng)中,需要用開關(guān)量去控制和驅(qū)動一些執(zhí)行元件,如發(fā)光二極 管、繼電器、電磁閥、晶閘管等。但at89s51單片機(jī)驅(qū)動能力有限,且高電平比低 電平驅(qū)動低那六小。一般情況下,需要加驅(qū)動接口電路,口用低電平驅(qū)動。如圖2-10 所示圖2-10驅(qū)動電路圖2. 10顯示電路的硬件設(shè)計本設(shè)計采用共陽型數(shù)碼管,8個led燈如圖2-11 +接法,燈的負(fù)極依次接到數(shù) 碼管的ei-f段,采用動態(tài)掃描電路,并把顯示程序作為主程序。數(shù)碼管的段用p0 口 控制,p2.0 口、

16、p2. 3 口作為數(shù)碼管的位控制,p2.4作為指示燈的控制。+5vo£n <芒弋-4< <21u139nqj37,kll33.ki?32.e137led4 dpy1dp72dpy3dpyiooog ip irq寸led3ledfiq sdklk n- sclk 30w129012led5lediled7led83. 1主程序流程圖主程序:org0000h第3章軟件設(shè)計ljmporgmainljmporgmain: movmovmovmovsetbsetbmovmovmovmovmovsetbsetbmovmovmovmovmovloop:lcalllcalllcal

17、lsjmpooobhcto;傳定時器0中斷服務(wù)程序0030h;主程序30h, #00h;0. 1 秒單元20h, #00000100b;置相應(yīng)標(biāo)志位p2,#0ffh;p2 口不顯示,電磁閥不通電,不加熱sp, #5fh;設(shè)置堆棧深度ea;開中斷eto;允許to中斷tmod, #o1o1ooo1b;to方式1定時,t1工作于方式1計數(shù)tho, #3ch;定時常數(shù)tlo, #0b7hth1,#ooh;清計數(shù)單元tl1,#oohtro;啟動定時定時器0tr1;啟動t128h, #60;設(shè)置初始溫度為60度40h, #offh;傳顯示狀態(tài)為全滅36h, #0;清溫度存放單元37h, #02fh, #1

18、;目標(biāo)水位為1water;水位檢測disp;顯示程序key;鍵盤處理程序loop3.2中斷子程序cto: mov tho, #3ch;重置時間初值mov tlo,#obohpush acc;保護(hù)現(xiàn)場push pswsetb rso;選工作寄存器1組mov rl,#30h;指向0. 1秒單元inc r1cjne rl,#10, ret_timemov r1,#oohcpl 0011lcall test_temp;調(diào)溫度處理程序ret time:poppsw;恢復(fù)現(xiàn)場pop accreti;屮斷返回3. 3溫控進(jìn)水程序3. 3.1溫度檢測程序test_temp:;溫度處理程序,將溫度存放在2711

19、單元, 設(shè)置的溫度存放于28h單元jb 01h, re_ad;若為設(shè)置狀態(tài),則不進(jìn)處理mov scon, #00h;置串口方式0,禁止接收clr es;串口禁中clr p3. 6;片選0832mov a,#06h;置cho通道配置mov sbuf, a;啟動a/djnb ti,adc1;串行發(fā)送啟動及通道配置信號clr ti;清發(fā)送中斷標(biāo)志setb ren;允許(啟動)串行接收jnb ri, adc2;接收第一字節(jié)clr ri;清接收中斷標(biāo)志,同時啟動接收第二字節(jié)mov a, sbuf;讀第一字節(jié)數(shù)據(jù)mov b, a;暫存jnb ri, adc3;接收第二字節(jié)clr ri;清接收中斷標(biāo)志mov

20、 a, sbuf;讀第二字節(jié)數(shù)據(jù)anl a, #0fh;第二字節(jié)屏蔽高4位anl b, #ofoh;第一字節(jié)屏蔽低4位orl a, b;組合adco:adc1:adc2:adc3:swap amov 3611, aclr rensetb p3. 6ret;高低4位互換,組成正確的a/d數(shù)據(jù);存a/d數(shù)據(jù);兩通道a/d完畢,禁止接收;清0832片選3. 3. 2水溫控制上水程序程序:mov 27h, 36hmov 42h,#00hjnc n05mov 4211, #0511;顯示小數(shù) 0.5n05:jnb acc. 7, okmov a, #0ok:cjne a, #6411, eadead:

21、jnc errad;溫度超過100則顯示99ead 1:mov b, #10;轉(zhuǎn)換成十進(jìn)制數(shù),送顯示單元div abmov 4411, amov 43h, bmov 4111, #0cii;最后一位顯示 cclr 0511jnb 02h,re admov a, 2711cjne a, 2811, eaddeadd:jc bsii;未到設(shè)定溫度,不上水mov a, 2ei1cjne a, #0411, swsw: jnc re_adjb 0311, re_admov 2fi1, 2eii;未到設(shè)定溫度,上至高一檔水位inc2fi1;目標(biāo)水位clrp2. 6clrp2. 7setb 03hre_a

22、d: reterrad: mov a, #63h;溫度超過100則顯示99sjmp ead1bsi1: setb p2. 6;setb p2. 7clr 03sjmp re_ad3. 4溫度顯示子程序disp:mov r0,#44h;顯示溫度及狀態(tài)信息mov dptr,#tab disp1:mov a, ro movc a, a+dptrjnb 0111, nd0t1jnb 0011, nd0t1mov r5,45hcjne r5,#44i1, nd0t1mov a,#offhndot1:mov po, aclr p2. 0lcall dimssetb p2. 0dec romov a, r0

23、movc a, a+dptrjb 0511, nd0t22clr acc. 7nd0t22:jnb 0111, nd0t2jnb 0011, nd0t2mov r5, 4511cjne r5,#43h, nd0t2mov a,#offhnd0t2:mov po, aclr p2. 1lcall dimssetb p2. 1dec romov a, r0movc a, a+dptrjnb 01h, nd0t3jnb ooh, nd0t3mov r5, 4511cjne r5,#42h, nd0t3mov a,#offhnd0t3:mov po, aclr p2. 2lcall dimssetb

24、p2. 2dec romov a, r0movc a,a+dptrmov po, aclr p2. 3lcall dimssetb p2. 3dims:mov r7, #25tab:叮nzr7, $retdb 0c011, 0f9i1, 0a4i1, 0b0i1, 9911db 9211, 8211, 0f8i1, 8011, 9011, 0ffi1, oafll, 0c6i1, ooh, 8611end其它顯示程序參見附錄13. 5鍵盤處理程序key:orlp1,#offh;鍵處理程序mova, plcplajzret.key;無鍵返回jnlcall disp;有鍵,延時去抖動orlpl,

25、#offhmova, plcplajzret key;無鍵返回orlp1,#offh;有鍵,延時去抖動mova, pljnbacc. 0, sijnbacc. 1, s2jnbacc. 2, s3jnbacc. 3, s4jnbacc. 4, s5jnb acc. 5, s6jnb acc. 6, s7jnb acc. 7, s8ret_key:retsi: cpl 0111;置預(yù)置標(biāo)志jnb 01h, save_tem;01h=0,存儲當(dāng)前預(yù)置的溫度mov 4511, #4411;0111=1,為預(yù)置狀態(tài),當(dāng)前預(yù)置對象存放于4511單元sil: lcall disporl p1,#offh;

26、等待按鍵釋放mov a, plcpl ajnz sil;未釋放,繼續(xù)等待retsave_tem:mova, 4411anla, #ofhmovb,#10mulabadda, 4311mov2811, asjmp sil基于單片機(jī)的太陽能熱水器控制系統(tǒng)的設(shè)計程序org 0000hljmp mainorg ooobhljmp cto;轉(zhuǎn)定時器0中斷服務(wù)程序org 0030h;主程序main:mov 30h, #00h;0. 1 秒單元mov 20h, #00000100b;置相應(yīng)標(biāo)志位mov p2,#0ffh;p2 口不顯示,電磁閥不通電,不加熱mov sp,#5fii;設(shè)置堆棧深度setb ea

27、;開中斷setb eto;允許t0中斷mov tmod, #o1o1ooo1b;to方式1定時,t1工作于方式1計數(shù)movtho, #3ch;定時常數(shù)movtlo, #obohsetb tro;啟動定時定時器0mov 28h, #60;設(shè)置初始溫度為60度mov 40h, #offh;轉(zhuǎn)顯示狀態(tài)為全滅mov 36h, #0;清溫度存放單元mov 2fh,#1;目標(biāo)水位為1loop: lcall water;水位檢測lcall key;鍵盤處理程序lcall disp;顯示程序jmp loopcto: mov tho, #3ch;重置時間初值mov tlo, #0b0hpush acc;保護(hù)現(xiàn)場

28、push pswsetb rso;選工作寄存器1組mov rl,#30h;指向0. 1秒單元inc r1cjne rl,#10, ret_timemov r1,#oohcpl 0011lcall test_temp;調(diào)溫度處理程序ret_time: pop psw;恢復(fù)現(xiàn)場pop accreti;中斷返回test_temp:溫度處理程序,將溫度存放在2711單元,設(shè)置的溫度存放于28h單元jb 01h, re_ad;若為設(shè)置狀態(tài),則不進(jìn)處理mov scon, #00hclr esclr p3. 6;置串口方式0,禁止接收;串口禁中;片選0832mov a, #06hadco:mov sbuf,

29、 aadc1:jnb ti, adc1clr tisetb renadc2:jnb ri,adc2clr rimov a, sbufmov b, aadc3:jnb ri,adc3clr rimov a, sbufaxl a, #0fhaxl b, #ofoiiorl a, bswap amov 3611, aclr rensetb p3. 6ret;置ciio通道配置;啟動a/d;串行發(fā)送啟動及通道配置信號;清發(fā)送中斷標(biāo)志;允許(啟動)串行接收;接收第一字節(jié);清接收中斷標(biāo)志,同時啟動接收第二字節(jié);讀第一字節(jié)數(shù)據(jù);暫存;接收第二字節(jié);清接收中斷標(biāo)志;讀第二字節(jié)數(shù)據(jù);第二字節(jié)屏蔽高4位;第一字節(jié)

30、屏蔽低4位;組合;高低4位互換,組成正確的a/d數(shù)據(jù);存a/d數(shù)據(jù);兩通道a/d完畢,禁止接收;清0832片選mov 27h,36hmov 4211, #00hjnc n05mov 42h,#05h;顯示小數(shù) 0. 5n05: jxb acc. 7, okmov a, #0ok: cjne a,#64h, eadead: jnc errad;溫度超過100則顯示99ead 1:mov b, #10;轉(zhuǎn)換成十進(jìn)制數(shù),送顯示單元div abmov 44h, amov 4311, bmov 41h, #och;最后一位顯示cclr 05hjxb 02h,re admov a, 2711cjne a,

31、 2811, eaddeadd:jc bsii;未到設(shè)定溫度,不上水mov a, 2ei1cjne a, #0411, swsw:jnc re adjb 0311, re_admov 2fi1, 2ei1;未到設(shè)定溫度,上至高一檔水位inc 2fh;目標(biāo)水位clr p2. 6clr p2. 7setb 03hre_ad:reterrad: mov a, #6311;溫度超過 100 則顯示 99sjmp ead1bsi1: setb p2. 6setb p2. 7clr 03sjmp re_adwater:;水位檢測后存放于2ei1單元,fi標(biāo)水位2fi1單元jnb p3. 2,ks1jnb

32、p3. 3, ks2jnb p3. 4, ks3jnb p3. 7, ks4mov 2eh, #0;無水clr p2. 6clr p2. 7setb 03hmov 2fh, #1re wat jnb 02h, rre wat;手動方式則返回mov a, 2ehclr csubb a, 2fhjnz rre watclr 03h;清上水標(biāo)志setb p2.6;關(guān)電磁閥setb p2. 7rre_wat:retks1:mov 2ei1, #411jnb 0311, rejvatlsetb p2.6;若水滿則關(guān)電磁閥setb p2. 7clr 0311;sjmp re watrejvatl:setb

33、 0511sjmp rejvatks2:m0v 2eh, #3hsjmp rejvatks3:m0v 2ei1, #211sjmp rejvatks4: mov 2eh,#1hs川p rejvatkey: orlp1,#offh;鍵處理程序mova, plcplajzret_key;無鍵返回lcall disp;有鍵,延時去抖動orlpl, #0ffhmova, plcplajzret_key;無鍵返回orlp1,#offh;有鍵,延時去抖動mova, pljnbacc. 0, sijnbacc. 1, s2jnbacc. 2, s3jnbacc. 3, s4jnbacc. 4, s5jnba

34、cc. 5, s6jnbacc. 6, s7jnb acc. 7, s8ret_key:retsi: cpl 0111;置預(yù)置標(biāo)志jnb 0111, save.tem;0111=0,存儲當(dāng)前預(yù)置的溫度mov 4511, #4411;0111=1,為預(yù)置狀態(tài),當(dāng)前預(yù)置對象存放于4511單元sil: lcall disporl p1,#offii;等待按鍵釋放mov a, plcpl ajnz sil; 未釋放,繼續(xù)等待retsave tem:mov a, 44hs2:anl a,#0fhmov b,#10mul abadd a, 4311mov 2811, asjmp siljnb 0111,

35、sil;未按預(yù)置鍵,不處理dec 4511mov r0, 45hcjne r0, #4111, silmov 4511, #4411sjmpsils3: jnbo1h,s11;未按預(yù)置鍵,不處理movro, 4511incr0;相應(yīng)單元加1cjner0, #oah, silmovr0, #0011;加到10清零sjmpsils4: jnbo1h,s11;未按預(yù)置鍵,不處理movr0, #09h;減到0后變?yōu)?sjmpsils5: setbp2. 7cplp2. 6sjmp sils6: cpl 02h;自動標(biāo)志,0211=1自動,0211=0手動setb p2. 6setb p2. 7clr

36、0311clr 04hsjmp sils7: jb 0211, s77cpl 03h;上水標(biāo)志,03h=l上水,03h=0停止jnb 0311, n0_add_watermov a, 2ei1clr csubb a, #4jz s77clr p2. 6clr p2. 7s77:sjmp silno_add_water:setb 巴6setb p2. 7sjmp s77s8: jb 02h,s88cpl 0411; 0411加熱標(biāo)志,1加熱,0不加熱jnb 0411, s8_remov a,27hcjne a, #78h, s81s81:jnc s8_reclr p2. 5s88:sjmp s77s8_re:clr0411;清加熱標(biāo)志setbp2. 5sjmpdisp: movs88ro, #4411;顯示溫度及狀態(tài)信息movdptr, #tabdisp1:mova, ©romovca, a+dptrjnb 0111, nd0t1jnb 0011, nd0t1mov r5, 4511cjne r5,#44i1, nd0t1mov a,#0ffhndot1:mov po, aclr p2. 0lcall dim

溫馨提示

  • 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

提交評論