找回密码
 立即注册

QQ登录

只需一步,快速开始

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

如何用51单片机中的矩阵键盘控制步进马达的正反停

[复制链接]
跳转到指定楼层
楼主
ID:99776 发表于 2015-12-21 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何用51单片机中的矩阵键盘控制步进马达的正反停
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:79544 发表于 2015-12-21 22:15 | 只看该作者
写个矩阵键盘函数,按下那个键就控制正转,按下另一个键就控制反转,再写个步进电机反正转的数组
回复

使用道具 举报

板凳
ID:99934 发表于 2015-12-22 10:08 | 只看该作者
程序里加个键盘判断子程序
回复

使用道具 举报

地板
ID:99956 发表于 2015-12-22 11:43 | 只看该作者
马达的正反停很简单,用H桥就可以实现,直接买和298的驱动板就行了,反正也不贵
回复

使用道具 举报

5#
ID:86421 发表于 2015-12-22 20:38 | 只看该作者
  1. #include <reg52.h>
  2. sbit A1=P1^0; //定义步进电机连接端口
  3. sbit B1=P1^1;
  4. sbit C1=P1^2;
  5. sbit D1=P1^3;


  6. #define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
  7. #define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
  8. #define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
  9. #define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电
  10. #define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
  11. #define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
  12. #define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
  13. #define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
  14. #define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

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

  48. EA=1;          //全局中断开
  49. EX0=1;         //外部中断0开
  50. IT0=1;         //1表示边沿触发

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

  97. /*------------------------------------------------
  98.                  外部中断程序
  99. ------------------------------------------------*/
  100. void ISR_INT0(void) interrupt 0
  101. {

  102. if(!INT0)
  103.    {
  104.    DelayMs(10);//在此处可以添加去抖动程序,防止按键抖动造成错误
  105.    if(!INT0)
  106.    //while(!INT1);//等待按键释放
  107.      {
  108.      Flag=!Flag;   
  109.      }
  110.    }
  111. }
复制代码
回复

使用道具 举报

6#
ID:102817 发表于 2016-1-11 23:15 | 只看该作者
是了,按照上面的程序处理吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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