標題:
stc12單片機l298p驅動全套程序
[打印本頁]
作者:
你消失的蹤跡
時間:
2020-2-2 17:13
標題:
stc12單片機l298p驅動全套程序
小車參加完比賽全套程序,小車采用l298p電機驅動,使用4個麥克拉姆輪,4個舵機,8個循跡,4個避障模塊搭建而成。程序可完成比賽2019年機器人技能大賽智慧快遞項目。
比賽圖紙
14444444444444.jpg
(63.86 KB, 下載次數(shù): 25)
下載附件
2020-2-2 17:12 上傳
單片機源程序如下:
#include <reg52.h>
char flag=0;
char flag1=0;
char flag2=0;
char flag3=0;
void rightqianjin();
void leftqianjin();
void qianjin();
void houtui();
void stop();
void rightqianjin1();
void bizhangbegain();
void bizhang();
void qianxunji();
void baixian2();
void baixian();
void houxunji();
void qianjinshuxian();
void xunjiqianjinshuxian();
void heikaihoutuishuxian() ;
void heikaiqianjinyige2();
void xunjiqianjinyige(void);
void houtuishuxian();
void houtuiyige(void);
void baisehoutuibange(void);
void baisehoutuibange2();
void danbianhoutuishuxian();
void danbianhoutuiyige(void);
void zuoxuanzhuan();
void xuanzhuanyige(void);
void youxunji();
void houtuibange(void);
void qianjinshuxian2();
void heikaiqianjinyige(void);
void baixianbizhang();
void zuohoushuxian(void);
void zuohoushuyige(void) ;
void zuoqianshuxian(void);
void zuoqianshuyige(void) ;
sbit IN1 = P0^0;
sbit IN2 = P0^1;
sbit ENA = P0^2;
sbit ENB = P0^3;
sbit IN3 = P0^4;
sbit IN4 = P0^5;
sbit IN5 = P2^0;
sbit IN6 = P2^1;//??
sbit ENAA = P2^2;
sbit ENBB = P2^3;//??
sbit IN7 = P2^4;
sbit IN8 = P2^5;
sbit right = P1^0;
sbit left = P1^1;
sbit right1 = P0^6;
sbit bizhang1 = P1^3;
sbit left1= P1^2;
sbit bizhangleft= P1^5;
sbit bizhangright = P1^6;
sbit bizhangtou= P1^7;
sbit houleft = P3^2; //
sbit houright = P3^3;//?????
sbit right2 = P0^7;
sbit left2 = P2^7;
sbit SERVO0=P3^5; //?????PWM???
sbit SERVO1=P3^6;
sbit SERVO2=P3^7;
unsigned int ServoPwmDuty[16] = {1500,1500,1500,1500,1500,1500,1500,1500,
1500,1500,1500,1500,1500,1500,}; //PWM????
unsigned char zkb1 = 0;
unsigned char zkb2 = 0;
unsigned char zkb11 = 0;
unsigned char zkb22 = 0;
unsigned char t = 0;
void delay(unsigned int x) //?? x ms
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=128;j>0;j--);
}
void DelayMs(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<800;i++) //89????85,12??????800
for(j=0;j<ms;j++);
}
void init0()
{
EA = 1;
TMOD = 0x01;
TH0 =(65536 - 100) / 256;
TL0 = (65536 - 100)% 256;
ET0 = 1;
TR0 = 1;
ENA = 1;
ENAA = 1;
ENB = 1;
ENBB = 1;
}
void init1()
{
EA = 1;
TMOD = 0x10;
TH1 =(65536-40000)/256;
TL1 =(65536-40000)%256;
ET1 = 1;
TR1 = 1;
}
void rightqianjin()
{
zkb1=0;
zkb2=0;
zkb11=30;
zkb22=30;
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
IN5 = 0;
IN6 = 1;
IN7 = 0;
IN8 = 1;
}
void leftqianjin()
{
zkb1=30;
zkb2=30;
zkb11=0;
zkb22=0;
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
IN5 = 0;
IN6 = 1;
IN7 = 0;
IN8 = 1;
}
void qianjin()
{
zkb1=50;
zkb2=50;
zkb11=50;
zkb22=50;
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
IN5 = 0;
IN6 = 1;
IN7 = 0;
IN8 = 1;
}
void houtui()
{
zkb1=35;
zkb2=35;
zkb11=28;
zkb22=28;
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
IN5 = 1;
IN6 = 0;
IN7 = 1;
IN8 = 0;
}
void righthoutui()
{
zkb1=10;
zkb2=10;
zkb11=30;
zkb22=30;
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
IN5 = 1;
IN6 = 0;
IN7 = 1;
IN8 = 0;
}
void lefthoutui()
{
zkb1=30;
zkb2=30;
zkb11=10;
zkb22=10;
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
IN5 = 1;
IN6 = 0;
IN7 = 1;
IN8 = 0;
}
void stop()
{
zkb1=10;
zkb2=10;
zkb11=13;
zkb22=13;
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 0;
IN5 = 0;
IN6 = 0;
IN7 = 0;
IN8 = 0;
}
void leftqianjin1()
{
zkb1=28;
zkb2=25;
zkb11=28;
zkb22=35;
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
IN5 = 1;
IN6 = 0;
IN7 = 0;
IN8 = 1;
}
void leftqianjin1shang()
{
zkb1=28;
zkb2=25;
zkb11=25;
zkb22=50;
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
IN5 = 1;
IN6 = 0;
IN7 = 0;
IN8 = 1;
}
void leftqianjin1xia()
{
zkb1=28;
zkb2=25;
zkb11=50;
zkb22=50;
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
IN5 = 1;
IN6 = 0;
IN7 = 0;
IN8 = 1;
}
void zuoxunji()
{
if((right1 == 1)||(right2 == 1)||(left1==1)||(left2==1))
{
leftqianjin1();
}
else if((right1 ==0)&&(right2 == 1)&&(left1==0)&&(left2==1))
{
leftqianjin1shang() ;
}
else if((right1 == 1)&&(right2 == 0)&&(left1==1)&&(left2==0))
{
leftqianjin1xia();
}
}
void youxuanzhuan()
{
zkb1=50;
zkb2=50;
zkb11=50;
zkb22=50;
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
IN5 = 0;
IN6 = 1;
IN7 = 0;
IN8 = 1;
}
void rightbizhangbegain()
{
stop();
delay(2000);
if((left1 == 1)&&(right1 == 0))
{
{
stop();
delay(2000);
}
if((bizhangleft==0) )
{
xunjiqianjinyige();
delay(2000);
if((bizhangleft==1) )
{
zuoqianshuyige() ;
delay(1000);
}
}
else if((bizhangleft==1) )
{
zuoqianshuyige() ;
delay(1000);
}
}
}
void baixianbizhang()
{
if((bizhang1==0)&&((houleft==0)&&(houright==0)))
{
danbianhoutuiyige() ;
delay(5000);
zuoqianshuyige() ;
delay(1000);
}
}
void bizhang()
{
if((bizhang1==0)&&(houleft==1)&&(houright==1)&&(right==1)&&(left==1))
{
//
houtuiyige();
delay(1000);
if (bizhangleft==0)
{
{
houtuiyige();
delay(1000);
}
if (bizhangleft==0)
{
{
houtuiyige();
delay(1000);
zuoqianshuyige() ;
delay(1000);
}
}
else
{
zuoqianshuyige();
delay(1000);
}
}
else
{
zuoqianshuyige();
delay(1000);
}
}
}
//
void qianxunji()
{
if((left == 1)&&(right == 1))
{
qianjin();
}
else if((left ==0)&&(right == 1))
{
rightqianjin();
}
else if((left == 1)&&(right == 0))
{
leftqianjin();
}
}
void baixian()
{
if(((left==0)&&(right==0))&&(flag3==0)&&((houright==1)||(houleft==1)))
{
{
stop();
delay(500);
heikaiqianjinyige();
delay(500);
baisehoutuibange();
delay(500);
}
if(bizhangleft==0)
{
{
houtuiyige() ;
delay(1000) ;
}
if(bizhangleft==0)
{
houtuiyige();
delay(1000);
zuohoushuyige();
delay(1000);
}
else
{
zuohoushuyige();
delay(1000);
}
}
else
{
stop();
delay(500);
zuohoushuyige();
delay(1000);
}
}
}
void baixian2()
{
if(((left==0)&&(right==0))&&(flag3>0)&&((houleft==1)||(houright==1)))
{
stop();
delay(500);
heikaiqianjinyige2();
delay(1000);
baisehoutuibange2();
delay(1000);
if((right==0)&&(left==0)&&(left1==1)&&(right1==1)||(left2==1))
{
if(bizhangleft==0)
{
{
houtuiyige() ;
delay(1000) ;
}
if(bizhangleft==0)
{
houtuiyige();
delay(1000);
zuohoushuyige();
delay(1000);
}
else
{
zuohoushuyige();
delay(1000);
}
}
else
{
stop();
delay(1000);
zuohoushuyige();
delay(1000);
}
}
else if((right==0)&&(left==0)&&(left1==0)&&(left2==0)&&(right1==1))
{
xuanzhuanyige();
flag3=0;
qianjin();
delay(1000);
danbianhoutuiyige();
delay(1000);
rightbizhangbegain();
}
}
}
void houxunji()
{
if((houleft==1)&&(houright==1))
{
houtui();
}
else if((houleft==0)&&(houright==1))
{
righthoutui();
}
else if((houleft==1)&&(houright==0))
{
lefthoutui();
}
}
void xunjiqianjinshuxian()
{
qianxunji();
if( left1 ==0&&flag==0)
{
qianxunji();
flag=1;
}
else if( left1 ==1&&flag==1)
{
qianxunji();
flag=2;
}
qianxunji();
if( left1 ==0&&flag==2)
{
qianxunji();
flag=3; //??????
}
else if( left1 ==1&&flag==3)
{
qianxunji();
flag=4;
}
else if( left1 ==0&&flag==4)
{
qianxunji();
flag=5;//??????
}
else if( left1 ==1&&flag==5)
{
qianxunji();
flag=6;
}
else if( left1 ==1&&flag==6)
{
qianxunji() ;//??3???
flag=7;
}
qianxunji();
if( left1 ==0&&flag==7)
{
qianxunji();
flag=8;
}
else if( left1 ==1&&flag==8)
{
qianxunji();
flag=9;//??4???
}
else if( left1 ==0&&flag==9)
{
qianxunji();
flag=10;
}
else if( left1 ==1&&flag==10)
{
qianxunji();
flag=11;//??5???
}
else if( left1 ==1&&flag==11)
{
qianxunji();
flag=12;
}
qianxunji();
}
void xunjiqianjinyige(void) //??????
{
while(1)
{
xunjiqianjinshuxian() ;
if(flag==2)
{
stop();
delay(1000);
flag=0;
break;
}
}
}
void qianjinshuxian2()
{
qianjin();
if(left1==1&&right1==1&&flag==0)
{
qianjin();
flag=1;
}
else if(left1==0&&right1==0&&flag==1)
{
qianjin();
flag=2;
}
qianjin();
if(left1==1&&right==1&&flag==2)
{
qianjin();
flag=3;
}
else if(left1==0&&right1==0&&flag==3)
{
qianjin();
flag=4;
}
}
void heikaiqianjinyige(void)
{
while(1)
{
qianjinshuxian2() ;
if(flag==2)
{
stop();
delay(1000);
flag=0;
break;
}
}
}
void qianjinshuxian3()
{
qianjin();
if(right1==1&&flag==0)
{
qianjin();
flag=1;
}
else if(right1==0&&flag==1)
{
qianjin();
flag=2;
}
qianjin();
if(right1==1&&flag==2)
{
qianjin();
flag=3; //??????
}
else if(right1==0&&flag==3)
{
qianjin();
flag=4;
}
}
void heikaiqianjinyige2(void)
{
while(1)
{
qianjinshuxian3() ;
if(flag==2)
{
stop();
delay(1000);
flag=0;
break;
}
}
}
void baisehoutuishuxian()
{
houtui();
if(right1==0&&left1==0&&flag1==0)
{
houtui();
flag1=1;
}
else if(right1==1&&left1==1&&flag1==1)
{
houtui();
flag1=2;
}
houtui();
if(right1==0&&left1==0&&flag1==2)
{
houtui();
flag1=3;
}
else if(right1==1&&left1==1&&flag1==3)
{
houtui();
flag1=4;
}
}
void baisehoutuibange(void)
{
while(1)
{
baisehoutuishuxian() ;
if(flag1==2)
{
stop();
delay(1000);
flag1=0;
break;
}
}
}
void baisehoutuishuxian2()
{
houtui();
if(right1==0&&flag1==0)
{
houtui();
flag1=1;
}
else if(right1==1&&flag1==1)
{
houtui();
flag1=2;
}
houtui();
if(right1==0&&flag1==2)
{
houtui();
flag1=3;
}
else if(right1==1&&flag1==3)
{
houtui();
flag1=4;
}
}
void baisehoutuibange2(void)
{
while(1)
{
baisehoutuishuxian2() ;
if(flag1==2)
{
stop();
delay(1000);
flag1=0;
break;
}
}
}
void houtuishuxian() //???? ??
{
houxunji();
if(right1==0&&left1==0&&flag1==0)
{
houxunji();
flag1=1;
}
else if(right1==1&&left1==1&&flag1==1)
{
houxunji();
flag1=2;//??????
}
houxunji();
if(right1==0&&left1==0&&flag1==2)
{
houxunji();
flag1=3;
}
else if(right1==1&&left1==1&&flag1==3)
{
houxunji();
flag1=4;//??????
}
else if(right1==0&&left1==0&&flag1==4)
{
houxunji();
flag1=5;//??????
}
else if(right1==1&&left1==1&&flag1==5)
{
houxunji();
flag1=6;//??????
}
}
void houtuiyige(void) //????
{
while(1)
{
houtuishuxian();
if(flag1==2)
{
stop();
delay(1000);
flag1=0;
break;
}
}
}
void danbianhoutuishuxian() //?????? ??
{
houtui();
if(left1==0&&flag1==0)
{
houtui();
flag1=1;
}
else if(left1==1&&flag1==1)
{
houtui();
flag1=2;//??????
}
houtui();
if(left1==0&&flag1==2)
{
houtui();
flag1=3;
}
else if(left1==1&&flag1==3)
{
houtui();
flag1=4;//??????
}
else if(left1==0&&flag1==4)
{
houtui();
flag1=5;//??????
}
else if(left1==1&&flag1==5)
{
houtui();
flag1=6;//??????
}
}
void danbianhoutuiyige(void)
{
while(1)
{
danbianhoutuishuxian() ;
if(flag1==2)
{
stop();
delay(1000);
flag1=0;
break;
}
}
}
void xuanzhuanshuxian()
{
youxuanzhuan();
if(right==0&&left==0&&flag1==0)
{
youxuanzhuan();
flag1=1;
}
else if(right==1&&left==1&&flag1==1)
{
youxuanzhuan();
flag1=2;
}
youxuanzhuan();
if(right==0&&left==0&&flag1==2)
{
youxuanzhuan();
flag1=3;
}
else if(right==1&&left==1&&flag1==3)
{
youxuanzhuan();
flag1=4;
}
}
void xuanzhuanyige(void)
{
while(1)
{
xuanzhuanshuxian();
if(flag1==4)
{
stop();
delay(1000);
flag1=0;
break;
}
}
}
void zuohoushuxian(void)
{
{
zuoxunji();
if(houright==0&&houleft==0&&flag1==0)
{
zuoxunji();
flag1=1;
}
else if(houright==1&&houleft==1&&flag1==1)
{
zuoxunji();
flag1=2;
}
zuoxunji();
if(houright==0&&houleft==0&&flag1==2)
{
zuoxunji();
flag1=3;
}
else if(houright==1&&houleft==1&&flag1==3)
{
zuoxunji();
flag1=4;
}
}
}
void zuohoushuyige(void)
{
while(1)
{
zuohoushuxian();
if(flag1==2)
{
stop();
delay(1000);
flag1=0;
break;
}
}
}
void zuoqianshuxian(void)
{
{
zuoxunji();
if(right==0&&left==0&&flag1==0)
{
zuoxunji();
flag1=1;
}
else if(right==1&&left==1&&flag1==1)
{
zuoxunji();
flag1=2;
}
zuoxunji();
if(right==0&&left==0&&flag1==2)
{
zuoxunji();
flag1=3;
}
else if(right==1&&left==1&&flag1==3)
{
zuoxunji();
flag1=4;
}
}
}
void zuoqianshuyige(void)
{
while(1)
{
zuoqianshuxian();
if(flag1==2)
{
stop();
delay(1000);
flag1=0;
break;
}
}
}
void toushuxian()
{
if(TR0==0&&bizhangtou==1&&flag3==0)
{
flag3=1;
}
else if(bizhangtou==0&&flag3==1)
{
flag3=2;
}
else if(bizhangtou==1&&flag3==2)
{
flag3=3;
}
else if(bizhangtou==0&&flag3==3)
{
flag3=4;
}
}
void Timer0Value(unsigned int pwm)
{
unsigned int value;
value=0xffff-pwm;
TR1 = 0;
TL1=value;
TH1=value>>8;
TR1 = 1;
}
void timer0() interrupt 1
{
TH0 = (65536 - 100) / 256;
TL0 = (65536 - 100) % 256;
if(t < zkb1 )
{
ENA = 1;
}
else
{
ENA = 0;
}
if(t < zkb11 )
{
ENAA = 1;
}
else
{
ENAA = 0;
}
if(t < zkb2 )
{
ENB = 1;
}
else
{
ENB = 0;
}
if(t < zkb22 )
{
ENBB = 1;
}
else
{
ENBB = 0;
}
++t;
if(t == 50)
{
ENA=~ENA;
ENAA=~ENAA;//??????????????
ENB=~ENB;
ENBB=~ENBB;
t = 0;
}
}
void Timer0_isr(void) interrupt 3 using 1
{
static unsigned int i = 1;
switch(i)
{
case 1:
SERVO0 = 1;
Timer0Value(ServoPwmDuty[0]);
break;
case 2:
SERVO0 = 0;
Timer0Value(2500-ServoPwmDuty[0]);
break;
case 3:
SERVO1 = 1;
Timer0Value(ServoPwmDuty[1]);
break;
case 4:
SERVO1 = 0;
Timer0Value(2500-ServoPwmDuty[1]);
break;
case 5:
SERVO2 = 1;
Timer0Value(ServoPwmDuty[2]);
break;
case 6:
SERVO2 = 0;
Timer0Value(2500-ServoPwmDuty[2]);
i=0;
break;
}
i++;
}
void youkai()
{
init0();
rightbizhangbegain();
while(1)
{
toushuxian();
qianxunji();
baixianbizhang();
if( (bizhangtou==0)&&(left==0)&&(right==0))
{
stop();
delay(500);
qianjin();
delay(1000);
stop();
delay(500);
//
TR0 = 0;
init1();
{
ServoPwmDuty[0]=1200, ServoPwmDuty[1]=1800, ServoPwmDuty[2]=1500,
// 1 2 3 4
// 13 14
DelayMs(500);
ServoPwmDuty[0]=1700, ServoPwmDuty[1]=1600, ServoPwmDuty[2]=1500,
// 1 2 3 4
// 13 14
DelayMs(500);
ServoPwmDuty[0]=1700, ServoPwmDuty[1]=1300, ServoPwmDuty[2]=1200,
// 1 2 3 4
// 13 14
DelayMs(500);
ServoPwmDuty[0]=1500, ServoPwmDuty[1]=1000, ServoPwmDuty[2]=1000,
// 1 2 3 4
// 13 14
DelayMs(500);
ServoPwmDuty[0]=1700, ServoPwmDuty[1]=1000, ServoPwmDuty[2]=1000,
// 1 2 3 4
// 13 14
DelayMs(500);
}
TR1=0;
init0();
xuanzhuanyige();
delay(3000);
TR0 = 0;
init1();
{
ServoPwmDuty[0]=1500, ServoPwmDuty[1]=1000, ServoPwmDuty[2]=1000,
// 1 2 3 4
// 13 14
DelayMs(500);
ServoPwmDuty[0]=1700, ServoPwmDuty[1]=1300, ServoPwmDuty[2]=1200,
// 1 2 3 4
// 13 14
DelayMs(500);
ServoPwmDuty[0]=1500, ServoPwmDuty[1]=1600, ServoPwmDuty[2]=1300,
// 1 2 3 4
// 13 14
DelayMs(500);
ServoPwmDuty[0]=1200, ServoPwmDuty[1]=1800, ServoPwmDuty[2]=1400,
// 1 2 3 4
// 13 14
DelayMs(500);
ServoPwmDuty[0]=950, ServoPwmDuty[1]=1800, ServoPwmDuty[2]=1500,
// 1 2 3 4
// 13 14
DelayMs(500);
}
TR1=0;
flag3=2;
init0();
qianjin();
delay(8000);
danbianhoutuiyige();
delay(1000);
rightbizhangbegain();
}
baixian2();
baixian();
bizhang();
qianxunji();
baixianbizhang();
}
}
/****************************** ??????*****************************************************/
//void rightqianjin();
//void leftqianjin();
//void qianjin();
//void houtui();
//void stop();
//void rightqianjin1();
//void bizhangbegain();
//void bizhang();
//void qianxunji();
//void baixian();
//void houxunji();
//void qianjinshuxian();
//void xunjiqianjinshuxian();
//void heikaihoutuishuxian() ;
//void heikaiqianjinyige2();
//void xunjiqianjinyige(void);
//void houtuishuxian();
//void houtuiyige(void);
//void houtuiyige2(void) ;
//void baisehoutuibange(void);
//void baisehoutuibange3();
//void baisehoutuiyige(void);
//void danbianhoutuishuxian();
//void danbianhoutuiyige(void);
//void zuoxuanzhuan();
//void xuanzhuanyige(void);
//void youxunji();
//void houtuibange(void);
//void qianjinshuxian2();
//void heikaiqianjinyige(void);
//void baixianbizhang();
void rightqianjin1();
void rightqianjin1shang();
void rightqianjin1xia();
void youxunji();
void zuoxuanzhuan();
void bizhangbegain();
void baixianbizhang2();
void bizhang2();
void baixian3();
void baixian4();
void xunjiqianjinshuxian2();
void xunjiqianjinyige2(void) ;
void qianjinshuxian4() ;
void heikaiqianjinyige3(void) ;
void baisehoutuishuxian3() ;
void baisehoutuibange3(void) ;
void danbianhoutuishuxian2() ;
void danbianhoutuiyige2(void) ;
void xuanzhuanshuxian2() ;
void xuanzhuanyige2(void);
void youhoushuxian(void) ;
void youhoushuyige(void);
void youqianshuxian(void) ;
void youqianshuyige(void);
void rightqianjin1()
{
zkb1=32;
zkb2=25;
zkb11=30;
zkb22=30;
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
IN5 = 0;
IN6 = 1;
IN7 = 1;
IN8 = 0;
}
void rightqianjin1shang()
{
zkb1=30;
zkb2=25;
zkb11=30;
zkb22=30;
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
IN5 = 0;
IN6 = 1;
IN7 = 1;
IN8 = 0;
}
void rightqianjin1xia()
{
zkb1=30;
zkb2=17;
zkb11=30;
zkb22=30;
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
IN5 = 0;
IN6 = 1;
IN7 = 1;
IN8 = 0;
}
void youxunji()
{
if((right1 == 1)||(right2 == 1)||(left1==1)||(left2==1))
{
rightqianjin1();
}
else if((right1 ==0)&&(right2 == 1)&&(left1==0)&&(left2==1))
{
rightqianjin1shang();
}
else if((right1 == 1)&&(right2 == 0)&&(left1==1)&&(left2==0))
{
rightqianjin1xia();
}
}
void zuoxuanzhuan()
{
zkb1=50;
zkb2=50;
zkb11=50;
zkb22=50;
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
IN5 = 1;
IN6 = 0;
IN7 = 1;
IN8 = 0;
}
void bizhangbegain()
{
if((left1 == 0)&&(right1 == 1)&&(right==1)||(left==1))
{
{
stop();
delay(2000);
}
if((bizhangright==0) )
{
xunjiqianjinyige2();
delay(3000);
if((bizhangright==1) )
{
youqianshuyige();
delay(2000);
}
else if((bizhangright==0) )
{
xunjiqianjinyige2();
delay(3000);
youqianshuyige();
delay(2000);
}
}
else if((bizhangright==1) )
{
youqianshuyige();
delay(2000);
}
}
}
void baixianbizhang2()
{
if((bizhang1==0)&&((houleft==0)&&(houright==0)))
{
danbianhoutuiyige2() ;
delay(5000);
youqianshuyige();
delay(2000);
}
}
void bizhang2()
{
if((bizhang1==0)&&(houleft==1)&&(houright==1)&&(right==1)&&(left==1))
{
//
houtuiyige();
delay(1000);
if (bizhangright==0)
{
{
houtuiyige();
delay(1000);
}
if (bizhangright==0)
{
{
houtuiyige();
delay(1000);
youqianshuyige();
delay(2000);
}
}
else
{
youqianshuyige();
delay(2000);
}
}
else
{
youqianshuyige();
delay(2000);
}
}
}
//
void baixian3()
{
if(((left==0)&&(right==0))&&(flag3==0)&&((houright==1)||(houleft==1)))
{
{
stop();
delay(1000);
heikaiqianjinyige();
delay(1000);
baisehoutuibange();
delay(1000);
}
if(bizhangright==0)
{
{
houtuiyige() ;
delay(1000) ;
}
if(bizhangright==0)
{
houtuiyige();
delay(1000);
youhoushuyige();
delay(1000);
}
else
{
youhoushuyige();
delay(1000);
}
}
else
{
stop();
delay(1000);
youhoushuyige();
delay(1000);
}
}
}
void baixian4()
{
if(((left==0)&&(right==0))&&(flag3>0)&&((houright==1)||(houleft==1)))
{
{
stop();
delay(1000);
heikaiqianjinyige3();
delay(1000);
baisehoutuibange3();
delay(1000);
}
if((right==0)&&(left==0)&&(right1==1)&&(left1==1)||(right2==1))
{
if(bizhangright==0)
{
{
houtuiyige() ;
delay(1000) ;
}
if(bizhangright==0)
{
houtuiyige();
delay(1000);
youhoushuyige();
delay(1000);
}
else
{
youhoushuyige();
delay(1000);
}
}
else
{
stop();
delay(1000);
youhoushuyige();
delay(1000);
}
}
else if((right==0)&&(left==0)&&(right1==0)&&(right2==0)&&(left1==1))
{
xuanzhuanyige2();
flag3=0;
qianjin();
delay(1000);
danbianhoutuiyige2();
delay(1000);
bizhangbegain();
}
}
}
void xunjiqianjinshuxian2()
{
qianxunji();
if( right1 ==0&&flag==0)
{
qianxunji();
flag=1;
}
else if( right1 ==1&&flag==1)
{
qianxunji();
flag=2;
}
qianxunji();
if( right1 ==0&&flag==2)
{
qianxunji();
flag=3; //??????
}
else if( right1 ==1&&flag==3)
{
qianxunji();
flag=4;
}
else if( right1 ==0&&flag==4)
{
qianxunji();
flag=5;//??????
}
else if( right1 ==1&&flag==5)
{
qianxunji();
flag=6;
}
else if( right1 ==1&&flag==6)
{
qianxunji() ;//??3???
flag=7;
}
qianxunji();
if( right1 ==0&&flag==7)
{
qianxunji();
flag=8;
}
else if( right1 ==1&&flag==8)
{
qianxunji();
flag=9;//??4???
}
else if( right1 ==0&&flag==9)
{
qianxunji();
flag=10;
}
else if( right1 ==1&&flag==10)
{
qianxunji();
flag=11;//??5???
}
else if( right1 ==1&&flag==11)
{
qianxunji();
flag=12;
}
qianxunji();
}
void xunjiqianjinyige2(void) //??????
{
while(1)
{
xunjiqianjinshuxian2() ;
if(flag==2)
{
stop();
delay(2000);
flag=0;
break;
}
}
}
void qianjinshuxian4()
{
qianjin();
if(left1==1&&flag==0)
{
qianjin();
flag=1;
}
else if(left1==0&&flag==1)
{
qianjin();
flag=2;
}
qianjin();
if(left1==1&&flag==2)
{
qianjin();
flag=3; //??????
}
else if(left1==0&&flag==3)
{
qianjin();
flag=4;
}
}
void heikaiqianjinyige3(void)
{
while(1)
{
qianjinshuxian4() ;
if(flag==2)
{
stop();
delay(2000);
flag=0;
break;
}
}
}
void baisehoutuishuxian3()
{
houtui();
if(left1==0&&flag1==0)
{
houtui();
flag1=1;
}
else if(left1==1&&flag1==1)
{
houtui();
flag1=2;
}
houtui();
if(left1==0&&flag1==2)
{
houtui();
flag1=3;
}
else if(left1==1&&flag1==3)
{
houtui();
flag1=4;
}
}
void baisehoutuibange3(void)
{
while(1)
{
baisehoutuishuxian3() ;
if(flag1==2)
{
stop();
delay(2000);
flag1=0;
break;
}
}
}
void danbianhoutuishuxian2() //?????? ??
{
houtui();
if(right1==0&&flag1==0)
{
houtui();
flag1=1;
}
else if(right1==1&&flag1==1)
{
houtui();
flag1=2;//??????
}
houtui();
if(right1==0&&flag1==2)
{
houtui();
flag1=3;
}
else if(right1==1&&flag1==3)
{
houtui();
flag1=4;//??????
}
else if(right1==0&&flag1==4)
{
houtui();
flag1=5;//??????
}
else if(right1==1&&flag1==5)
{
houtui();
flag1=6;//??????
}
}
void danbianhoutuiyige2(void)
{
while(1)
{
danbianhoutuishuxian2() ;
if(flag1==2)
{
stop();
delay(2000);
flag1=0;
break;
}
}
}
void xuanzhuanshuxian2()
{
zuoxuanzhuan();
if(right==0&&left==0&&flag1==0)
{
zuoxuanzhuan();
flag1=1;
}
else if(right==1&&left==1&&flag1==1)
{
zuoxuanzhuan();
flag1=2;
}
zuoxuanzhuan();
if(right==0&&left==0&&flag1==2)
{
zuoxuanzhuan();
flag1=3;
}
else if(right==1&&left==1&&flag1==3)
{
zuoxuanzhuan();
flag1=4;
}
}
void xuanzhuanyige2(void)
{
while(1)
{
xuanzhuanshuxian2();
if(flag1==4)
{
stop();
delay(2000);
flag1=0;
break;
}
}
}
void youhoushuxian(void)
{
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
車比賽程序2.zip
(71.74 KB, 下載次數(shù): 8)
2020-2-2 16:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1