『壹』 c51 单片机 四相五线 步进电机 怎么停止
//根据你的相序表来看,你是按全步运行的,也就是每步走1.8度,4步一循环走7.2度,也就是50个循环转一圈。所以你程序里的512转一圈是不对的,512将转10圈多。
//根据你的程序j减到零就会停止,不存在一直转下去的情况。
//要做到随时停止的话,可以加一个按键切换启停就OK了
main()
{
unsigned char i,flag;
unsigned int j;
j=512*2; //512转一圈
////////////////////////////////////////////////////////////////
P0=0XFF;//关掉数码管的位选信号。阻止数码管受到P0口信号的影响。
Delay(500);
WELA=1; //WELA=P2^7,开通位选,写进命令
Delay(500);
WELA=0;
flag=0;
////////////////////////////////////////////////////////////////
while(1)
{
for(i=0;i<4;i++) //4相
{
P0=B_Rotation[i]; //输出对应的相 可以自行换成反转表格
while(1)
{
if(key==0)
{
while(key==0); //等待键抬起
flag=~flag;
}
if(flag)break;
}
Delay(400); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}