51单片机寻迹小车代码
时间: 2023-05-30 15:06:06 浏览: 678
由于 51 单片机是一种较为老旧的芯片,现在已经被更先进的芯片所替代,因此以下代码仅供参考。
//引脚定义
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit EN1=P1^4;
sbit EN2=P1^5;
//循迹传感器引脚定义
sbit L1=P2^0;
sbit L2=P2^1;
sbit M=P2^2;
sbit R1=P2^3;
sbit R2=P2^4;
void delay(unsigned int i) //延时函数
{
unsigned int j;
while(i--)
{
for(j=0;j<125;j++);
}
}
void main()
{
IN1=0; //初始化电机引脚
IN2=0;
IN3=0;
IN4=0;
EN1=1;
EN2=1;
while(1)
{
if(L1==0&&L2==0&&M==0&&R1==0&&R2==0) //五个循迹传感器都在白线上
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
else if(L1==1&&L2==0&&M==0&&R1==0&&R2==0) //左侧检测到黑线
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
}
else if(L1==0&&L2==1&&M==0&&R1==0&&R2==0) //左侧检测到黑线
{
IN1=0;
IN2=1;
IN3=0;
IN4=0;
}
else if(L1==0&&L2==0&&M==1&&R1==0&&R2==0) //中间检测到黑线
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
else if(L1==0&&L2==0&&M==0&&R1==1&&R2==0) //右侧检测到黑线
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
}
else if(L1==0&&L2==0&&M==0&&R1==0&&R2==1) //右侧检测到黑线
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
}
delay(10); //延时一段时间,使小车慢慢行驶
}
}
阅读全文