51单片机如何控制两相四线步进电机

2024-12-30 02:29:41
推荐回答(2个)
回答1:

#include
#define uchar unsigned char
#define uint unsigned int
//--------------------------------
uchar step1[] = {0x05, 0x06, 0x0A, 0x09};
uchar stepx = 0;
//--------------------------------
void zs(uint a)
{
while(a--);
}
//--------------------------------
void zheng(void)
{
P0 = step1[stepx]; //走一步
stepx++;
if (stepx >= 4) stepx = 0;
}
//--------------------------------
void fan(void)
{
P0 = step1[stepx]; //走一步
stepx--;
if (stepx == 255) stepx = 3;
}
//--------------------------------
void main ()
{
uint i;

while(1) {

for(i = 0; i < 400; i++) {//正转400步
zheng(); //走一步
zs(90); //控制转速
}

for(i = 0; i < 400; i++) {//反转400步
fan(); //走一步
zs(90); //控制转速
}

}
}
//--------------------------------

回答2:

退另一段距离的话是不是就是让电机反转。如果是的话你还要再设置一个反转数组,加一个反转程序,与上面类似。