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

📄 qianmian.c

📁 这是直流电机的驱动程序
💻 C
字号:
#include<at89x52.h>
#define uint unsigned int 
  void delay_ms(uint i)
  {uint j;
     for(;i>0;i--)
	   for(j=0;j<125;j++)
	      {;}
   }
///////////////////////////////////
void ji_sha(uint i)
{
while(i--)
  {P1_0=1;P1_2=1;
    delay_ms(30);
   }

}
///////////////////////////////////
void zhi_zou()
{   

        P1_0=0;P1_2=0;    
		P1_1=1; P1_3=1;
        delay_ms(10);
        P1_1=0;P1_3=0;      
        delay_ms(30);


}

///////////////////////////////////       
void  zuo_weidong()
{  
         P1_0=0;P1_2=0;
         P1_1=1; P1_3=0;
         delay_ms(10);
         P1_1=0;P1_3=0;      
         delay_ms(30);

} 
/////////////////////////////////////
void  you_weidong()
{
         P1_0=0; P1_2=0;
         P1_1=0; P1_3=1;
         delay_ms(10);
         P1_1=0;P1_3=0;      
         delay_ms(30);

} 

///////////////////////////////////// 
void xunji()				//直线循迹
{
  while(P1_4==1&&P1_5==1&&P3_0==0&&P3_1==0&&P2_0==0)   //  直走
  zhi_zou();
  
  while(P1_4==0&&P1_5==1&&P3_0==0&&P3_1==0&&P2_0==0)   // 左微动
  zuo_weidong();
  
  while(P1_4==1&&P1_5==0&&P3_0==0&&P3_1==0&&P2_0==0)   // 右微动
  you_weidong(); 

}
 
/////////////////////////////////////
void zuo()                                  //   左转弯          
{                       
       ji_sha(2);
      while(P1_4==1||P1_5==1)             
  	   
       {             
         P1_0=1;P1_2=0;          
                   
         P1_1=1; P1_3=1;
         delay_ms(10);
         P1_1=0;P1_3=0;      
         delay_ms(30);        
     
       }            
      
	  while(P1_4==0&&P1_5==0)               
       
	   {
         P1_0=1;P1_2=0;            
                   
         P1_1=1; P1_3=1;
         delay_ms(10);
         P1_1=0;P1_3=0;      
         delay_ms(30);             
    
       }          

	ji_sha(3);
	                   
}

 
/////////////////////////////////////             
void you()                                //   右转弯               
{                 
       ji_sha(2);  
	   while(P1_4==1||P1_5==1)          
  	   
       {        
         P1_0=0;P1_2=1;              
                   
         P1_1=1;P1_3=1;
		 delay_ms(10);
         P1_1=0;P1_3=0;      
         delay_ms(30);       
       
       }        
     
	 while(P1_4==0&&P1_5==0)          
       
       {          
         P1_0=0;P1_2=1;              
                   
         P1_1=1;P1_3=1;
		 delay_ms(10);
         P1_1=0;P1_3=0;      
         delay_ms(30);        
    
       }            
    
   ji_sha(3);     
}           

/////////////////////////////////////
void chong(uint i)
{  
 while(i--)  
 								 
   {  
     P1_0=0;P1_2=0;   
                   
         P1_1=1;
         P1_1=1; P1_3=1;
         delay_ms(10);
         P1_1=0;P1_3=0;      
         delay_ms(30);     

   }
}

///////////////////////////////////// 
void lu_kou(unsigned int j)
{
    unsigned int sign;
    sign=j;
    switch(sign)
    {
      case 1 :  zuo();      break;
	  case 2 :  you();      break;
	  case 3 :  chong(8);   break;
	  case 4 :  chong(8);   break;
	  case 5 :  chong(8);   break;
	  case 6 :  chong(8);   break;
	  case 7 :  chong(8);   break;
	  case 8 :  chong(8);   break;
	  case 9 :  chong(8);   break;
	  case 10 : chong(8);   break;
	  case 11 : chong(8);   break;
	  case 12 : chong(8);   break;


     }

}         

///////////////////////////////////// 
void main()						   //修改i,j,M
{  uint k=0;
   uint i=17;
   uint j=15;
   
   

   while(1)
   {   
        xunji(); 
     
	    if(P3_0==1||P3_1==1&&P2_0==0)
           
		   {
	           k++;  
               lu_kou(k);
       
           }
		while(k==12)
		  {
		   k=0;

		  }
		if(P2_0==1) 				//总判断
		{
		  
		   while(i--)
            { P1_0=1;P1_2=0;            
              P1_1=1; P1_3=1;
              delay_ms(10);
              P1_1=0;P1_3=0;      
              delay_ms(30);
			 }
			 ji_sha(2);
			
		   
			while(P1_4!=1&&P1_5!=1)
			{ 
              P1_0=0;P1_2=0;    
		      P1_1=1; P1_3=1;
              delay_ms(10);
              P1_1=0;P1_3=0;      
              delay_ms(30);

			 }
			 ji_sha(2);

			 while(P3_1!=1)
			 {P1_0=0;P1_2=0;    
		      P1_1=1; P1_3=1;
              delay_ms(10);
              P1_1=0;P1_3=0;      
              delay_ms(30);
	     	  }
			  ji_sha(2);
			  
			 while(P1_4!=1&&P1_5!=1)
			{ 
              P1_0=0;P1_2=1;    
		      P1_1=1; P1_3=1;
              delay_ms(10);
              P1_1=0;P1_3=0;      
              delay_ms(30);

			 }
			 ji_sha(2);

			  
			     while(P2_1==0)
                     {  while(P1_4==1&&P1_5==0)   // 右微动
                        you_weidong(); 
					    while(P1_4==1&&P1_5==1)   //  直走
                        zhi_zou();
                        while(P1_4==0&&P1_5==1)   // 左微动
                        zuo_weidong();
                        
					  }
				  while(P2_1==1)
                     {  while(P1_4==1&&P1_5==0)   // 右微动
                        you_weidong(); 
					    while(P1_4==1&&P1_5==1)   //  直走
                        zhi_zou();
                        while(P1_4==0&&P1_5==1)   // 左微动
                        zuo_weidong();
                         
					  }
				  	 ji_sha(2);	
               

	   if(P2_1==0)
		
		{    
		     while(j--)
            { P1_0=0;P1_2=1;            
              P1_1=1; P1_3=1;
              delay_ms(10);
              P1_1=0;P1_3=0;      
              delay_ms(30);     
			 }
		     	 ji_sha(2);  
				                    
			 while(P1_4!=1&&P1_5!=1)
			{  P1_0=0;P1_2=1;       
			   P1_1=1;P1_3=1;				 
		       delay_ms(10);
               P1_1=0;P1_3=0;      
               delay_ms(30);    
			 }
			 	 ji_sha(2);
			
	        while(P1_4==1||P1_5==1)	 
	
	        {P1_0=1;P1_2=1;
             delay_ms(30);
			 P1_1=0;P1_3=0;
			} 
	    } 
		
     }
  } 
}



⌨️ 快捷键说明

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