stc32g12k128小车三路电感循迹代码
时间: 2023-07-10 10:04:53 浏览: 150
循迹小车代码:
```c
#include <STC12C5A60S2.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit L_IN1=P1^0; //定义左电机输入1端口
sbit L_IN2=P1^1; //定义左电机输入2端口
sbit R_IN1=P1^2; //定义右电机输入1端口
sbit R_IN2=P1^3; //定义右电机输入2端口
sbit IN1=P3^2; //定义左循迹传感器端口
sbit IN2=P3^3;
sbit IN3=P3^4; //定义中间循迹传感器端口
sbit IN4=P3^5;
sbit IN5=P3^6; //定义右循迹传感器端口
sbit IN6=P3^7;
void delay_ms(uint ms) //延时函数
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<130;j++);
}
void init() //初始化函数
{
P1=0x00; //P1口全部输出低电平
P2=0x00; //P2口全部输出低电平
P3=0xff; //P3口全部输入
}
void main()
{
init(); //初始化
while(1)
{
if(IN1==0&&IN2==1&&IN3==0&&IN4==1&&IN5==0&&IN6==1) //左侧检测到黑线
{
L_IN1=1; //左电机正转
L_IN2=0;
R_IN1=1; //右电机正转
R_IN2=0;
}
else if(IN1==0&&IN2==1&&IN3==1&&IN4==1&&IN5==0&&IN6==1) //左前方检测到黑线
{
L_IN1=1; //左电机正转
L_IN2=0;
R_IN1=0; //右电机停止
R_IN2=0;
}
else if(IN1==0&&IN2==0&&IN3==1&&IN4==1&&IN5==0&&IN6==1) //中间检测到黑线
{
L_IN1=1; //左电机正转
L_IN2=0;
R_IN1=1; //右电机正转
R_IN2=0;
}
else if(IN1==1&&IN2==0&&IN3==1&&IN4==1&&IN5==0&&IN6==1) //右前方检测到黑线
{
L_IN1=0; //左电机停止
L_IN2=0;
R_IN1=1; //右电机正转
R_IN2=0;
}
else if(IN1==1&&IN2==0&&IN3==1&&IN4==0&&IN5==1&&IN6==0) //右侧检测到黑线
{
L_IN1=0; //左电机停止
L_IN2=0;
R_IN1=1; //右电机正转
R_IN2=0;
}
else //全黑或全白时小车停止
{
L_IN1=0;
L_IN2=0;
R_IN1=0;
R_IN2=0;
}
}
}
```
注:此代码是基于 STC12C5A60S2 单片机,仅供参考。如果使用其他型号的单片机需要进行相应的修改。
阅读全文