久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27111|回復: 19
打印 上一主題 下一主題
收起左側(cè)

單片機全自動洗衣機程序+仿真+原理圖設(shè)計調(diào)試與分析

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:438351 發(fā)表于 2018-12-3 21:34 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


學習電機驅(qū)動、繼電器的原理及編程方法。
學習鍵盤的原理及編程方法。
掌握51單片機定時器與中斷的使用。

  2、要求
  • 請參照主要技術(shù)指標和說明完成本次設(shè)計。
  • 畫出硬件連接電路圖,說明各個控制信號的作用。
  • 畫出程序流程圖,編寫程序,硬件連接調(diào)試,直至正確。
  • 編寫設(shè)計文檔。
三、主要技術(shù)指標和說明
● 由獨立式按鍵確定功能鍵,包括“標準”、“經(jīng)濟”、“單獨”、“排水”、“強洗”、“弱洗”等等;
● 排水與進水由時間控制;
● 開機默認狀態(tài)為標準方式、強洗;
● 在洗滌和漂洗過程中,電動機正轉(zhuǎn)一次,反轉(zhuǎn)一次,連續(xù)運行;
● 在進水和脫水過程中,相應指示燈亮,繼電器吸合;
● 當在執(zhí)行某個步驟時,只有“K3”鍵有效,按下暫停,再按下恢復運行。

摘要

全自動洗衣機就是將洗衣的全過程(泡浸-洗滌-漂洗-脫水)預先設(shè)定好N個程序,洗衣時選擇其中一個程序,打開水龍頭和啟動洗衣機開關(guān)后洗衣的全過程就會自動完成,洗衣完成時由蜂鳴器發(fā)出響聲。洗衣機的標準洗衣程序是:洗滌——脫水——脫水——漂洗——脫水——漂洗——脫水。經(jīng)濟洗衣程序少一次漂洗和脫水過程。
洗衣機控制器由單片機作為控制器的核心所構(gòu)成,該控制器具有以下特點:
(1)具有較強的抗干擾能力,當受到外部強干擾,程序出錯時,可以自動使系統(tǒng)復位重新執(zhí)行程序。
(2)采用無噪聲、無電磁干擾的雙向晶閘管作為控制元件,控制電磁閥和電機。
(3)具有欠壓和過壓保護,欠壓時,控制器不工作;超壓時,保護電路起作用。
(4)具有瞬間掉電保護功能,電源短時間停電后,電壓恢復時,能夠維持原運行程序的工作狀態(tài)并繼續(xù)完成洗衣程序。
(5)各種操作和洗衣機的運行狀態(tài)均用LED顯示.
一、設(shè)計任務與要求
利用51單片機模擬全自動智能洗衣機。
  • 按鍵功能要求
  • 通過“K1”鍵步進改變“標準]經(jīng)濟、單獨、排水”四種方式,執(zhí)行相應的程序。對應指示燈亮。
  • 通過“K2”鍵步進改變“強洗、弱洗”兩種方式,執(zhí)行相應的程序,對應指示燈亮。
  • 通過“K3”鍵控制洗衣機運行、暫停和解除報警功能。
  • 方式功能選擇要求
一般洗衣機的步驟為:洗滌,漂洗,脫水,當處于某種狀態(tài)時,對應的指示燈以0.7S周期閃爍,當洗衣機在洗滌過程中,洗滌指示燈閃爍。可以通過方式選擇設(shè)定具體的運行過程。
  • 標準方式:進水—> 洗滌 —> 排水 —> 進水 —> 漂洗 —> 排水 —>進水 —> 漂洗—> 排水 —> 脫水。
  • 經(jīng)濟方式:進水 —> 洗滌 —> 排水 —> 進水 —> 漂洗 —> 排水 —> 脫水。
  • 單獨方式:進水 —> 洗滌。
  • 排水方式:排水 —> 脫水。
  • 強洗即電動機轉(zhuǎn)速快,弱洗即電動機轉(zhuǎn)速慢。
  • 整機功能要求
  • 開機默認狀態(tài)為標準方式、強洗。
  • 在洗滌和漂洗過程中,電動機正轉(zhuǎn)一次,反轉(zhuǎn)一次,連續(xù)運行。
  • 在進水和脫水過程中,相應的指示燈亮,繼電器吸合。
  • 當執(zhí)行某個步驟時,只有“K3”鍵有效,按下暫停,再按恢復運行。
  • 方案設(shè)計與論證
全自動洗衣機的實現(xiàn)方案組成框圖如圖一所示。它主要有電源、單片機最小系統(tǒng)、開關(guān)檢測電路、控制按鍵輸入電路和LED指示電路、繼電器和電動機電路。
  • 硬件電路設(shè)計

圖二

  • 電動機驅(qū)動模塊電路設(shè)計
電動機驅(qū)動采用LD298電動機驅(qū)動芯片,單片機P25、P24與L298的IN1、IN2分別對應相連,ENA直接接VCC,后面所加4個二極管VD3到VD6起連續(xù)作用。電動機驅(qū)動電路原理圖如圖二所示。
  • 電源模塊電路設(shè)計
電動機驅(qū)動芯片的電源VCC和VS之間通過0歐的電阻R20進行隔離后,對LD298進行供電。
  • 控制按鍵
如圖二所示,K3鍵接到單片機的外部中斷0,通過中斷實現(xiàn)運行、暫停、繼續(xù)運行的控制功能,當K3鍵第一次按下時(num2=1)正常運行,當K3鍵第二次按下時(num2=2)暫停運行。
  • 進水閥和排水閥控制繼電器
如圖二所示,單片機的P23用來控制排水閥繼電器,P22用來控制進水閥繼電器,P22和P23對應輸出為0時對應的閥打開,輸出為1時對應的閥關(guān)閉。

軟件設(shè)計

1)流程圖

主程序流程圖如圖三所示。
  • 程序
程序附在最后

圖三

  • 調(diào)試與分析

1、軟件調(diào)試:

寫程序代碼時應先搭建好硬件電路,然后根據(jù)硬件電路寫程序代碼。在調(diào)試程序過程中,先保證程序能夠運行無錯誤,然后在燒到實物中觀察結(jié)果。

2、硬件調(diào)試:

硬件電路設(shè)計與軟件設(shè)計完成后,將程序燒寫到單片機中,觀察運行結(jié)果是否符合要求。如果不符合設(shè)計要求,應先檢查硬件是否能正常工作,如用實驗板自帶的正確代碼檢測硬件電路;然后根據(jù)設(shè)計要求到程序代碼中分模塊進行調(diào)試,比如該設(shè)計需用到液晶、矩陣鍵盤、定時器、獨立鍵盤、中斷和LED燈等,如果測試過程中液晶模塊不能正常顯示或者顯示亂碼,應將液晶模塊單獨分離出來進行測試,其他模塊亦是如此。程序調(diào)試完成后,應在硬件電路上反復運行,以確保程序和硬件電路的穩(wěn)定性。

  • 總結(jié)

這次單片機程序設(shè)計專周,我感覺收獲了很多,尤其是在提升自身的工作和自主學習能力方面。我在大二上學期就開始在實驗室自學單片機,但是因為是自學,自覺性就很差,而且自學也是一件比較難的事,學習過程中一直都是學習和模仿別人的代碼,看著別人寫出來的程序代碼,總覺得都能看懂,所以自己基本上沒有自己構(gòu)思寫程序代碼,

唯一做過一次全自動洗衣機也是看著別人寫的源程序代碼,不停的修修改改。

這次剛拿到設(shè)計項目時,本以為不難,一開始還信心滿滿,然而開始做就感覺有些茫然了,尤其是項目中還有些知識是我還沒學過的,比如液晶。所以我們組就必須得先把液晶學了,把需要學習的模塊學完后,先是毫無頭緒的寫主程序,整個過程舉步維艱,然后我們?nèi)W習了別人的設(shè)計方法,開始分工和分模塊進行。組內(nèi)分組搭建硬件電路,和寫程序,先把電路搭建好,再寫程序。寫程序的過程中,我們是把程序分成幾個小模塊:液晶顯示模塊、鍵盤輸入模塊、搶答模塊,然后每個模塊寫成子程序,在主程序中只需調(diào)用各個子程序即可。

在程序調(diào)試過程中,也遇到各種問題,但都逐個解決了。在整個設(shè)計過程中,我學到了許多課堂上老師無法傳授的知識,也真正地做出了一件自己的產(chǎn)品。


單片機源程序如下:


  1.         #include<reg52.h>
  2.         #define uchar unsigned char
  3.         #define uint unsigned int
  4.         uchar num=0,num1=0,num2=0,num3=0,num4=0,num5=0,num6=0,flag=0,flag1=0,flag4=0,flag5=0,circle=0;
  5.         sbit ledbiaozhun=P1^0; //LED指示燈
  6.         sbit ledjingji  =P1^1;
  7.         sbit leddandu   =P1^2;
  8.         sbit ledpaishui =P1^3;
  9.         sbit ledqiangxi =P1^4;
  10.         sbit ledruoxi   =P1^5;
  11.         sbit ledxidi    =P1^6;
  12.         sbit ledpiaoxi  =P1^7;
  13.         sbit ledtuoshui =P2^0;
  14.         
  15.         sbit sshuiwei   =P3^6; //水位開關(guān)
  16.         sbit sgai       =P3^7; //蓋開關(guān)
  17.         sbit paishui=P2^3; //排水閥控制
  18.         sbit jinshui=P2^2; //進水閥控制
  19.         
  20.         sbit U2=P2^4;
  21.         sbit U3=P2^5;
  22.         sbit k1=P3^0;  // 步進改變"標準、經(jīng)濟、單獨、排水"四種方式
  23.         sbit k2=P3^1;  //強洗、弱洗
  24.         sbit k3=P3^2;  //運行、暫停和解除報替功能
  25.         void init()
  26.         {
  27.                 uchar a=0,b=0,c=0;
  28.                 TMOD=0x01;                       //T0工作于方式1
  29.                 TH0=(65536-50000)/256; //定時時間50ms
  30.                 TL0=(65536-50000)%256;
  31.                 EA=1;                                   //開總中斷
  32.                 ET0=1;                                   //開T0中斷
  33.                 TR0=0;                                   //關(guān)閉T0
  34.                 EX0=1;                                   //開外部中斷0
  35.                 IT0=1;                                   //外部中斷0邊沿觸發(fā)方式
  36.                 U2=1;                                   //電機停轉(zhuǎn)
  37.                 U3=1;
  38.                 P0=0xff;
  39.         }
  40.         void delayms(uint xms) //延時
  41.         {
  42.                 uint i,j;
  43.                 for(i=xms;i>0;i--)
  44.                         for(j=110;j>0;j--);
  45.         }
  46.         
  47.         void key()                //控制按鍵
  48.         {
  49.                 circle=1;
  50.                 if(k1==0)                //標準、經(jīng)濟、單獨、排水按下
  51.                 {
  52.                         delayms(10); //延時消抖
  53.                         if(k1==0)         //再判
  54.                         {
  55.                                 num++;         //K1按下次數(shù)加1
  56.                                 if(num==4)
  57.                                         num=0;        //等于4,按下次數(shù)清0
  58.                                 while(!k1);        //等待按鍵釋放
  59.                         }
  60.                 }
  61.                
  62.                 if(k2==0)                                //強弱選擇
  63.                 {
  64.                         delayms(10);   //延時消抖
  65.                         if(k2==0)           //再判
  66.                         {
  67.                                 num1++;         //按下次數(shù)加1
  68.                                 if(num1==2)
  69.                                         num1=0;        //等于2,按下次數(shù)清0
  70.                                 while(!k2);        //等待按鍵釋放
  71.                         }
  72.                 }
  73.         }
  74.         
  75.         void qiang()                          //強
  76.         {
  77.                 if(flag4==0)  //電機正轉(zhuǎn)
  78.                 {        
  79.                         U2=0;
  80.                         U3=1;
  81.                 }
  82.         
  83.                 if(flag4==1)  //電機反轉(zhuǎn)
  84.                 {
  85.                         U2=1;
  86.                         U3=0;
  87.                 }        
  88.         }
  89.         void ruo()                        //弱
  90.         {
  91.                 if(flag5==0) //電機正轉(zhuǎn)
  92.                 {        
  93.                         U2=0;
  94.                         U3=1;
  95.                 }
  96.         
  97.                 if(flag5==1) //電機反轉(zhuǎn)
  98.                 {
  99.                         U2=1;
  100.                         U3=0;
  101.                 }
  102.         }
  103.         
  104.         void qbiaozhun()                        //強標準
  105.         {
  106.                 /*******洗滌********/
  107.                         num=0;
  108.                         num1=0;
  109.                         ledbiaozhun=0;//標準洗LED亮
  110.                         ledqiangxi=0; //強洗LED亮
  111.                         jinshui=0;          //打開進水閥
  112.                         ledxidi=1;    //洗滌
  113.                         ledpiaoxi=1;  //漂洗LED亮
  114.                         ledtuoshui=1; //脫水LED亮
  115.                         delayms(5000);//水位監(jiān)測
  116.                         jinshui=1; //關(guān)閉進水閥
  117.                         ledxidi=0;
  118.                         flag1=1;        //        
  119.                         TR0=1;            //啟動定時器T0
  120.                         while(flag==0)//flag為洗滌次數(shù)標志位
  121.                         {         
  122.                                 if(flag==0&&num2==1)
  123.                                 {         
  124.                                         TR0=1;
  125.                                         flag1=1; //
  126.                                         qiang();
  127.                                 }
  128.                                 if(flag==0&&num2==2)
  129.                                 {
  130.                                         TR0=0; //關(guān)閉定時器T0
  131.                                         U2=1;  //電機停止
  132.                                         U3=1;
  133.                                 }
  134.                         };
  135.                         //漂洗
  136.                         U2=1;
  137.                         U3=1;                                       
  138.                         TR0=0;
  139.                         flag1=0;
  140.                         paishui=0; //排水
  141.                         ledtuoshui=1;
  142.                         ledpiaoxi=1;
  143.                         ledxidi=1;
  144.                         delayms(5000);
  145.                         paishui=1;        //關(guān)閉排水
  146.                         delayms(100);
  147.                         jinshui=0;        //打開進水
  148.                         delayms(5000);
  149.                         jinshui=1;         //關(guān)閉進水
  150.                         ledpiaoxi=0;
  151.                         flag1=2;
  152.                         TR0=1;
  153.                         num3=0;
  154.                         num4=0;
  155.                         while(flag==1)
  156.                         {
  157.                                 if(flag==1&&num2==1)//強漂洗
  158.                                 {         
  159.                                         TR0=1;
  160.                                         flag1=2;
  161.                                         qiang();
  162.                                 }
  163.                                 if(flag==1&&num2==2)//暫停強漂洗
  164.                                 {
  165.                                         TR0=0;
  166.                                         U2=1;
  167.                                         U3=1;
  168.                                 }
  169.                         };
  170.                         //漂洗
  171.                         U2=1;
  172.                         U3=1;
  173.                         TR0=0;
  174.                         flag1=0;
  175.                         paishui=0;
  176.                         ledtuoshui=1;
  177.                         ledpiaoxi=0;
  178.                         delayms(5000);
  179.                         paishui=1;
  180.                         delayms(100);
  181.                         jinshui=0;
  182.                         delayms(5000);
  183.                         jinshui=1;
  184.                         flag1=2;
  185.                         TR0=1;
  186.                         num3=0;
  187.                         num4=0;
  188.                         
  189.                         while(flag==2)
  190.                         {
  191.                                  if(flag==2&&num2==1)
  192.                                 {         
  193.                                         TR0=1;
  194.                                         flag1=2;
  195.                                         qiang();
  196.                                 }
  197.                                 if(flag==2&&num2==2)
  198.                                 {
  199.                                         TR0=0;
  200.                                         U2=1;
  201.                                         U3=1;
  202.                                 }
  203.                          }        ;
  204.                         //脫水
  205.                         U2=1;
  206.                         U3=1;
  207.                         TR0=0;
  208.                         flag1=0;
  209.                         paishui=0;//打開排水
  210.                         ledtuoshui=0;
  211.                         ledpiaoxi=1;
  212.                         while(sgai);
  213.                         paishui=1;
  214.                         delayms(1000);
  215.                         flag1=3;
  216.                         TR0=1;
  217.                         num3=0;
  218.                         num4=0;
  219.                         while(flag==3)
  220.                         {
  221.                                 if(flag==3&&num2==1)
  222.                                 {
  223.                                         TR0=1;
  224.                                         U2=0;
  225.                                         U3=1;
  226.                                         flag1=3;
  227.                                 }
  228.                                 if(flag==3&&num2==2)
  229.                                 {
  230.                                         TR0=0;
  231.                                         U2=1;
  232.                                         U3=1;
  233.                                 }
  234.                         };
  235.                         ledtuoshui=1;
  236.                         U2=1;
  237.                         U3=1;
  238.                         flag1=0;                        
  239.         }
  240.         
  241.         void qjingji()                        //強經(jīng)濟
  242.         {
  243.                 /*******洗滌********/
  244.                         num=0;
  245.                         num1=0;
  246.                         ledjingji=0;
  247.                         ledqiangxi=0;
  248.                         ledtuoshui=1;
  249.                         ledpiaoxi=1;
  250.                         ledxidi=1;
  251.                         jinshui=0;
  252.                         delayms(5000);
  253.                         jinshui=1;
  254.                         flag1=1; //控制定時器中的洗滌指示燈
  255.                         TR0=1;
  256.                         while(flag==0)
  257.                         {         
  258.                                 if(flag==0&&num2==1)
  259.                                 {         
  260.                                         TR0=1;
  261.                                         flag1=1;
  262.                                         qiang();
  263.                                 }
  264.                                 if(flag==0&&num2==2)
  265.                                 {
  266.                                         TR0=0;
  267.                                         U2=1;
  268.                                         U3=1;
  269.                                 }
  270.                         };
  271.                         
  272.                         //漂洗                                       
  273.                         TR0=0;
  274.                         U2=1;
  275.                         U3=1;
  276.                         flag1=0;
  277.                         paishui=0;
  278.                         ledjingji=0;
  279.                         ledtuoshui=1;
  280.                         ledxidi=1;
  281.                         delayms(5000);
  282.                         paishui=1;
  283.                         delayms(100);
  284.                         jinshui=0;
  285.                         delayms(5000);
  286.                         jinshui=1;
  287.                         ledpiaoxi=0;
  288.                         flag1=2;
  289.                         TR0=1;
  290.                         num3=0;
  291.                         num4=0;
  292.                         while(flag==1)
  293.                         {
  294.                                 if(flag==1&&num2==1)
  295.                                 {         
  296.                                         TR0=1;
  297.                                         flag1=2;
  298.                                         qiang();
  299.                                 }
  300.                                 if(flag==1&&num2==2)
  301.                                 {
  302.                                         TR0=0;
  303.                                         U2=1;
  304.                                         U3=1;
  305.                                 }
  306.                         };
  307.                         //脫水
  308.                         TR0=0;
  309.                         U2=1;
  310.                         U3=1;        
  311.                         flag1=0;
  312.                         paishui=0;         //打開排水
  313.                         ledjingji=0;
  314.                         ledtuoshui=0;
  315.                         ledpiaoxi=1;
  316.                         delayms(5000);
  317.                         while(sgai);
  318.                         paishui=1;
  319.                         delayms(1000);
  320.                         flag1=3;
  321.                         TR0=1;
  322.                         flag=2;
  323.                         num3=0;
  324.                         num4=0;
  325.                         while(flag==2)
  326.                         {
  327.                                 if(flag==2&&num2==1)
  328.                                 {
  329.                                         TR0=1;
  330.                                         U2=0;
  331.                                         U3=1;
  332.                                         flag1=3;
  333.                                 }
  334.                                 if(flag==2&&num2==2)
  335.                                 {
  336.                                         TR0=0;
  337.                                         U2=1;
  338.                                         U3=1;
  339.                                 }
  340.                         };
  341.                         ledtuoshui=1;
  342.                         U2=1;
  343.                         U3=1;
  344.                         flag1=0;
  345.         }
  346.         
  347.         void qdandu()               //強單獨
  348.         {
  349.                 num=0;
  350.                 num1=0;
  351.                 ledqiangxi=0;
  352.                 ledxidi=0;
  353.                 leddandu=0;
  354.                 jinshui=0;
  355.                 delayms(5000);
  356.                 jinshui=1;//關(guān)閉進水閥
  357.                 flag1=1;
  358.                 TR0=1;
  359.                 while(flag==0)
  360.                 {
  361.                         if(flag==0&&num2==1)
  362.                                 {         
  363.                                         TR0=1;
  364.                                         flag1=1;
  365.                                         qiang();
  366.                                 }
  367.                                 if(flag==0&&num2==2)
  368.                                 {
  369.                                         TR0=0;
  370.                                         U2=1;
  371.                                         U3=1;
  372.                                 }
  373.                 };
  374.                 flag1=0;
  375.                 U2=1;
  376.                 U3=1;
  377.         }
  378.         
  379.         void rbiaozhun()                        //弱標準
  380.         {
  381.                 /*******洗滌********/
  382.                         num=0;
  383.                         num1=0;
  384.                         ledbiaozhun=0;
  385.                         ledruoxi=0;
  386.                         ledtuoshui=1;
  387.                         ledpiaoxi=1;        
  388.                         jinshui=0;
  389.                         delayms(5000);
  390.                         jinshui=1;
  391.                         ledxidi=0;
  392.                         flag1=1;               
  393.                         TR0=1;        
  394.                         while(flag==0)
  395.                         {         
  396.                                 if(flag==0&&num2==1)
  397.                                 {         
  398.                                         TR0=1;
  399.                                         flag1=1;
  400.                                         ruo();
  401.                                 }
  402.                                 if(flag==0&&num2==2)
  403.                                 {
  404.                                         TR0=0;
  405.                                         U2=1;
  406.                                         U3=1;
  407.                                 }
  408.                         };
  409.                         //漂洗
  410.                         U2=1;
  411.                         U3=1;                                       
  412.                         TR0=0;
  413.                         flag1=0;
  414.                         paishui=0;
  415.                         ledtuoshui=1;
  416.                         ledxidi=1;
  417.                         delayms(5000);
  418.                         paishui=1;
  419.                         delayms(100);
  420.                         jinshui=0;
  421.                         delayms(5000);
  422.                         jinshui=1;
  423.                         ledpiaoxi=0;
  424.                         flag1=2;
  425.                         TR0=1;
  426.                         num3=0;
  427.                         num4=0;
  428.                         while(flag==1)
  429.                         {
  430.                                 if(flag==1&&num2==1)
  431.                                 {         
  432.                                         TR0=1;
  433.                                         flag1=2;
  434.                                         ruo();
  435.                                 }
  436.                                 if(flag==1&&num2==2)
  437.                                 {
  438.                                         TR0=0;
  439.                                         U2=1;
  440.                                         U3=1;
  441.                                 }
  442.                         };
  443.                         //漂洗
  444.                         U2=1;
  445.                         U3=1;
  446.                         TR0=0;
  447.                         flag1=0;
  448.                         paishui=0;
  449.                         ledtuoshui=1;
  450.                         ledpiaoxi=0;
  451.                         delayms(5000);
  452.                         paishui=1;
  453.                         delayms(100);
  454.                         jinshui=0;
  455.                         delayms(5000);
  456.                         jinshui=1;
  457.                         flag1=2;
  458.                         TR0=1;
  459.                         num3=0;
  460.                         num4=0;         
  461.                         while(flag==2)
  462.                         {
  463.                                  if(flag==2&&num2==1)
  464.                                 {         
  465.                                         TR0=1;
  466.                                         flag1=2;
  467.                                         ruo();
  468.                                 }
  469.                                 if(flag==2&&num2==2)
  470.                                 {
  471.                                         TR0=0;
  472.                                         U2=1;
  473.                                         U3=1;
  474.                                 }
  475.                          }
  476.                         //脫水
  477.                         U2=1;
  478.                         U3=1;
  479.                         TR0=0;
  480.                         flag1=0;
  481.                         paishui=0;
  482.                         delayms(5000);
  483.                         ledtuoshui=0;
  484.                         ledpiaoxi=1;
  485.                         while(sgai);
  486.                         paishui=1;
  487.                         delayms(1000);
  488.                         flag1=3;
  489.                         TR0=1;
  490.                         num3=0;
  491.                         num4=0;
  492.                         while(flag==3)
  493.                         {
  494.                                 if(flag==3&&num2==1)
  495.                                 {
  496.                                         TR0=1;
  497.                                         U2=0;
  498.                                         U3=1;
  499.                                         flag1=3;
  500.                                 }
  501.                                 if(flag==3&&num2==2)
  502.                                 {
  503.                                         TR0=0;
  504.                                         U2=1;
  505.                                         U3=1;
  506.                                 }
  507.                         };
  508.                         ledtuoshui=1;
  509.                         U2=1;
  510.                         U3=1;
  511.                         flag1=0;
  512.         }
  513.         
  514.         void rjingji()                        //弱經(jīng)濟
  515.         {
  516.                 /*******洗滌********/
  517.                         num=0;
  518.                         num1=0;
  519.                         ledjingji=0;
  520.                         ledruoxi=0;
  521.                         ledtuoshui=1;
  522.                         ledpiaoxi=1;
  523.                         ledxidi=1;
  524.                         jinshui=0;
  525.                         delayms(5000);
  526.                         jinshui=1;         //打開進水閥,進水
  527.                         flag1=1;
  528.                         TR0=1;
  529.                         while(flag==0)
  530.                         {         
  531.                                 if(flag==0&&num2==1) //弱經(jīng)濟洗
  532.                                 {         
  533.                                         TR0=1;
  534.                                         flag1=1;
  535.                                         ruo();
  536.                                 }
  537.                                 if(flag==0&&num2==2) //弱經(jīng)濟洗暫停
  538.                                 {
  539.                                         TR0=0;
  540.                                         U2=1;
  541.                                         U3=1;
  542.                                 }
  543.                         };
  544.                         
  545.                         //漂洗                                       
  546.                         TR0=0;
  547.                         U2=1;
  548.                         U3=1;
  549.                         flag1=0;
  550.                         paishui=0;        //排水閥打開
  551.                         ledjingji=0;
  552.                         ledtuoshui=1;
  553.                         ledxidi=1;
  554.                         delayms(5000);
  555.                         paishui=1; //排水閥關(guān)閉
  556.                         delayms(100);
  557.                         jinshui=0; //進水閥打開
  558.                         delayms(5000);
  559.                         jinshui=1; //進水閥關(guān)閉
  560.                         ledpiaoxi=0;
  561.                         flag1=2;
  562.                         TR0=1;
  563.                         num3=0;
  564.                         num4=0;
  565.                         while(flag==1)
  566.                         {
  567.                                 if(flag==1&&num2==1)//漂洗
  568.                                 {         
  569.                                         TR0=1;
  570.                                         flag1=2;
  571.                                         ruo();
  572.                                 }
  573.                                 if(flag==1&&num2==2)//漂洗暫停
  574.                                 {
  575.                                         TR0=0;
  576.                                         U2=1;
  577.                                         U3=1;
  578.                                 }
  579.                         };
  580.                         //脫水
  581.                         TR0=0;
  582.                         U2=1;
  583.                         U3=1;
  584.                         flag1=0;
  585.                         ledjingji=0;
  586.                         ledtuoshui=0;
  587.                         ledpiaoxi=1;
  588.                         paishui=0;         //排水閥打開
  589.                         delayms(5000);
  590.                         while(sgai);
  591.                         paishui=1;
  592.                         delayms(3000);
  593.                         flag1=3;
  594.                         TR0=1;
  595.                         num3=0;
  596.                         num4=0;
  597.                         while(flag==2)
  598.                         {
  599.                                 if(flag==2&&num2==1)
  600.                                 {
  601.                                         TR0=1;
  602.                                         U2=0;
  603.                                         U3=1;
  604.                                         flag1=3;
  605.                                 }
  606.                                 if(flag==2&&num2==2)
  607.                                 {
  608.                                         TR0=0;
  609.                                         U2=1;
  610.                                         U3=1;
  611.                                 }
  612.                         };
  613.                         ledtuoshui=1;
  614.                         U2=1;
  615.                         U3=1;
  616.                         flag1=0;
  617.         }
  618.         
  619.         void rdandu()               //弱單獨
  620.         {
  621.                 num=0;
  622.                 num1=0;
  623.                 ledruoxi=0;
  624.                 ledxidi=0;
  625.                 leddandu=0;
  626.                 jinshui=0;  //打開進水閥,進水
  627.                 delayms(5000);
  628.                 jinshui=1;
  629.                 flag1=1;
  630.                 TR0=1;            //啟動定時器T0
  631.                 while(flag==0)
  632.                 {
  633.                         if(flag==0&&num2==1)  //弱單獨洗
  634.                                 {         
  635.                                         TR0=1;
  636.                                         flag1=1;
  637.                                         ruo();               
  638.                                 }
  639.                                 if(flag==0&&num2==2)//弱單獨洗暫停
  640.                                 {
  641.                                         TR0=0;
  642.                                         U2=1;
  643.                                         U3=1;
  644.                                 }
  645.                 };
  646.                 flag1=0;
  647.                 U2=1;
  648.                 U3=1;
  649.         }
  650.         
  651.         void dpaishui()                                 //排水/脫水
  652.         {
  653.                 num=0;
  654.                 num1=0;
  655.                 ledpaishui=0;
  656.                 ledtuoshui=0;
  657.                 jinshui=1;
  658.                 paishui=0;
  659.                 delayms(3000);
  660.                 while(sgai);
  661.                 delayms(3000);
  662.                 flag1=3;
  663.                 TR0=1;
  664.                 num3=0;
  665.                 num4=0;
  666.                 while(flag==0)
  667.                 {
  668.                         if(flag==0&&num2==1) //脫水
  669.                                 {         
  670.                                         TR0=1;
  671.                                         flag1=3;
  672.                                         U2=0;
  673.                                         U3=1;
  674.                                 }
  675.                                 if(flag==0&&num2==2)//暫停脫水
  676.                                 {
  677.                                         TR0=0;
  678.                                         U2=1;
  679.                                         U3=1;
  680.                                 }
  681.                 };
  682.                 U2=1;
  683.                 U3=1;
  684.                 flag1=0;
  685.                 ledtuoshui=1;
  686.                 paishui=1; ////排水閥關(guān)閉
  687.         }                          
  688.         
  689.         void main()
  690.         {
  691.                 init();
  692.                 while(1)
  693.                 {
  694.                         key();                   //鍵掃描
  695.                         if((num1==0&&num==0)&&circle==1)        //標準 強洗
  696.                         {
  697.                                 ledruoxi=1;   //關(guān)閉弱洗LED
  698.                                 ledpaishui=1; //關(guān)閉排水LED
  699.                                 ledbiaozhun=0;//強標準LED亮        
  700.                                 ledqiangxi=0; //強洗LED亮
  701.                                 if(num2==1)
  702.                                 {
  703.                                         qbiaozhun(); //強標準洗
  704.                                 }
  705.                                 if(num2>1)                 //K3鍵按下次數(shù)為2,暫停洗滌
  706.                                 {
  707.                                         ;           
  708.                                 }
  709.                                 circle=0;
  710.                         }
  711.                         if(num1==0&&num==1)         //經(jīng)濟 強洗
  712.                         {
  713.                                 ledruoxi=1;           
  714.                                 ledbiaozhun=1;
  715.                                 ledqiangxi=0;
  716.                                 ledjingji=0;
  717.                                 if(num2==1)
  718.                                 {
  719.                                         qjingji();        //強經(jīng)濟洗
  720.                                         ledjingji=1;
  721.                                 }
  722.                                 circle=0;
  723.                         }
  724.                         if(num1==0&&num==2)         //單獨 強洗
  725.                         {
  726.                                 ledruoxi=1;
  727.                                 ledjingji=1;
  728.                                 ledqiangxi=0;
  729.                                 leddandu=0;
  730.                                 if(num2==1)
  731.                                 {
  732.                                         qdandu(); //強單獨洗
  733.                                         leddandu=1;
  734.                                 }
  735.                                 circle=0;
  736.                         }
  737.                         if(num1==0&&num==3)
  738.                         {
  739.                                 ledruoxi=1;          //排水 強洗
  740.                                 leddandu=1;
  741.                                 ledqiangxi=0;
  742.                                 ledpaishui=0;
  743.                                 if(num2==1)
  744.                                 {
  745.                                         dpaishui();        //單排水
  746.                                         ledpaishui=1;
  747.                                 }
  748.                                 circle=0;
  749.                         }
  750.                         if(num1==1&&num==0)          //弱 標準
  751.                         {
  752.                                 ledqiangxi=1;
  753.                                 ledpaishui=1;
  754.                                 ledruoxi=0;
  755.                                 ledbiaozhun=0;
  756.                                 if(num2==1)
  757.                                 {
  758.                                         rbiaozhun(); //弱標準洗
  759.                                         ledruoxi=1;
  760.                                 }
  761.                                 circle=0;
  762.                         }
  763.                         if(num1==1&&num==1)         //弱經(jīng)濟
  764.                         {
  765.                                 ledqiangxi=1;
  766.                                 ledbiaozhun=1;
  767.                                 ledruoxi=0;
  768.                                 ledjingji=0;
  769.                                 if(num2==1)
  770.                                 {
  771.                                         rjingji();        //弱經(jīng)濟洗
  772.                                         ledruoxi=1;
  773.                                         ledjingji=1;
  774.                                 }
  775.                                 circle=0;
  776.                         }
  777.                         if(num1==1&&num==2)
  778.                         {
  779.                                 ledqiangxi=1;
  780.                                 ledjingji=1;
  781.                                 ledruoxi=0;
  782.                                 leddandu=0;
  783.                                 if(num2==1)
  784.                                 {
  785.                                         rdandu();        //弱單獨洗
  786.                                         ledruoxi=1;
  787.                                         leddandu=1;
  788.                                 }
  789.                                 circle=0;
  790.                         }
  791.                         if(num1==1&&num==3)
  792.                         {
  793.                                 ledqiangxi=1;
  794.                                 leddandu=1;
  795.                                 ledruoxi=0;
  796.                                 ledpaishui=0;
  797.                                 if(num2==1)        //K3鍵
  798.                                 {
  799.                                         dpaishui();         //單排水
  800.                                         ledpaishui=1;
  801.                                 }
  802.                                 circle=0;
  803.                         }
  804.                         num2=0;
  805.                 }
  806.         }
  807.         
  808.         void T0_time() interrupt 1           //定時
  809.         {
  810.                 TH0=(65536-50000)/256;        //重賦初值
  811.                 TL0=(65536-50000)%256;
  812.                 num3++;                                    //定時計數(shù)加1
  813.                 if(num3==20)        //1秒時間到
  814.                 {
  815.                         num3=0;                //計數(shù)清0
  816.                         if(flag1==1)
  817.                                 ledxidi=~ledxidi;  //洗滌指示取反
  818.                         if(flag1==2)
  819.                                 ledpiaoxi=~ledpiaoxi; //漂洗指示取反
  820.                         if(flag1==3)
  821.                                 ledtuoshui=~ledtuoshui;        //脫水指示取反
  822.                         num4++;
  823.                         num5++;
  824.                         num6++;
  825.                         if(num4==15)         //洗滌定時,15秒到
  826.                         {
  827.                                 num4=0;                         //清0
  828.                                 flag++;                 //標志洗滌次數(shù)
  829.                         }
  830.                         if(num5==5)                         //強洗周期,5秒到
  831.                         {
  832.                                 num5=0;
  833.                                 flag4++;         //強洗標志加1
  834.                                 if(flag4==2)
  835.                                         flag4=0;
  836.                         }
  837.                         if(num6==3)                        //弱洗周期        ,3秒到
  838.                         {
  839.                                 num6=0;
  840.                                 flag5++;            //弱洗標志加1
  841.                                 if(flag5==2)
  842.                                         flag5=0;
  843.                         }
  844.                 }
  845.         }
  846.         
  847.         void int0() interrupt 0           //外部中斷0 ,K3鍵
  848.         {
  849.                 num2++;          //K3按下計數(shù)加1 ,num2為1運行,num2為2暫停

  850. ……………………

  851. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:

資料.7z (578.78 KB, 下載次數(shù): 773)




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏23 分享淘帖 頂4 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-12-4 03:33 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:549337 發(fā)表于 2019-5-28 15:45 | 只看該作者
挺不錯的很實用
回復

使用道具 舉報

地板
ID:647522 發(fā)表于 2019-11-22 22:15 | 只看該作者
很詳細 太好用了
回復

使用道具 舉報

5#
ID:656473 發(fā)表于 2019-12-5 09:46 | 只看該作者
太好用了!
回復

使用道具 舉報

6#
ID:656544 發(fā)表于 2019-12-5 10:30 | 只看該作者
很詳細 太好用了
回復

使用道具 舉報

7#
ID:566697 發(fā)表于 2020-2-19 20:40 | 只看該作者
非常感謝
回復

使用道具 舉報

8#
ID:711753 發(fā)表于 2020-3-19 17:45 | 只看該作者
參考看看,看看
回復

使用道具 舉報

9#
ID:733317 發(fā)表于 2020-5-25 17:23 來自手機 | 只看該作者
代碼是用keil軟件寫的嗎?
回復

使用道具 舉報

10#
ID:927585 發(fā)表于 2021-5-26 14:49 | 只看該作者
很詳細,文檔參考看看
回復

使用道具 舉報

11#
ID:974748 發(fā)表于 2021-10-28 08:41 | 只看該作者
不錯,很有用
回復

使用道具 舉報

12#
ID:1012580 發(fā)表于 2022-3-28 09:40 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

13#
ID:495817 發(fā)表于 2023-5-31 22:39 | 只看該作者
學與致用,很實用教程
回復

使用道具 舉報

14#
ID:67838 發(fā)表于 2023-8-31 01:19 | 只看該作者

好資料,51黑有你更精彩!!!
回復

使用道具 舉報

15#
ID:689425 發(fā)表于 2023-8-31 19:54 | 只看該作者
太詳細了,好資料,樓主辛苦
回復

使用道具 舉報

16#
ID:1081482 發(fā)表于 2023-9-8 21:21 | 只看該作者
看起來不錯
回復

使用道具 舉報

17#
ID:1076950 發(fā)表于 2023-9-13 09:58 | 只看該作者
樓主可以參考一下你的實物圖嗎,真的很需要,非常感謝。
回復

使用道具 舉報

18#
ID:1093404 發(fā)表于 2023-9-13 10:39 | 只看該作者
很有用,參考看看
回復

使用道具 舉報

19#
ID:67838 發(fā)表于 2024-2-3 17:19 | 只看該作者

很詳細,文檔參考看看
回復

使用道具 舉報

20#
ID:6467 發(fā)表于 2024-12-25 22:58 | 只看該作者
實用的工程案例;才能讓后來人有更多的理解、學習!
謝謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.99精品 | 亚洲精品国产电影 | 国产99精品 | 国产日韩欧美在线观看 | 亚洲一区二区在线电影 | 欧美中文字幕在线观看 | 日韩免费av | 国产欧美一区二区三区在线播放 | 久夜精品 | a网站在线观看 | 久久午夜国产精品www忘忧草 | 国产精品一区二区在线播放 | 日韩成人在线观看 | 久久成人国产 | 91麻豆精品国产91久久久更新资源速度超快 | 伊人网综合| 国产精品久久久久久久岛一牛影视 | 久久久久国色av免费观看性色 | 国产99视频精品免视看9 | 男女视频在线观看免费 | 亚洲综合字幕 | 97视频成人 | 嫩草视频入口 | 一区二区视频免费观看 | www.久久久久久久久久久 | 成人免费黄色片 | 国产精品一区二 | 日韩中文在线 | 色男人的天堂 | 91麻豆精品国产91久久久资源速度 | 不卡的av电影 | 国产精品欧美大片 | 毛片视频免费观看 | 成人欧美一区二区三区色青冈 | 毛片网站在线观看 | 在线播放中文字幕 | 亚洲日韩中文字幕一区 | 精品国产一区二区三区性色av | 国产在线一区二区 | 日韩一区二区三区精品 | 欧美天堂在线 |