其他分享
首页 > 其他分享> > 2020-12-08

2020-12-08

作者:互联网

今日对红外避障小车软件部分进行了调试:

这里主要是编写L298N有关代码实现对小车两电机的控制,其逻辑功能如下

写好代码后我将程序烧录进单片机运行小车,发现同一代码下两电机运行方向相反,我将电平赋值对调才能使两电机同向转动,最终代码如下:

#include <REG52.H>
sbit ENA=P2^2;
sbit IN1=P2^1;
sbit IN2=P2^0;
sbit ENB=P0^0;
sbit IN3=P0^1;
sbit IN4=P0^2;
sbit A1=P1^0;
sbit B2=P1^1;
void delay(int z) 
{
	int x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
void back()
{
		ENA=1;
		IN1=1;
		IN2=0;
		ENB=1;
		IN3=0;
		IN4=1;
}
void go()
{
		ENA=1;
		IN1=0;
		IN2=1;
		ENB=1;
		IN3=1;
		IN4=0;
}
void left() {
	ENA=1;
	IN1=1;
	IN2=0;
	ENB=1;
	IN3=1;
	IN4=0;
}
void right()
{
	ENA=1;
	IN1=0;
	IN2=1;
	ENB=1;
	IN3=0;
	IN4=1;
}
void main()
{
	while(1)
	{
		go();
		if(B2==0) {
			back();
			delay(500);
			left();
			delay(700);
		}
		if(A1==0) {
			back();
			delay(500);
			right();
			delay(700);
		}
	}
}

io口定义部分我根据自己接线的实际情况进行了调整。

最后小车成功运行,但红外感应的硬件部分灵敏度不是很高,导致其运行有些笨拙。

烧录部分需要下载器,利用串口通信有关原理接线到单片机进行下载。
 

标签:ENB,12,IN4,08,IN2,IN3,2020,sbit,void
来源: https://blog.csdn.net/l13593519/article/details/110870670