⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9.c

📁 智能洗衣机
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uint flag1;
uint ID,ID1,ID2,ID3;
uchar a,b,c;
sbit P_chu=P2^6;
sbit P_jin=P2^7;
sbit dianji_Z=P1^6;	
sbit dianji_F=P1^7;							
sbit P_bee =P3^4;
sbit P_hsw=P3^5;
sbit P_msw=P3^6;
sbit P_lsw=P3^7;
sbit key1_0=P1^0;
sbit key1_1=P1^1;
sbit ready=P1^2;
sbit key1_3=P1^3;

sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P2_7=P2^7;
sbit P2_6=P2^6;								
sbit P2_5=P2^5;																								 
sbit P2_4=P2^4;
sbit P2_3=P2^3;
sbit P2_2=P2^2;																	  
sbit P2_1=P2^1;
sbit P2_0=P2^0;

code char led[]={0x88,0xeb,0xc4,0x94,0xb2,0x91,0x81,0xbc,0x80,0x90,0xff};	 //0到10的数组led

//******************* 蜂鸣器响五次 ***********//

void delay1(uchar t)
{
 uchar i,j;
 for(i=0;i<10;i++)
 for(j=0;j<t;j++);
}

void delay2(uchar t)
{
 uchar i,j;
 for(i=0;i<200;i++)
 for(j=0;j<t;j++);
}
void speak()
{  
      uchar k,i;
	  int m;
	 for(i=0;i<5;i++)
	{
	  k=0;
	  k++;
	  for(m=0;m<500;m++)
      {
          P_bee=0;
          delay1(3);
          P_bee=1;
          delay1(4);
          P_bee=0;
          delay1(3);
         
         		 
       }
	   delay2(255);
	    delay2(255); 
		if(k==4) 	P_bee=1;
	    k=4;
        while(k--);
 }
} 

void speak1()
{  
      uchar k,i;
	  int m;
	 for(i=0;i<1;i++)
	{
	  k=0;
	  k++;
	  for(m=0;m<100;m++)
      {
	      P_bee=0;;
          delay1(3);
		   P_bee=1;
          delay1(5);
		 
       }
	 
		if(k==4) 	P_bee=1;
	    k=4;
        while(k--);
    }
}

void disp(uchar m)	     //数码管显示   
{
  
  P0= led[m];
}

void delay1ms(void)     //延时1ms子程序 
{    
    uchar i,j;    
    for(i=2;i>0;i--)    
    for(j=248;j>0;j--);    
}    
void delay02s(void)    	 //延时200ms子程序 
{    
    uchar i;    
    for(i=200;i>0;i--)    
    {   
        delay1ms();    
    }    
}  
void delay8s()
{
  unsigned char i,j,k;
  for(i=0;i<200;i++)
  
    for(j=0;j<100;j++)
	for(k=0;k<130;k++);
}
void delay2s()
{
  unsigned char i,j,k;
  for(i=0;i<100;i++)
  
    for(j=0;j<65;j++)
	for(k=0;k<100;k++);
}  
void delay10s()
{
   uchar i,j,k;
   for(i=0;i<200;i++)
     for(j=0;j<100;j++)
	   for(k=0;k<160;k++);
}
void delay1s(void)		   //一秒延时 
{
	uchar h,i,j,k;
        for(h=5;h>0;h--)
        for(i=4;i>0;i--)
        for(j=116;j>0;j--)
        for(k=214;k>0;k--);
}
void key_sw()          //水位设定 
 {  
  while(1)
 {
   
   if(key1_1==0)
    {
     delay1ms();
	 if(key1_1==0)
	 {
	   speak1();
	   ID1++;
	   if(ID1==4) 
	   {
	     ID1=1;
	   }
	   while(key1_1==1)	;	   
	 } 
	 switch(ID1)
	     {
	  	   case 1:		 //低水位       
		        flag1=1;
				disp(flag1);
				P2_3=0;
			    P2_4=1;
				P2_5=1;
				delay02s();
				break;
			case 2:		  //中水位 
		        flag1=2;
				disp(flag1);
				P2_3=1;
			    P2_4=0;
				P2_5=1;
				delay02s();
				break;
			case 3:			//高水位 
		        flag1=3;
				disp(flag1);
				P2_3=1;
			    P2_4=1;
				P2_5=0;
				delay02s();
				break; 
	     }
	}  
   if(key1_3==0)
    {
     delay1ms();
	 if(key1_3==0)
	    speak1();
		disp(10);
	    break;	
	 }
 }
}

void  clynumber()	  //电机循环转动次数设定     	 
{ 
  while(1)
    {
	  
	   if(key1_1==0)
         {
            delay1ms();
	        if(key1_1==0)
	          {
			     speak1();
	             ID2++;
	             if(ID2==10) 
	               {
	                 ID2=1;
	               }
	             while(key1_1==1)	;
	           }
	switch(ID2)
	  {
	     case 1:		     
			 disp(1);
			 delay02s();
			 break;
		 case 2:
			 disp(2);
			 delay02s();
			 break;
		 case 3:
			 disp(3);
			 delay02s();
			 break;
		 case 4:
			 disp(4);
			 delay02s();
			 break;
		 case 5:
			 disp(5);
			 delay02s();
			 break;
		 case 6:
			 disp(6);
			 delay02s();
			 break;
		 case 7:
			 disp(7);
			 delay02s();
			 break;
		 case 8:
			 disp(8);
			 delay02s();
			 break;
		 case 9:
			 disp(9);
			 delay02s();
			 break;
	  }
          }
		if(key1_3==0)
     {
     delay1ms();
	 if(key1_3==0)
	        speak1();
			disp(10);
			break;
	  }
	}

}

void rewash()		//洗衣过程重复次数 	   	
{ 
  while(1)	
  {
    if(key1_1==0)
      {
         delay1ms();
	    if(key1_1==0)
	     {
		   speak1();
	       ID3++;
	       if(ID3==6) 
	         {
	           ID3=1;
	          }
   while(key1_1==1);

	      }
	 switch(ID3)
	     {
	        case 1:
			   disp(1);
			   delay02s();
			   break;
			case 2:
			   disp(2);
			   delay02s();
			   break;
			case 3:
			   disp(3);
			   delay02s();
			   break;
			case 4:
			   disp(4);
			   delay02s();
			   break;
			case 5:
			   disp(5);
			   delay02s();
			   break;
			  
	     }
     }
	if(key1_3==0)
    {
     delay1ms();
	 if(key1_3==0)
	    speak1();
		disp(10);
	   break;
	 }
   } 
 
} 	 


//*****  按设定水位进水子程序 *******//

void  awjs()
{
   P3=0xff;	
   if(flag1==1)
       {
	     while(!P_lsw)
		 {} ;
		 speak1();
		 delay02s();
		 P_jin=0;
	   }
	else	if(flag1==2)
		    {
			  while(!P_msw)
			  {};
			  speak1();
			  delay02s();
			  P_jin=0;
			}
	else  if(flag1==3)
				   {
				     while(!P_hsw)
					 {};
					 speak1();
					 delay02s();
					 P_jin=0;
				   }			 
	   
} 

//************************************************//
void dianjiZ()	 //正转	 
{
    dianji_Z=1;
	dianji_F=0;   
}
void dianjiF()	  //反转  
{
    dianji_Z=0;
	dianji_F=1;   
}
void dianjiT()	   //停转  
{
    dianji_Z=0;
	dianji_F=0;   
}
void celynum()    //电机四个节拍转动子程序 
{
    dianjiZ();
    delay8s();
	dianjiT();
 	delay2s();
	dianjiF();
	delay8s();
	dianjiT();
 	delay2s(); 
}
void tuoshui()		 //脱水子程序 
{
   dianjiZ();
   delay10s();
   dianjiT();
   delay2s();
   dianjiZ();
   delay10s();
   dianjiT();
}

//**********************************//
void main() 
{  	//初始化 
    P_jin=0;
    P_chu=0;
	dianji_F=0;
    dianji_Z=0;
    ID=0;
	ID1=0;
	ID2=0;
	ID3=0;
    disp(0);	
	delay02s();
	 while(1) 
 {
    if(key1_0==0)
    {																	
     delay1ms();
	 if(key1_0==0)
	  {
	    speak1();
	     ID++;
	   if(ID==4) 
	    {
	       ID=1;
	     }
	   while(key1_0==1)	;
	  }
	 switch(ID)
	      {
	  	    case 1:
			    //disp(1);
				P2_0=0;	       
			    key_sw();
				delay02s();
				break;
		    case 2:
				//disp(2); 
				P2_1=0;
				P2_0=1;  
				clynumber();
				delay02s();
				break;
		    case 3:
			//	disp(3);
				P2_2=0;
				P2_1=1;
			    rewash();
				delay02s();
				break;
	       }	   	
     }
		if(key1_3==0)
    {
     delay1ms();
	 if(key1_3==0)
	 speak1();
	 P2_2=1;
	break;
	}
 }
 
while(1)
  {
   if(ready==0)     //准备就绪,开始进水洗衣 
      {														  
         delay1ms();
	    if(ready==0)
		  {  	speak1();
		        disp(0);	  //数码管显零,示意洗衣机已设定完毕正进入洗衣步骤 
				delay2s();
		     for(a=0;a<ID3;a++)	  //总洗衣次数循环 										
		     { 
			   P_chu=0;
			   P_jin=1;  //打开进水阀开始进水 
			   P3=0xff;	
			   delay2s();
		  	   awjs();   //调用按设定水位进水子程序 
			   delay2s();
			   for(b=0;b<ID2;b++)	   //电机循环转动次数    
	             {                  
	                celynum(); 
					P2_0=0;
					delay2s();
					disp(b+1); //显示电机已经循环转动次数 	
		
	              }		 
			   delay2s();
			   P2_0=1;
		       delay2s();
			   disp(10);  
			   P_chu=1;        //打开出水阀排水 
		      
		  	  while(P_lsw==1); //排水未排到低水位以下时等待排水完		  	 
			   speak1();
			   delay8s();
			   delay2s();
			   delay8s();
			   delay2s();	     
	           tuoshui();	   //开始脱水 
			   P2_1=0;
			   delay2s();
		       disp(a+1);   //显示进水排水次数 	
			   delay2s();
			   P2_1=1;
		      }
	    	 disp(10);	  
			 speak();  //蜂鸣器响五次 
			 P2_2=0;
	         delay2s();
		     disp(ID3);			  //显示最终洗衣次数 
			 delay2s();
			 delay2s();
			 P_chu=0;
		    
		  }
	   }
  }
}

      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -