怎么让步进电机高速旋转,同时消抖,我写的程序来回抖...

2019-07-15 23:04发布

  1. /*******************************************/

  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. char count=0;
  6. char time,i=0;
  7. unsigned char code table_UP   []=    {0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99}; //前进                     
  8. unsigned char code table_Down []=    {0x99,0x88,0xcc,0x44,0x66,0x22,0x33,0x11}; //后退
  9. unsigned char code table_Left []=    {0x60,0x40,0x50,0x10,0x90,0x80,0xa0,0x20};        //左转                                                                 
  10. unsigned char code table_right[]=    {0x02,0x0a,0x08,0x09,0x01,0x05,0x04,0x06}; //右转
  11. unsigned int step; //记录脉冲数,即要走的步数
  12. uint beat; //步进电机每种驱动方式下的拍数
  13. char *p1,*p2;//存储运行方式表                                             
  14. uint X=500;
  15. /*******************************************/
  16. //八拍驱动正转(N*360/400)度
  17. /*******************************************/
  18. void main()
  19. {
  20.         TMOD=0x01;
  21.         //TH0=0x33;
  22.         //TL0=0xf5;
  23.         TH0=(65536-X)/256;        // 2ms
  24.         TL0=(65536-X)%256;
  25.         EA=1;
  26.         ET0=1;
  27.         EX0=1;
  28.         TR0=1;
  29.         while(1)
  30.         {

  31.         }
  32. }

  33. void time0() interrupt 1 using 1
  34. {       
  35.         //TH0=0x33;
  36.         //TL0=0xf5;
  37.         TH0=(65536-X)/256;
  38.         TL0=(65536-X)%256;
  39.         count++;
  40.                 if(count==10)//count==X
  41.         {
  42.                 count=0;
  43.                 if(i<8)
  44.                 {
  45.                 P0=table_UP[i];i++;
  46.                 }
  47.             if(i==8)
  48.             {i=0;}
  49.         }

  50. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。