循迹小车程序
- 格式: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();
}
}