[分享] 51单片机步进电机驱动实例
640 查看
6 回复
 楼主 | 发布于 2019-07-11 | 只看楼主
分享到:
步进电机驱动程序,多种驱动方式,包含电路图
电路原理图如下:
步进马达电路图.jpg捕获.PNG 

单片机源程序如下:
  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. }
(0 ) (0 )
回复 举报

回复于 2019-07-11 沙发

谢谢分享
(0 )
评论 (0) 举报

回复于 2019-07-25 2#

谢谢分享!!!
(0 )
评论 (0) 举报

回复于 2019-07-27 3#

支持下,谢谢分享!
(0 )
评论 (0) 举报

回复于 2019-07-30 4#

谢谢分享
(0 )
评论 (0) 举报

回复于 2019-08-06 5#

谢谢分享!!!
(0 )
评论 (0) 举报

回复于 2019-08-08 6#

感谢楼主分享!!!!!
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部