• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于步进电机的问题请各位大神帮帮忙!!!

white_tear 2015-12-17 浏览量:1462

#include
#define uchar unsigned char
#define uint unsigned int
sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
#define CIOL_A {A1=1;B1=0;C1=0;D1=0;}
#define CIOL_B {A1=0;B1=1;C1=0;D1=0;}
#define CIOL_C {A1=0;B1=0;C1=1;D1=0;}
#define CIOL_D {A1=0;B1=0;C1=0;D1=1;}
#define CIOL_S {A1=0;B1=0;C1=0;D1=0;}
void Delay2Ms(int t);
void DelayMs(int t);
main()

  int i=8,speed=3;
 for(i=8;i>0;i--)//顺时针转动
 {
  CIOL_A;
  DelayMs(speed);
  CIOL_B;
  DelayMs(speed);
  CIOL_C;
  DelayMs(speed);
  CIOL_D;
  DelayMs(speed);
 }
 
 CIOL_S;
 for(i=8;i>0;i++)//逆时针转动
 {
  CIOL_D;
  DelayMs(speed);
   CIOL_C;
  DelayMs(speed);
   CIOL_B;
  DelayMs(speed);
  CIOL_A;
  DelayMs(speed);
 }
 CIOL_S;
}
 
void Delay2Ms(int t)
{
  while(--t);
}
void DelayMs(int t)
{
  while(t--)
  {
   Delay2Ms(245);
   Delay2Ms(245);//1ms
  }
}

为什么顺时针转动了1/4圈都不到就开始逆时针转动了,而且还一直逆时针转动。请问各位大神吗为什么会这样,求解释!!感谢

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 按照如下这样改应该就对了(请注意第二个For循环i的初值):

    void main()

    {
    int i,speed=3;

    for(i=8;i>0;i--)//
    {
    CIOL_A;
    DelayMs(speed);
    CIOL_B;
    DelayMs(speed);
    CIOL_C;
    DelayMs(speed);
    CIOL_D;
    DelayMs(speed);
    }

    CIOL_S;
    for(i=0;i<8;i++)//
    {
    CIOL_D;
    DelayMs(speed);
    CIOL_C;
    DelayMs(speed);
    CIOL_B;
    DelayMs(speed);
    CIOL_A;
    DelayMs(speed);
    }
    CIOL_S;

    }


    另外i在定义的时候没必要赋值,反正在For循环里都会赋初值。

    • 发布于 2015-12-17
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 貌似是个逻辑问题,

    检查一下你的for循环。别的不说,你的第二个for循环是有问题的,i初始化为8,不管怎么+都是>0的,着解释了一直逆时针的现象。

    至于前一个,你在修复后一个循环后,再试试,然后参考一下该步进电机的手册就明白了。

    希望有帮助


    • 发布于2015-12-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 楼上正解。for循环一直累加。。至于为什么是四分之一。。那得看你步进电机参数了。。

    而且你这两相四拍好像不对啊

    • 发布于2015-12-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 谢谢,我想请问下,为什么我这个程序里没有while(1),但是它依然来回不停的正反转。谢谢
    • 发布于2015-12-18
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于步进电机的问题请各位大神帮帮忙!!!