基于單片機的洗衣機的控制系統(tǒng)設(shè)計_第1頁
基于單片機的洗衣機的控制系統(tǒng)設(shè)計_第2頁
基于單片機的洗衣機的控制系統(tǒng)設(shè)計_第3頁
基于單片機的洗衣機的控制系統(tǒng)設(shè)計_第4頁
基于單片機的洗衣機的控制系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于單片機的洗衣機的控制系統(tǒng)設(shè)計摘要根據(jù)洗衣機的控制要求,從功能要求、硬件設(shè)計、軟件設(shè)計三個方面描述了一個以51單片機為核心的洗衣機控制系統(tǒng)。硬件線路及控制程序的設(shè)計是該系統(tǒng)的重要組成部分。硬件線路設(shè)計主要包括電源、功能及控制系統(tǒng)、洗衣機狀態(tài)顯示、輸出控制電路的設(shè)計。控制程序設(shè)計主要包括主程序、內(nèi)部定時中斷服務(wù)程序、外部中斷服務(wù)程序的設(shè)計。關(guān)鍵字:STC51單片機;洗衣機控制系統(tǒng);硬件;控制程序A control system with theSCMC as the core about washing machineAbstractAccording to the washing machi

2、ne control requirements,a control system with the STC5 1 SCMC as the core about washing machines were described in the following three aspects of functional requirements,hardware design,software designThe hardware circuit diagram and related control flow chart of the program were givenHardware circu

3、it design, including power, function and control system, washing machine status display, output control circuit. Control program design includes the main program, the internal timer interrupt service routine,the design of the external interrupt service routine.Key words:STC一51SCMC;Washing machine co

4、ntrol system;Hardware;Control program前言目前中國洗衣機市場正進入更新?lián)Q代期,市場潛力巨大,人們對于洗衣機的要求也越來越高,目前的洗衣機主要有強弱洗滌功能、進排水系統(tǒng)故障自動診斷功能、暫停等七大功能,在許多方面還不能達到人們的需求。這就要求設(shè)計者們有更高的專業(yè)和技術(shù)水平,能夠提出更多好的建議和新的課題,將人們的需要變成現(xiàn)實,設(shè)計出更節(jié)能、功能更全面、更人性化的全自動洗衣機。目前的洗衣機都沒有實現(xiàn)全方面的兼容,大多洗衣的廠家都注重各自品牌的洗衣機的特長,突出一兩個與別的洗衣機不同的個性化的功能,洗衣機的各項功能是由單片機控制實現(xiàn)的,單片機的體積小,控制功能靈活

5、,因此,設(shè)計出基于單片機的全自動洗衣機控制電路系統(tǒng)具有很強的實用性。本設(shè)計采用STC89C2051為控制核心,為保證洗衣機及人身安全,設(shè)計了蜂鳴報警電路.因本設(shè)計輸入按鍵較少,所以采用直接輸入方式,使電路簡單化。為方便理解與熟悉本,本文還介紹了與全自動洗衣機有關(guān)的一些常見的電子元器件的基本功能。本設(shè)計只設(shè)計了全自動洗衣機的基本功能,其他的一些功能可在原有的基礎(chǔ)上擴展升級,使全自動洗衣機能更加智能化,更加完善。第一章 洗衣機的功能及設(shè)計1.1洗衣機功能要求洗衣機的主要工作程序是:洗滌脫水漂洗脫水漂洗脫水。上述工作程序中,包含三個過程,洗滌過程、漂洗過程、脫水過程。(1)洗滌過程:放好待洗物,啟動

6、開關(guān),進水閥通電,向洗衣機供水,當(dāng)供水達到預(yù)定水位時,水位開關(guān)接通,進水閥斷電關(guān)閉,停止供水。洗滌電動機接通電源,帶動波輪(或桶)旋轉(zhuǎn),產(chǎn)生各種形式的水流攪動衣物進行洗滌。通過電動不停的正轉(zhuǎn)、停、反轉(zhuǎn)、反復(fù)循環(huán),形成洗滌水對洗滌物產(chǎn)生強烈的翻滾作用。同時,衣物之間、衣物與四周桶壁之間產(chǎn)生互相摩擦和撞擊力,以次達到洗滌衣物的目的。(2)漂洗過程:漂洗的目的在于清除衣物上的洗滌液,因此,漂洗過程與洗滌過程的電器動作是完全相同的。(3)脫水過程:洗滌或漂洗后,需要對衣物進行脫水以便晾干,節(jié)省水資源,所以脫水是洗衣過程中必不可少的環(huán)節(jié)。洗滌或漂洗過程結(jié)束后,電動機停止轉(zhuǎn)動,排水閥通電,打開排水閥門排水

7、。當(dāng)水位低到一定程度時,滿足安全條件,脫水電動機接通,電機帶動脫水桶高速旋轉(zhuǎn),利用離心力把衣服上的水從桶壁的小眼里甩出。全部洗衣工作完成后,由蜂鳴器發(fā)出音響,表示衣物已洗干凈。1.2洗衣機硬件電路設(shè)計1.2.1 洗衣機總體設(shè)計框圖 橢圓型表示指示燈:從上到下依次為強洗、弱洗、洗滌次數(shù)、洗衣定時、脫水定時、洗衣剩余時間、脫水剩余時間。電動機正轉(zhuǎn)為強洗,正反交替轉(zhuǎn)動設(shè)定為弱洗,初始設(shè)定的狀態(tài)為強洗,若要選擇弱洗模式需按下增加按鍵,再次按下選擇按鍵,則表示洗滌次數(shù)的指示燈被點亮,選擇增加或減少按鍵對時間進行加減。然后對脫水時間設(shè)定,最后按下啟動鍵,洗衣機開始工作。數(shù)碼管2(顯示時間)數(shù)碼管1(顯示時

8、間)出水進水開始/暫停反轉(zhuǎn)正轉(zhuǎn)51單片機38譯碼器電動機蜂鳴器 選擇 增加 減少 啟動 圖一 總體設(shè)計框圖1.2.2元器件介紹(1)STC51單片機STC89C51系列單片機是宏晶科技推出的新一代超強抗干擾/高速/低功耗的單片機,是MCS-51系列單片機的派生產(chǎn)品;它們在指令系統(tǒng)中、硬件系統(tǒng)和片內(nèi)資源與標(biāo)準(zhǔn)的8052單片機完全兼容,DIP-40封裝系列與8051為pin-to-pin兼容,指令代碼是與8051完全兼容的單片機。STC89C51單片機具有增強型12時鐘/機器周期、6時鐘機器/周期任意選擇,工作電壓為5.5V-3.4V(5V單片機)/3.8V-2.0V(5V單片機);工作頻率范圍:

9、0-40MHZ,相當(dāng)于普通8051的0-80MHZ。實際頻率可達48MHZ。用戶應(yīng)用程序空間為4K/8K/13K/16K/20K/32K/64K字節(jié) ;片上集成1280字節(jié)/512字節(jié)RAM;有32/36個通用I/O口,P1/P2/P3/P4是準(zhǔn)雙向口;集成ISP(在系統(tǒng)可編程)/IPA(在應(yīng)用可編程),無需專用的編程器/仿真器,可通過串行口(P3.0/P3.1)直接下載用戶程序,8K程序3秒就可以完成一片,具備EEPROM功能,工作溫度范圍在0-750,共有3個16位定時器/計數(shù)器,其中定時器T0還可以當(dāng)成2個8位定時器使用;封裝形式有DIP-40,PLCC-44,PQFP-44等。本文選取

10、的是DIP-40引腳的。(2)74LS3874LS138 為3 線8 線譯碼器,共有 54/74S138和 54/74LS138 兩種線路結(jié)構(gòu)型式,其中74LS138工作原理:當(dāng)一個選通端為高電平,另兩個選通端和為低電平時,可將地址端(A、B、C)的二進制編碼在一個對應(yīng)的輸出端以低電平譯出。 表一74LS138真值表輸入輸出S1 S2 S3A2 A1 A0Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y70××× 1××× 11 0 01 0 01 0 01 0 01 0 01 0 01 0 01 0 0×××

11、;××××××0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 11 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 1 10 1 1 1 1 1 1 11 0 1 1 1 1 1 11 1 0 1 1 1 1 11 1 1 0 1 1 1 11 1 1 1 0 1 1 11 1 1 1 1 0 1 11 1 1 1 1 1 0 11 1 1 1 1 1 1 0(3)晶振晶振全稱為晶體振蕩器,其作用在于產(chǎn)生原始的時鐘頻率,這個頻率經(jīng)過頻率發(fā)生器的放大或縮小后就成了電腦中各種不

12、同的總線頻率。以聲卡為例,要實現(xiàn)對模擬信號44.1kHz或48kHz的采樣,頻率發(fā)生器就必須提供一個44.1kHz或48kHz的時鐘頻率。如果需要對這兩種音頻同時支持的話,聲卡就需要有兩顆晶振。但是娛樂級聲卡為了降低成本,通常都采用SRC將輸出的采樣頻率固定在48kHz,但是SRC會對音質(zhì)帶來損害,而且現(xiàn)在的娛樂級聲卡都沒有很好地解決這個問題。 晶振一般叫做晶體諧振器,是一種機電器件,是用電損耗很小的石英晶體經(jīng)精密切割磨削并鍍上電極焊上引線做成。這種晶體有一個很重要的特性,如果給它通電,它就會產(chǎn)生機械振蕩,反之,如果給它機械力,它又會產(chǎn)生電,這種特性叫機電效應(yīng)。他們有一個很重要的特點,其振蕩頻

13、率與他們的形狀,材料,切割方向等密切相關(guān)。由于石英晶體化學(xué)性能非常穩(wěn)定,熱膨脹系數(shù)非常小,其振蕩頻率也非常穩(wěn)定,由于控制幾何尺寸可以做到很精密,因此,其諧振頻率也很準(zhǔn)確。根據(jù)石英晶體的機電效應(yīng),我們可以把它等效為一個電磁振蕩回路,即諧振回路。他們的機電效應(yīng)是機-電-機-電.的不斷轉(zhuǎn)換,由電感和電容組成的諧振回路是電場-磁場的不斷轉(zhuǎn)換。在電路中的應(yīng)用實際上是把它當(dāng)作一個高Q值的電磁諧振回路。由于石英晶體的損耗非常小,即Q值非常高,做振蕩器用時,可以產(chǎn)生非常穩(wěn)定的振蕩,作濾波器用,可以獲得非常穩(wěn)定和陡削的帶通或帶阻曲線。圖二 STC89C51單片機元件圖圖三 晶振實物圖(4)蜂鳴器蜂鳴器是一種一體

14、化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計算機、打印機、復(fù)印機、報警器、電子玩具、汽車電子設(shè)備、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件。 ;蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器在電路中用字母“H”或“HA”(舊標(biāo)準(zhǔn)用“FM”、“LB”、“JD”等)表示。蜂鳴器的結(jié)構(gòu)原理1壓電式蜂鳴器 壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發(fā)光二極管。多諧振蕩器由晶體管或集成電路構(gòu)成。當(dāng)接通電源后(1.515V直流工作電壓),多諧振蕩器起振,輸出1.52.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。 壓電蜂鳴片由鋯鈦

15、酸鉛或鈮鎂酸鉛壓電陶瓷材料制成。在陶瓷片的兩面鍍上銀電極,經(jīng)極化和老化處理后,再與黃銅片或不銹鋼片粘在一起。2電磁式蜂鳴器 電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。圖四 蜂鳴器實物圖(5)數(shù)碼管數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼

16、管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。主要參數(shù)(1)8字高度8字上沿與下沿的距離。比外型高度小。通常用英寸來表示。范圍一般為0.25-20英寸。(2)長*寬*高長數(shù)碼管正放時,水平方向的長

17、度;寬數(shù)碼管正放時,垂直方向上的長度;高數(shù)碼管的厚度。(3)時鐘點四位數(shù)碼管中,第二位8與第三位8字中間的二個點。一般用于顯示時鐘中的秒。圖五 數(shù)碼管原理圖(6)LED燈LED結(jié)構(gòu)以及發(fā)光原理LED(Light Emitting Diode),發(fā)光二極管,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。LED的心臟是一個半導(dǎo)體的晶片 發(fā)光二極管晶片的一端附在一個支架上,一端是負極,另一端連接電源的正極,使整個晶片被環(huán)氧樹脂封裝起來。半導(dǎo)體晶片由兩部分組成,一部分是P型半導(dǎo)體,在它里面空穴占主導(dǎo)地位,另一端是N型半導(dǎo)體,在這邊主要是電子。但這兩種半導(dǎo)體連接起來的時候,它們之間就形成一個P-N結(jié)。

18、當(dāng)電流通過導(dǎo)線作用于這個晶片的時候,電子就會被推向P區(qū),在P區(qū)里電子跟空穴復(fù)合,然后就會以光子的形式發(fā)出能量,這就是LED發(fā)光的原理。而光的波長也就是光的顏色,是由形成P-N結(jié)的材料決定的。最初LED用作儀器儀表的指示光源,后來各種光色的LED在交通信號燈和大面積顯示屏中得到了廣泛應(yīng)用,產(chǎn)生了很好的經(jīng)濟效益和社會效益。對于一般照明而言,人們更需要白色的光源。(7)直流電動機將直流電能轉(zhuǎn)換為機械能的轉(zhuǎn)動裝置。電動機定子提供磁場,直流電源向轉(zhuǎn)子的繞組提供電流,換向器使轉(zhuǎn)子電流與磁場產(chǎn)生的轉(zhuǎn)矩保持方向不變(8)ULN2003ULN2003 是高耐壓、大電流達林頓陳列,由七個硅NPN 達林頓管組成。一

19、、電路的特點ULN2003 的每一對達林頓都串聯(lián)一個2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 工作電壓高,工作電流大,灌電流可達500mA,并且能夠在關(guān)態(tài)時承受50V 的電壓,輸出還可以在高負載電流并行運行。 ULN2003 采用DIP16 或SOP16 塑料封裝。ULN2003內(nèi)部還集成了一個消線圈反電動勢的二極管,可用來驅(qū)動繼電器。它是雙列16腳封裝,NPN晶體管矩陣,最大驅(qū)動電壓=50V,電流=500mA,輸入電壓=5V,適用于TTL COMS,由達林頓管組成驅(qū)動電路。 ULN是集成達

20、林頓管IC,內(nèi)部還集成了一個消線圈反電動勢的二極管,它的輸出端允許通過電流為200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。用戶輸出口的外接負載可根據(jù)以上參數(shù)估算。采用集電極開路輸出,輸出電流大,故可直接驅(qū)動繼電器或固體繼電器,也可直接驅(qū)動低壓燈泡。通常單片機驅(qū)動ULN2003時,上拉2K的電阻較為合適,同時,COM引腳應(yīng)該懸空或接電源。ULN2003是一個非門電路,包含7個單元,單獨每個單元驅(qū)動電流最大可達350mA,9腳可以懸空。比如1腳輸入,16腳輸出,你的負載接在VCC與16腳之間,不用9腳。二、作用ULN2003是大電流驅(qū)動陣列,多用于單片機、智能儀表、PLC、數(shù)

21、字量輸出卡等控制電路中??芍苯域?qū)動繼電器等負載。輸入5VTTL電平,輸出可達500mA/50V。ULN2003 是高壓大電流達林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,適應(yīng)于各類要求高速大功率驅(qū)動的系統(tǒng)。硬件電路的主要模塊根據(jù)洗衣機的基本功能,硬件電路設(shè)計需要考慮:水流強度的問題、洗滌、漂洗、脫水時間設(shè)定長短的問題、工作時間或剩余時間的顯示、工作過程中的暫停、啟動、復(fù)位、洗完后的報警等問題。采用5l系列單片機作為控制核心,主要包括功能設(shè)置及控制電路、洗衣機狀態(tài)顯示及輸出控制電路。主要組成部件有:單片機、74LSl38譯碼器、ULN2003、指示燈、數(shù)碼

22、管、電動機、蜂鳴器以及按鍵等。(1)功能設(shè)置及控制電路暫停鍵K0,接P33,用外部中斷1實現(xiàn)工作過程的暫停,根據(jù)人的需要可以進行手工洗滌;水位開關(guān)K1,接P1O,水位到位時,K1閉合。在進水期間,系統(tǒng)不斷檢測K1,當(dāng)檢測到K1閉合就停止進水;按鍵K2,接P16,作為工作過程中的啟動鍵;按鍵K3是洗衣強度選擇鍵,接P34,每按一次代表一種強度。分別是標(biāo)準(zhǔn)、弱洗、強洗和自編,由4個指示燈進行顯示;按鍵K4,接P35,對洗衣時間進行設(shè)置,并用數(shù)碼管LEDl和LED2顯示:按鍵K5,接P36,對漂洗、脫水次數(shù)進行設(shè)置,并用數(shù)碼管LEDI顯示;壓電蜂鳴器接P17,作為洗衣時間到以及故障發(fā)生的報警器。圖六

23、 控制電路(2)洗衣機狀態(tài)顯示74LSl38譯碼器為38譯碼器,選用它可以解決I0口線數(shù)量不足問題。從控制要求可知,洗衣機的工作模式以及工作程序必須有7中不同的顯示加以區(qū)別。74LSl38譯碼器的輸入端C、B、A分別接P13、P14、P15,輸出端分別與7個發(fā)光二極管DO-D6的陰極相連,發(fā)光二極管陽極接電源。輸出端YO控制D0“弱洗”指示燈:Y1控制D1“標(biāo)準(zhǔn)洗”指示燈,Y2控制D2“強洗”指示燈,Y3控制D3“自編”指示燈,Y4控制D4“洗衣”指示燈,Y5控制D5“漂洗”指示燈,Y6控制D6“脫水”指示燈圖七 狀態(tài)顯示圖(3)輸出控制電路輸出控制電路由觸發(fā)器電路和相應(yīng)的雙向晶閘管組成??刂?/p>

24、電機正反轉(zhuǎn)以及進水閥和排水閥的開啟和關(guān)閉。通過觸發(fā)器電路和相應(yīng)的雙向晶閘管,電動機的正轉(zhuǎn)和反轉(zhuǎn)用單片機P11和P12進行控制;進水電磁閥和排水電磁閥用單片機的P30和P31進行控制(4)整體設(shè)計圖把上述電路圖整合在一起如圖所示圖七 整體設(shè)計圖1.3洗衣機軟件系統(tǒng)設(shè)計(1)主程序設(shè)計根據(jù)硬件設(shè)計要求,控制主程序流程圖如圖所示。洗衣機通電之后,單片機上電,首先進行程序的初始化,包括定時器O、外部中斷O、外部中斷l(xiāng)的初始化,以及各參數(shù)初值的設(shè)定。默認洗衣強度為“標(biāo)準(zhǔn)洗”,漂洗次數(shù)3次。然后掃描K2、K3、K4、K5鍵的狀態(tài),確定洗衣強度R2、洗衣時間R3和漂洗次數(shù)R4。洗衣機處于待命狀態(tài),控制指示燈

25、顯示洗衣強度,液晶顯示預(yù)設(shè)洗衣時間。當(dāng)發(fā)現(xiàn)啟動鍵K2按下,洗衣機從待命狀態(tài)進入工作狀態(tài)。完成進水洗滌脫水漂洗的循環(huán)過程。當(dāng)洗衣結(jié)束時,控制蜂鳴器發(fā)聲。開始結(jié)束報警?脫水、漂洗程序洗滌程序進水程序啟動?初始化查詢洗衣強度R2的值查詢洗衣時間R3的值查詢漂洗次數(shù)R4的值圖八主程序流程圖<1>進水程序設(shè)計當(dāng)P30=1時,打開進水電磁閥開始進水。當(dāng)水位到達要求時,P10=0,即水位開關(guān)K1閉合,關(guān)閉進水電磁閥,P30=0,迸水結(jié)束;<2>洗滌過程程序設(shè)計電機正反轉(zhuǎn)均為10S,根據(jù)R2的值確定洗衣強度、洗衣時間R3以及電動機的間歇時間。洗衣開始電機正轉(zhuǎn)10s電機停轉(zhuǎn)延時1s進入漂

26、洗脫水程序電機反轉(zhuǎn)10s剩余時間=0R2=0?圖九洗滌過程流程圖<3>脫水、漂洗過程程序設(shè)計脫水前先打開排水閥排水1min。然后啟動電動機脫水1min,并保持排水閥開啟,然后停止脫水。接著判斷漂洗次數(shù)即R4的值,若R4為0則洗衣結(jié)束,開蜂鳴器提醒洗衣結(jié)束,系統(tǒng)返回初始待命狀態(tài);若R4不為0,則再次執(zhí)行進水操作,進入下一循環(huán)。程序如下圖所示:關(guān)脫水,關(guān)脫水閥漂洗脫水開始開排水閘開電動機脫水繼續(xù)漂洗關(guān)蜂鳴器開蜂鳴器報警R4=0?圖十脫水、漂洗程序流程圖 (2)內(nèi)部定時中斷設(shè)計 工作過程中所需的各種計時均有定時器0定時中斷服務(wù)64程序提供。單片機晶振頻率12Mllz,定時器0選擇工作方式

27、1,設(shè)置時間常數(shù),每01S中斷次。中斷處理程序流程圖如下圖所示。中斷入口顯示子程序計數(shù)清零秒值加1秒值清0分值減1是否到1s是否到1民、中斷返回圖十一內(nèi)部定時中斷流程圖(3)外部中斷設(shè)計 為了防止外部電壓過高或過低對洗衣機的電器及控制硬件產(chǎn)生破壞,用外部中斷0進行保護。當(dāng)電壓過高或過低時,引起外部中斷0,洗衣機停止一切動作,進入保護狀態(tài)。用外部中斷1來實現(xiàn)洗衣過程停止工作。在洗衣過程中,當(dāng)暫停鍵K0按下時,引起外部中斷1,轉(zhuǎn)入中斷1處理程序。中斷l(xiāng)處理程序?qū)⑹瓜匆聶C停止工作,并將停止前的狀態(tài)存儲起來。當(dāng)按下啟動鍵K2時,洗衣機又恢復(fù)工作。程序設(shè)計流程圖中斷入口相關(guān)寄存器進棧暫停否?相關(guān)寄存器出

28、棧置外部中斷控制字中斷返回圖十二外部中斷流程圖(4)源程序#include <reg51.h>/各個引腳功能定義sbit key_move_stop = P20; /啟動、暫停按鍵sbit key_wash_dehydration = P21; /洗滌、脫水按鍵sbit key_water_detection = P32; /水位檢測按鍵 外部中斷0sbit key_cap_open = P33; /機蓋裝置按鍵 外部中斷1sbit LED1 = P00; /啟動指示燈sbit LED2 = P01; /暫停指示燈sbit LED3 = P02; /洗滌指示燈sbit LED4 =

29、 P03; /脫水指示燈sbit LED5 = P04; /進水閥指示燈sbit LED6 = P05; /排水閥指示燈sbit LED7 = P06; /水位滿指示燈sbit LED8 = P07; /機蓋松指示燈sbit LED9 = P27; /報警指示燈sbit LS138A = P22; /數(shù)碼管片選sbit LS138B = P23;sbit LS138C = P24;sbit BEEP = P26; /蜂鳴器報警sbit PWM = P25; /直流電動機/共陰數(shù)碼管 0-9 - unsigned int code Disp_Tab = 0x3f,0x06,0x5b,0x4f,0

30、x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsigned int i=0,LedNumVal=0; /數(shù)碼管計時 0-9 選擇unsigned int lednum = 0;/定時器0 數(shù)碼管計時速率調(diào)控變量unsigned int LedOut3; /數(shù)碼管計時存儲區(qū)unsigned char key_s,key_v; /按鍵掃描變量static unsigned int m = 0; /啟動、暫停鍵計數(shù)變量static unsigned int movenum = 0; /暫停功能變量/*/unsigned char scan_key() /啟動/暫停鍵;洗滌/

31、脫水鍵掃描unsigned char Key_s;Key_s = 0x00;Key_s |= key_wash_dehydration;Key_s <<= 1;Key_s |= key_move_stop;return Key_s; /*/void delay( unsigned int a) /數(shù)碼掃描延時子程序 unsigned char b; for(; a > 0; a-) for(b = 200; b > 0; b-);/*/void delayms( unsigned char ms)/按鍵消抖延時子程序 unsigned char k;while(ms-)

32、for(k = 0; k < 120; k+);/*/void beep()unsigned int n = 0;BEEP = 1;LED9 = 1;for(; n<6;n+) BEEP = 0;LED9 = 0; delayms(3000); BEEP = 1;LED9 = 1; delayms(1000); /*/void led_display_zero() /數(shù)碼管清零并直流電動機停止 蜂鳴器響三下 beep();PWM = 1;while(1) unsigned int i = 0; unsigned int LedNumVal = 0; PWM = 1; if(key_

33、wash_dehydration =0)/洗滌后脫水按下鍵跳出 LED3 =1;LED4 =0;LED6 =0;break; LedOut0=Disp_TabLedNumVal%1000/100|0x80; /百位帶小數(shù)點 LedOut1=Disp_TabLedNumVal%100/10; /十位 LedOut2=Disp_TabLedNumVal%10; /個位 for( i=0; i<3; i+) P1= LedOuti; switch(i) case 0:LS138A=1; LS138B=0; LS138C=0; break; case 1:LS138A=0; LS138B=1;

34、LS138C=0; break; case 2:LS138A=0; LS138B=0; LS138C=1; break;default:break; delay(10); P1 = 0x00; /*/void led_display_over() /數(shù)碼管清零并直流電動機停止 蜂鳴器響三下 beep();PWM = 1;while(1) unsigned int i = 0; unsigned int Led = 0; LED1 = 1; /啟動指示燈 LED2 = 1; /暫停指示燈 LED3 = 1; /洗滌指示燈 LED4 = 1; /脫水指示燈 LED5 = 1; /進水閥指示燈 LE

35、D6 = 1; /排水閥指示燈 LED7 = 1; /水位滿指示燈 LED8 = 1; /機蓋松指示燈 LED9 = 1; /出水閥指示燈 if(key_move_stop =0)/脫水后按下鍵跳出 LED1 = 0; /啟動指示燈 LED2 = 1; /暫停指示燈 LED3 = 1; /洗滌指示燈 LED4 = 1; /脫水指示燈 LED5 = 0; /進水閥指示燈 LED6 = 1; /排水閥指示燈 LED7 = 1; /水位滿指示燈 LED8 = 1; /機蓋松指示燈 LED9 = 1; /報警指示燈 break; LedOut0=Disp_TabLed%1000/100|0x80; /

36、百位帶小數(shù)點 LedOut1=Disp_TabLed%100/10; /十位 LedOut2=Disp_TabLed%10; /個位 for( i=0; i<3; i+) P1= LedOuti; switch(i) case 0:LS138A=1; LS138B=0; LS138C=0; break; case 1:LS138A=0; LS138B=1; LS138C=0; break; case 2:LS138A=0; LS138B=0; LS138C=1; break;default:break; delay(10); P1 = 0x00; /*/void cap_open() /

37、數(shù)碼管清零并直流電動機停止 蜂鳴器響三下 beep(); /需要復(fù)位跳出PWM = 1;while(1) unsigned int i = 0; unsigned int LedNum = 0; LedOut0=Disp_TabLedNum%1000/100|0x80; /百位帶小數(shù)點 LedOut1=Disp_TabLedNum%100/10; /十位 LedOut2=Disp_TabLedNum%10; /個位 for( i=0; i<3; i+) P1= LedOuti; switch(i) case 0:LS138A=1; LS138B=0; LS138C=0; break; c

38、ase 1:LS138A=0; LS138B=1; LS138C=0; break; case 2:LS138A=0; LS138B=0; LS138C=1; break;default:break; delay(10); P1 = 0x00; /*/void led_display_move() /數(shù)碼管計時并直流電動機運轉(zhuǎn)while(1) PWM = 0; if(LedNumVal = 101) /計時到100時自動清零并蜂鳴器響三下 LedNumVal = 0; TR0 = 0; break; if(key_move_stop =0) movenum+;if(movenum%2=1) L

39、ED1 = 1; /啟動指示燈 LED2 = 0; /暫停指示燈 TR0 = 0; /關(guān)閉定時器0 else LED1 = 0;LED2 = 1;TR0 = 1; /開啟定時器0 while(key_move_stop =0); /等待按鍵釋放 LedOut0=Disp_TabLedNumVal%1000/100|0x80; /百位帶小數(shù)點 LedOut1=Disp_TabLedNumVal%100/10; /十位 LedOut2=Disp_TabLedNumVal%10; /個位 for( i=0; i<3; i+) P1 = LedOuti; switch(i) case 0:LS1

40、38A=1; LS138B=0; LS138C=0; break; case 1:LS138A=0; LS138B=1; LS138C=0; break; case 2:LS138A=0; LS138B=0; LS138C=1; break; default:break; delay(10);P1 = 0x00; /*/void move_stop_led()m+;if(m = 1) EX0=1; /外部中斷0允許中斷 水位檢測 LED1 = 0; /啟動指示燈 LED2 = 1; /暫停指示燈 LED3 = 1; /洗滌指示燈 LED4 = 1; /脫水指示燈 LED5 = 0; /進水閥指

41、示燈 LED6 = 1; /排水閥指示燈 LED7 = 1; /水位滿指示燈 LED8 = 1; /機蓋松指示燈 LED9 = 1; /報警指示燈else if(m>1)&&(m%2=1) LED1 = 0; /啟動指示燈 LED2 = 1; /暫停指示燈else LED1 = 1; /啟動指示燈LED2 = 0; /暫停指示燈 TR0 = 0; /停止定時器工作 /*/void wash_dehydration_led()static unsigned int j = 0;j+;if(j%2 = 1) /啟動并洗滌 LED1 = 0; /啟動指示燈 LED2 = 1;

42、/暫停指示燈 LED3 = 0; /洗滌指示燈 LED4 = 1; /脫水指示燈 LED5 = 1; /進水閥指示燈 LED6 = 1; /排水閥指示燈 LED7 = 1; /水位滿指示燈 LED8 = 1; /機蓋松指示燈 LED9 = 1; /報警指示燈led_display_move();led_display_zero(); else /啟動并脫水LED1 = 0; /啟動指示燈 LED2 = 1; /暫停指示燈 LED3 = 1; /洗滌指示燈 LED4 = 0; /脫水指示燈 LED5 = 1; /進水閥指示燈 LED6 = 0; /排水閥指示燈 LED7 = 1; /水位滿指示燈 LED8 = 1; /機蓋松指示燈 LED9 = 1; /報警指示燈led_display_move();led_display_over();/*/void

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論