急急急~!关于数码管和步进电机如何同步的问题~!

2019-07-15 20:08发布

本帖最后由 zhileung 于 2014-4-18 13:09 编辑

我在做设计的时候发现一个问题,就是如果我把一个5线4相的步进电机接到P1口,数码管(二位)接到P0口,怎样才可以在步进电机转的同时,数码管在倒计时呢?PS:两个器件是直接接到IO口的,只是数码管接了一个锁存器~!~!~!~!急急急,,请大虾们解救一下~!谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
依然落叶飘零
2019-07-17 06:10
daxiandajie 发表于 2014-4-20 20:55
行,晚点我问问我们这的大神

楼主还没解决?我作为一个见习大神决定打救你。
你的数码管和步进电机不能同时工作是因为你两个都用到了延时函数。电机转动的时候。数码管就不能正常显示。
因此你可以用到定时器来解决这个问题。因为我手头没有完整的程序我只能给你讲个思路。具体的程序还得你自己写。
步进电机工作是不断
  1. void TimeInterrupt() interrupt 1         
  2. {
  3.         TH0 = 0xfe;    //重装初值
  4.         TL0 = 0x33;

  5.         if( CT++==speed)         //每进一次中断CT.直到CT和设定的初速度
  6.         {
  7.                 CT=0;                   //清零,重新计数
  8.                Motor()                  //调用电机驱动函数
  9.         }        
  10. }
复制代码上面就是定时器中断处理函数。他是没到一定的时间就运行一次电机驱动函数。如果想实现调速,在主函数中改变speed的值就实现调速功能。
  1. void Motor()
  2. {
  3.     switch(MotorStep)
  4.     {
  5.             case 0:                                        // A                                    
  6.                 a = 0;                    //0xf1  
  7.                 b = 1;
  8.                 c = 1;
  9.                 d = 1;
  10.                 MotorStep = 1;
  11.                 break;

  12.             case 1:                 // AB        
  13.                 a = 0;                   //0xf3
  14.                 b = 0;
  15.                 c = 1;
  16.                 d = 1;
  17.                 MotorStep = 2;
  18.                 break;

  19.             case 2:           //B
  20.                 a = 1;
  21.                 b = 0;                  //0xf2
  22.                 c = 1;
  23.                 d = 1;
  24.                 MotorStep = 3;
  25.                 break;

  26.            case 3:                //BC
  27.                 a = 1;
  28.                 b = 0;                    //0xf6
  29.                 c = 0;
  30.                 d = 1;
  31.                 MotorStep = 4;
  32.                 break;
复制代码上面就是步进电机的驱动函数。他每次都只运行一步。下一次调用这个函数时就运行下一步。循环运行八步实现驱动电机转动。
因为步进电机驱动是在中断里面实现的。因此不会影响主函数的运行。因此数码管就不会出现闪烁或显示不正常的现象。


一周热门 更多>