标题: 51单片机步进电机驱动实例 [打印本页]

作者: ufomiai    时间: 2019-4-21 17:33
标题: 51单片机步进电机驱动实例
步进电机驱动程序,多种驱动方式,包含电路图
电路原理图如下:


单片机源程序如下:
  1. /**************************************************************************************
  2. *  标题:  步进电机试验四                                                                                                                          *
  3. *                                                                                                                                                                           *
  4. *    通过本例程了解步进马达使用及驱动程序编写                                                                                  *
  5. *     双四拍工作方式:                                                                     *
  6. *    AB-BC-CD-DA (即一个脉冲,转 7.5 度)                                                                                              *
  7. *                                                                                               *
  8. *  请学员一定要消化掉本例程,                                                                 *
  9.                                                                                                                                 *
  10. **************************************************************************************/   


  11. #include "reg52.h"
  12. //Motor
  13. sbit F1 = P1^0;
  14. sbit F2 = P1^1;
  15. sbit F3 = P1^2;
  16. sbit F4 = P1^3;



  17. ///////////////////////////////////////
  18. //步进电机驱动
  19. unsigned char MotorStep=0;
  20. unsigned int MotorTimer = 0;
  21. unsigned int TIM,CT;

  22. void InitMotor()
  23. {
  24.   F1 = 1;
  25.   F2 = 1;
  26.   F3 = 1;
  27.   F4 = 1;
  28. }



  29. void SetMotor()
  30. {
  31.   //  if(Speed == 0) return;

  32.    
  33.     switch(MotorStep)
  34.     {
  35.        case 0:
  36.           if(TIM)
  37.           {
  38.             F1 = 0;
  39.             F2 = 0;
  40.                         F3 = 1;
  41.                         F4 = 1;
  42.             MotorStep = 1;
  43.                          TIM=0;
  44.           }
  45.        break;

  46.        case 1:
  47.          if(TIM)
  48.           {       
  49.             F1 = 1;
  50.             F2 = 0;
  51.             F3 = 0;
  52.             F4 = 1;
  53.             MotorStep = 2;
  54.                         TIM=0;
  55.           }
  56.        break;

  57.        case 2:
  58.          if(TIM)
  59.           {
  60.            
  61.          
  62.             F1 = 1;
  63.             F2 = 1;
  64.             F3 = 0;
  65.             F4 = 0;
  66.             MotorStep = 3;
  67.                         TIM=0;
  68.           }
  69.        break;


  70.        case 3:
  71.          if(TIM)
  72.           {       
  73.             F1 = 0;
  74.             F2 = 1;
  75.             F3 = 1;
  76.             F4 = 0;
  77.             MotorStep = 0;
  78.                         TIM=0;
  79.           }
  80.        break;
  81.     }

  82. }


  83. void system_Ini()
  84. {
  85.     TMOD|= 0x11;
  86.     TH0=0xDC; //11.0592M
  87.     TL0=0x00;       
  88.         IE = 0x8A;       
  89.     TR0  = 1;


  90. }

  91. main()
  92. { system_Ini();
  93.    InitMotor();
  94.     while(1)
  95.         {
  96.          SetMotor();

  97.          }



  98.   }
  99.   
  100. /*************************************
  101. [ t1 (0.5ms)中断] 中断中做 PWM 输出
  102.   ------------1000/(0.02ms*250)=200Hz
  103. *************************************/
  104.   void Tzd(void) interrupt 1
  105. {
  106.    TH0 = 0xfe;    //11.0592
  107.          TL0 = 0x33;

  108.         if( CT++==20)
  109.           {TIM=1;
  110.            CT=0;
  111.           }
  112. }
复制代码

所有资料51hei提供下载:
步进马达.rar (614.18 KB, 下载次数: 76)


作者: lengot    时间: 2019-12-18 20:32
谢谢分享。刚学啥都不会。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1