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

QQ登錄

只需一步,快速開始

帖子
查看: 10283|回復(fù): 16
打印 上一主題 下一主題
收起左側(cè)

全自動(dòng)洗衣機(jī)單片機(jī)程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:98321 發(fā)表于 2015-12-4 18:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg51.h>  
#define uchar unsigned char
#define uint unsigned int

sbit mo_r = P3^2;     //電機(jī)右控制線
sbit mo_l = P3^3;     //電機(jī)左控制線
sbit key_menu = P3^4; // 菜單按鍵
sbit key_on = P3^5;   // 開始按鍵
sbit key_off = P3^6;  //   結(jié)束按鍵
sbit key_se = P3^7;   //  菜單選擇按鍵

sbit led_in = P2^0;   // 進(jìn)水指示燈  
sbit led_xi = P2^1;   //  洗衣指示燈  
sbit led_pao = P2^2;  // 泡洗指示燈
sbit led_xx = P2^3;   //  脫水指示燈

sbit led_out = P2^4;  //   出水指示燈
sbit led_over = P2^5; // 洗衣結(jié)束指示燈
sbit led_work = P2^6; // 電機(jī)工作指示燈
sbit led_wring = P2^7;// 報(bào)警指示燈
sbit other = P3^1;    //  脫水電源控制開關(guān)
sbit anther = P3^0;  // 洗衣電源控制開關(guān)
uchar  code  num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

char sec = 0;    //  時(shí)間秒
char min = 0;     // 時(shí)間分
uchar count=0;     //  中斷計(jì)數(shù)  
uchar flag0=0;    //  洗衣機(jī)工作狀態(tài)標(biāo)志
uchar flag1=0;    //  進(jìn)水次數(shù)標(biāo)志
uchar flag2=0;    //  出水次數(shù)標(biāo)志
uchar flag3=0;    //   泡洗次數(shù)標(biāo)志  
uchar err =0;    // 報(bào)警標(biāo)志
uchar quan = 0;//正反轉(zhuǎn)計(jì)數(shù)

//  函數(shù)聲明 //


void in(); //   進(jìn)水子程序
void out();  //   出水子程序
void over();  //  結(jié)束子程序
void xi();  //   洗衣子程序
void pao(); //  泡衣子程序
void xx(); // 脫水子程序
void on(); //  工作on處理子程序
void se(); //  顯示菜單選擇
void SEG_display();  //顯示時(shí)間子程序
void key_scan();   //  按鍵掃描子程序  

//     延時(shí)函數(shù)  //
void mDelay(unsigned int Delay) //延時(shí)程序
{   
     unsigned int i;
      for(;Delay>0;Delay--)      
      {       for(i=0; i<54; i++)  ;     
      }
}

//    工作on處理子程序 //

void on()
{   TMOD=0x01;   
    TH0=(65536-50000)/256;  
    TL0=(65536-50000)%256;  
    EA=1;  ET0=1;  TR0=1;   
    P2 = 0xff;  
    if(flag0 == 0)      in();  
    if(flag0 == 1)      xi();  
    if(flag0 == 2)      pao();
    if(flag0 == 3)      xx();  
    if(flag0 == 4)      out();
}


//    結(jié)束子程序 //
void over()
{ other=0;  anther=0;  P2 = 0xff;  
  mo_r=0;  mo_l=0;  led_over = 0;  EA=0;   }

//    進(jìn)水子程序  //*********************************//
void in()
{ anther=0;  other=0;  P2 = 0xff;  led_in = 0;  flag1++;  
  mo_r = 0;  mo_l = 0;  min = 0;  sec = 8;  }  

//   洗衣子程序//
void xi()
{  anther=1;    other=0;      
    P0 = 0xff;   led_work = 0;    led_xi = 0;
    mo_r = 1;   mo_l = 0;   min = 1;   
    sec = 36;   quan = 0;  }



//    泡衣子程序 //
void pao()
{      
anther=1;  other=0;  P2 = 0xff;  led_pao = 0;  led_work = 0;  
flag3++;  mo_r = 1;  mo_l = 0;  min = 1;  sec = 35;   quan = 0;
}  



//   脫水子程序  //*********************************//
void xx()
{ other=1;  anther=0;  P2 = 0xff;  led_xx = 0;  mo_r = 0;  mo_l = 1;  min = 0;  sec = 50;  }  
//    出水子程序 //*********************************//

void out()
{ anther=0;  other=0;  P2 = 0xff;   led_out = 0;
flag2++;  mo_r = 0;  mo_l = 0;  min = 0;  sec = 5;  }  


//    顯示菜單選擇 //
void se()
{  P2 = 0xff;  if(flag0 >= 5)    flag0 = 0;   
   if(flag0 == 0)  {   led_in = 0;   }   
   if(flag0 == 1)  {   led_xi=0;     }
   if(flag0 == 2)  {   led_pao=0;    }   
   if(flag0 == 3)  {   led_xx=0;     }   
   if(flag0 == 4)  {   led_out=0;    }
}  



//    菜單處理子程序 //
void menu()
{      min = 0;  sec = 0;  mo_r=0;   mo_l=0;
       SEG_display();        
       while(1)   
        {      if(key_on == 0)   
                  { mDelay(5);   
                    if(key_on == 0)   
                      {  while(!key_on);     
                         on(); break;     
                      }   
                  }
               if(key_off == 0)   
                  { mDelay(5);   
                    if(key_off == 0)   
                     {  while(!key_off);        
                        over(); break;     
                     }     
                  }
               if(key_se == 0)   
                  { mDelay(5);   
                    if(key_se == 0)   
                     { while(!key_se);   
                       flag0++;  se();      
                     }   
                  }      
        }  
}


//      按鍵掃描子程序//
void key_scan()
{    if(key_menu == 0)
        {  mDelay(5);   
            if(key_menu == 0)   
              { while(!key_menu); menu();   
              }   
        }  
     if(key_on == 0)  
        {  mDelay(5);   
            if(key_on == 0)   
              { while(!key_on); on();   
              }   
        }
     if(key_off == 0)  
        {  mDelay(5);
            if(key_off == 0)   
              { while(!key_off); over();   
              }   
        }  
}

// 顯示子程序 //
void SEG_display()
{  P1=0x01;  P0 = num[min/10]; mDelay(10);  
   P1=0x02;  P0 = num[min%10]; mDelay(10);  
   P1=0x04;  P0 = num[sec/10]; mDelay(10);  
   P1=0x08;  P0 = num[sec%10]; mDelay(10);  
}  //*********************************//

//       主函數(shù) //
void main()
{  led_in=0;  anther=0;  other=0;
   while(1)  
     { SEG_display(); key_scan(); }
}  

//     定時(shí)器0中斷處理程序//
void timer0() interrupt 1
{  TH0=(65536-50000)/256;  
   TL0=(65536-50000)%256;   count++;      
   if(count==20)  
    { count = 0;   sec--;   
      if((flag0==1)||(flag0==2))   
        {  quan++;  
           switch(quan)     
             { case 1 :mo_r=1;mo_l=0;break;     
               case 10:mo_r=0;mo_l=0;break;     
               case 15:mo_r=0;mo_l=1;break;     
               case 25:mo_r=0;mo_l=0;break; default:;      
             }      
           if(quan==30)     
             { quan=0; }     
        }  

      if((sec == 0)&&(min != 0))   
        {  min--; sec = 59; }  

      if((sec<0)&&(min==0)&&(flag0==0))  //進(jìn)水結(jié)束   
        {  switch(flag1)   
             { case 1:flag0=1;xi();break;     
               case 2:flag0=2;pao();break;     
               case 3:flag0=2;pao();break;     
               case 4:flag0=2;pao();break;     
               default: err=1;led_wring = 0;      
             }      
        }

      if((sec<0)&&(min==0)&&(flag0==1))   //洗衣結(jié)束   
        {  flag0 = 4; out();  }  

      if((sec<0)&&(min==0)&&(flag0==2))   //泡衣結(jié)束   
        {  switch(flag3)     
             { case 1:flag0=4;out();break;     
               case 2:flag0=4;out();break;     
               case 3:flag0=4;out();break;     
               default: err=1;led_wring = 0;      
             }     
        }  

      if((sec<0)&&(min==0)&&(flag0==4))  //出水結(jié)束   
        {  switch(flag2)        
             { case 1:flag0=0;in();break;     
               case 2:flag0=0;in();break;     
               case 3:flag0=0;in();break;        
               case 4:flag0=3;xx();break;      
               default: err= 1;led_wring = 0;      
             }     
        }   

      if((sec<0)&&(min==0)&&(flag0==3))   
        {  sec = 0;     over(); }   
     }  
}

















評(píng)分

參與人數(shù) 3黑幣 +55 收起 理由
123453. + 5
我不是我 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!我現(xiàn)在在做,學(xué)習(xí)下
admin + 45 共享資料的積分獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2015-12-4 18:56 來自觸屏版 | 只看該作者
非常好謝謝分享,樓主能提供一下原理圖嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:154667 發(fā)表于 2016-12-14 13:08 | 只看該作者
太厲害餓了 感謝哦
回復(fù)

使用道具 舉報(bào)

地板
ID:154667 發(fā)表于 2016-12-14 13:09 | 只看該作者
太感謝了
回復(fù)

使用道具 舉報(bào)

5#
ID:154667 發(fā)表于 2016-12-14 21:08 | 只看該作者
原理圖和仿真圖有么
回復(fù)

使用道具 舉報(bào)

6#
ID:154866 發(fā)表于 2016-12-14 22:43 | 只看該作者
感謝分享啊
回復(fù)

使用道具 舉報(bào)

7#
ID:154916 發(fā)表于 2016-12-15 09:46 | 只看該作者
太厲害了哈!樓主 如果能附上原理圖就更好了哈1
回復(fù)

使用道具 舉報(bào)

8#
ID:75745 發(fā)表于 2016-12-15 17:35 | 只看該作者
話說我們畢業(yè)設(shè)計(jì)有這一到題
回復(fù)

使用道具 舉報(bào)

9#
ID:209487 發(fā)表于 2017-6-9 11:58 | 只看該作者
很好的程序
回復(fù)

使用道具 舉報(bào)

10#
ID:209487 發(fā)表于 2017-6-9 11:58 | 只看該作者
很好的
回復(fù)

使用道具 舉報(bào)

11#
ID:89286 發(fā)表于 2017-6-9 19:10 | 只看該作者
thanks for sharing
回復(fù)

使用道具 舉報(bào)

12#
ID:67838 發(fā)表于 2017-6-23 14:52 | 只看該作者
非常好謝謝分享,樓主能提供一下原理圖嗎?
回復(fù)

使用道具 舉報(bào)

13#
ID:67838 發(fā)表于 2017-9-16 21:29 | 只看該作者
謝謝分享,樓主能提供一下原理圖嗎?
回復(fù)

使用道具 舉報(bào)

14#
ID:67838 發(fā)表于 2019-9-24 20:26 | 只看該作者
樓主能提供一下原理圖嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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