找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 3741|回復(fù): 2
上一主題 下一主題
收起左側(cè)

51單片機(jī)全自動(dòng)洗衣機(jī)設(shè)計(jì)論文與程序源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:370338 發(fā)表于 2018-7-12 17:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
摘要
在本文中我們?cè)敿?xì)介紹如何使用單片機(jī)開(kāi)發(fā)板模擬全自動(dòng)洗衣機(jī)的工作流程,首先簡(jiǎn)單的了解一下全自動(dòng)洗衣機(jī)的發(fā)展及工作原理,然后開(kāi)始洗衣機(jī)的模擬設(shè)計(jì)。從單片機(jī)的工作原理入手,先分析全自動(dòng)洗衣機(jī)的功能需求,然后一步步將其實(shí)現(xiàn),例如多種洗衣模式、水位模式、報(bào)警功能等等。其中我們還詳細(xì)了洗衣機(jī)必有的水位傳感器以及電動(dòng)機(jī)的驅(qū)動(dòng)芯片它們的工作原理,在文章的最后總結(jié)了此次設(shè)計(jì)所遇到的一些問(wèn)題。

目錄

1緒論 2
11 全自動(dòng)洗衣機(jī)的發(fā)展現(xiàn)狀 2
12 全自動(dòng)洗衣機(jī)設(shè)計(jì)功能介紹 3
2系統(tǒng)硬件設(shè)計(jì) 4
21 單片機(jī)控制電路及工作原理 4
22 洗衣機(jī)電機(jī)驅(qū)動(dòng)電路及工作原理 4
23 水位檢測(cè)電路及工作原理 7
24 顯示電路及工作原理 9
25 鍵盤(pán)電路及工作原理 10
       26 報(bào)警控制電路及工作原理11
3系統(tǒng)軟件的設(shè)計(jì) 12
       31 主程序設(shè)計(jì)說(shuō)明與流程圖………………12
       32 洗衣程序功能設(shè)計(jì)與流程圖12
       33 鍵盤(pán)程序設(shè)計(jì)說(shuō)明與流程圖14
       34 顯示器程序設(shè)計(jì)說(shuō)明與流程圖15
       35 報(bào)警功能設(shè)計(jì)與流程圖………15
4系統(tǒng)調(diào)試 16
41硬件調(diào)試說(shuō)明 16
42軟件調(diào)試說(shuō)明 16
5總結(jié)與體會(huì) 17
   6、程序代碼18


1、緒論
1.1全自動(dòng)洗衣機(jī)的發(fā)展現(xiàn)狀
洗衣機(jī),這個(gè)被譽(yù)為歷史上100個(gè)最偉大的發(fā)明之一,如今已經(jīng)度過(guò)了它的第158個(gè)年頭。隨著科技的迅猛發(fā)展和智能時(shí)代的來(lái)臨,傳統(tǒng)洗衣機(jī)大多已經(jīng)徘徊在被淘汰的邊緣,利用高科技和人工智能系統(tǒng)制造而成的洗衣機(jī)受到了越來(lái)越多人的追捧。
隨著電動(dòng)洗衣機(jī)的問(wèn)世,人們對(duì)于洗衣機(jī)的要求越來(lái)越高,促成了洗衣機(jī)的新一輪變革。于是,攪拌式洗衣機(jī)應(yīng)運(yùn)而生。這種洗衣機(jī)主要在筒中心裝上一個(gè)立軸,立軸下端裝有攪拌翼,通過(guò)電動(dòng)機(jī)帶動(dòng)立軸進(jìn)行周期性的正反擺動(dòng)使衣物和水流不斷翻滾、相互摩擦來(lái)達(dá)到清潔衣物的目的。10年后,美國(guó)本德克斯航空公司成功研制了第一臺(tái)前裝式滾筒洗衣機(jī),使得洗滌、漂洗、脫水在同一個(gè)滾筒內(nèi)完成,標(biāo)志著電動(dòng)洗衣機(jī)朝著自動(dòng)化方向邁出了一大步。1937年,第一臺(tái)自動(dòng)洗衣機(jī)問(wèn)世。這種洗衣機(jī)靠一根水平的軸帶動(dòng)起整個(gè)缸,衣服在注滿(mǎn)水的缸內(nèi)不停地上下翻滾以達(dá)到凈衣的目的。
隨著工業(yè)化的加速,世界各國(guó)加快了研制洗衣機(jī)的步伐。英國(guó)制造出了一種噴流式洗衣機(jī),依靠筒內(nèi)一側(cè)的運(yùn)轉(zhuǎn)波輪產(chǎn)生的強(qiáng)烈渦流使衣物和洗滌液在筒內(nèi)不斷翻滾來(lái)清洗衣物。在引進(jìn)英國(guó)噴流式洗衣機(jī)的前提上,日本制造出了獨(dú)具風(fēng)格,一直流行至今的波輪式洗衣機(jī)。隨后幾十年里,雙桶洗衣機(jī)、波輪式套桶全自動(dòng)洗衣機(jī)等紛紛面世。
隨著科技的日新月異和智能時(shí)代的到來(lái),人們對(duì)于洗衣機(jī)的要求越來(lái)越高,洗衣機(jī)不僅僅是單純解放人類(lèi)雙手的家用電器了。
未來(lái)的洗衣機(jī)將會(huì)朝著更人性化和智能化的方向發(fā)展,洗衣機(jī)及家電行業(yè)的消費(fèi)升級(jí)將會(huì)不斷迭代。
如今人們?cè)絹?lái)越注重低碳環(huán)保的健康生活,消費(fèi)者在選購(gòu)洗衣機(jī)時(shí)越來(lái)越注重其除菌、凈化、耗電等方面的性能。
為了滿(mǎn)足市場(chǎng)的變革需要和人們的需求,未來(lái)的洗衣機(jī)可能會(huì)在凈化率、噪音度、耗電量等多方面進(jìn)行變革,并且將會(huì)朝著越來(lái)越輕巧簡(jiǎn)便、智能多元的渠道發(fā)展。

1.2全自動(dòng)洗衣機(jī)設(shè)計(jì)功能介紹
全自動(dòng)洗衣機(jī)就是將洗衣的全過(guò)程(泡浸-洗滌-漂洗-脫水)預(yù)先設(shè)定好N個(gè)程序,洗衣時(shí)選擇其中一個(gè)程序,打開(kāi)水龍頭和啟動(dòng)洗衣機(jī)開(kāi)關(guān)后洗衣的全過(guò)程就會(huì)自動(dòng)完成,洗衣完成時(shí)由蜂鳴器發(fā)出響聲。
全自動(dòng)洗衣機(jī)的主要功能為:讓人可以根據(jù)自身的需求通過(guò)幾個(gè)簡(jiǎn)單的按鍵設(shè)定洗衣機(jī)洗衣服的水位、強(qiáng)度、以及洗衣模式,在設(shè)置完后按下啟動(dòng)按鈕便開(kāi)始自動(dòng)洗衣服,為了解決不小心按錯(cuò)導(dǎo)致設(shè)置錯(cuò)誤的情況應(yīng)當(dāng)還要有暫停以及重新設(shè)置各個(gè)參數(shù)的功能,開(kāi)始后還應(yīng)該有倒計(jì)時(shí)以顯示距離洗衣完成的剩余時(shí)間,當(dāng)然與所有的家用電器一樣全自動(dòng)洗衣機(jī)應(yīng)當(dāng)有一些安全警報(bào)。綜合所需的要求本次設(shè)計(jì)全自動(dòng)洗衣機(jī)的功能為:
按鍵一:設(shè)置洗衣模式----根據(jù)不同的洗衣要求設(shè)定三種不同洗衣模式。(標(biāo)準(zhǔn)-洗滌-脫水)
按鍵二:設(shè)置洗衣水位----根據(jù)不同的衣服數(shù)量設(shè)定不同水位。(高-中-低)
按鍵三:設(shè)置洗衣強(qiáng)度----根據(jù)不同的衣服污穢程度設(shè)定不同的強(qiáng)度。(強(qiáng)-中-弱)
按鍵四:開(kāi)始\暫停----開(kāi)始洗衣\必要時(shí)暫停洗衣,并可重新設(shè)置。
附加功能:洗衣倒計(jì)時(shí)、進(jìn)水超時(shí)警報(bào)、排數(shù)超時(shí)警報(bào)、脫水開(kāi)蓋警報(bào)、脫水碰撞警報(bào)。

2、系統(tǒng)硬件設(shè)計(jì)
2.1單片機(jī)控制電路及工作原理
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
單片機(jī)又稱(chēng)單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。單片機(jī)由運(yùn)算器,控制器,存儲(chǔ)器,輸入輸出設(shè)備構(gòu)成,相當(dāng)于一個(gè)微型的計(jì)算機(jī)(最小系統(tǒng)),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。單片機(jī)是靠程序工作的,并且可以修改。通過(guò)不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能。


2.2 洗衣機(jī)電機(jī)驅(qū)動(dòng)電路及工作原理
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
ULN2003是高耐壓、大電流復(fù)合晶體管陣列,由七個(gè)硅NPN 復(fù)合晶體管組成,每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來(lái)處理的數(shù)據(jù)。
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png
這里步進(jìn)電機(jī)的A端流入+5V ,如果輸入的是高電平的話(huà)。兩個(gè)三極管導(dǎo)通,于是步進(jìn)電機(jī)的那一相就導(dǎo)通了。低電平,就斷開(kāi)了。這里如果電機(jī)突然停止產(chǎn)生很大的電流;這時(shí)由于COM端接了二極管則限制在+5.7V左右

file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg  
ULN2003內(nèi)部還集成了一個(gè)消線(xiàn)圈反電動(dòng)勢(shì)的二極管,可用來(lái)驅(qū)動(dòng)繼電器。它是雙列16腳封裝,NPN晶體管矩陣,最大驅(qū)動(dòng)電壓=50V,電流=500mA,輸入電壓=5V,適用于TTL COMS,由達(dá)林頓管組成驅(qū)動(dòng)電路。 ULN是集成達(dá)林頓管IC,內(nèi)部還集成了一個(gè)消線(xiàn)圈反電動(dòng)勢(shì)的二極管,它的輸出端允許通過(guò)電流為200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。用戶(hù)輸出口的外接負(fù)載可根據(jù)以上參數(shù)估算。采用集電極開(kāi)路輸出,輸出電流大,故可直接驅(qū)動(dòng)繼電器或固體繼電器,也可直接驅(qū)動(dòng)低壓燈泡。通常單片機(jī)驅(qū)動(dòng)ULN2003時(shí),上拉2K的電阻較為合適,同時(shí),COM引腳應(yīng)該懸空或接電源。
ULN2003是一個(gè)非門(mén)電路,包含7個(gè)單元,單獨(dú)每個(gè)單元驅(qū)動(dòng)電流最大可達(dá)500mA,9腳可以懸空。
比如1腳輸入,16腳輸出,你的負(fù)載接在VCC與16腳之間,不用9腳。
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
引腳1:CPU脈沖輸入端,端口對(duì)應(yīng)一個(gè)信號(hào)輸出端。
引腳2:CPU脈沖輸入端。
引腳3:CPU脈沖輸入端。
引腳4:CPU脈沖輸入端。
引腳5:CPU脈沖輸入端。
引腳6:CPU脈沖輸入端。
引腳7:CPU脈沖輸入端。
引腳8:接地。
引腳9:該腳是內(nèi)部7個(gè)續(xù)流二極管負(fù)極的公共端,各二極管的正極分別接各達(dá)林頓管的集電極。用于感性負(fù)載時(shí),該腳接負(fù)載電源正極,實(shí)現(xiàn)續(xù)流作用。如果該腳接地,實(shí)際上就是達(dá)林頓管的集電極對(duì)地接通。
引腳10:脈沖信號(hào)輸出端,對(duì)應(yīng)7腳信號(hào)輸入端。參考電路接法
引腳11:脈沖信號(hào)輸出端,對(duì)應(yīng)6腳信號(hào)輸入端。
引腳12:脈沖信號(hào)輸出端,對(duì)應(yīng)5腳信號(hào)輸入端。
引腳13:脈沖信號(hào)輸出端,對(duì)應(yīng)4腳信號(hào)輸入端。
引腳14:脈沖信號(hào)輸出端,對(duì)應(yīng)3腳信號(hào)輸入端。
引腳15:脈沖信號(hào)輸出端,對(duì)應(yīng)2腳信號(hào)輸入端。
引腳16:脈沖信號(hào)輸出端,對(duì)應(yīng)1腳信號(hào)輸入端。
在本實(shí)驗(yàn)中我使用單片機(jī)P3^4引腳輸出脈沖給lun2003芯片,在洗衣時(shí)與脫水時(shí)我們需要電動(dòng)機(jī)以不同的轉(zhuǎn)速旋轉(zhuǎn),為我們使用PWM調(diào)波原理控制電動(dòng)機(jī)的轉(zhuǎn)速,且為了電動(dòng)機(jī)工作時(shí)不與其他程序沖突我們需要使用定時(shí)器用來(lái)延時(shí),固定電動(dòng)機(jī)驅(qū)動(dòng)電壓的周期然后改變0/1的占空比便可以改變電動(dòng)機(jī)的轉(zhuǎn)速,在周期內(nèi)為1 的時(shí)間越大電動(dòng)機(jī)的轉(zhuǎn)速則越高,反之越低。

2.3 水位檢測(cè)電路及工作原理
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png
 水位開(kāi)關(guān)又叫做水位壓力開(kāi)關(guān)、水位傳感器、水位控制器,它是利用洗衣桶內(nèi)水位高低潮產(chǎn)生的壓力來(lái)控制觸點(diǎn)開(kāi)關(guān)的通斷,結(jié)構(gòu)如圖下所示。水位開(kāi)關(guān)用塑料軟管與盛水桶下側(cè)的儲(chǔ)氣室口相連接。當(dāng)向盛水桶內(nèi)注水時(shí),隨著水位的升高,儲(chǔ)氣室的空氣被壓縮,并由塑料軟管將壓力傳至水位開(kāi)關(guān)。隨著氣壓逐漸升高,水位壓力開(kāi)關(guān)內(nèi)的膜片變形并推動(dòng)動(dòng)觸點(diǎn)與常閉觸點(diǎn)分離,常閉觸點(diǎn)與公共觸點(diǎn)迅速斷開(kāi),常開(kāi)觸點(diǎn)與公共觸點(diǎn)閉合,從而將水位已達(dá)到設(shè)定值的信號(hào)送至程控器或?qū)⑦B接進(jìn)水閥電磁線(xiàn)圈的電路斷開(kāi),停止進(jìn)水。當(dāng)洗衣機(jī)排水時(shí),隨著盛水桶水位的下降,儲(chǔ)氣室及塑料軟管內(nèi)的壓力逐漸減小,當(dāng)氣體壓力小于彈簧的彈性恢復(fù)力時(shí),常開(kāi)觸點(diǎn)與公共觸點(diǎn)迅速斷開(kāi),常閉觸點(diǎn)與公共觸點(diǎn)閉合,恢復(fù)到待檢測(cè)狀態(tài)。
全自動(dòng)洗衣機(jī)的水位高低檢測(cè)是根據(jù)與洗衣桶內(nèi)側(cè)相連的水壓氣管里的空氣壓力大小來(lái)判斷。水位越高,水壓就越大,從而導(dǎo)致傳感器里的電感線(xiàn)圈的電感量就越大,再根據(jù)電感與電容的并聯(lián)諧振頻率公式:f=1/2π√LC得出諧振頻率就越小,反之則反。然后將產(chǎn)生的諧振頻率經(jīng)過(guò)單片機(jī)的處理來(lái)判定水位的高低(頻率越大,則水位越低;反之則反)。
  file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png
基本市面上大部分的水位傳感器內(nèi)部都是由1個(gè)密封氣室、1根彈簧、1個(gè)電感量可調(diào)的電感線(xiàn)圈(阻值22Ω)、2個(gè)22nF滌綸電容和1個(gè)后蓋組成,具體構(gòu)件見(jiàn)下圖所示:
  file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg
2.4 顯示電路及工作原理
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpgfile:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg
數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。數(shù)碼管按段數(shù)可分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元,也就是多一個(gè)小數(shù)點(diǎn)(DP)這個(gè)小數(shù)點(diǎn)可以更精確的表示數(shù)碼管想要顯示的內(nèi)容;按能顯示多少個(gè)(8)可分為1位、2位、3位、4位、5位、6位、7位等數(shù)碼管。
按發(fā)光二極管單元連接方式可分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管,共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線(xiàn)GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。
顯示部分主要由led數(shù)碼管顯示和led燈顯示組成,led燈用于當(dāng)做指示燈不同的燈亮則表示不同的水位或是不同的強(qiáng)度、模式等等。此外還需要兩個(gè)led燈用于表示洗衣機(jī)進(jìn)水口與排水口的情況,而數(shù)碼管則用于顯示洗衣的是剩余時(shí)間。

2.5 鍵盤(pán)電路及工作原理  
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png

在本設(shè)計(jì)中使用到了四個(gè)按鍵,如上圖所示每個(gè)按鍵的一端接地另一端則分別接單片機(jī)的P3_0----P3_3引腳。
某一按鍵未被按下的時(shí)候其所對(duì)應(yīng)的單片機(jī)引腳是高電平的,當(dāng)按鍵按下時(shí)會(huì)使其所對(duì)應(yīng)的引腳置為低電平。
在程序中便可通過(guò)按鍵對(duì)應(yīng)的引腳的電平情況判斷按鍵是否被按下。

2.6報(bào)警控制電路及工作原理

file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png
有源蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車(chē)電子設(shè)備、電話(huà)機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類(lèi)型。蜂鳴器在電路中用字母"H"或"HA"(舊標(biāo)準(zhǔn)用"FM"、"LB"、"JD"等)表示。
壓電式蜂鳴器 壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發(fā)光二極管。
多諧振蕩器由晶體管或集成電路構(gòu)成。當(dāng)接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號(hào),阻抗匹配器推動(dòng)壓電蜂鳴片發(fā)聲。
壓電蜂鳴片由鋯鈦酸鉛或鈮鎂酸鉛壓電陶瓷材料制成。在陶瓷片的兩面鍍上銀電極,經(jīng)極化和老化處理后,再與黃銅片或不銹鋼片粘在一起。
.電磁式蜂鳴器 電磁式蜂鳴器由振蕩器、電磁線(xiàn)圈、磁鐵、振動(dòng)膜片及外殼等組成。
接通電源后,振蕩器產(chǎn)生的音頻信號(hào)電流通過(guò)電磁線(xiàn)圈,使電磁線(xiàn)圈產(chǎn)生磁場(chǎng)。振動(dòng)膜片在電磁線(xiàn)圈和磁鐵的相互纏繞

報(bào)警電路如上圖所示單片機(jī)的P2_3引腳接有一個(gè)蜂鳴器,當(dāng)給單片機(jī)的P2_3引腳輸出低電平是蜂鳴器便會(huì)響。
如此只要在程序中判斷是否符合報(bào)警的條件,若是符合便讓蜂鳴器響起。
3、系統(tǒng)軟件的設(shè)計(jì) 3.1 主程序設(shè)計(jì)說(shuō)明與流程圖
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg
本次設(shè)計(jì)的全自動(dòng)洗衣機(jī)其主程序如上圖所示,首先將要使用的單片機(jī)定時(shí)器0配置好,然后開(kāi)始水位、洗衣模式的選擇,按下s2則改變洗衣模式此處通過(guò)不同的led燈亮以 區(qū)分不同的模式,同理按下s3則改變水位,不同的led燈亮表示不同水位,按下s5則開(kāi)始執(zhí)行對(duì)應(yīng)的洗衣程序。
3.2 洗衣程序功能設(shè)計(jì)與流程圖
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg
當(dāng)按下開(kāi)始鍵后便開(kāi)始執(zhí)行洗衣程序,在其中會(huì)先判斷洗衣的模式,標(biāo)準(zhǔn)洗模式、洗滌模式、脫水模式分別對(duì)應(yīng)不同的洗衣過(guò)程。
標(biāo)準(zhǔn)洗模式:
首先開(kāi)始倒計(jì)時(shí)80秒,然后開(kāi)始進(jìn)水10秒讓led7亮代表進(jìn)水閥開(kāi)啟,在此過(guò)程中會(huì)判斷是否達(dá)到對(duì)應(yīng)的水位,此處會(huì)使用水位鍵k4代替水位傳感器的測(cè)量結(jié)果,若水位鍵被按下則表示已經(jīng)加入足夠的水量并關(guān)閉進(jìn)水閥即使led7滅,若在此過(guò)程水位鍵未被按下則觸發(fā)進(jìn)水超時(shí)警報(bào),當(dāng)解決進(jìn)水超時(shí)警報(bào)或者進(jìn)水未超時(shí)則繼續(xù)執(zhí)行下一程序,開(kāi)始洗衣服10秒,此過(guò)程電動(dòng)機(jī)會(huì)停2秒然后低速轉(zhuǎn)兩秒循環(huán)至10秒過(guò)去,然后執(zhí)行排水程序,即以led8燈表示排水閥開(kāi)啟,此過(guò)程同理需要水位鍵代替水位傳感器的測(cè)量結(jié)果以判斷是否發(fā)生排水超時(shí),若水位鍵被按下則報(bào)警,處理完成后開(kāi)始脫水,此過(guò)程為排水閥開(kāi)啟且電動(dòng)機(jī)高速旋轉(zhuǎn)10秒,若此過(guò)程中洗衣蓋子被打開(kāi)或是發(fā)生激烈碰撞則報(bào)警,以P3^6以及P3^7接地分別模擬脫水開(kāi)蓋以及脫水碰撞。警報(bào)處理好后或是未發(fā)生警報(bào)的話(huà)則循環(huán)一次上面的程序然后時(shí)間到了,倒計(jì)時(shí)顯示為0,蜂鳴器響3秒以提示洗衣完成。
洗滌模式:
首先開(kāi)始倒計(jì)時(shí)40秒,然后開(kāi)始進(jìn)水10秒讓led7亮代表進(jìn)水閥開(kāi)啟,在此過(guò)程中會(huì)判斷是否達(dá)到對(duì)應(yīng)的水位,此處會(huì)使用水位鍵k4代替水位傳感器的測(cè)量結(jié)果,若水位鍵被按下則表示已經(jīng)加入足夠的水量并關(guān)閉進(jìn)水閥即使led7滅,若在此過(guò)程水位鍵未被按下則觸發(fā)進(jìn)水超時(shí)警報(bào),當(dāng)解決進(jìn)水超時(shí)警報(bào)或者進(jìn)水未超時(shí)則繼續(xù)執(zhí)行下一程序,開(kāi)始洗衣服10秒,此過(guò)程電動(dòng)機(jī)會(huì)停2秒然后低速轉(zhuǎn)兩秒循環(huán)至10秒過(guò)去,然后執(zhí)行排水程序,即以led8燈表示排水閥開(kāi)啟,此過(guò)程同理需要水位鍵代替水位傳感器的測(cè)量結(jié)果以判斷是否發(fā)生排水超時(shí),若水位鍵被按下則報(bào)警,處理完成后開(kāi)始脫水,此過(guò)程為排水閥開(kāi)啟且電動(dòng)機(jī)高速旋轉(zhuǎn)10秒,若此過(guò)程中洗衣蓋子被打開(kāi)或是發(fā)生激烈碰撞則報(bào)警,以P3^6以及P3^7接地分別模擬脫水開(kāi)蓋以及脫水碰撞。處理好警報(bào)后繼續(xù)執(zhí)行程序直至10秒過(guò)去,即完成了洗滌模式的洗衣,此時(shí)倒計(jì)時(shí)顯示會(huì)為0,蜂鳴器響3秒以提示洗衣完成。
脫水模式:
此模式下倒計(jì)時(shí)會(huì)顯示20的倒計(jì)時(shí),首先進(jìn)行10秒的排水,同上述過(guò)程一樣有排水超時(shí)警報(bào),排水10秒后開(kāi)始脫水,10秒內(nèi)排水閥開(kāi)且電動(dòng)機(jī)高速旋轉(zhuǎn),其中會(huì)檢測(cè)是否發(fā)生脫水開(kāi)蓋以及脫水碰撞。脫水完成后蜂鳴器響3秒以提示洗衣完成。
3.3 鍵盤(pán)程序設(shè)計(jì)說(shuō)明與流程圖
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg
本全自動(dòng)洗衣機(jī)設(shè)計(jì)用到三個(gè)按鍵分別是s2洗衣模式選擇鍵、s3水位選擇鍵、s5開(kāi)始與暫停鍵。
S2被按下則洗衣模式在標(biāo)準(zhǔn)洗—洗滌—脫水三種模式間循環(huán)切換,led1,led2,led3分別代表標(biāo)準(zhǔn)洗—洗滌—脫水三種模式。
S3被按下則水位在高—中—低三種模式間循環(huán)切換,led4,led5,led6分別代表在高—中—低三種模式。
S5則開(kāi)始執(zhí)行洗衣程序,期間s2、s3無(wú)法使用,當(dāng)s5再次被按下是退出洗衣程序,啟用s2、s3按鍵。

3.4 顯示器程序設(shè)計(jì)說(shuō)明與流程圖
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg
顯示程序主要根據(jù)選擇好是水位、洗衣模式亮不同的led燈,以及倒計(jì)不同的時(shí)間。
標(biāo)準(zhǔn)洗模式則led1亮且顯示80秒倒計(jì)時(shí)。
洗滌模式則led2亮且顯示40秒倒計(jì)時(shí)。
脫水模式則led3亮且顯示20秒倒計(jì)時(shí)。
高水位則led4亮,中水位則led5亮,低水位則led6亮。進(jìn)水時(shí)led7亮,排水時(shí)led8亮。
3.5 報(bào)警功能設(shè)計(jì)與流程圖
file:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image028.jpg
在執(zhí)行洗衣程序是會(huì)有四種報(bào)警情況,當(dāng)符合其中的請(qǐng)開(kāi)始便會(huì)報(bào)警。,進(jìn)水超時(shí)時(shí)退出洗衣程序在數(shù)碼管上顯示g1,排水超時(shí)時(shí)退出洗衣程序在數(shù)碼管上顯示g2,脫水開(kāi)蓋時(shí)退出洗衣程序在數(shù)碼管上顯示g3,脫水碰撞時(shí)退出洗衣程序在數(shù)碼管上顯示g4,排除警報(bào)后繼續(xù)執(zhí)行洗衣程序。
4、系統(tǒng)調(diào)試
4.1硬件調(diào)試說(shuō)明
在硬件方面我們使用單片機(jī)開(kāi)發(fā)板模擬洗衣機(jī)的工作狀態(tài)。
剛上電時(shí)是默認(rèn)選擇為標(biāo)準(zhǔn)洗模式、水位為高顯示為led1及l(fā)ed4亮,此時(shí)按下k2鍵則切換洗衣模式改變led1、led2、led3的亮滅情況。Led1亮則為標(biāo)準(zhǔn)洗模式、led2亮則為洗滌模式、led3亮則為脫水模式。按下k3鍵則切換水位選擇改變led4、led5、led6、的亮滅情況。led4亮則選擇為高水位、led5亮則選擇為中水位、led6亮則選擇為低水位。
按下k5鍵后開(kāi)始洗衣,此時(shí)k2、k3鍵不可用。
執(zhí)行標(biāo)準(zhǔn)洗模式時(shí)在數(shù)碼管上會(huì)顯示一分二十秒的倒計(jì)時(shí)總共80秒,并且開(kāi)始下表的洗衣步驟:
  
進(jìn)水
  
排水
脫水
進(jìn)水
排水
脫水
10
10
10
10
10
10
10
10
洗滌模式時(shí)在數(shù)碼管上會(huì)顯示倒計(jì)時(shí)總共40秒,并且開(kāi)始下表的洗衣步驟:
  
進(jìn)水
  
排水
脫水
10
10
10
10
脫水模式時(shí)在數(shù)碼管上顯示倒計(jì)時(shí)20秒,并且開(kāi)始下表的洗衣步驟:
  
排水
  
脫水
10
10
進(jìn)水時(shí)led7亮,反之滅。排水時(shí)led8亮,反之滅。且進(jìn)水需要按下k4水位鍵停止進(jìn)水以表示水位到了,否則報(bào)警蜂鳴器響,數(shù)碼管顯示g1且退出洗衣程序。
在退水期間將P3^6、P3^7接地則分別觸發(fā)脫水開(kāi)蓋、脫水碰撞報(bào)警,蜂鳴器響,數(shù)碼管分別顯示g3、g4且退出洗衣程序直至報(bào)警處理好。
4.2軟件調(diào)試說(shuō)明
本實(shí)驗(yàn)代碼由C語(yǔ)言所編寫(xiě)其中除主函數(shù)外還包含有定時(shí)器初始化函數(shù)、定時(shí)器中斷函數(shù)、驅(qū)動(dòng)函數(shù)、顯示函數(shù)、報(bào)警函數(shù)、按鍵處理等多個(gè)函數(shù)。
不同的函數(shù)完成不同的工作。

5、總結(jié)與體會(huì)

在本次全自動(dòng)洗衣機(jī)系統(tǒng)設(shè)計(jì)和制作過(guò)程中主要是倒計(jì)時(shí)的顯示比較難處理以,在顯示倒計(jì)時(shí)時(shí)還要執(zhí)行洗衣程序要避免其相互沖突是一難點(diǎn),此外為了解決報(bào)警情況的相互沖突也花飛不少的時(shí)間。
通過(guò)本次實(shí)驗(yàn)我認(rèn)識(shí)了新的傳感器—水位傳感器,使用水位傳感器便可準(zhǔn)確測(cè)量出當(dāng)前的水量是一個(gè)很方便的傳感器,其結(jié)構(gòu)也不復(fù)雜。在編寫(xiě)程序過(guò)程中我開(kāi)始反省改善自己一些壞習(xí)慣逐漸養(yǎng)成良好編寫(xiě)習(xí)慣。
在設(shè)計(jì)過(guò)程中我的語(yǔ)言表達(dá)能力以及動(dòng)手能力得到了一定的鍛煉,相信在本實(shí)驗(yàn)完成的同時(shí)我的語(yǔ)言表達(dá)能力以及動(dòng)手能力也得到了提升!

單片機(jī)源程序如下:
  1. /*********************************************************************************
  2. 【編寫(xiě)時(shí)間】: 2016年11月18日
  3. 【功能】: 模擬洗衣機(jī)功能;


  4. **********************************************************************************/
  5. #include<reg52.h>
  6. #include<intrins.h>
  7. #define uchar unsigned char
  8. #define uint unsigned int
  9. sbit sda=P2^0;
  10. sbit scl=P2^1;
  11. sbit s2=P3^0;
  12. sbit s3=P3^1;
  13. sbit s4=P3^2;
  14. sbit s5=P3^3;
  15. sbit moto=P3^4;
  16. sbit warn3=P3^6;
  17. sbit warn4=P3^7;
  18. sbit led1=P1^0;
  19. sbit led2=P1^1;
  20. sbit led3=P1^2;
  21. sbit led4=P1^3;
  22. sbit led5=P1^4;
  23. sbit led6=P1^5;
  24. sbit led7=P1^6;
  25. sbit led8=P1^7;
  26. sbit beep = P2^3;          //蜂鳴器

  27. sbit dula=P2^6;                //段選信號(hào)的鎖存器控制
  28. sbit wela=P2^7;                //位選信號(hào)的鎖存器控制

  29. uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  30.                                                 //數(shù)碼管各位的碼表
  31. uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  32.                         0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  33.                                                 //0-f的碼表
  34. uchar mode=1,waterl=1,water_warn=0,starts=0,drivec=0;
  35. uint count1=0,count2=0,count3=0,count4=0,count5=0,count6=0;
  36. uint time4=0,time5=0,time6=0,time7=0;
  37. uint warn=0;
  38. int gives=1;

  39. /*
  40. void delay()  //5us
  41. {;;}
  42. */
  43. void delay1(uint z)//1ms
  44. {
  45.         uint x,y;
  46.         for(x=z;x>0;x--)
  47.                 for(y=120;y>0;y--);        
  48. }


  49. //
  50. void timer_init(){
  51.         TMOD=0x01;                 //模式設(shè)置,00000001,可見(jiàn)采用的是定時(shí)器0,工作與模式1(M1=0,M0=1)。
  52.         TR0=1;                         //打開(kāi)定時(shí)器
  53.         TH0=(65536-46080)/256;// 由于晶振為11.0592,故所記次數(shù)應(yīng)為46080,計(jì)時(shí)器每隔50000微秒發(fā)起一次中斷。
  54.         TL0=(65536-46080)%256;//46080的來(lái)歷,為50000*11.0592/12
  55.         ET0=1;                         //開(kāi)定時(shí)器0中斷
  56.         EA=1;                         //開(kāi)總中斷

  57. }

  58. void keys(){
  59.         if(!s2){delay1(500); mode++; gives=1; if(mode==4) mode=1;}
  60.         if(!s3){delay1(500); waterl++; gives=1; if(waterl==4) waterl=1;}

  61. }
  62. void key4(){
  63.         if(s4==0){
  64.         while(!s4);
  65.         warn=0;
  66.         starts++;
  67.         water_warn=1;
  68. //        delay1(500); water_warn++; gives=1; if(water_warn==4) water_warn=1;
  69.         }
  70. }

  71. void key5(){
  72.         if(s5==0){while(!s5); starts++; if(starts==2) starts=0;}
  73. }

  74. void show_warn(){

  75.         beep=0;
  76.         key4();
  77.     if(warn==1){         //進(jìn)水超時(shí)警報(bào)
  78.         P0=wei[0];           
  79.         wela=1;
  80.         wela=0;

  81.         P0=0x6f;         
  82.         dula=1;
  83.         dula=0;
  84.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  85.         
  86.         P0=wei[1];           
  87.         wela=1;
  88.         wela=0;

  89.         P0=0x06;         
  90.         dula=1;
  91.         dula=0;
  92.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  93.         }
  94.     if(warn==2){          //排水超時(shí)警報(bào)
  95.         P0=wei[0];           
  96.         wela=1;
  97.         wela=0;

  98.         P0=0x6f;         
  99.         dula=1;
  100.         dula=0;
  101.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  102.         
  103.         P0=wei[1];           
  104.         wela=1;
  105.         wela=0;

  106.         P0=0x5b;         
  107.         dula=1;
  108.         dula=0;
  109.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  110.         }
  111.     if(warn==3){        //脫水開(kāi)蓋警報(bào)
  112.         P0=wei[0];           
  113.         wela=1;
  114.         wela=0;

  115.         P0=0x6f;         
  116.         dula=1;
  117.         dula=0;
  118.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  119.         
  120.         P0=wei[1];           
  121.         wela=1;
  122.         wela=0;

  123.         P0=0x4f;         
  124.         dula=1;
  125.         dula=0;
  126.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  127.         }
  128.     if(warn==4){           //脫水碰撞警報(bào)
  129.         P0=wei[0];           
  130.         wela=1;
  131.         wela=0;

  132.         P0=0x6f;         
  133.         dula=1;
  134.         dula=0;
  135.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  136.         
  137.         P0=wei[1];           
  138.         wela=1;
  139.         wela=0;

  140.         P0=0x66;         
  141.         dula=1;
  142.         dula=0;
  143.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  144.         }


  145. }
  146. void show(){
  147.         if(mode==1) {led3=1; led2=1; led1=0;}
  148.         else if(mode==2) {led3=1; led1=1; led2=0;}
  149.         else {led1=1; led2=1; led3=0;}

  150.         if(waterl==1) {led6=1; led5=1; led4=0;}
  151.         else if(waterl==2) {led6=1; led4=1; led5=0;}
  152.         else  {led4=1; led5=1; led6=0;}
  153. /*
  154.         if(strength==1){
  155.         P0=wei[0];           
  156.         wela=1;
  157.         wela=0;

  158.         P0=0x01;         
  159.         dula=1;
  160.         dula=0;
  161.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  162.         }
  163.         else if(strength==2){
  164.         P0=wei[0];           
  165.         wela=1;
  166.         wela=0;

  167.         P0=0x40;         
  168.         dula=1;
  169.         dula=0;
  170.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  171.         }
  172.         else {
  173.         P0=wei[0];           
  174.         wela=1;
  175.         wela=0;

  176.         P0=0x08;         
  177.         dula=1;
  178.         dula=0;
  179.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。}
  180.            }
  181.            */
  182. }
  183. void dianji()
  184. {
  185.   if(count5<=1) moto=1;
  186.   if(count5>1) moto=0;               


  187. }
  188. void dry()
  189. {
  190.         if(count6==2) moto=1;
  191.         if(count6==9) moto=0;
  192. }
  193. void drive(){
  194.         int a;
  195.   
  196.         for(a=4;a<8;a++){
  197. /*        if(strength==1){
  198.         P0=wei[0];           
  199.         wela=1;
  200.         wela=0;

  201.         P0=0x01;         
  202.         dula=1;
  203.         dula=0;
  204.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  205.         }
  206.         else if(strength==2){
  207.         P0=wei[0];           
  208.         wela=1;
  209.         wela=0;

  210.         P0=0x40;         
  211.         dula=1;
  212.         dula=0;
  213.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。
  214.         }
  215.         else {
  216.         P0=wei[0];           
  217.         wela=1;
  218.         wela=0;

  219.         P0=0x08;         
  220.         dula=1;
  221.         dula=0;
  222.         delay1(2);         //時(shí)間間隔短,這是關(guān)鍵(所謂的同時(shí)顯示,只是間隔較短而已,利用人眼的余輝效應(yīng),覺(jué)得每個(gè)數(shù)碼管都一直在亮)。}
  223.            }        */
  224.                   
  225.         P0=wei[a];           
  226.         wela=1;
  227.         wela=0;
  228.         if(a==4){
  229.         P0=duan[time4];         
  230.         dula=1;
  231.         dula=0;
  232.         delay1(5);        }
  233.         if(a==5){
  234.         P0=duan[time5]|0x80;         
  235.         dula=1;
  236.         dula=0;
  237.         delay1(5);        }
  238.         if(a==6){
  239.         P0=duan[time6];         
  240.         dula=1;
  241.         dula=0;
  242.         delay1(5);        }
  243.         if(a==7){
  244.         P0=duan[time7];         
  245.         dula=1;
  246.         dula=0;
  247.         delay1(5);        }

  248.         }                                   

  249.         if(time4==0&&time5==0&&time6==0&&time7==0){P1=0xff; moto=0; beep=0; delay1(2000); beep=1;while(1);}


  250.         if(time5==0&&time6==0&&time7==0){
  251.         time5=10;
  252.         time4--;
  253.         }
  254.         if(time6==0&&time7==0) {
  255.         time6=6;
  256.         time5--;
  257.         }
  258.         




  259.                  //脫水
  260.         if(mode==3){
  261.           led8=0;
  262.           key4();
  263.           if(count2>10&&count2<=20){
  264.           if(water_warn==1){warn=2; starts=0;}         //排水超時(shí)警報(bào)
  265.           led7=1;
  266.           led8=0;
  267.           dry();
  268.           if(warn3==0) {warn=3;        starts=0;}        ///脫水開(kāi)蓋警報(bào)
  269.           if(warn4==0) {warn=4; starts=0;}        //脫水碰撞警報(bào)        
  270.           }
  271.       if(count2>=20){ P1=0xff; moto=0; beep=0; delay1(3000);beep=1; while(1); }


  272.         }
  273.    //洗
  274.         if(mode==2){

  275.         if(count2<=10){
  276.         if(water_warn==0){led7=0;}
  277.         if(water_warn==1){led7=1;}        
  278.         key4();                  }
  279.         if(count2>10&&count2<=20){
  280.         if(water_warn==0){warn=1; starts=0;}  //進(jìn)水超時(shí)警報(bào)
  281.         led7=1;
  282.          if(count4<=2) {
  283.          dianji();
  284.          }
  285.          else moto=0;
  286.         }
  287.         if(count2>20&&count2<=30){ water_warn=0; led7=1; led8=0;  moto=0;        }
  288.         if(count2>30&&count2<=40) {
  289.         //if(water_warn==1){warn=2; starts=0; } //排水超時(shí)警報(bào)
  290.         led7=1; led8=0;
  291.         dry();
  292.     if(warn3==0) {warn=3;        starts=0;}          //脫水開(kāi)蓋警報(bào)
  293.         if(warn4==0) {warn=4;   starts=0;}          //脫水碰撞警報(bào)
  294.         }
  295.         if(count2>40){P1=0xff; moto=0; beep=0; delay1(3000);beep=1; while(1);}        

  296.         }
  297.    //標(biāo)準(zhǔn)         

  298.          if(mode==1){
  299.          key5();

  300.          if(count2<=10) {led8=1;
  301.           if(water_warn==0){led7=0;        }
  302.           if(water_warn==1){led7=1;}
  303.            key4();   }
  304.         if(count2>10&&count2<=20){
  305.         if(water_warn==0){warn=1; starts=0; }  //進(jìn)水超時(shí)警報(bào)
  306.         led7=1;
  307.          if(count4<=2) {
  308.      dianji();
  309.          }
  310.          else moto=0;
  311.         }
  312.         if(count2>20&&count2<=30){water_warn=0; led8=0; moto=0;          }
  313.         if(count2>30&&count2<=40) {
  314. //        if(water_warn==1){warn=2; starts=0;} //排水超時(shí)警報(bào)
  315.         led7=1;
  316.         led8=0;
  317.         dry();
  318.         if(warn3==0) {warn=3;        starts=0;}         //脫水開(kāi)蓋警報(bào)
  319.         if(warn4==0) {warn=4;   starts=0;}          //脫水碰撞警報(bào)
  320.          }
  321.         if(count2>40&&count2<=50) {led8=1;  
  322.         if(water_warn==0){led7=0;}
  323.         if(water_warn==1){led7=1;}
  324.         moto=0;
  325.          key4();

  326.           }
  327.         if(count2>50&&count2<=60){
  328.         if(water_warn==0) {warn=1; starts=0;} //進(jìn)水超時(shí)警報(bào)
  329.         led7=1;
  330.            if(count4<=2) {
  331.           dianji();
  332.          }
  333.          else moto=0;
  334.         }
  335.         if(count3>=1&&count2<=10) {led7=1; delay1(1); led8=0; moto=0; }
  336.         if(count3>=1&&count2>10&&count2<=20){
  337. //        if(water_warn==1){warn=2; starts=0;} //排水超時(shí)警報(bào)
  338.         led7=1; led8=0;
  339.         dry();
  340.         if(warn3==0) {warn=3;        starts=0;}         //脫水開(kāi)蓋警報(bào)
  341.         if(warn4==0) {warn=4;   starts=0;}          //脫水碰撞警報(bào)

  342.          }
  343.         if(count3>=1&&count2>20)   {P1=0xff; moto=0; beep=0; delay1(3000);beep=1; while(1);}
  344.          
  345.          }                     



  346.          key5();


  347.                         
  348.         if(count1==20){
  349.         count1=0;
  350.         count2++;
  351.         count4++;
  352.         if(count4>=5) count4=1;
  353.         if(time7==0)  time7=10;        
  354.         if(count2==60){count2=0; count3++;}
  355.         time7--;
  356.         if(time7==9) time6--;
  357.          }

  358. }
  359. void give(){
  360.         if(gives!=0){
  361.         if(mode==1)        {time4=0; time5=1; time6=2; time7=0; drivec=1;}
  362.         if(mode==2) {time4=0; time5=0; time6=4; time7=0; drivec=1;}
  363.         if(mode==3)        {time4=0; time5=0; time6=2; time7=0; drivec=1;}          }
  364. }

  365. void main()
  366. {
  367.         uchar i=0;
  368.         warn3=1;
  369.         warn4=1;
  370.         timer_init();
  371.         while(1)
  372.         {
  373.         keys();
  374.         show();
  375.         key5();
  376.         give();
  377.         while(warn!=0){
  378.         
  379.         if(mode==3&&count2>10&&count2<=20){
  380.         if(warn3==1&&warn4==1){beep=1; warn=0; starts++;}
  381.         }
  382.         if(mode==2&&count2>30&&count2<=40) {
  383.          if(warn3==1&&warn4==1){beep=1; warn=0; starts++;}
  384.         }
  385.         if(mode==1&&count2>30&&count2<=40){
  386.           if(warn3==1&&warn4==1){beep=1; warn=0; starts++;}
  387. ……………………

  388. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
洗衣機(jī).zip (39.44 KB, 下載次數(shù): 142)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:434596 發(fā)表于 2018-12-17 21:44 | 只看該作者
實(shí)驗(yàn)圖能不能發(fā)一下   
回復(fù)

使用道具 舉報(bào)

板凳
ID:438739 發(fā)表于 2018-12-23 22:59 | 只看該作者
上邊的圖片能不能發(fā)一下
回復(fù)

使用道具 舉報(bào)

地板
ID:457393 發(fā)表于 2019-5-7 01:34
論文在你的基礎(chǔ)上修改查重能過(guò)嗎

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表