无法控制好步进电机的转动角度,大神们教教我程序哪错了

2019-07-18 15:13发布

  1. #include <REGX52.H>

  2. #define uint unsigned int;

  3. //#define forwordDir 0;
  4. //#define backDir 1;

  5. sbit Pulse=P1^0;
  6. sbit Dir=P1^1;
  7. sbit En=P1^2;
  8. uint clock,i,x;
  9. uint counter=0;


  10. //void forword(void)
  11. //{
  12. //   TR0 = 1;
  13. //   TH0 = (65536 -clock)/256;
  14. //   TL0 = (65536 -clock)%256;
  15. //   Dir = 0;
  16. //   En = 0;
  17. //}

  18. void back(void)
  19. {
  20.    TR0 = 1;
  21.    TH0= (65536 - clock)/256;
  22.    TL0 = (65536 - clock)%256;
  23.    Dir = 1;
  24.    En = 0;

  25. }

  26. void stop(void)
  27. {
  28.    TR0 = 0;
  29. }


  30. void InitBJDJ(void)
  31. {
  32.    TMOD =0x01;
  33.    EA =1;
  34.    ET0=1;
  35. }

  36. void main(void)
  37. {   
  38.    clock =75;
  39.    x=1600;
  40.    InitBJDJ();

  41.    while(1)
  42.    {
  43.        back();
  44.      
  45.        if(counter>=x)//  我想要的效果是:8细分,1600个脉冲走完一圈。 但是电机一直在转,不会停
  46.        {
  47.            En=1;
  48.       }
  49.   }

  50. void time0(void) interrupt 1
  51. {
  52.    TH0= (65536-clock)/256;
  53.    TL0 = (65536 -clock)%256;
  54.    Pulse = ~Pulse;
  55.    counter++;
  56. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
Mad-life
1楼-- · 2019-07-20 05:43
zkyx512512 发表于 2015-11-18 16:54
在吗?请问你这个是4相5线的吗

两相四线的57步进电机
仅有的单词
2楼-- · 2019-07-20 08:31
 精彩回答 2  元偷偷看……
hours24
3楼-- · 2019-07-20 14:14
同学多努力哈,问题不大的。
111111122222
4楼-- · 2019-07-20 18:40
哪儿错了?楼主怎么改的?
gy_sun
5楼-- · 2019-07-21 00:12
同问楼主怎么改的呀,出现了一样的问题

一周热门 更多>