51循迹小车两个红外对管跑直角线代码
时间: 2023-12-27 17:04:11 浏览: 35
以下是51单片机基于红外循迹的小车跑直角线的代码示例,使用两个红外对管作为循迹传感器:
```c
#include <reg51.h>
sbit IN1 = P1^0; //电机1引脚定义
sbit IN2 = P1^1;
sbit IN3 = P1^2; //电机2引脚定义
sbit IN4 = P1^3;
sbit IR1 = P3^0; //红外对管1引脚定义
sbit IR2 = P3^1; //红外对管2引脚定义
void delay(unsigned int xms) //延时函数
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
if(IR1==0 && IR2==0) //循迹传感器同时检测到黑线
{
IN1 = 1; //电机1正转
IN2 = 0;
IN3 = 1; //电机2正转
IN4 = 0;
}
else if(IR1==0 && IR2==1) //只有循迹传感器1检测到黑线
{
IN1 = 1; //电机1正转
IN2 = 0;
IN3 = 0; //电机2停止
IN4 = 0;
delay(500); //延时
IN1 = 0; //电机1停止
IN2 = 0;
IN3 = 1; //电机2正转
IN4 = 0;
}
else if(IR1==1 && IR2==0) //只有循迹传感器2检测到黑线
{
IN1 = 0; //电机1停止
IN2 = 0;
IN3 = 1; //电机2正转
IN4 = 0;
delay(500); //延时
IN1 = 1; //电机1正转
IN2 = 0;
IN3 = 0; //电机2停止
IN4 = 0;
}
else //两个循迹传感器都未检测到黑线
{
IN1 = 1; //电机1正转
IN2 = 0;
IN3 = 1; //电机2正转
IN4 = 0;
}
}
}
```
注意:以上代码仅供参考,实际使用中需根据具体情况进行调整。