st89s51循迹小车代码
时间: 2023-12-20 22:29:15 浏览: 134
c
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit L1 = P1^0; //定义左边第一个红外传感器
sbit L2 = P1^1; //定义左边第二个红外传感器
sbit R1 = P1^2; //定义右边第一个红外传感器
sbit R2 = P1^3; //定义右边第二个红外传感器
sbit ENA = P2^0; //定义左边电机使能端
sbit ENB = P2^1; //定义右边电机使能端
sbit IN1 = P2^2; //定义左边电机正转端
sbit IN2 = P2^3; //定义左边电机反转端
sbit IN3 = P2^4; //定义右边电机正转端
sbit IN4 = P2^5; //定义右边电机反转端
void delay(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
if(L1==0 && L2==0 && R1==0 && R2==0) //四路红外传感器均检测到黑线
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 0;
ENA = 0;
ENB = 0;
}
else if(L1==0 && L2==0 && R1==0 && R2==1) //左转
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 0;
ENA = 1;
ENB = 1;
}
else if(L1==0 && L2==0 && R1==1 && R2==0) //左转
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 0;
ENA = 1;
ENB = 1;
}
else if(L1==0 && L2==0 && R1==1 && R2==1) //直行
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==0 && L2==1 && R1==0 && R2==0) //右转
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==0 && L2==1 && R1==0 && R2==1) //直行
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==0 && L2==1 && R1==1 && R2==0) //右转
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==0 && L2==1 && R1==1 && R2==1) //直行
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==1 && L2==0 && R1==0 && R2==0) //左转
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 0;
ENA = 1;
ENB = 1;
}
else if(L1==1 && L2==0 && R1==0 && R2==1) //左转
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 0;
ENA = 1;
ENB = 1;
}
else if(L1==1 && L2==0 && R1==1 && R2==0) //左转
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 0;
ENA = 1;
ENB = 1;
}
else if(L1==1 && L2==0 && R1==1 && R2==1) //直行
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==1 && L2==1 && R1==0 && R2==0) //右转
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==1 && L2==1 && R1==0 && R2==1) //直行
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==1 && L2==1 && R1==1 && R2==0) //右转
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
else if(L1==1 && L2==1 && R1==1 && R2==1) //直行
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
ENA = 1;
ENB = 1;
}
}
}
```
--相关问题--:
阅读全文