查看: 1355|回复: 0
打印 上一主题 下一主题

例五、步进电机两相四拍调速程序

[复制链接]
跳转到指定楼层
沙发
发表于 2015-5-7 21:26:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

#include<reg52.h>  

/*****P1.0=A 1.1=B 1.2=A' ; P1.3=B'****/
//////////////////////////////////////////////////////////////////////////////////////////////
/*******************************正转数组**************************************************/
code unsigned char runz[4]={0x0e,0x0d,0x0b,0x07};  //两相四线四拍工作方式
/*******************************反转数组**************************************************/
code unsigned char runf[4]={0x07,0x0b,0x0d,0x0e};  //两相四线四拍工作方式
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<4;z++)
       {
         P1=runz[z];
         delay(y);
       }
}

void frun()// 反转运行
{
     for(z=0;z<4;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;
       }

   }
}




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表