c51单片机循迹小车代码
时间: 2023-07-09 16:22:58 浏览: 306
以下是基于C51单片机的循迹小车代码示例:
```c
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit Lmotor1 = P2^2;
sbit Lmotor2 = P2^3;
sbit Rmotor1 = P2^4;
sbit Rmotor2 = P2^5;
sbit left = P3^0;
sbit mid = P3^1;
sbit right = P3^2;
void delay(uint i)
{
while(i--);
}
void forward()
{
Lmotor1 = 1;
Lmotor2 = 0;
Rmotor1 = 1;
Rmotor2 = 0;
}
void left_turn()
{
Lmotor1 = 0;
Lmotor2 = 0;
Rmotor1 = 1;
Rmotor2 = 0;
}
void right_turn()
{
Lmotor1 = 1;
Lmotor2 = 0;
Rmotor1 = 0;
Rmotor2 = 0;
}
void main()
{
while(1)
{
if(left == 0 && mid == 1 && right == 0) // 左偏
{
left_turn();
}
else if(left == 1 && mid == 1 && right == 0) // 直行
{
forward();
}
else if(left == 0 && mid == 1 && right == 1) // 右偏
{
right_turn();
}
else if(left == 1 && mid == 0 && right == 1) // 直行
{
forward();
}
else // 停止
{
Lmotor1 = 0;
Lmotor2 = 0;
Rmotor1 = 0;
Rmotor2 = 0;
}
}
}
```
这是一个基本的循迹小车代码示例,根据三个红外线传感器的反射情况,来控制小车的运动方向。其中,`forward()`表示小车前进,`left_turn()`表示小车左转,`right_turn()`表示小车右转,`delay(uint i)`函数用于延时。在`main()`函数中,通过不断检测红外线传感器的反射情况,来控制小车的运动方向。
阅读全文