找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3169|回复: 1
打印 上一主题 下一主题
收起左侧

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)

评分

参与人数 2黑币 +55 收起 理由
Ycccccc + 5 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:341210 发表于 2018-5-30 11:03 | 只看该作者
兄弟 在吗 我想要一份你这个程序行么 我毕业设计想参考一下你这个我邮箱 309211560@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表