中科因仑“3+1”工程特种兵精英论坛

标题: 四相步进电机八拍调速程序 [打印本页]

作者: 张衍波    时间: 2015-5-11 16:21
标题: 四相步进电机八拍调速程序

////////////////////////汇诚科技////////////////////
//////////////////http://www.ourhc.cn///////////////
///////////////////步进电机调试程序/////////////

#include<reg52.h>  

/*****P1.0=A 1.1=B 1.2=B' ; P1.3=A'****/
//////////////////////////////////////////////////////////////////////////////////////////////
/*******************************正转数组**************************************************/
  code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04};  //两相四线八拍工作方式
/*******************************反转数组**************************************************/
code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05};  //两相四线八拍工作方式
unsigned char keycan=0;                //键值
unsigned char s,i,j,k,z;

int y=30;//定义转动速度,数值越大电机转速越慢反之则快

sbit P2_0=P2^0;//正转按键
sbit P2_1=P2^1;//反转按键
sbit P2_2=P2^2;//电机加速
sbit P2_3=P2^3;//电机减速

void delay(i)//延时函数
  {
      for(j=0;j<i;j++)
      for(k=0;k<250;k++);
  }



void zrun()// 正转运行
{

   for(z=0;z<8;z++)
       {
         P1=runz[z];
         delay(y);
       }
}

void frun()// 反转运行
{
     for(z=0;z<8;z++)
        {
            P1=runf[z];
            delay(y);
         }
}

main()
{
   while(1)
    {
       if(P2_0==0) //如果电机正转按键按下
      {
        keycan=1;         //键值等于1
      }
         if(P2_1==0) //如果电机反转按键按下
      {
        keycan=2;         //键值等于2
       }
                     switch (keycan)
                    {
                     case 1: zrun();  //键值等于1 正转
                                 break;
                     case 2: frun();  //键值等于2 反转
                     break;

                     }

             if(P2_2==0)  //  电机加速
      {
        y+=5;
      }
         if(P2_3==0)
      {                         // 电机减速
        y-=5;
       }

   }
}


[attach]2935[/attach]







欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4