标题: C51单片机-步进电机正反转 源程序 [打印本页]

作者: yourfather    时间: 2017-5-7 12:52
标题: C51单片机-步进电机正反转 源程序
步进电机正反转


单片机源程序:
  1. /*-----------------------------------------------
  2.   名称:步进电机
  3.   修改:无
  4.   内容:本程序用于测试4相步进电机常规驱动 含正反转 使用1相励磁
  5.         

  6. ------------------------------------------------*/

  7. #include <reg52.h>



  8. sbit A1=P1^0; //定义步进电机连接端口
  9. sbit B1=P1^1;
  10. sbit C1=P1^2;
  11. sbit D1=P1^3;


  12. #define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
  13. #define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
  14. #define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
  15. #define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
  16. #define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
  17. #define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
  18. #define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
  19. #define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电
  20. #define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

  21. unsigned char Speed;
  22. /*------------------------------------------------
  23. uS延时函数,含有输入参数 unsigned char t,无返回值
  24. unsigned char 是定义无符号字符变量,其值的范围是
  25. 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
  26. 长度如下 T=tx2+5 uS
  27. ------------------------------------------------*/
  28. void DelayUs2x(unsigned char t)
  29. {   
  30. while(--t);
  31. }
  32. /*------------------------------------------------
  33. mS延时函数,含有输入参数 unsigned char t,无返回值
  34. unsigned char 是定义无符号字符变量,其值的范围是
  35. 0~255 这里使用晶振12M,精确延时请使用汇编
  36. ------------------------------------------------*/
  37. void DelayMs(unsigned char t)
  38. {
  39.      
  40. while(t--)
  41. {
  42.      //大致延时1mS
  43.      DelayUs2x(245);
  44.          DelayUs2x(245);
  45. }
  46. }
  47. /*------------------------------------------------
  48.                     主函数
  49. ------------------------------------------------*/
  50. main()
  51. {
  52. unsigned int i=512;//旋转一周时间
  53. Speed=8;
  54. Coil_OFF
  55. while(i--)  //正向
  56.   {         
  57.      Coil_A1                //遇到Coil_A1  用{A1=1;B1=0;C1=0;D1=0;}代替
  58.      DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
  59.                              //数字越小,转速越大,力矩越小
  60.      Coil_B1
  61.      DelayMs(Speed);
  62.      Coil_C1
  63.      DelayMs(Speed);
  64.      Coil_D1
  65.      DelayMs(Speed);
  66.   }
  67.   Coil_OFF
  68.   i=512;
  69.   while(i--)//反向
  70.   {
  71.      Coil_D1                //遇到Coil_A1  用{A1=1;B1=0;C1=0;D1=0;}代替
  72.      DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
  73.                                  //数字越小,转速越大,力矩越小
  74.      Coil_C1
  75.      DelayMs(Speed);
  76.      Coil_B1
  77.      DelayMs(Speed);
  78.      Coil_A1

  79. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载:
83-步进电机正反转.zip (12.51 KB, 下载次数: 32)


作者: Ycccccc    时间: 2018-5-30 11:03
兄弟 在吗 我想要一份你这个程序行么 我毕业设计想参考一下你这个我邮箱 309211560@qq.com




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