循迹小车程序

  • 格式:doc
  • 大小:16.50 KB
  • 文档页数:3

#include

#define uint unsigned int

#define uchar unsigned char

sbit P10=P1^0; //控制左电机前进

sbit P11=P1^1;//控制左电机后退

sbit P12=P1^2;//控制右电机前进

sbit P13=P1^3;//控制右电机后退

sbit LED=P0^0;

sbit zuobian=P3^2; //左边传感器

sbit youbian=P3^3; //右边传感器

//************************************************

//延时函数,在12MHz的晶振频率下

//大约50us的延时

//************************************************

void delay_50us(uint t)

{

uchar j;

for(;t>0;t--)

for(j=19;j>0;j--);

}

//************************************************

//延时函数,在12MHz的晶振频率下

//大约50ms的延时

//************************************************

void delay_50ms(uint t)

{

uint j;

for(;t>0;t--)

for(j=6245;j>0;j--);

}

void qianjin()//小车前进

{ P10=0;P11=1;

delay_50us(25);

P10=1;P11=1;

delay_50us(10);

P12=0;P13=1;

delay_50us(25);

P12=1;P13=1;

delay_50us(10);

}

void tingzhi() //小车停止

{ P10=1;P11=1;P12=1;P13=1;}

void youguai() //小车右拐

{ P10=0;P11=1;

delay_50us(25);

P10=1;P11=1;

delay_50us(10);

P12=1;P13=1;

delay_50us(10);

}

void zuoguai() //小车左拐

{

P12=0;P13=1;

delay_50us(25);

P12=1;P13=1;

delay_50us(10);

P10=1;P11=1;

delay_50us(10);

}

void zhuanwan()//小车转弯

{

P10=1;P11=0;P12=0;P13=1;

delay_50ms(15);

{P10=1;P11=1;P12=1;P13=1;}

delay_50ms(100);

LED=1;

}

void main(void)

{

LED=0;

while(1)

{

if(zuobian==1&&youbian==0) //右边检测到黑线

zuoguai();

if(zuobian==0&&youbian==1) // 左边检测到黑线

youguai();

if(zuobian==0&&youbian==0) // 在黑线外

qianjin();

if(zuobian==1&&youbian==0) //到终点

zhuanwan();

}

}