我想用一个单片机开发板控制4个 28BYJ-48 5V 五线四相步进电机,求范例程序(C语言)

我想用一个单片机开发板控制4个 28BYJ-48 5V 五线四相步进电机,求范例程序(C语言),第1张

控制四个步进电机就要四个ULN2003A,

#include <reg52h>

unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格

unsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格

void Delay(unsigned int i)//延时

{

while(--i);

}

main()

{

unsigned char i;

while(1)

{

for(i=0;i<4;i++) //4相

{

P1=B_Rotation[i]; //输出对应的相 可以自行换成反转表格

Delay(500); //改变这个参数可以调整电机转速

}

}

}

这是单个步进电机的程序,控制四个,分别改一下其中的“P1”就可以了!

sbit K1=P1^0;

sbit K2=P1^1;

char y=0;

while(1)

{

pangduan();

for(i=0;i<4;i++) //4相

{

/P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格

Delay(500); //改变这个参数可以调整电机转速

Delay(5000);/

P1=B_Rotation[i];

Delay(265+y);

P1=F_Rotation[i];

Delay(265+y);

}

}

void pangduan()

{

if(K1==0)

{ y++; //加

while(~k1)

}

if(K2==0)

{ y--;

while(~k2); //减

}

}

}

没有下上限 要是调的话 需要判断显示延时时间

#include <reg51h> //51芯片管脚定义头文件

#include <intrinsh> //内部包含延时函数 _nop_();

#define uchar unsigned char

#define uint unsigned int

uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //四相八拍正转编码

uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; ////四相八拍反转编码

sbit K1 = P3^2; //正转

sbit K2 = P3^3; //反转

sbit K3 = P3^4; //停止

sbit BEEP = P3^6; //蜂鸣器

//

/

/ 延时t毫秒

/ 110592MHz时钟,延时约1ms

/

//

void delay(uint t)

{

uint k;

while(t--)

{

for(k=0; k<125; k++)

{ }

}

}

//

void delayB(uchar x) //x014MS

{

uchar i;

while(x--)

{

for (i=0; i<13; i++)

{ }

}

}

//

void beep()

{

uchar i;

for (i=0;i<100;i++)

{

delayB(4);

BEEP=!BEEP; //BEEP取反

}

BEEP=1; //关闭蜂鸣器

}

//

/

/步进电机正转

/

//

void motor_ffw()

{

uchar i;

uint j;

for (j=0; j<8; j++) //转1n圈

{

if(K3==0)

{break;} //退出此循环程序

for (i=0; i<8; i++) //一个周期转45度

{

P1 = FFW[i]; //取数据

delay(2); //调节转速

}

}

}

//

/

/步进电机反转

/

//

void motor_rev()

{

uchar i;

uint j;

for (j=0; j<8; j++) //转1×n圈

{

if(K3==0)

{break;} //退出此循环程序

for (i=0; i<8; i++) //一个周期转45度

{

P1 = REV[i]; //取数据

delay(2); //调节转速

}

}

}

/

主程序

/

main()

{

uchar r,N=64; //N 步进电机运转圈数

while(1)

{

if(K1==0)

{

beep();

for(r=0;r<N;r++)

{

motor_ffw(); //电机正转

if(K3==0)

{beep();break;} //退出此循环程序

}

}

else if(K2==0)

{

beep();

for(r=0;r<N;r++)

{

motor_rev(); //电机反转

if(K3==0)

{beep();break;} //退出此循环程序

}

}

else

P1 = 0xf0;

}

}

//

以上就是关于我想用一个单片机开发板控制4个 28BYJ-48 5V 五线四相步进电机,求范例程序(C语言)全部的内容,包括:我想用一个单片机开发板控制4个 28BYJ-48 5V 五线四相步进电机,求范例程序(C语言)、51单片机C语言程序按键控制步进电机转速、求一89C51单片机C语言程序,控制步进电机,定位。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9417505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存