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 + -
显示快捷键?