021125226k.c

来自「2007全国电子设计大赛小车完整程序」· C语言 代码 · 共 711 行 · 第 1/2 页

C
711
字号
 if(ale>-3&&ale<-2) {i=0;back(35,0x85);delay_ms(3000);} 
 if(ale>-2&&ale<-1.3) {i=0;back(23,0x85);delay_ms(3000);} 
 //if(ale>-1&&ale<0) {back(10,0x90);delay_ms(2000);break;}
       
}
/*lcd_gotoxy(12,0);
lcd_puts(str3);
delay_ms(5000);
*/

 
 delay_ms(1000);  
 s=0; 
lcd_gotoxy(8,0);
lcd_puts(str3);
for(i=0;i<5;i++)
{PORTC=0XFF;delay_ms(500);PORTC=~0XFF;delay_ms(500);}
s=0;  
lcd_gotoxy(8,0);
lcd_putsf("     "); 


speed=0xff;
while(1)  
{ 
  
state=PINA&0X07;
state1=PINA&0X70;
PORTC=~(PINA&0x07);
              //直线寻迹至终点
 if((state==0x00)&&(state1==0x70)) 
 break;

 switch(state)  
       {case 0x00:back(200,speed);break;
        case 0x01:right(100,speed);break;
        case 0x02:forward(200,speed);break;
        case 0x03:right(100,speed);break;
        case 0x04:left(100,speed);break;
        case 0x05:forward(200,speed);break;
        case 0x06:left(100,speed);break;
        case 0x07:forward(200,speed);break;
       } 
 } 

s=0; 


delay_ms(5000);
s=0;
back(300,0xff);  
i=0;
while(1)  
{ 
 
//倒退寻迹
state=PINA&0X07;
state1=PINA&0X70;
PORTC.0=~PINA.4;
PORTC.1=~PINA.5;
PORTC.2=~PINA.6;

switch(state1)  
       {case 0x00:forward(200,0xff);break;
        case 0x10:left(120,0xff);break;
        case 0x20:back(150,0xff);break;
        case 0x30:left(120,0xff);break;
        case 0x40:right(120,0xff);break;
        case 0x50:back(150,0xff);break;
        case 0x60:right(120,0xff);break;
        case 0x70:back(50,0xff);break;
       }   
 if(state==0x07) {i++; if(i==3) break;back(500,0xff);}

 } 
 
 break;
}
else if(PINA.3==0)  //程序二
{
lcd_gotoxy(6,0);
lcd_puts(str);
ale2=ale1; 
delay_ms(2000); 
lcd_gotoxy(6,0);  
lcd_putsf("          ");
lcd_gotoxy(0,0);
while(PINA.3==1)
{ 

};  


delay_ms(100); 
s=0;       
state=PINA&0X07;        //寻找入口
for(;state==0;) 
{state=PINA&0X07;
PORTC=~(PINA&0x07);
forward(10,0xff);
 
}

delay_ms(1000); 

 
while(1)  
{ 
  
state=PINA&0X07;
PORTC=~(PINA&0x07);
              //直线寻迹至中点 
              
 if(ale<4) 
 {
 switch(state)  
       {case 0x00:back(200,speed);break;
        case 0x01:right(200,speed);break;
        case 0x02:forward(150,speed);break;
        case 0x03:right(200,speed);break;
        case 0x04:left(200,speed);break;
        case 0x05:forward(150,speed);break;
        case 0x06:left(200,speed);break;
        case 0x07:forward(150,speed);break;
       } 
       } 
  else break;
} 
 i=0;
tem=s;



while(1)  
{
 if(s-tem>10) speed=0xa0;    
state=PINA&0X07;
PORTC=~(PINA&0x07);
              //直线寻迹至中点
if(state==0x07){ i++;if(i==2) speed=0x95; forward(500,0xff);   }
 if(ale<4) {back(1200,0xa0);break;}

 switch(state)  
       {case 0x00:back(200,speed);break;
        case 0x01:right(100,speed);break;
        case 0x02:forward(200,speed);break;
        case 0x03:right(100,speed);break;
        case 0x04:left(100,speed);break;
        case 0x05:forward(200,speed);break;
        case 0x06:left(100,speed);break;
        case 0x07:forward(200,speed);break;
       } 
       
            
}   

//微调

 i=0;
while(1)
{ if(ale>-1.4&&ale<1.4) {i++;if(i>=5) {PORTC=0XFF;delay_ms(500);PORTC=~0XFF;delay_ms(500);}} 
 if(ale>=5.4) {    i=0;
           delay_ms(800);
           if(ale>5.4)forward(300,0x90);
           else { delay_ms(1800);if(ale<5.4)forward(120,0x90);}
           delay_ms(200);}
 //if(ale>5.5&&ale<6)  {forward(400,0x90);delay_ms(3000);}
 //if(ale>5&&ale<5.5)  {forward(230,0x90);delay_ms(2800);}
 if(ale>4.5&&ale<5.4)  {i=0;forward(75,0x80);delay_ms(3000);}
 if(ale>4&&ale<=4.5)  {i=0;forward(70,0x80);delay_ms(3000);}
 if(ale>3.5&&ale<=4)  {i=0;forward(65,0x80);delay_ms(3000);}
 if(ale>3&&ale<=3.5)  {i=0;forward(55,0x80);delay_ms(3000);}
 if(ale>2.5&&ale<=3)  {i=0;forward(45,0x80);delay_ms(3500);}
 if(ale>2&&ale<=2.5)  {i=0;forward(35,0x80);delay_ms(3500);}
 if(ale>1.5&&ale<=2)  {i=0;forward(30,0x80);delay_ms(3500);}
 if(ale>1.3&&ale<=1.5)   {i=0;forward(25,0x80);delay_ms(3500);}
 
 if(ale<=-5.6) { i=0;
         delay_ms(800);
         if(ale<-5.6) back(250,0x80);
         else  { delay_ms(1800);if(ale>-5.6) back(120,0x80);}
         delay_ms(200);}
 //if(ale>-6&&ale<=-5.5) {i=0;back(90,0x80);delay_ms(3000);}
 if(ale>-5.6&&ale<=-5) {i=0;back(85,0x80);delay_ms(3000);}
 if(ale>-5&&ale<=-4.5) {i=0;back(80,0x80);delay_ms(3500);}
 if(ale>-4.5&&ale<=-4) {i=0;back(75,0x80);delay_ms(3000);} 
 if(ale>-4&&ale<=-3.5) {i=0;back(70,0x80);delay_ms(3000);}  
 if(ale>-3.5&&ale<=-3) {i=0;back(65,0x80);delay_ms(3500);}
 if(ale>-3&&ale<=-2.5) {i=0;back(55,0x80);delay_ms(3500);} 
 if(ale>-2.5&&ale<=-2) {i=0;back(45,0x80);delay_ms(3500);}  
 if(ale>-2&&ale<=-1.5) {i=0;back(35,0x80);delay_ms(3200);}
 if(ale>-1.5&&ale<=-1.3) {i=0;back(30,0x80);delay_ms(3500);}       
}
/*q=0;
while(q<5){
lcd_gotoxy(8,0);
lcd_puts(str3);*/

} 

/*q=0;

while(q==0){
lcd_gotoxy(12,0);
lcd_puts(str3);
}  
s=0;
while(s<5){
lcd_gotoxy(8,0);
lcd_puts(str3);
}*/ 
    
/*lcd_gotoxy(8,0);

lcd_puts(str3);
delay_ms(6000);

 
s=0;

while(1)  
{ 
  
state=PINA&0X07;
state1=PINA&0X70;
PORTC=~(PINA&0x07);
              //直线寻迹至终点
 if((state==0x00)&&(state1==0x70)) 
 break;

 switch(state)  
       {case 0x00:back(200,speed);break;
        case 0x01:right(100,speed);break;
        case 0x02:forward(200,speed);break;
        case 0x03:right(100,speed);break;
        case 0x04:left(100,speed);break;
        case 0x05:forward(200,speed);break;
        case 0x06:left(100,speed);break;
        case 0x07:forward(200,speed);break;
       } 
 } 

 


delay_ms(6000);
s=0;
back(200,0xff);  
i=0;
while(1)  
{ 
 
//倒退寻迹
state=PINA&0X07;
state1=PINA&0X70;
PORTC.0=~PINA.4;
PORTC.1=~PINA.5;
PORTC.2=~PINA.6;

switch(state1)  
       {case 0x00:forward(200,0xff);break;
        case 0x10:left(120,0xff);break;
        case 0x20:back(150,0xff);break;
        case 0x30:left(120,0xff);break;
        case 0x40:right(120,0xff);break;
        case 0x50:back(150,0xff);break;
        case 0x60:right(120,0xff);break;
        case 0x70:back(50,0xff);break;
       }   
 if(state==0x07) {i++; if(i==3) break;back(500,0xff);}

 } break;
}







delay_ms(2000);
tem2=ale;
speed=0x80; 
for(i=0;ale<2;i++)
{back(6,0xaf);}
delay_ms(2500);





while(1)
{if(ale>0)
   {delay_ms(3000);
     if(fabs(ale)>1.5) 
     {i=i/2;
      forward(i+100,0xaf);
     } 
     else 
     {lcd_putsf("ballence");
     break;}}
 if(ale<0)
   {delay_ms(3000);
     if(fabs(ale)>1.5) 
     {i=i/2;
      back(i+100,0xaf);
     }
    else 
     {lcd_putsf("ballence");
     break;}}
}
   
lcd_puts(str2); 
  
delay_ms(2000);  


while (1)
      {         if(ale<0)
                        {i=i/2;
                        back(i,0x75);
                        }
       
                else if(ale>0)
                {i=i/2;
                forward(i/2,0x75);
                 }
       else if(ale==0) 
       delay_ms(2000);
      };     */


/*
while(1)  
{ 
//倒退寻迹
state=PINA&0X70;
PORTC.0=~PINA.4;
PORTC.1=~PINA.5;
PORTC.2=~PINA.6;

switch(state)  
       {case 0x00:forward(200,0xff);t=t-200;break;
        case 0x10:left(120,0xff);break;
        case 0x20:back(150,0xff);t=t+200;break;
        case 0x30:left(120,0xff);break;
        case 0x40:right(120,0xff);break;
        case 0x50:back(150,0xff);t=t+200;break;
        case 0x60:right(120,0xff);break;
        case 0x70:back(50,0xff);t=t+200;break;
       }   
 }   */
}  
}
}

⌨️ 快捷键说明

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