百度知道 - 信息提示
C51单片机控制三相步进电机的程序,要实现的功能是正转反转和加速减速.能在数码管上显示转速.
一下部分程序 希望有用
#include
#include
#define uint unsigned int
#define uchar unsigned char
//char code fanzhuan[4]={0x08,0x04,0x02,0x01}; // 1相励磁法
char code fanzhuan[4]={0xe0,0xd0,0xb0,0x70}; // 2相励磁法
//char code fanzhuan[8]={0x08,0x0c,0x02,0x06,0x02,0x03,0x01,0x09}; //1-2相励磁法
//char code zhengzhuan[4]={0x08,0x01,0x02,0x04}; // 1相励磁法
char code zhengzhuan[4]={0x70,0xb0,0xd0,0xe0}; // 2相励磁法
switch (zfbiaoz)
{
case 0:
{
break;
}
case 1:
{
P3=P3&0x0f;
P3=P3|zhengzhuan[kk];
kk++;
if(kk>3)
{
kk=0;
}
break;
}
case 2:
{
P3=P3&0x0f;
P3=P3|fanzhuan[kk];//zhengzhuan[kk];
kk++;
if(kk>3)
{
kk=0;
}
break;
}
default:{}
}
51单片机控制步进电机正反转、加减速
你是通过if语句判断管脚的电平高低的,如果是的话,你需要一个延时程序来消除管脚电平的抖动。
纠错的方法,是x影响转速吧?你观察一下那个x变量的值的变化,看看你的程序到底是如何操作的。