当前位置: 代码迷 >> 单片机 >> 求教,步进电机的旋动
  详细解决方案

求教,步进电机的旋动

热度:36   发布时间:2016-04-28 15:41:30.0
求教,步进电机的转动
int main (void)
{
 
    UINT32 i=0,j=0;
    UINT32 a[10]={300,800,1200,1000,461,1800,2160,1540,1446,711};
    while(1)
   {   
    if(K2==0)  //按键,每按一次程序执行一次,相当于从数组中提取一个数据。
    {  
       
       if(j==0)   //第一个数据
        {
         bc_vcw;   //控制电机方向,顺时针; 
         for(i=0;i<=a[j];i++)  //控制电机转动角度(每次转1/12度)
          {            
           bs_vfin;            //控制电机转动速度
           delay1ms(1);
           bc_vfin;         
           delay1ms(1);
          }
         }
       else
       {
        if((a[j]-a[j-1])>=0)       //和前一个数比,若大于则继续转动差值的对应的角度
         {
          bc_vcw;//IO0CLR|=1<<13; //顺时针
           for(i=0;i<=(a[j]-a[j-1]);i++)
            {
             bs_vfin;
             delay1ms(1);
             bc_vfin;
             delay1ms(1);
            }
          }
        else //if((a[j]<a[j-1]))  //和前一个数比,若小于。则往回转动差值的角度
         {
           bs_vcw;//IO0SET|=1<<13; //逆时针
           for(i=0;i<=(a[j-1]-a[j]);i++)
            {
             bs_vfin;
             delay1ms(1);
             bc_vfin;
             delay1ms(1);
            }
          }
         }   
     j++;
     }
    
     
     }
    
   }



程序的目的是为了能连续输入数据,控制步进电机转相应的角度。单片机是LCP2292芯片,控制电机的是UM12017芯片。
  相关解决方案