找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机按键控制步进电机先顺时针转动90度,定住2S,再逆时针转90度

[复制链接]
跳转到指定楼层
楼主
ID:255696 发表于 2018-2-11 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想通过按一个按键,使步进电机先顺时针转动90度,在定住2S,再逆时针转动90度。代码方面应该怎么编?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:283667 发表于 2018-2-11 14:00 | 只看该作者
你说的应该是舵机吧,应该叫伺服电机吧?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:155507 发表于 2018-2-11 14:25 | 只看该作者
  1. /*-----------------------------------------------
  2.   名称:步进电机
  3.   内容:本程序用于测试4相步进电机常规驱动
  4.         使用1-2相励磁
  5.         1-2相激励功率增倍,步进角度减半,抖动减少
  6.         顺序如下 a-ab-b-bc-c-cd-d-da   又称4相8拍
  7. ------------------------------------------------*/

  8. #include <reg52.h>



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


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

  22. unsigned char Speed;
  23. bit Flag;
  24. /*------------------------------------------------
  25. uS延时函数,含有输入参数 unsigned char t,无返回值
  26. unsigned char 是定义无符号字符变量,其值的范围是
  27. 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
  28. 长度如下 T=tx2+5 uS
  29. ------------------------------------------------*/
  30. void DelayUs2x(unsigned char t)
  31. {   
  32.   while(--t);
  33. }
  34. /*------------------------------------------------
  35. mS延时函数,含有输入参数 unsigned char t,无返回值
  36. unsigned char 是定义无符号字符变量,其值的范围是
  37. 0~255 这里使用晶振12M,精确延时请使用汇编
  38. ------------------------------------------------*/
  39. void DelayMs(unsigned char t)
  40. {
  41.   
  42.   while(t--)
  43.   {
  44.     //大致延时1mS
  45.     DelayUs2x(245);
  46.     DelayUs2x(245);
  47.   }
  48. }
  49. /*------------------------------------------------
  50.                     主函数
  51. ------------------------------------------------*/
  52. main()
  53. {
  54.   unsigned int i=512;//旋转一周时间

  55.   EA=1;          //全局中断开
  56.   EX0=1;         //外部中断0开
  57.   IT0=1;         //1表示边沿触发

  58.   Speed=10;
  59.   while(1){
  60.     Coil_OFF
  61.     while((i--)&&Flag)  //正向
  62.     {  Coil_A1      
  63.       DelayMs(Speed);
  64.       Coil_AB1                //遇到Coil_AB1  用{A1=1;B1=1;C1=0;D1=0;}代替
  65.       DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
  66.       //数字越小,转速越大,力矩越小
  67.       Coil_B1      
  68.       DelayMs(Speed);
  69.       Coil_BC1
  70.       DelayMs(Speed);
  71.       Coil_C1      
  72.       DelayMs(Speed);
  73.       Coil_CD1
  74.       DelayMs(Speed);
  75.       Coil_D1      
  76.       DelayMs(Speed);
  77.       Coil_DA1
  78.       DelayMs(Speed);
  79.     }
  80.     Coil_OFF
  81.     i=512;
  82.     while((i--)&&(!Flag))//反向
  83.     {  
  84.       Coil_A1      
  85.       DelayMs(Speed);
  86.       Coil_DA1                //遇到Coil_AB1  用{A1=1;B1=1;C1=0;D1=0;}代替
  87.       DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
  88.       //数字越小,转速越大,力矩越小
  89.       Coil_D1      
  90.       DelayMs(Speed);
  91.       Coil_CD1
  92.       DelayMs(Speed);
  93.       Coil_C1      
  94.       DelayMs(Speed);
  95.       Coil_BC1
  96.       DelayMs(Speed);
  97.       Coil_B1      
  98.       DelayMs(Speed);
  99.       Coil_AB1
  100.       DelayMs(Speed);
  101.     }
  102.   }
  103. }

  104. /*------------------------------------------------
  105.                 外部中断程序
  106. ------------------------------------------------*/
  107. void ISR_INT0(void) interrupt 0
  108. {

  109.   if(!INT0)
  110.   {
  111.     DelayMs(10);//在此处可以添加去抖动程序,防止按键抖动造成错误
  112.     if(!INT0)
  113.     //while(!INT1);//等待按键释放
  114.     {
  115.       Flag=!Flag;   
  116.     }
  117.   }
  118. }
复制代码

评分

参与人数 1黑币 +100 收起 理由
admin + 100 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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