51单片机小车四次循迹后直行的程序
时间: 2023-12-23 15:05:45 浏览: 73
以下是一个简单的51单片机小车四次循迹后直行的程序:
```
#include <reg51.h>
#define LEFT_SENSOR P0_0 // 左传感器
#define RIGHT_SENSOR P0_1 // 右传感器
#define LEFT_MOTOR P1_0 // 左电机
#define RIGHT_MOTOR P1_1 // 右电机
void delay(unsigned int count) { // 延时函数
unsigned int i, j;
for (i = 0; i < count; i++) {
for (j = 0; j < 112; j++);
}
}
void main() {
while (1) {
// 四次循迹
while (LEFT_SENSOR && RIGHT_SENSOR); // 如果同时检测到黑线,继续循迹
if (!LEFT_SENSOR && !RIGHT_SENSOR) { // 如果同时没有检测到黑线,说明到了终点
break;
}
if (!LEFT_SENSOR) { // 左传感器检测到黑线
LEFT_MOTOR = 0; // 左电机停止
RIGHT_MOTOR = 1; // 右电机前进
delay(1000); // 延时一段时间,让小车转向
} else if (!RIGHT_SENSOR) { // 右传感器检测到黑线
LEFT_MOTOR = 1; // 左电机前进
RIGHT_MOTOR = 0; // 右电机停止
delay(1000); // 延时一段时间,让小车转向
} else { // 如果都没检测到黑线
LEFT_MOTOR = 1; // 左电机前进
RIGHT_MOTOR = 1; // 右电机前进
}
}
// 经过四次循迹后,小车直行
LEFT_MOTOR = 1; // 左电机前进
RIGHT_MOTOR = 1; // 右电机前进
while (1); // 程序结束,停在原地
}
```
这个程序使用了两个GPIO口来控制左右电机的前进,使用两个GPIO口来检测左右传感器的状态,然后根据传感器的状态决定小车的运动方向。经过四次循迹后,小车会直行到终点。
阅读全文