51智能小车前进后退左右旋转

这篇博客详细介绍了如何使用单片机控制小车的电机运动。首先讲解了电机驱动模块的双H桥配置,然后通过P1^2到P1^7管脚连接电机,并进行了IO口定义。通过宏定义简化了电机的使能、正反转操作。在main函数中,实现了小车前进、后退、左右转向及快速旋转等动作,通过delay函数控制动作间隔,使得小车运动平滑有序。
摘要由CSDN通过智能技术生成

                                                         

首先了解电机驱动模块,为双H桥驱动;p1^2,p1^3,p1^4控制小车左电机p1^5,p1^6,P1^7控制小车右电机;将单片机上的P1^2~P1^6和PCB板上的P1^2~P1^6用杜邦线分别对应连接好,然后进行对电机驱动IO口定义;用宏定义对小车电机的使能,^正转,反转进行定义,方便以后写main函数,下面为QXA51.h函数

#ifndef __QXA51_H__
#define __QXA51_H__

/*电机驱动IO定义*/
sbit IN1=P1^2; //为1 左电机反转
sbit IN2=P1^3; //为1 左电机正转
sbit IN3=P1^6; //为1 右电机正转
sbit IN4=P1^7; //为1 右电机反转
sbit EN1=P1^4; //为1 左电机使能
sbit EN2=P1^5; //为1 右电机使能

#define left_motor_en		    EN1=1 //左电机使能
#define left_motor_stops		EN1=0 //左电机停止
#define right_motor_en		  EN2=1 //右电机使能
#define right_motor_stops		EN2=0 //右电机停止

#define left_motor_go		    IN1=0,IN2=1 //左电机正转
#define left_motor_back		  IN1=1,IN2=0 //左电机反转
#define right_motor_go		  IN3=1,IN4=0 //右电机正转
#define right_motor_back		IN3=0,IN4=1 //右电机反转

#endif

  以下为控制小车运动的main函数,用delay函数将小车的运动区分开,如果小车想右转则左轮正转,如果小车想左转则右轮正转

#include <REGX52.H>
#include <QXA51.H>

void delay(unsigned int z)//毫秒级延时
{
	unsigned int x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--);
}	


/*小车前进*/
void	forward()
{
		left_motor_en;//左电机使能
	  right_motor_en;//右电机使能
		left_motor_go;//左电机正转
	  right_motor_go;//右电机正转
}

/*小车后退*/
void	backward()
{
		left_motor_en;//左电机使能
	  right_motor_en;//右电机使能
		left_motor_back;//左电机反转
	  right_motor_back;//右电机反转
}

/*小车左转*/
void left()
{
		left_motor_stops;//左电机停止
		right_motor_en;//右电机使能
		right_motor_go;//右电机正转
}

/*小车右转*/
void right()
{
		right_motor_stops;//右电机停止
		left_motor_en;//左电机使能
		left_motor_go;//左电机正转
}

/*小车停止*/
void stop()
{
		left_motor_stops;//左电机停止
	  right_motor_stops;//右电机停止
}

/*小车左旋转*/
void left_rapidly()
{
    left_motor_en;//左电机使能
	  right_motor_en;//右电机使能
		right_motor_go;//右电机正转
		left_motor_back;//左电机反转
}

/*小车右旋转*/
void right_rapidly()
{
		left_motor_en;//左电机使能
	  right_motor_en;//右电机使能
		left_motor_go;//左电机正转
		right_motor_back;//右电机反转
}
void main()
{
		forward();//小车前进
	  delay(3000);//毫秒级延迟
	  stop();//小车停止
	  delay(3000);//毫秒级延迟
	  backward();//小车后退
	  delay(3000);//毫秒级延迟
	  left();//小车左转
	  delay(3000);//毫秒级延迟
	  stop();//小车停止
	  delay(3000);//毫秒级延迟
	  right();//小车右转
	  delay(3000);//毫秒级延迟
	  left_rapidly();//小车左旋转
		delay(3000);//毫秒级延迟
	  right_rapidly();//小车右旋转
		delay(3000);//毫秒级延迟
	  stop();//小车停止
    while(1);
	  
}

  • 12
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值