keil5电磁车代码
时间: 2023-12-10 14:34:22 浏览: 84
以下是基于51单片机的三路电磁传感器的智能循迹小车的完整程序,使用Keil打开即可编译,代码有详细注释:
```c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit IN1 = P1^0; // IN1控制左电机正转
sbit IN2 = P1^1; // IN2控制左电机反转
sbit IN3 = P1^2; // IN3控制右电机正转
sbit IN4 = P1^3; // IN4控制右电机反转
sbit S1 = P3^2; // S1为左传感器
sbit S2 = P3^3; // S2为中传感器
sbit S3 = P3^4; // S3为右传感器
void delay(uint xms) // 延时函数
{
uint i, j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}
void Car_Stop() // 小车停止
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 0;
}
void Car_Straight() // 小车直行
{
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
}
void Car_Left() // 小车左转
{
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
}
void Car_Right() // 小车右转
{
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
}
void Car_Back() // 小车后退
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
}
void main()
{
while (1)
{
if (S1 == 0 && S2 == 1 && S3 == 0) // 左传感器检测到黑线
{
Car_Left(); // 左转
}
else if (S1 == 0 && S2 == 0 && S3 == 1) // 右传感器检测到黑线
{
Car_Right(); // 右转
}
else if (S1 == 0 && S2 == 0 && S3 == 0) // 三个传感器都检测到黑线
{
Car_Back(); // 后退
}
else // 其他情况
{
Car_Straight(); // 直行
}
}
}
```
阅读全文