当前位置:首页 » 《随便一记》 » 正文

2021-10-03_超561的博客

9 人参与  2022年03月05日 17:40  分类 : 《随便一记》  评论

点击全文阅读


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

首先了解电机驱动模块,为双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);
	  
}


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/35770.html

电机  小车  反转  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1