智能红外循迹小车程序
- 格式: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 ;
}