步进电机程序

[复制链接]
查看660 | 回复1 | 2019-5-26 15:11:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
#include<reg52.h>

void TurnMotor(unsigned long angle);


void main()
{
   TurnMotor(360*25);
   while(1);

}

void delay()
{
    unsigned int i = 200;//     1s÷550=1.8ms,控制节拍刷新时间大于1.8ms , 延时2ms
    while(i--);
}

void TurnMotor(unsigned long angle)
{
    unsigned char temp;
    unsigned char index = 0;
    unsigned long beats = 0;
    unsigned char code BeatCode[8]={
0x0E, 0x0C, 0x0D, 0x09, 0x0B, 0x03, 0x07, 0x06
};
   
    beats = (angle*4076)/360;//计算需要的节拍数,4096拍对应一圈    ,八拍模式时,步进电机转过一圈是需要64个节拍,    1:64转子转64圈,64×64=4096个节拍输出轴才转过一圈,那么一个节拍转动的角度——步进角度就是360/4096
    while(beats--)
    {
      temp = P1;//读取p1的值
      temp = temp & 0XF0;
      temp = temp | BeatCode[index];//即保证高四位值不变,又将第四位赋值
      P1 = temp;
      index++; //步进节拍递增
      index = index & 0x07;//加到8归零
      delay();
    }
    P1|=0xFF; //关闭电机所有的相
}
回复

使用道具 举报

梁先生 | 2019-5-28 08:47:38 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则