基于AT89S51單片機(jī)的全自動(dòng)洗衣機(jī)控制系統(tǒng)的設(shè)計(jì)(2)_第1頁
基于AT89S51單片機(jī)的全自動(dòng)洗衣機(jī)控制系統(tǒng)的設(shè)計(jì)(2)_第2頁
基于AT89S51單片機(jī)的全自動(dòng)洗衣機(jī)控制系統(tǒng)的設(shè)計(jì)(2)_第3頁
基于AT89S51單片機(jī)的全自動(dòng)洗衣機(jī)控制系統(tǒng)的設(shè)計(jì)(2)_第4頁
基于AT89S51單片機(jī)的全自動(dòng)洗衣機(jī)控制系統(tǒng)的設(shè)計(jì)(2)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、20基于AT89S51的自動(dòng)洗衣機(jī)控制系統(tǒng)設(shè)計(jì)11 設(shè)計(jì)目標(biāo)用51系列單片機(jī)89S51控制全自動(dòng)洗衣機(jī)的運(yùn)行,使其能自動(dòng)地完成進(jìn)水、洗滌、漂洗、脫水等功能。不同的衣物,洗滌、漂洗、脫水和洗衣電機(jī)正反轉(zhuǎn)所用的時(shí)間不同,要求設(shè)計(jì)能夠?qū)崿F(xiàn)過程選擇,并在LED顯示屏上顯示過程代碼。在運(yùn)行的時(shí)候能顯示完成整個(gè)過程的剩余時(shí)間。為了節(jié)省單片機(jī)的IO端口,以及使硬件連接能盡可能的簡(jiǎn)單,在LED顯示過程中我們使用了動(dòng)態(tài)掃描的方法。軟件編程使用匯編語言,燒錄好單片機(jī)后能實(shí)現(xiàn)上電運(yùn)行。還應(yīng)該具有相當(dāng)?shù)姆€(wěn)定性,以保證全自動(dòng)洗衣機(jī)的正常工作。以此體會(huì)單片機(jī)系統(tǒng)的設(shè)計(jì)、開發(fā)過程。12 設(shè)計(jì)意義了解51單片機(jī)。熟悉單片機(jī)控

2、制系統(tǒng)開發(fā)流程。深入學(xué)習(xí)計(jì)算機(jī)匯編語言的編程方法。對(duì)計(jì)算機(jī)的工作原理有進(jìn)一步的認(rèn)識(shí)。增強(qiáng)個(gè)人動(dòng)手能力。13洗衣機(jī)的工作過程目前常用的波輪洗衣機(jī)分為全自動(dòng)和雙缸洗衣機(jī),它們都是依靠電機(jī)拖動(dòng)波輪帶動(dòng)洗衣筒中的水來回旋轉(zhuǎn),而使衣物洗干凈的。在雙缸洗衣機(jī)中,電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)及洗滌時(shí)間控制是由機(jī)械定時(shí)器開關(guān)來完成的,而全自動(dòng)洗衣機(jī)是靠電路來完成,對(duì)洗滌來說,效果相同;所不同的是雙缸洗衣機(jī)在完成洗滌后,需要打開排水開關(guān)排水,拿出衣物放到脫水桶中脫水,脫水完成后又要將衣物放回洗衣機(jī)桶中洗滌,一次洗衣要進(jìn)行幾次洗滌,就要完成幾次這樣相同的動(dòng)作,在完成洗衣的全過程中必須要有人工干預(yù),很不方便,而全自動(dòng)洗衣機(jī)中,

3、洗衣過程中的進(jìn)水、洗滌、排水、脫水、再進(jìn)水、洗滌是自動(dòng)進(jìn)行的,只在洗衣前需人工放進(jìn)衣物,洗衣完成后自動(dòng)報(bào)警,再由人工取出衣物,中間過程不需要人工干預(yù),使用要比雙缸洗衣機(jī)簡(jiǎn)便的多。完成這樣的順序控制功能,也可以由數(shù)字邏輯電路來進(jìn)行,但實(shí)現(xiàn)這樣的控制比較困難,電路結(jié)構(gòu)也很復(fù)雜,成本高,控制系統(tǒng)不能智能化,如不容易實(shí)現(xiàn)單獨(dú)脫水、單獨(dú)洗滌這樣的功能選擇。而使用單片機(jī),采用軟件編程的方法可以輕易實(shí)現(xiàn)這樣的控制,而且電路簡(jiǎn)單,成本低,洗衣機(jī)能夠智能化,容易操作。1.4全自動(dòng)洗衣機(jī)控制系統(tǒng)的設(shè)計(jì)原理控制系統(tǒng)圖洗衣機(jī)要實(shí)現(xiàn)衣服的洗滌、漂洗和脫水,離不開進(jìn)水、電機(jī)正轉(zhuǎn)、電機(jī)反轉(zhuǎn)和排水這四個(gè)動(dòng)作。上述四個(gè)動(dòng)作,是

4、通過單片機(jī)的P0端口,做輸出端口,去控制雙向可控硅通斷來實(shí)現(xiàn)的,如下圖所示。同時(shí)加上輸入開關(guān)的按鈕、數(shù)碼管顯示器、蜂鳴按警器和欠壓檢測(cè)保護(hù)電路等,就可以形成完整的單片機(jī)控制系統(tǒng)。通過軟件編程達(dá)到對(duì)整個(gè)洗衣過程進(jìn)行控制、檢測(cè)以及與用戶交互。單片機(jī)89C51進(jìn)水電磁閥排水電磁閥電機(jī)正轉(zhuǎn)電機(jī)反轉(zhuǎn)顯示屏蜂鳴器 水位開關(guān) 安全開關(guān) 程序選擇/啟動(dòng)/暫停 可控硅X 4個(gè)220V 洗衣機(jī)單片機(jī)控制系統(tǒng)方框圖1.5控制板電路原理(附控制板整機(jī)原理圖)參閱洗衣機(jī)單片機(jī)控制系統(tǒng)原理圖,控制板電路使用ATMEL公司的AT89C51芯片,時(shí)鐘電路采用6MHZ晶振。組成的輸入信號(hào)有:安全開關(guān)(即洗衣機(jī)桶蓋的打開與閉合)

5、、水位壓力開關(guān)(即水位的高低)、啟動(dòng)、暫停按鈕,低電壓檢測(cè)信號(hào); 輸出控制信號(hào)包括:兩個(gè)8位LED數(shù)碼動(dòng)態(tài)顯示(剩余時(shí)間)和蜂鳴器鳴叫、進(jìn)水閥、正反轉(zhuǎn)洗滌電機(jī)、排水閥的控制信號(hào)。交流220V電壓經(jīng)變壓、整流、濾波后,其中一路接至低電壓保護(hù)電路,另一路經(jīng)過CW7805進(jìn)行穩(wěn)壓,提供穩(wěn)定的5V電壓供應(yīng)給控制板各元件。當(dāng)?shù)碗妷罕Wo(hù)電路檢測(cè)到低電壓時(shí),將向單片機(jī)的INT0引腳產(chǎn)生中斷,單片機(jī)將響應(yīng)該中斷;關(guān)閉各輸出端口,以保護(hù)執(zhí)行部件如電機(jī)等設(shè)備不因欠壓而損壞。1.6控制功能及過程洗衣機(jī)動(dòng)作代碼表動(dòng)作名稱進(jìn)水洗滌排水脫水動(dòng)作代碼ABCD本次動(dòng)作預(yù)設(shè)時(shí)間2分鐘1596或2分鐘2分秒30秒(2D+T秒)5

6、3或是分鐘(包括30秒間隙脫水)洗衣機(jī)功能選擇代碼表過程代碼過程名稱完成整個(gè)過程所需時(shí)間(分)所需動(dòng)作代碼及時(shí)間01浸泡洗滌59A(B1停2)*5B15CD2AB2CD2AB2CD502強(qiáng)力洗滌42AB15CD2AB2CD2AB2CD203標(biāo)準(zhǔn)洗滌42AB15CD2AB2CD2AB2CD504輕柔洗滌34AB9CD2AB2CD2AB2CD305快速洗滌24AB5CD2AB2CD306單獨(dú)洗滌17AB1507漂洗脫水25CD2AB2CD2AB2CD508單獨(dú)脫水8CD509留水停機(jī)34AB15CD2AB2CD2AB2(大寫字母后的數(shù)字為動(dòng)作所需的時(shí)間)洗衣機(jī)的三大功能是實(shí)現(xiàn)衣服的洗滌、漂洗和脫水

7、,加上進(jìn)水,我們把這四個(gè)洗衣機(jī)動(dòng)作編排成4個(gè)代碼,而這四個(gè)動(dòng)作的組合可形成9個(gè)過程(或更多),見動(dòng)作代碼表。選擇哪一個(gè)過程來執(zhí)行洗衣程序是在進(jìn)入洗衣前由用戶通過開始、暫停按鈕來選擇的,如:?jiǎn)为?dú)進(jìn)行脫水可選擇過程08。打開電源開關(guān),洗衣機(jī)將進(jìn)入洗衣過程選擇狀態(tài),此時(shí)數(shù)碼管顯示00,用戶按啟動(dòng)、暫停鍵可以顯示不同的過程代碼(在0109之間循環(huán)顯示以指示選擇不同的洗衣過程)。3秒內(nèi)若無按鍵動(dòng)作,蜂鳴器開始鳴叫6下(時(shí)間長度共3秒)以提醒用戶;開始進(jìn)入相應(yīng)過程的洗衣程序,此后啟動(dòng)暫停按鈕只起暫?;蚶^續(xù)洗衣程序執(zhí)行作用,數(shù)碼管顯示完成本次洗衣的剩余時(shí)間。三大功能中的漂洗實(shí)際上是由洗滌和脫水功能組成的,如

8、一次標(biāo)準(zhǔn)洗滌過程(過程代碼)中,漂洗功能包括了時(shí)間均為2分鐘的脫水、洗滌、脫水、洗滌。因此,在編寫控制程序?qū)崿F(xiàn)三大功能時(shí)只需編寫洗滌和脫水功能的代碼,然后作為子程序調(diào)用即可。完成一次洗衣過程所需的動(dòng)作有:(1) 進(jìn)水動(dòng)作進(jìn)行洗滌時(shí),盛水桶內(nèi)的水量必須到水位設(shè)定要求。而水位的高低可以通過調(diào)節(jié)水位開關(guān)來實(shí)現(xiàn)。洗衣機(jī)的進(jìn)水和水位判斷是由水位開關(guān)和進(jìn)水閥的開合來進(jìn)行控制的。當(dāng)桶內(nèi)沒有水或水量達(dá)不到設(shè)定水位時(shí),單片機(jī)程序?qū)⒖刂七M(jìn)水閥閉合,開始注水;當(dāng)桶內(nèi)的水位達(dá)到設(shè)定水位時(shí)。水位開關(guān)受壓閉合;程序就可進(jìn)入下一步(洗滌)處理。若打開進(jìn)水閥后20分鐘內(nèi)不能進(jìn)水,則將出錯(cuò)報(bào)警,用戶只能關(guān)閉洗衣機(jī)電源進(jìn)行相關(guān)檢

9、查后方能重新開機(jī)。(2) 排水動(dòng)作進(jìn)入脫水動(dòng)作前應(yīng)先排水。為了避免空排水造成時(shí)間浪費(fèi)以及排水不完而帶水脫水造成對(duì)電機(jī)的損害,洗衣機(jī)能夠根據(jù)實(shí)際水量(由水位開關(guān)決定)對(duì)排水時(shí)間進(jìn)行動(dòng)態(tài)控制。設(shè)排水開始至水位壓力開關(guān)斷開時(shí)所需的時(shí)間為D,則總的排水時(shí)間為2DT(T取60秒,總的排水時(shí)間不應(yīng)大于190秒)。因此,在開始排水時(shí),控制程序?qū)⑼瑫r(shí)啟動(dòng)計(jì)時(shí)器,在D秒后若收到水位壓力開關(guān)斷開的信號(hào),則再排水DT時(shí)間后,就可以結(jié)束排水進(jìn)入脫水動(dòng)作。若D大于65秒,說明排水系統(tǒng)有故障;洗衣機(jī)將停止動(dòng)作并蜂鳴報(bào)警,提醒用戶排除故障(安全開關(guān)打開又閉合認(rèn)為是一次故障詯處理)后再繼續(xù)。需要注意的是:排水結(jié)束后排水開關(guān)還

10、是打開的。(3)洗滌動(dòng)作洗滌動(dòng)作指的是電機(jī)周期性的“正轉(zhuǎn)停止反轉(zhuǎn)停止”。不同的洗衣過程,控制電機(jī)執(zhí)行“正轉(zhuǎn)停止反轉(zhuǎn)停止”的時(shí)間是不同的,標(biāo)準(zhǔn)洗滌過程可取:正轉(zhuǎn)1.6秒0.56秒反轉(zhuǎn)1.6秒停止0.56秒。對(duì)于輕柔洗滌和強(qiáng)力洗滌過程,這個(gè)時(shí)間要作相應(yīng)調(diào)整。洗滌過程中若遇水位開關(guān)斷開或用戶要求補(bǔ)水(重新選擇水位),則要停止洗滌動(dòng)作并打開進(jìn)水閥進(jìn)水直至水位滿足要求再繼續(xù)。此外,洗滌動(dòng)作的最后15秒,電機(jī)還要進(jìn)行快速的停止正轉(zhuǎn)停止反轉(zhuǎn)停止處理,以避衣服擰成一團(tuán)。程序流程見洗滌子程序(4)脫水動(dòng)作排水結(jié)束后進(jìn)入脫水動(dòng)作,脫水是通過電機(jī)的正轉(zhuǎn)來實(shí)現(xiàn)的,同時(shí)要求排水閥一直打開,也正是由于排水閥的打開,才使脫

11、水時(shí)的電機(jī)正轉(zhuǎn)速度不同于洗滌時(shí)的電機(jī)正轉(zhuǎn)速度。(通過機(jī)械裝置實(shí)現(xiàn))。脫水分間隙脫水和長脫水,間隙脫水時(shí)間為30秒,電機(jī)按“正轉(zhuǎn)停止”的周期循環(huán)動(dòng)作,時(shí)間為“正轉(zhuǎn)4秒停止3秒”。長脫水時(shí)電機(jī)將一直調(diào)整正轉(zhuǎn),所需時(shí)間由用戶選擇的過程決定,一般有3分鐘和5分鐘的長脫水時(shí)間。進(jìn)入脫水前若洗衣機(jī)桶蓋是打開的,則進(jìn)行鳴叫、顯示告警,直至用戶合上桶蓋后,才繼續(xù)進(jìn)行脫水。脫水結(jié)束后,再經(jīng)過30秒延遲后關(guān)閉排水閥。脫水時(shí)若遇暫停,則重啟時(shí)需延時(shí)5秒后再進(jìn)行電機(jī)動(dòng)作,目的是用于同步機(jī)械動(dòng)作的滯后。程序流程見脫水子程序流程圖。(5)脫水不平衡修正進(jìn)行脫水處理,電機(jī)要進(jìn)行高速單向正轉(zhuǎn),若此時(shí)衣物偏向于一邊,脫水會(huì)因?yàn)?/p>

12、離心力作用,在很短時(shí)間內(nèi)碰撞安全形狀裝置,使安全形狀產(chǎn)生瞬時(shí)的關(guān)閉和斷開,此時(shí)要進(jìn)行脫水不平衡修正。進(jìn)行脫水不平衡修正,洗衣機(jī)將停止脫水,并自動(dòng)插入“進(jìn)水洗滌分鐘排水”動(dòng)作。通過這一插入動(dòng)作,衣服將調(diào)整到洗衣桶中心位置。在同一脫水過程中如果連續(xù)修正3次仍達(dá)不到脫水平衡,則進(jìn)行報(bào)警,待用戶人工打開洗衣機(jī)將衣物放置均勻再蓋上桶蓋,方可繼續(xù)進(jìn)行脫水(即安全開關(guān)打開安全開關(guān)閉合動(dòng)作)。在漂洗功能的第一次脫水動(dòng)作時(shí)不進(jìn)行脫水不平衡修正,在第二次脫水動(dòng)作時(shí)則要進(jìn)行脫水不平衡修正。 (6)LED的顯示89S51對(duì)可以分為靜態(tài)和動(dòng)態(tài)兩種。靜態(tài)顯示的特點(diǎn)是各LED管能穩(wěn)定地同時(shí)顯示各自的字形;動(dòng)態(tài)顯示是指各LE

13、D輪流地一遍一遍顯示各自字符,人們由于視覺器官的惰性,從而版的是各LED似乎在同時(shí)顯示不同字形。為了減少硬件開銷,提高系統(tǒng)可靠性,并降低成本,我們?cè)谶@里采用動(dòng)態(tài)掃描的方法進(jìn)行代碼的顯示。在這里由之P2口推動(dòng)LED的a、b、c、d、e、f、g、SP,稱為字形口,由P3.0、P3.1選擇所顯示的字位,稱為字位口,動(dòng)態(tài)顯示采用軟件法把欲顯示的代碼符號(hào)轉(zhuǎn)換為相應(yīng)的字形碼,故它通常需要在RAM區(qū)建立一個(gè)顯示緩沖區(qū)。顯示緩沖區(qū)內(nèi)包含的存儲(chǔ)單元個(gè)數(shù)常和系統(tǒng)中LED顯示器的個(gè)數(shù)相等。顯示緩沖區(qū)的起始地址很重要,它決定了顯示緩沖區(qū)在RAM中的位置。顯示緩沖區(qū)中的每個(gè)存儲(chǔ)單元用于存放相應(yīng)LED顯示管欲顯示字符的字

14、形碼地址偏移量,故CPU可以根據(jù)這個(gè)地址偏移量通過查字形碼表的方法找出所需顯示字符的字形碼,以便送到字形口顯示。(字形碼表見下表)在這里我選用了2位共陽LED數(shù)碼顯示器LED數(shù)碼顯示器的字形(段)碼表顯示字形字形碼(共陽極)字形碼(共陰極)0C0H3FH1F9H06H2A4H5BH3B0H4FH499H66H592H6DH682H7DH7F8H07H880H7FH990H6FHA88H77HB83H7CHCC6H39HDA1H5EHE86H79HF8EH71H熄滅FFH00H(7)其它動(dòng)作為了有更好的人機(jī)交互,進(jìn)行洗衣時(shí)數(shù)碼管要顯示剩余時(shí)間(單位為分鐘),并且以1秒的頻率不停地閃爍。此時(shí)如果按

15、下暫停按鈕,則時(shí)間顯示不閃爍。隨著洗衣過程的進(jìn)行,顯示時(shí)間將不斷減少直至洗衣程序完成后顯示“0”。剩余時(shí)間的獲得可以通過如下方法:根據(jù)用戶所選的過程代碼可以獲得包含這一過程的所有動(dòng)作(9個(gè)過程所包含的動(dòng)作需要的時(shí)間見功能選擇代碼表),由于相應(yīng)的動(dòng)作有預(yù)設(shè)的時(shí)間(動(dòng)作對(duì)應(yīng)的代碼和預(yù)設(shè)時(shí)間見表動(dòng)作代碼表),因此,根據(jù)本次過程余下的動(dòng)作可以通過查表的方式獲取剩余時(shí)間。洗衣過程中的各種出錯(cuò)報(bào)警的顯示代碼見出錯(cuò)代碼表,在顯示的同時(shí)蜂鳴器將鳴叫6下用以提醒。洗衣過程結(jié)束后,蜂鳴器將鳴叫6下用以提醒用戶可以取走衣服并關(guān)掉洗衣機(jī)的電源。故障名稱顯示值不能排水E1不能進(jìn)入脫水E2不能平衡修正E3不能進(jìn)水E4實(shí)現(xiàn)

16、一次洗衣過程的控制流程圖以標(biāo)準(zhǔn)洗滌(代碼03)為例,洗衣機(jī)是按以下動(dòng)作進(jìn)行的:開始進(jìn)水洗滌排水脫水進(jìn)水洗滌排水脫水進(jìn)水洗滌排水脫水結(jié)束。在此過程中,三大功能中的洗滌功能是指:進(jìn)水洗滌動(dòng)作;漂洗功能是指排水脫水進(jìn)水洗滌排水脫水進(jìn)水洗滌(兩次洗滌和兩次時(shí)間均為2分鐘的脫水)動(dòng)作;脫水功能是指:排水脫水動(dòng)作。1.7 洗衣機(jī)控制系統(tǒng)的軟件系統(tǒng)主程序及子程序流程圖(見下圖)開始用戶選擇洗衣過程是否洗滌結(jié)束進(jìn)水洗滌排水2D7秒進(jìn)水是否漂洗是否脫水置注水漂洗標(biāo)志置最后脫水標(biāo)志間歇脫水最后長脫水是否為最后脫水結(jié)束鳴響中間長脫水洗滌是否為注水漂洗置注水漂洗標(biāo)志 洗滌動(dòng)作子程序流程圖開始根據(jù)過程代碼獲取電機(jī)正轉(zhuǎn)-

17、停止-反轉(zhuǎn)-停止的時(shí)間周期電機(jī)動(dòng)作進(jìn)水處理是否進(jìn)水快速洗標(biāo)志?時(shí)間到否?是否暫停重啟否設(shè)定快速洗時(shí)間和電機(jī)正轉(zhuǎn)停止反轉(zhuǎn)停止周期清標(biāo)志暫停處理結(jié)束 是 否 否 是 否 是 否 是 是 否脫水子程序流程圖延時(shí)5秒電機(jī)動(dòng)作暫停處理安全開關(guān)是否斷開脫水時(shí)間到否安全開關(guān)斷開暫停不平衡修正報(bào)警重置修正次數(shù)是否暫停是否暫停開始安全開關(guān)是否斷開延時(shí)30秒,關(guān)閉排水閥是否瞬間斷開不平衡修正3次脫水不平衡修正安全開關(guān)是否閉合顯示鳴叫報(bào)警結(jié)束 是否否是是否否是是否否是是1.8全自動(dòng)洗衣機(jī)控制系統(tǒng)匯編語言源程序ORG 0000HLJMP MAINORG 0030H;延遲10ms程序;使用R0, R1DELAY10MS

18、:MOV R0, #100D;DELAY10MS02:MOV R1, #23DDELAY10MS01:DJNZ R1, DELAY10MS01DJNZ R0, DELAY10MS02RET;顯示子程序;20H.0閃爍標(biāo)志位:=0不閃爍,=1在1s內(nèi)亮滅一次;20H.1程序開始標(biāo)志:=1開始, =0選擇;顯示緩沖:50H;經(jīng)過的時(shí)間:53H,52H,51H=分鐘,秒,20ms的次數(shù);總時(shí)間:TOTALTIME=40HTOTALTIME EQU 40HDISPLAY:PUSH ACCPUSH PSWSETB RS0JNB 20H.1, DISPLAY01MOV A, 50H ;高位是否為零CJNE

19、 A, #0AH, DISPLAY05DISPLAY05:JNC DISPLAY06XRL A, #0F0H;高位為零不顯示MOV 50H, ADISPLAY06:JNB 20H.0, DISPLAY01;是否需閃爍MOV A, 51HCJNE A, #25D, DISPLAY02;DISPLAY02:JC DISPLAY01MOV 50H, #0FFH;暗顯示(不亮)DISPLAY01:MOV A, 50H;顯示低位ANL A, #0FH;MOV DPTR, #DISPLAYTAB;MOVC A, A+DPTR;MOV P2, A;SETB P0.6CLR P0.7LCALL DELAY10

20、MSMOV A, 50H;顯示高位SWAP AANL A, #0FH;MOV DPTR, #DISPLAYTAB;MOVC A, A+DPTR;MOV P2, A;CLR P0.6SETB P0.7LCALL DELAY10MSINC 51H;累計(jì)時(shí)間MOV A, #50D;XRL A, 51H;JNZ DISPLAY03;50次的20ms未到MOV 51H, A;INC 52H;1sMOV A, #60D;XRL A, 52H;JNZ DISPLAY03MOV 52H, A;INC 53H;1minDISPLAY03:JNB 20H.0, DISPLAY04;MOV A, TOTALTIME

21、;計(jì)算剩余時(shí)間CLR CSUBB A, 53H;MOV B, #10D ;16進(jìn)制轉(zhuǎn)換到10進(jìn)制DIV ABSWAP AXRL A, B;MOV 50H, A;DISPLAY04:POP PSWPOP ACCRETDISPLAYTAB: ;共陽數(shù)碼管反向編碼DB 03H, 9FH, 25H, 0DH, 99H;01234DB 49H, 41H, 1FH, 01H, 09H;56789DB 11H, 0C1H, 63H, 85H, 61H;ABCDEDB 0FFH;暗;重算時(shí)間;入口數(shù)據(jù):總時(shí)間(分)CALUTIME:MOV TOTALTIME, ACLR AMOV 52H, A;秒MOV 53

22、H, A;經(jīng)過的分鐘RET;鳴叫一下, 時(shí)長120msPLAY:SETB P1.6MOV R0, #12D;PLAY1:LCALL DISPLAYDJNZ R0, PLAY1CLR P1.6RET;鳴叫六下, 時(shí)長240ms*12ALARM:SETB P1.6MOV R1, #11D;ALARM2:MOV R0, #12D;ALARM3:LCALL DISPLAYDJNZ R0, ALARM3CPL P1.6DJNZ R1, ALARM2RET;洗滌用子程序;洗滌時(shí)暫停按鍵XDPAUSE:JB P0.0, XDPS01LCALL DISPLAYJB P0.0, XDPS01PUSH 52HPU

23、SH 53HCLR 20H.0;不閃爍MOV A, P1PUSH ACCMOV P1, #00HLCALL PLAYXDPS02:LCALL DISPLAYJNB P0.0, XDPS02;等待按鍵釋放XDPS03:LCALL DISPLAYJB P0.0, XDPS03LCALL DISPLAYJB P0.0, XDPS03LCALL PLAYXDPS04:LCALL DISPLAYJNB P0.0, XDPS04;等待按鍵釋放POP ACCMOV P1, ACCSETB 20H.0POP 53HPOP 52HXDPS01:RET;洗滌時(shí)延遲0.32sDELAY320MS:MOV R2, #

24、14D;SJMP XDELAY01;洗滌時(shí)延遲0.56sXDELAY560MS:MOV R2, #28DSJMP XDELAY01;洗滌時(shí)延遲1sXDELAY1S:MOV R2, #50DSJMP XDELAY01;洗滌時(shí)延遲1.6sDELAY1600MS:MOV R2, #80DXDELAY01:LCALL DISPLAYLCALL XDPAUSE;暫停按鍵LCALL IFINWATER;水位開關(guān)DJNZ R2, XDELAY01RET;洗滌前進(jìn)水子程序INWATER:JNB P0.2, PI1;SETB P1.2MOV A, 53H;ADD A, #20D;MOV 59H, A; PI3:

25、MOV A, 53H;XRL A, 59H;JNZ PI2LCALL ERRORE4SJMP INWATER PI2:JNB P0.2, PI4;LCALL DISPLAYLCALL XDPAUSESJMP PI3 PI4:CLR P1.2 PI1:RET;洗滌時(shí)是否再進(jìn)水IFINWATER:JNB P0.2, IF1;MOV A, P1;PUSH ACCMOV P1, #00H;LCALL INWATER;進(jìn)水POP ACCMOV P1, A;IF1:RET;不能進(jìn)水報(bào)警ERRORE4:PUSH 52HPUSH 53HCLR 20H.0MOV A, P1;PUSH ACCMOV P1, #0

26、0H;MOV 50H, #0E4HLCALL ALARME4PK2:LCALL DISPLAYJNB P0.1, E4PK2;LCALL DISPLAYJNB P0.1, E4PK2E4PK3:LCALL DISPLAYJB P0.1, E4PK3LCALL DISPLAYJB P0.1, E4PK3SETB 20H.0POP ACCMOV P1, ACC;POP 53HPOP 52HRET;排水時(shí)延遲1sDELAY1000MS:MOV R2, #50D;DLY51:LCALL DISPLAYLCALL XDPAUSE;暫停按鍵DJNZ R2, DLY51;RET;排水子程序OUTWATER:

27、CLR ASETB P1.3JB P0.2, OUTW1MOV R7, #60DOUTW2:LCALL DELAY1000MSJB P0.2, OUTW4DJNZ R7, OUTW2LCALL ERRORE1SJMP OUTWATEROUTW4:CLR CMOV A, #60DSUBB A, R7OUTW1:ADD A, #60DMOV R7, AOUTW3:LCALL DELAY1000MSDJNZ R7, OUTW3RET;不能排水報(bào)警ERRORE1:PUSH 52HPUSH 53HCLR 20H.0MOV A, P1;PUSH ACCMOV P1, #00H;MOV 50H, #0E1H

28、LCALL ALARME1PK2:LCALL DISPLAYJNB P0.1, E1PK2;LCALL DISPLAYJNB P0.1, E1PK2E1PK3:LCALL DISPLAYJB P0.1, E1PK3LCALL DISPLAYJB P0.1, E1PK3SETB 20H.0POP ACCMOV P1, ACC;POP 53HPOP 52HRET;脫水時(shí)暫停按鍵TPKEY:JB P0.0, TPK1;LCALL DISPLAYJB P0.0, TPK1;PUSH 52HPUSH 53HCLR 20H.0LCALL PLAYMOV A, P1;PUSH ACCJNB ACC.0, T

29、PK6CLR P1.0MOV R0, #250;延遲秒TPK5:LCALL DISPLAYDJNZ R0, TPK5TPK6:MOV P1, #00H;TPK2:LCALL DISPLAYJNB P0.0, TPK2;TPK3:LCALL DISPLAYJB P0.0, TPK3LCALL DISPLAYJB P0.0, TPK3LCALL PLAYSETB 20H.0SETB P1.3MOV R0, #250;延遲秒TPK4:LCALL DISPLAYDJNZ R0, TPK4POP ACCMOV P1, ACC;POP 53HPOP 52HTPK1:RET;脫水時(shí)開蓋, 脫水時(shí)安全報(bào)警IF

30、OPEN:ERRORE2:JNB P0.1, TTPK1;LCALL DISPLAYJNB P0.1, TTPK1;PUSH 52HPUSH 53HCLR 20H.0MOV A, P1;PUSH ACC;LCALL ALARMJNB ACC.0, TTPK6CLR P1.0MOV R0, #250;延遲秒TTPK5:LCALL DISPLAYDJNZ R0, TTPK5TTPK6:MOV P1, #00H;MOV 50H, #0E2HTTPK2:LCALL DISPLAYJB P0.1, TTPK2;TTPK3:LCALL DISPLAYJB P0.1, TTPK2LCALL DISPLAY;

31、JB P0.1, TTPK3SETB 20H.0SETB P1.3MOV R0, #250;延遲秒TTPK4:LCALL DISPLAYDJNZ R0, TPK4POP ACCMOV P1, ACC;POP 53HPOP 52HTTPK1:RET;脫水時(shí)延遲4sDELAY4S:MOV R2, #200D; DLY431:LCALL DISPLAYLCALL TPKEY;暫停按鍵LCALL IFOPEN;安全開關(guān)DJNZ R2, DLY431;RET;脫水時(shí)延遲3sDELAY3S:MOV R2, #150D;DLY321:LCALL DISPLAYLCALL TPKEY;暫停按鍵LCALL IF

32、OPEN;安全開關(guān)DJNZ R2, DLY321;RET;主程序開始;選擇程序:30H, 程序開始20H.1=1MAIN:MOV SP, #60H;CLR 20H.0CLR 20H.1MOV A, #00H;MOV P1, A;MOV 50H, A;MOV 51H, A;MOV 52H, A;MOV 53H, A;MOV 30H, A;LP1:;有無按鍵LCALL DISPLAYJB P0.0, LP1;LCALL DISPLAY;按鍵去抖動(dòng)JB P0.0, LP1;LP3:INC 30HMOV A, #0AH ;共有九種可選擇XRL A, 30H;JNZ LP2MOV 30H, #01H;L

33、P2:LCALL PLAYMOV 50H, 30H;LP4:LCALL DISPLAYJNB P0.0, LP4;等待按鍵釋放CLR AMOV 52H, A;LP5:LCALL DISPLAYMOV A, 52H;XRL A, #03H ;3秒延遲到否JZ START;開始洗衣JB P0.0, LP5;SJMP LP3;重選洗衣程序;START:LCALL ALARMSETB 20H.1CLR AMOV 52H, A;MOV A, 30H;DEC AMOV B, #03H;MUL ABMOV DPTR, #PROCTAB;JMP A+DPTRPROCTAB:LJMP PROC1;洗衣程序LJM

34、P PROC2;洗衣程序LJMP PROC3;洗衣程序LJMP PROC4;洗衣程序LJMP PROC5;洗衣程序LJMP PROC6;洗衣程序LJMP PROC7;洗衣程序LJMP PROC8;洗衣程序LJMP PROC9;洗衣程序PROC1:MOV A, #59DLCALL CALUTIMESETB 20H.0LCALL INWATER;進(jìn)水MOV A, #57DLCALL CALUTIME;洗滌3分鐘MOV R7, #42D;XIDI0:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600M

35、SCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI0MOV R6, #01D;共4次*3分鐘=12分鐘?4XIDI02:MOV R7, #30D;停2分鐘?120XIDI01:LCALL XDELAY1SDJNZ R7, XIDI01MOV R7, #14D;洗滌1分鐘XIDI03:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI03DJNZ R6, XIDI02MOV R7, #30D

36、;停2分鐘?120XIDI04:LCALL XDELAY1SDJNZ R7, XIDI04LJMP PROC3;以下同過程PROC2:;(待完成)LJMP over;PROC3:MOV A, #42DLCALL CALUTIMESETB 20H.0LCALL INWATER;進(jìn)水MOV A, #40DLCALL CALUTIME;洗滌15分鐘MOV R7, #8D;?208XIDI:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ

37、R7, XIDI;快速洗滌15秒MOV R7, #11DQXIDI:SETB P1.0LCALL DELAY320MSCLR P1.0LCALL DELAY320MSSETB P1.1LCALL DELAY320MSCLR P1.1LCALL DELAY320MSDJNZ R7, QXIDIMOV A, #25DLCALL CALUTIME;排水LCALL OUTWATERMOV A, #23DLCALL CALUTIME;第一次脫水MOV R7, #04D;間隙脫水30秒TS1:SETB P1.0LCALL DELAY4SCLR P1.0LCALL DELAY3SDJNZ R7, TS1SETB P1.0;長脫水秒MOV R7, #10D;?30TS2:LCALL DELAY4SDJNZ R7, TS2CLR P1.0MOV R7, #250;延遲秒TS25:LCALL DISPLAYDJNZ R7, TS25CLR P1.3MOV A, #20DLCALL CALUTIME;第一次漂洗LCALL INWATERMOV A, #18DLCALL CALUTIME;洗滌2分鐘MOV R7, #08D;?28XIDI1:SETB P1.0LCALL

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論