欧洲精品久久久av无码电影,日日噜噜夜夜爽爽,精品无码国产自产拍在线观看蜜,人妻少妇被粗大爽9797pw,羞国产在线拍揄自揄视频,国产白嫩漂亮美女在线观看,天码欧美日本一道免费,av大片在线无码免费

      歡迎來(lái)到同城快修-附近家電維修、家電清洗、家電安裝服務(wù)平臺(tái)

      24小時(shí)家電維修熱線:

      400—1558638

      當(dāng)前位置:主頁(yè) > 空調(diào) > 維修資訊 >

      成都金羚洗衣機(jī)維修(金羚洗衣機(jī)維修部)

      發(fā)布日期:2022-11-01 21:40:52 瀏覽:
      成都金羚洗衣機(jī)維修(金羚洗衣機(jī)維修部)

      前沿拓展:


      (一)洗衣機(jī)故障檢修

      我們有個(gè)老舊的全自動(dòng)洗衣機(jī),是廣東產(chǎn)的“愛(ài)德牌”。14年前因?yàn)槌霈F(xiàn)無(wú)法排水故障,另外買了個(gè)金鈴洗衣機(jī)。當(dāng)時(shí)看它各個(gè)部件和外觀都還挺好,想留待有空時(shí)再檢修,就沒(méi)有丟棄它。

      最近想騰空雜物房,就考慮是否該丟棄這洗衣機(jī)了?考慮到擱置十多年,各個(gè)部件和馬達(dá)都應(yīng)該銹蝕死了。但通電試機(jī),沒(méi)想到它的馬達(dá)還能正常運(yùn)轉(zhuǎn)。試運(yùn)行它的“無(wú)水試機(jī)程序”,還能正常洗滌和進(jìn)出水。灌水進(jìn)去試,可以洗衣服,但排水只能排一半就停機(jī)了,也不能甩干。

      拆開(kāi)背蓋,看到主軸上有個(gè)離合器,通過(guò)皮帶和齒輪與馬達(dá)連接,但我完全看不明白它的工作原理。只好上網(wǎng),查找該洗衣機(jī)的電路圖和相關(guān)維修資料,其中有關(guān)離合器的工作原理介紹如下:

      ====

      減速離合器洗滌工作過(guò)程:進(jìn)入洗滌程序時(shí),排水電磁鐵斷電,剎車桿在彈簧力的作用下,針剎車鎖定,使脫水軸不能轉(zhuǎn)動(dòng)。同時(shí)剎車桿上一撥叉棘爪將棘輪撥過(guò)一個(gè)角度,方絲離合彈簧固定在棘輪壁上的這一端被撥動(dòng),另一端處于自由狀態(tài),離合套與外套軸分離,由丁方絲離合彈簧被撥松,洗滌軸與脫水軸分離,當(dāng)電動(dòng)機(jī)轉(zhuǎn)動(dòng)時(shí),V帶傳動(dòng),從大帶輪傳過(guò)來(lái)的轉(zhuǎn)動(dòng)通過(guò)齒輪軸傳至行星減速器,減速后由波輪軸傳出,帶動(dòng)波輪旋轉(zhuǎn)。

      洗滌時(shí),電動(dòng)機(jī)運(yùn)轉(zhuǎn),通過(guò)減速離合器,降低轉(zhuǎn)速帶動(dòng)波輪間歇正反轉(zhuǎn),進(jìn)行洗滌,此時(shí)洗滌脫水桶不轉(zhuǎn)動(dòng);脫水時(shí),電動(dòng)機(jī)運(yùn)轉(zhuǎn),通過(guò)離合器,不減速(即高速)帶動(dòng)脫水桶順時(shí)針?lè)较蜻\(yùn)轉(zhuǎn),進(jìn)行脫水,此時(shí)波輪也隨著脫水桶一起運(yùn)轉(zhuǎn)。

      圖1)

      ==

      上述信息我反復(fù)琢磨半天仍不得要領(lǐng),只是粗略了解其大概工作原理。沒(méi)辦法,邊干邊體會(huì)吧!

      為了便于檢修,我拆開(kāi)洗衣機(jī)蓋板(控制主板、進(jìn)水電磁閥、水位傳感器都固定在蓋板上)。由于外殼不好拆卸,我就把整個(gè)洗衣機(jī)翻轉(zhuǎn)過(guò)來(lái)。下圖2+圖3是離合器與排水電磁鐵(通過(guò)電磁鐵動(dòng)作牽引排水閥)結(jié)構(gòu)外觀—俯視圖和側(cè)視圖:

      圖2)離合器 圖3)排水電磁鐵

      我琢磨:我的洗衣機(jī)能夠正常洗滌,說(shuō)明馬達(dá)及離合器沒(méi)太大問(wèn)題。排水只能排一半,說(shuō)明排水電磁閥也沒(méi)完全損壞,很可能是電磁鐵芯生銹導(dǎo)致行程受阻,離合桿和棘爪也沒(méi)能移動(dòng)到位,以致影響馬達(dá)帶動(dòng)不了脫水桶甩干。我試用起子撬動(dòng)電磁鐵芯,強(qiáng)行讓離合桿和棘爪移動(dòng)到位,并轉(zhuǎn)到皮帶輪,發(fā)現(xiàn)脫水桶是可以旋轉(zhuǎn)的,這說(shuō)明離合器并沒(méi)有銹蝕,問(wèn)題可能就是電磁鐵芯吸合不到位。

      找點(diǎn)機(jī)油涂抹到電磁鐵芯和相關(guān)驅(qū)動(dòng)機(jī)件上,多次運(yùn)行脫水程序,給電磁鐵反復(fù)通電吸合再釋放。最后放水試機(jī),洗滌和脫水都正常了。但又發(fā)生開(kāi)機(jī)進(jìn)水不停,似乎是水位傳感器有問(wèn)題,導(dǎo)致單片機(jī)檢測(cè)不到有水信號(hào),機(jī)器就不能開(kāi)始洗滌程序。

      愛(ài)德洗衣機(jī)的水位傳感器在市面上也沒(méi)有找到合適的替代品。從電路圖看不出水位傳感器的工作原理,我從網(wǎng)上找到資料有如下介紹:

      =

      圖4為該水位傳感器的結(jié)構(gòu)示意圖,下部的氣室加橡皮膜組成壓力傳感部分,上部的活動(dòng)磁芯和線圈與振蕩電路板一起組成LC振蕩電路。 工作時(shí),隨著水位的升高,氣室中的壓力也升高。當(dāng)壓力升高到一定值時(shí),橡皮膜推塑料盤頂著磁芯上移,電感線圈的電感發(fā)生變化,LC振蕩電路的振蕩頻率也發(fā)生相應(yīng)變化。當(dāng)頻率達(dá)到程序控制器預(yù)定值后(表示預(yù)定水位),程序控制器便發(fā)出指令停止進(jìn)水,并轉(zhuǎn)入洗滌程序。水位傳感器在出廠前,振蕩頻率定為高水位頻率22.60kHz,空水位頻率25.20kHz。 水位越低,傳感器輸出的信號(hào)頻率越高。

      =

      網(wǎng)上的上述信息與愛(ài)德洗衣機(jī)的水位傳感器情況吻合。我拆開(kāi)我們的水位傳感器,發(fā)現(xiàn)其橡皮膜已經(jīng)老化開(kāi)裂,怪不得不能工作了。我找氣球等類似材料替代原橡皮膜換上,水位傳感器又能工作了。不過(guò)水位感應(yīng)誤差變大了,通過(guò)調(diào)節(jié)傳感器里面的螺絲,可以部分彌補(bǔ)誤差。但最后只能使用“中低水位”,如果用高水位,結(jié)果進(jìn)水到水溢出了,洗衣機(jī)仍會(huì)以為水位不夠而不斷進(jìn)水。為了廢物利用,我只好將就地用“中低水位”來(lái)洗衣服了!

      3點(diǎn)備忘錄:

      (1)洗衣機(jī)的開(kāi)蓋安全開(kāi)關(guān)SA1有防抖動(dòng)功能:當(dāng)洗衣機(jī)脫水時(shí),如果衣物堆放不勻,致使脫水桶劇烈振動(dòng),以幾十周的頻率撞擊安全開(kāi)關(guān)SAI的傳感桿, SA1連續(xù)輸出通、斷信號(hào),微處理器(單片機(jī))發(fā)出糾正指令,使洗衣機(jī)進(jìn)入停水→進(jìn)水一漂洗一排水一脫水程序,以便消除衣物擺放不勻造成的振動(dòng)。如果反復(fù)幾次不能消除該現(xiàn)象,單片機(jī)會(huì)令洗衣機(jī)進(jìn)入脫水保護(hù)狀態(tài)。該開(kāi)關(guān)還有脫水時(shí)開(kāi)蓋斷電功能,我使用感覺(jué)不太方便,就將其拆除了。以后不管是否開(kāi)蓋,洗衣機(jī)都可以照樣脫水。

      (2)排水電磁鐵標(biāo)牌工作電壓是直流198V,從電路圖上看不出直流198V電壓的電路(其電源通斷由雙向可控硅控制)。實(shí)測(cè)工作電壓是直流202V,用交流檔測(cè)是96V交流這可能是由220V交流半波整流得到的脈動(dòng)直流。

      (3)該洗衣機(jī)的電路原理圖如下(圖5):

      圖5

      圖6)洗衣機(jī)控制面板外觀

      =======================

      (二)全自動(dòng)洗衣機(jī)硬件修改及軟件設(shè)計(jì)

      洗衣機(jī)用一段時(shí)間后,又發(fā)生洗衣到最后階段“甩干排水”時(shí)就停機(jī)了。檢查各個(gè)硬件未見(jiàn)有問(wèn)題,估計(jì)是單片機(jī)程序因?yàn)槟炒螣o(wú)意的錯(cuò)誤碰觸高壓打火干擾,導(dǎo)致軟件意外被修改?盡管這個(gè)可能性“很扯”,反正洗衣機(jī)就是可以循環(huán)3次洗滌和進(jìn)水+排水,但最后一次的“甩干排水”就不執(zhí)行了。

      我試運(yùn)行產(chǎn)品的無(wú)水洗衣模擬測(cè)試程序,洗滌進(jìn)出水各個(gè)功能都是正常的(說(shuō)明洗衣機(jī)的硬件沒(méi)問(wèn)題)。因?yàn)樵摦a(chǎn)品配有參考電路圖,我手頭又有好幾個(gè)洗衣機(jī)的例程,干脆嘗試更換單片機(jī),自己重寫程序看看效果如何。

      開(kāi)始以為這是很簡(jiǎn)單的工作,真正動(dòng)手時(shí),才發(fā)現(xiàn)問(wèn)題多多。

      最主要問(wèn)題是原機(jī)單片機(jī)不知道是什么型號(hào)?其引腳排列和51系列產(chǎn)品完全不同,這就導(dǎo)致硬件工作量大為增加,比自己另外做一個(gè)洗衣機(jī)的工作量還要大。

      下圖6+圖7,先將原單片機(jī)拆焊下來(lái),加一個(gè)單片機(jī)插座,以便以后可以隨意更換單片機(jī)。

      圖6)已經(jīng)拆下了原單片機(jī)的部分電路板

      圖7)加焊了一個(gè)單片機(jī)插座

      圖8)原單片機(jī)底部引腳布線

      圖9)更換51單片機(jī)后,重新更改的引腳走線。

      圖10)最后修改好的電路板。

      硬件修改完成后,在進(jìn)行實(shí)際軟件設(shè)計(jì)時(shí),才發(fā)現(xiàn)要按照原硬件原理圖接線來(lái)設(shè)計(jì)軟件,會(huì)有很多無(wú)法躲避的麻煩。

      第一個(gè)難點(diǎn):由于該單片機(jī)的硬件接口有限,原洗衣機(jī)操作面板顯示不同工作狀態(tài)的的14個(gè)LED燈與2個(gè)數(shù)碼管是共用單片機(jī)端口端口,軟件編程時(shí)就不能簡(jiǎn)單地令某個(gè)端口變高或變低電平來(lái)控制LED的亮滅,這樣會(huì)導(dǎo)致數(shù)碼管亂閃。反之亦然,數(shù)碼管顯示時(shí),LED也會(huì)亂閃。如何通過(guò)控制4個(gè)片選三極管來(lái)分時(shí)顯示LED和數(shù)碼管,浪費(fèi)了我很多測(cè)試時(shí)間。

      第二個(gè)難點(diǎn):我是用定時(shí)器做洗衣程序調(diào)度器,單片機(jī)給洗衣機(jī)按鍵、LED、數(shù)碼管和馬達(dá)按不同時(shí)間間隙執(zhí)行不同的動(dòng)作,這比順序循環(huán)運(yùn)行的軟件設(shè)計(jì)及調(diào)試要麻煩很多。陸陸續(xù)續(xù)搞了很長(zhǎng)時(shí)間才把程序走通。

      第三個(gè)難點(diǎn):水位傳感器沒(méi)買到合適產(chǎn)品,自己換氣室的薄膜后,重新測(cè)試高中低不同水位對(duì)應(yīng)不同輸出電壓值。期間要反復(fù)進(jìn)水排水測(cè)試,也是挺費(fèi)神的。最尷尬的是,我是在住房室內(nèi)進(jìn)行將水位和軟硬件聯(lián)合測(cè)試的。某次測(cè)試后,洗衣機(jī)沒(méi)排水就撂下不管了。結(jié)果我外出辦事半天后,洗衣機(jī)排水閥發(fā)生漏水故障,洗衣機(jī)里的水全漏出來(lái),房間泡了1厘米的水,還通過(guò)地板裂縫漏到樓下鄰居的臥房,把人家的床鋪被子和床墊全淋濕透了。最后硬著頭皮給人家道歉、賠錢,過(guò)后很長(zhǎng)時(shí)間都不好意思面對(duì)人家,真是難堪死了!

      (三)最后實(shí)現(xiàn)的軟硬件情況說(shuō)明:

      洗衣機(jī)是用STC89C52RC或STC89C54RC類單片機(jī),水位傳感器是用電感式震蕩電路。為了節(jié)省端口,洗衣?tīng)顟B(tài)顯示的14個(gè)發(fā)光二極管是與2個(gè)LED數(shù)碼管共用端口的,由4個(gè)三極管(VT7VT10)驅(qū)動(dòng)發(fā)光,并經(jīng)軟件分時(shí)控制來(lái)輪流顯示,這導(dǎo)致了系統(tǒng)軟件的復(fù)雜和不易讀懂。

      全自動(dòng)洗衣機(jī)實(shí)際產(chǎn)品應(yīng)用程序功能:

      洗衣進(jìn)程有3種:全洗衣(洗滌+漂洗+甩干);漂洗甩干;單獨(dú)甩干。

      洗衣模式有2種:標(biāo)準(zhǔn)、省時(shí)。

      水位設(shè)定有4種:高,中,低2,低1。

      按下起動(dòng)按鍵后,洗衣機(jī)開(kāi)始進(jìn)水,到達(dá)設(shè)定水位后停止進(jìn)水。緊接著電動(dòng)機(jī)開(kāi)始正反轉(zhuǎn)運(yùn)行,每次正反轉(zhuǎn)由四個(gè)節(jié)拍組成:

      1)正轉(zhuǎn)= 510秒; 2)停轉(zhuǎn)= 34秒; 3)反轉(zhuǎn)= 510秒; 4)停轉(zhuǎn)= 34秒。

      進(jìn)水= 3分鐘,洗滌= 省時(shí)39分鐘/標(biāo)準(zhǔn)51分鐘,排水=3分鐘,脫水=1.5分鐘。脫水時(shí)電動(dòng)機(jī)正轉(zhuǎn)90秒(Tspin_Minute)。

      預(yù)定洗滌時(shí)間完成后,就排水和甩干。到達(dá)預(yù)定的3次循環(huán)洗滌排水周期后,洗衣過(guò)程結(jié)束,并發(fā)出提醒蜂鳴聲。全過(guò)程約為省時(shí)39分鐘/標(biāo)準(zhǔn)51分鐘。

      為防止意外,在進(jìn)水和排水期間,如果超過(guò)80秒水位都沒(méi)變化,便認(rèn)為進(jìn)出水有故障而停機(jī)報(bào)警。

      =

      (四)全自動(dòng)洗衣機(jī)主要源碼

      //洗滌方式選擇

      //標(biāo)準(zhǔn)洗滌程序=1,經(jīng)濟(jì)=2, F_Normal=1, F_Econormy=2,

      void key_scan() //可以選擇洗滌暫停菜單(改變洗滌方式)

      { static uchar Kpress_Count; //按鍵次數(shù)計(jì)數(shù)器

      if(Key_Start == 0) // = P33=Key_Start=開(kāi)始或暫停按鍵,按下鍵= 低電平0

      { Beep50();

      if(Key_Start == 0)

      { while(!Key_Start); //wait for key release

      if(flag_Washing ==0) //= 0表示還未開(kāi)始洗滌

      // 1th按下啟動(dòng)鍵=開(kāi)始,如果重復(fù)按&34;開(kāi)啟/暫停&34;key,其狀態(tài)flag_Washing會(huì)10反復(fù)轉(zhuǎn)換

      { flag_Washing = 1; //=1復(fù)位洗滌標(biāo)志,

      ET1=1; //打開(kāi)調(diào)度器(setting里會(huì)令ET1=0)

      if(Kpress_Count ==0) { //是1th按啟動(dòng)鍵嗎?

      //1th按啟動(dòng)鍵,Int1_Count=0.給&34;正常洗衣&34;參數(shù)賦值。2th,Int1_Count>=1,不必再給&34;正常洗衣&34;參數(shù)賦值,避免暫停洗衣后,重新運(yùn)行又賦初始值,導(dǎo)致半途洗衣定時(shí)不對(duì)。

      Kpress_Count++;

      wash_on(); //start washing

      }

      else Redo(); //redo washing, //允許定時(shí)器T1中斷并打開(kāi)水泵+1秒后,由T1中斷服務(wù)來(lái)打開(kāi)馬達(dá)

      }

      else if(flag_Washing) // 2th按下啟動(dòng)鍵=暫停

      { flag_Washing = 0; //==0表示暫停洗滌或進(jìn)出水

      ET1=0; //關(guān)閉調(diào)度器,顯示將不能刷新,令洗衣機(jī)暫停! Suspend();

      LED_Timer_on(); Beep50();

      }//end else

      }

      }

      }

      void Timer0_Init(void) //T0設(shè)為16位計(jì)數(shù)器,對(duì)信號(hào)脈沖進(jìn)行計(jì)數(shù)。

      { TMOD |= 0X05; //設(shè)16位計(jì)數(shù)工作方式1,手動(dòng)重裝計(jì)數(shù)初值 方式選擇位C/T=1=計(jì)數(shù)方式

      TH0=0; TL0=0; //計(jì)數(shù)器T0初值為0

      TR0=1; ET0=1;

      }

      void Timer2_Init(void)

      {// 復(fù)位時(shí), T2MOD=T2CON=00H,方式選擇位C/T=0=定時(shí)工作方式。

      T2CON=0;

      RCAP2H=(6553662500)>>8; //在程序初始化的時(shí)候給RCAP2L和RCAP2H賦值,

      RCAP2L=(6553662500)%256; //中斷產(chǎn)生時(shí)自動(dòng)使TH2=RCAP2H,TL2=RCAP2L。

      TH2=RCAP2H; TL2=RCAP2L;

      ET2=1; //打開(kāi)定時(shí)器2中斷

      TR2=1; //定時(shí)器2開(kāi)始計(jì)時(shí)

      }

      //T1=0001,設(shè)為16位定時(shí)工作方式1,作為1秒的調(diào)度器

      void Timer1_Init(void)

      { TMOD &= 0X0f; // 高位T1計(jì)數(shù)方式清0

      TMOD |= 0X10; // T1=計(jì)數(shù)方式1= 16位,

      //T1方式選擇位C/T=0=定時(shí)工作方式,定時(shí)方式1= 16位,不自動(dòng)重裝參數(shù)

      PreT1h= PreloadT1H; PreT1l= PreloadT1L;

      TH1= PreT1h; TL1= PreT1l;

      TR1 = 1; ET1=1;

      PT1= 1; //T1為最高優(yōu)先級(jí)

      }

      //水位脈沖從P3.4=T0輸入,要用到下面的中斷計(jì)數(shù):

      void timer0(void) interrupt 1 //16位計(jì)數(shù)器0溢出中斷

      {//計(jì)數(shù)溢出時(shí),中斷并累加計(jì)數(shù)(即每收到256個(gè)脈沖就中斷1次)。到1秒后,在T2中斷換算為頻率。

      TH0=00; TL0=00; //clear counter,正常時(shí),TH0和TL0記錄水位脈沖數(shù)

      }

      //在中斷服務(wù)里計(jì)算水位頻率F_level

      void timer2(void) interrupt 5 //12M晶振,定時(shí)器2中斷(62.5ms中斷一次,每半秒測(cè)一次),

      { TF2=0; //定時(shí)器2的中斷標(biāo)志位TF2不能夠由硬件清零,所以要在中斷服務(wù)程序中將其清零

      count_T2++;

      if (count_T2>=8) //定時(shí)0.5s時(shí)間到

      { TR0=0; //計(jì)數(shù)器停止計(jì)數(shù)

      count_T2=0; //中斷次數(shù)清0

      Led_1S= ~Led_1S; //=p16仿真時(shí)便于觀察

      //仿真時(shí),為了可以無(wú)水運(yùn)行,如下修改(還需將下面的水位采集語(yǔ)句屏蔽:=start

      if(W_progress==1) F_level= W_level; //進(jìn)水時(shí)W_level=W_MIDD=242;

      else if(W_progress==3) F_level= W_empty; //排水時(shí),W_empty=252=超過(guò)最低水位=無(wú)水

      //仿真時(shí),為了可以無(wú)水運(yùn)行,修改:=end

      F_level = (uint)((TH0<<8)+TL0)/50; //如果不用(uint)限定,F(xiàn)_level會(huì)變成0!!!

      //比較20S間隔內(nèi)2次水位,如果無(wú)變化,可能進(jìn)出水有問(wèn)題start

      T_in_out20s++ ;

      if(T_in_out20s ==40)

      { F_level_40= F_level; } //1th水位值存于F_level_40

      else if(T_in_out20s ==80) //(8040)0.5S=20S

      { F_level_80= F_level; } //2th水位值存于F_level_80

      TL0=0; TH0=0; //清零16位計(jì)數(shù)器T0

      TR0=1; //計(jì)數(shù)器T0開(kāi)始計(jì)數(shù)

      T2_FLAG=1; //標(biāo)志位置1=頻率計(jì)算結(jié)束標(biāo)志未用到

      }

      }

      //啟動(dòng)洗滌程序后,就交由調(diào)度器控制。

      void Timer1(void) interrupt 3 //1秒調(diào)度器

      { TH1= PreT1h; TL1= PreT1l; //reload 定時(shí)值PreloadT1H= (6553650000)>>8;

      if(T50ms_count++ >=20) // =1S interrupt (1)

      { T50ms_count = 0;

      if(flag_Washing==1) //=已經(jīng)按下啟動(dòng)鍵,運(yùn)行標(biāo)志,=1為已經(jīng)開(kāi)始運(yùn)行,0為暫停 (2)

      {

      Second; // 對(duì)各個(gè)洗滌進(jìn)程做減時(shí)計(jì)算 (在menu里已經(jīng)令Second=0)

      if((Second <=0)&&(Minute != 0)) //這是洗滌減一計(jì)時(shí)器。

      { Minute; Second = 59;

      if(T_all_reman < 0) T_all_reman=0; //顯示剩余時(shí)間

      } //Minute和Second 是各個(gè)洗滌階段的剩余耗時(shí)值

      // W_progress =0進(jìn)水,1洗滌,2馬達(dá)正反轉(zhuǎn), 3漂洗(排水),4甩干,

      if(W_progress==0) //(A)在wash_on()開(kāi)始后跳到這里

      { W_progress=1; Water_in(); //進(jìn)水時(shí)間在Water_in()定義

      T_in_out20s=0; err=0; } //清零進(jìn)出水測(cè)頻時(shí)間間隔

      else if(W_progress==1) //(A)在(W_progress==0)開(kāi)始進(jìn)水,0.5S后跳到這里

      { //li排水次數(shù)計(jì)數(shù)器Dump_count,初值=0,排一次水,運(yùn)行一次out(),

      //測(cè)試水位傳感器是否有問(wèn)題:start

      if(T_in_out20s >80) //T_in_out20s在T2累加,

      { //如果傳感器正常,無(wú)水時(shí)F_level>253,有水時(shí)0<F_level<253,

      T_in_out20s =0; //清零以便T2中斷再次保存水位值。

      if((F_level_40 & F_level_80) &&(F_level_40 ==F_level_80))

      //如果40S內(nèi)2次水位值不為0,而且相同,說(shuō)明水位傳感器有問(wèn)題。

      { if(err++>=2) W_progress=8; }

      }

      //end of測(cè)試水位傳感器是否有問(wèn)題:end

      if(F_level >W_level) // 檢測(cè)到預(yù)定水位W_level嗎?

      { if((Second<0)&&(Minute==0)) //水位未到,但超時(shí)

      { W_progress =8; } //=err, goto (F)超時(shí)處理

      } //進(jìn)水期間W_progress=1

      else if((F_level<=W_level)&&(F_level>0)) //如果未超時(shí),去洗滌

      { W_progress=2;

      xi(); Beep50(); } //去洗滌

      } //end of if(W_progress==1)

      else if(W_progress== 2) //(B)馬達(dá)正反轉(zhuǎn)時(shí)間控制

      { T_motor++; //正反轉(zhuǎn)控制計(jì)時(shí),

      if(Washprogram ==1) //=normal wash mode

      { //如果是1th,T_motor++=1

      switch(T_motor) //1th,T_motor=1=case1,每秒中斷后+1

      {

      //1th,電機(jī)右轉(zhuǎn)10秒;10th,電機(jī)停4秒;14th,電機(jī)左轉(zhuǎn)10秒;23th后,停止轉(zhuǎn)動(dòng)

      case 1: ZhengZhuan(); break; //第1秒,電機(jī)右轉(zhuǎn)

      case 10: Stop_Motor(); break; //第10秒,電機(jī)停

      case 14: FanZhuan(); break; //第14秒,電機(jī)左轉(zhuǎn)10秒

      case 23:Stop_Motor(); break; //第19秒,電機(jī)停4秒

      default: //第27秒后,如果洗滌時(shí)間未完,再去正轉(zhuǎn)

      if(T_motor>=27) { T_motor=0; }

      }

      }

      else if(Washprogram ==2) //=econormy wash mode

      {

      //if set minute=1,則每分鐘正反轉(zhuǎn)3.54次,然后甩干10秒=15聲,3個(gè)周期后=3分鐘,結(jié)束洗滌

      switch(T_motor) //1th,T_motor=1=case1,每秒中斷后+1

      {

      //1th,電機(jī)右轉(zhuǎn)5秒;6th,電機(jī)停3秒;7th,電機(jī)左轉(zhuǎn)5秒;13th后,停止轉(zhuǎn)動(dòng)。

      case 1: ZhengZhuan(); break; //第1秒,電機(jī)右轉(zhuǎn)5秒

      case 6: Stop_Motor(); break; //第6秒,電機(jī)停3秒

      case 9: FanZhuan(); break; //第9秒,電機(jī)左轉(zhuǎn)5秒

      case 14:Stop_Motor(); break; //第14秒,電機(jī)停3秒

      default: //第15秒后,如果洗滌時(shí)間未完,再去正轉(zhuǎn)

      if(T_motor>=17) { T_motor=0; }//17S后,從頭再來(lái)

      }

      }

      if((Second<=0)&&(Minute==0))

      //如果1th洗滌cycal時(shí)間到(Second=0xff=1)就排水

      { W_progress =3; Water_out(); } //goto 排水處理

      } //end of if(W_progress==2)

      else if(W_progress==3) //(C)如果排水完,就甩干。

      {

      //測(cè)試水位傳感器是否有問(wèn)題:start

      if(T_in_out20s >80) //T_in_out20s在T2累加,

      { //如果傳感器正常,無(wú)水時(shí)F_level>253,有水時(shí)0<F_level<253,

      T_in_out20s =0; //清零以便T2中斷服務(wù)里再次保存水位值。

      if((F_level_40 & F_level_80) &&(F_level_40 ==F_level_80))

      //如果40S內(nèi)2次水位值不為0,而且相同,說(shuō)明水位傳感器有問(wèn)題。

      { if(err++>=2) W_progress=8; }

      }

      //測(cè)試水位傳感器是否有問(wèn)題:end

      if((F_level <W_empty)&&(F_level>0)) //是否還有水?

      { if((Second<=0)&&(Minute==0)) //超時(shí)了,還沒(méi)排干水=err

      { W_progress =8; } //goto (F)超時(shí)處理

      }

      else if(F_level >= W_empty) //水確實(shí)排干了

      { // 如果無(wú)水....

      if(Wash_count < Wash_cycle) //水排干了,但洗滌次數(shù)未夠

      { W_progress =4;

      Tuoshui(); Wash_count++; } //水排干了,去脫水,

      else if(Wash_count >Wash_cycle) W_progress =9;

      //如果超過(guò)3次排水,不甩干就結(jié)束W_progress=9

      //如果是單獨(dú)排水,就設(shè)置Wash_count =Wash_cycle+1 >3,所以只排水一次,不甩干就結(jié)束

      }

      } //end of if(W_progress==3)

      else if(W_progress==4) //(D) 甩干完了,進(jìn)水或結(jié)束

      { if((Second<=0)&&(Minute==0)) // 甩干時(shí)間到否?

      {// Wash_cycle =洗滌次數(shù)=3次=(進(jìn)水+洗滌+排水+甩干)3

      if(Wash_count >=Wash_cycle) //甩干時(shí)間到了,結(jié)束洗滌

      { W_progress =9; } //goto (G)=over()

      else

      { W_progress =0; Water_in(); }

      //甩干時(shí)間到,但洗滌未夠3次,Wash_count<Wash_cycle,繼續(xù)洗滌

      }

      } //end of if(W_progress==4)

      //===============================================

      else if(W_progress== 8) //(F)err超時(shí)處理

      { T_all_reman=99; Second=0; Minute=0; Beep300();

      err =1; Stop_Motor();

      Pump_out_off(); Pump_in_off();

      }

      else if(W_progress==9) //(G)洗滌結(jié)束

      { T_all_reman=88; Second=0; Minute=0; over(); }

      //===================================================

      } //end of if(!flag_Washing) //按下啟動(dòng)鍵 (1)end

      } //end of if(T50ms_count++>=20)(2)end

      }

      //由于LED與SEG共用P0口,所以必須用輪流顯示LED,數(shù)碼管由中斷刷新

      void Led_Update(void)

      { Seg_disable(); //數(shù)碼管不顯示

      Show_water_led(); Delay_1ms(1); //須延時(shí)1MS才能看到LED亮

      Show_progress_led(); Delay_1ms(1);

      Show_program_led(); Delay_1ms(1);

      if(f_Ledtimer == 1)

      { LED_Timer_on(); Delay_1ms(1); } //定時(shí)器LED亮,暫停時(shí)LED_Timer=on

      else LED_Timer_off(); //正常工作時(shí)LED_Timer=off

      }

      /管腳初始化程序/

      void InitAll(void)

      { // LED_Regular =ON; //ON=1,默認(rèn)為標(biāo)準(zhǔn)程序,燈亮

      Pump_in = OFF; //OFF=0; 進(jìn)水控制,關(guān), 單個(gè)反相器驅(qū)動(dòng)

      Pump_out= 1; // P2^0=排水控制,1=關(guān),因?yàn)楸救肆砑佑?個(gè)反相器串聯(lián)電路

      Motor_R = OFF; //電機(jī)正轉(zhuǎn),不走=OFF=0, 單個(gè)反相器驅(qū)動(dòng)

      Motor_L = OFF; //電機(jī)反轉(zhuǎn),不走=OFF=0, 單個(gè)反相器驅(qū)動(dòng)

      Beeper = OFF; //報(bào)警喇叭,不叫=OFF=0

      P1= 0xef; //let P1口為輸入= 3個(gè)按鍵=P12P14P15,注意:P17=beeper=0不響

      K_program= 1; //let P33口為輸入,K_program = P3^3=啟停按鍵1=int1 port

      //標(biāo)志清零:

      flag_Washing =0; //運(yùn)行標(biāo)志,1為已經(jīng)開(kāi)始運(yùn)行,0為暫停

      f_Ledtimer =0; // 控制LED亮或滅的標(biāo)志,timer_led=off=0

      F_level=W_empty; // F_level是檢測(cè)到的水位頻率,

      W_level=W_MIDD; // W_level是預(yù)置的水位,W_MIDD=242,中LED=亮,

      Level_case = F_MIDD; //設(shè)置水位時(shí)的增量累加器=1234=highmiddlelow2low1,

      T_Normal_min=9; //=9對(duì)應(yīng)=93+24=51分鐘

      T_Normal_sec=0;

      T_Econormy_min=5; //=5對(duì)應(yīng)=53+24=39分鐘 =省時(shí)洗滌,仿真=1

      T_Econormy_sec=0;

      //進(jìn)出水+甩干的時(shí)間

      Tin_Minute = 3; //waterin時(shí)間 =3分鐘

      Tin_Second = 0; // =秒

      Tout_Minute = 3; //waterout時(shí)間=3分鐘

      Tout_Second = 0;

      Tspin_Minute= 1; //甩干時(shí)間=1分30秒,如果2分鐘可能會(huì)太長(zhǎng).

      Tspin_Second= 30; //如果仿真用30秒

      T_in_out20s = 0; //20S時(shí)間間隔計(jì)數(shù)器用于每20S測(cè)試一次進(jìn)出水,看是否正常?

      F_level_40 = 0;

      F_level_80 = 0; //80S間隔水位頻率暫存值,比較其變化值來(lái)判斷進(jìn)出水是否正常?

      Wash_count =0; //實(shí)際循環(huán)洗滌次數(shù)計(jì)數(shù)器=清零

      Wash_cycle = 3; //循環(huán)洗滌次數(shù)(一個(gè)循環(huán)=進(jìn)水+洗滌+脫水)=3是標(biāo)準(zhǔn)洗滌次數(shù)

      W_progress = 0; // 工作狀態(tài)跳轉(zhuǎn)控制標(biāo)志=0進(jìn)水(浸泡),1洗滌,2排水,3甩干

      Washprogram= 2; //1=標(biāo)準(zhǔn),2=省時(shí)

      if(Washprogram== 1) //1=標(biāo)準(zhǔn),2=省時(shí)

      { Txi_Minute = T_Normal_min; //正常洗滌=7分3,對(duì)應(yīng)=21分鐘;仿真時(shí)=0分鐘+30秒

      Txi_Second = T_Normal_sec;

      }

      else

      { Txi_Minute = T_Econormy_min; //省時(shí)洗滌=5分3,對(duì)應(yīng)=15分鐘;仿真時(shí)=0分鐘+30秒

      Txi_Second = T_Econormy_sec;

      }

      }

      //==================================

      void main()

      { uchar Tms=500; //延時(shí)顯示參數(shù)實(shí)際應(yīng)用=APP=500

      InitAll(); //管腳初始化,報(bào)警喇叭,進(jìn)水、排水、電機(jī)正轉(zhuǎn)反轉(zhuǎn)均=關(guān)閉

      Beep50(); //Beeper=0=stop蜂鳴器, =1=響=p17

      Timer1_Init(); // T1作調(diào)度器

      Timer0_Init(); // 定時(shí)器0中斷作為水位檢測(cè)脈沖計(jì)數(shù)

      Timer2_Init(); // 定時(shí)器2中斷計(jì)時(shí),將T0的頻率計(jì)數(shù)轉(zhuǎn)為頻率

      EA=1;

      T_all_reman= T_all; //T_all(洗滌總時(shí)長(zhǎng));T_all_reman=洗滌剩余時(shí)間

      while(1)

      {

      //設(shè)置洗滌參數(shù):

      if(flag_Washing==0) //如果在暫停狀態(tài)(首次開(kāi)機(jī)或按了暫停鍵)才可以設(shè)置洗滌參數(shù)

      {

      Set_Level_case(); //設(shè)置水位, =key2=p13, Level_case++;

      //改變洗滌進(jìn)程:

      Set_progress(); //progress=key3=p15,

      //改變洗滌方式:

      Set_program(); //program=key4,洗滌方式:F_Normal=1, F_Econormy=2,

      ET1= 0; //調(diào)度器T1關(guān)中斷,調(diào)度器不工作,停止循環(huán)顯示,

      }

      key_scan(); //選擇&34;啟動(dòng)/暫停&34;

      //=key scan + wash start。如果開(kāi)始洗滌,就從wash_on()開(kāi)始

      Led_Update(); //洗衣?tīng)顟B(tài)的LED顯示

      Seg_Update(); //輪流顯示水位和剩余洗滌時(shí)間

      //因?yàn)樵囘\(yùn)行出錯(cuò)時(shí),調(diào)度器里不能關(guān)斷pumpin,所以這里加err超時(shí)處理

      if((F_level <W_OVER)||(F_level==W_ERR))

      // 檢測(cè)到的水位F_level有問(wèn)題,W_ERR=0,W_OVER=220=過(guò)高水位

      { W_progress=8; T_all_reman=99;

      Second=0; Minute=0; Beep300();

      Stop_Motor(); Pump_out_off(); Pump_in_off();

      }

      }

      }

      //程序結(jié)束。

      20220814

      拓展知識(shí):

      主站蜘蛛池模板: 国产精品欧美亚洲| 在线日本国产成人免费不卡| 91亚洲综合| 自拍 另类 综合 欧美小说| av在线播放日韩亚洲欧| 久久合| 欧美成人性色| 亚洲人成网站18禁止人| 午夜一区二区三区| 不卡的毛片| av色欲无码人妻中文字幕| 国产精品少妇酒店高潮| 欧美一级特黄视频| 日韩亚洲在线观看| 国产无套中出学生姝| 黄色三级网站| 成人在线电影网站| 性色av免费观看| 啪啪激情婷婷久久婷婷色五月 | 欧美黑人巨大videos精品男男| 国产拍拍拍| 久草福利免费| 亚洲午夜免费福利视频| 亚洲另类国产综合小说| av在线入口| 人妻无码av中文系列久| 精品伊人久久久大香线蕉下载| 久久免费精品视频| 久久爱99| 国产精品无码av在线播放| 亚洲无线码高清在线观看| 亚洲精品永久免费| 四虎在线免费| 性啪啪chinese东北女人| 亚洲另类激情专区小说| 久久中出| 婷婷精品一区二区三区| 亚洲国产精品一区二区成人片国内 | 亚洲gv永久无码天堂网| 日韩精品三级| 日韩黄色网页|