【51单片机】 ULN2003模块 驱动步进电机(5线)正反转 代码以及接线图(简单教学,一看就会)

步进电机有四相(A-B-C-D)
正向转动思路为A→B→C→D
反向转动思路为D→C→B→A
通过给每一相轮流供电,实现电机轴的360度转动
、、以下代码可直接复制使用:

#include <reg52.h>  
 
#define uchar unsigned char  //宏定义 把unsigned char简写为uchar
#define uint unsigned int    //       把unsigned int 简写为uint
	
uint  i,j; 			//定义全局变量,执行电机for循环转动时间需要用到

sbit A1 = P1^0;       //定义给步进电机四相连接的IO口
sbit B1 = P1^1;
sbit C1 = P1^2;
sbit D1 = P1^3;

#define Coil_A {A1=1;B1=0;C1=0;D1=0;}     //A相通电,其它相断电
#define Coil_B {A1=0;B1=1;C1=0;D1=0;}     //B相通电,其它相断电
#define Coil_C {A1=0;B1=0;C1=1;D1=0;}     //C相通电,其它相断电
#define Coil_D {A1=0;B1=0;C1=0;D1=1;}     //D相通电,其它相断电
#define  Stop  {A1=0;B1=0;C1=0;D1=0;}     //全部断电,停止

uchar Speed=5;  		//整体调速,数字越小速度越快,而力矩也越小 

void Delay(uint xms)	//延时函数 12.000MHz Delay(1)=1ms
{                     	//延时程序 用烧录软件计算出来的 在另外一章有写
   uchar i, j;
   while(xms--) 
  {
	i = 2;
	j = 239;
	do { while (--j); }
	while (--i);
  }
}

   void corotation(void)  //正转 子程序 A——D
  {         
     Coil_A                
     Delay(Speed);  
     Coil_B
     Delay(Speed);
     Coil_C
     Delay(Speed);
     Coil_D
     Delay(Speed);
  }
  
   void reversal(void)    //反转 子程序 D——A
  {
	 Coil_D                 
     Delay(Speed);  
     Coil_C
     Delay(Speed);
     Coil_B
     Delay(Speed);
     Coil_A
     Delay(Speed);
  }
  
  
   void main()        //主程序
  {
	   Delay(30);    //启动前先缓冲一个30ms
	  
	    while(1)     //不断循环
	  { 
         for(i=0;i<500;i++)    //正转1圈(大概位置,步进电机需要编码盘才能测得比较准一点)
	     corotation();         //调用正转子函数
  
	      Stop                 //停止
		  Delay(1000);         //延时1s
		  		  
	     for(j=0;j<500;j++)    //反转1圈(大概位置)
         reversal();           //调用反转子函数
		  	  
		  Stop                 //停止
		  Delay(1000);         //延时1s
	  }
	  
  }

接线图↓:

在这里插入图片描述


源代码地址↓
源码地址
延时函数的生成↓
利用烧录软件生成延时函数 新手学习
更多步进电机资料↓
ULN2003驱动步进电机28BYJ-48
扩展内容
A4988驱动模块驱动四线步进电机

  • 29
    点赞
  • 232
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值