智能红外循迹小车程序

  • 格式:docx
  • 大小:16.40 KB
  • 文档页数:14

#include

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

sbit you_2=P2^0; //红外探测端口定义

sbit you_1=P2^1;

sbit zhong=P2^2;

sbit zuo_1=P2^3;

sbit zuo_2=P2^4;

sbit CG=P0^1;

sbit DC=P0^0;

uchar code L_F[8]= {0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90}; //左电机正转

uchar code L_B[8]= {0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10}; //左电机反转

uchar code R_F[8]= {0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //右电机正转

uchar code R_B[8]= {0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //右电机反转

uchar code B_F[8]= {0x91,0x83,0xc2,0x46,0x64,0x2c,0x38,0x19}; //左反右正

uchar code F_B[8]= {0x19,0x38,0x2c,0x64,0x46,0xc2,0x83,0x91}; //左正右反

uchar code duandian[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //断电

unsigned char code qianjin[]={0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99}; //前进

unsigned char h[]={0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99}; //

uchar i;

void delay(uint z)

{

uint k ;

uint j;

for(k=0; k

for(j=0; j<110; j++);

}

void QJ(unsigned int i)

{

for(i=0;i<8;i++)

{

P1=h[i]=qianjin[i];

delay(13);

}

}

void DD()

{

P1=0x00; delay(300);

}

void wtj()

{

while(1)

{

if(P2==0xff)

{

DD();

delay(1000);

break;

}

else

{

QJ(8);}

}

}

void YG_1()

{

unsigned char i;

for(i=0;i<8;i++)

{ P1=h[i]=F_B[i];

delay(10);

}

}

void ZG_1()

{ unsigned char i;

for(i=0;i<8;i++)

{P1=h[i]=B_F[i];

delay(10);

}

}

void byg()

{

while(1) {

if(P2==0xfb)

break;

else if(P2==0xf9)

break;

else if(P2==0xfd)

break;

/* if(P2^0==0)

break;

else if(P2^1==0)

break;

/* else if(P2^2==0)

break;

else if(P2^3==0)

break;

else if(P2^4==0)

break;*/

else

YG_1();

}

}

void bzg()

{

while(1)

{

if(P2==0xfb)

break;

else if(P2==0xf3)

break;

else if(P2==0xf7)

break;

/* if(P2^0==0)

break;

else if(P2^1==0)

break;

else if(P2^2==0)

break;

if(P2^3==0)

break;

else if(P2^4==0) break;*/

else

ZG_1();

}

}

void YG_2()

{

// unsigned char i;

// unsigned char g;

if(P2==0xfa)

{//delay(4000);

wtj();

byg();

/*for(g=0;g<40;g++)

{

for(i=0;i<8;i++)

{ P1=F_B[i];

delay(20);

}

} */

}

else if(P2==0xf2)

{

//delay(4000);

wtj();

byg();

/*for(g=0;g<40;g++)

{

for(i=0;i<8;i++)

{ P1=F_B[i];

delay(20);

}

}*/

}

else if(P2==0xf6)

{

//delay(4000); wtj();

byg();

/*for(g=0;g<40;g++)

{

for(i=0;i<8;i++)

{ P1=F_B[i];

delay(20);

}

}*/

}

else if(P2==0xf4)

{

//delay(4000);

wtj();

byg();

/*for(g=0;g<40;g++)

{

for(i=0;i<8;i++)

{ P1=F_B[i];

delay(20);

}

}*/

}

else ;

}

void ZG_2()

{

//unsigned char i;

//unsigned char g;

if(P2==0xeb)

{//delay(4000);

wtj();

bzg();

/*for(g=0;g<40;g++)

{

for(i=0;i<8;i++)

{P1=B_F[i];

delay(20);

}

}*/ }

else if(P2==0xe9)

{

//delay(4000);

wtj();

bzg();

/* for(g=0;g<40;g++)

{

for(i=0;i<8;i++)

{P1=B_F[i];

delay(20);

}

}*/

}

else if(P2==0xed)

{

//delay(4000);

wtj();

bzg();

/* for(g=0;g<40;g++)

{

for(i=0;i<8;i++)

{P1=B_F[i];

delay(20);

}

}*/

}

else if(P2==0xe5)

{

//delay(4000);

wtj();

bzg();

/* for(g=0;g<40;g++)

{

for(i=0;i<8;i++)

{P1=B_F[i];

delay(20);

}

}*/

}

else ;

}