找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5679|回复: 3
收起左侧

单片机减速步进电机正反转窗帘开关设计

[复制链接]
ID:217754 发表于 2017-7-17 22:51 | 显示全部楼层 |阅读模式
新手,刚收到的单片机。第一个作品减速步进电机正反转窗帘开关分享。。。
代码简单,勿喷。。。

代码内有注明圈数调整,需要几圈自己改圈数的数值即可。

实物图:

接好后。转一圈是6个小珠,约10CM

接好后。转一圈是6个小珠,约10CM


按实验板上的K1按键步进电机正转
按实验板上的K2按键步进电机反转
按实验板上的K3按键步进电机停止

仿真原理图:

借鉴了别人的图纸,P3.0 正转 P3.1 反转 P3.2 停止

借鉴了别人的图纸,P3.0 正转 P3.1 反转 P3.2 停止

0.png

单片机源程序如下:
  1. #include <reg51.h>       //51芯片管脚定义头文件
  2. #include <intrins.h>         //内部包含延时函数 _nop_();
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};  //四相八拍正转编码
  6. uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};  ////四相八拍反转编码
  7. sbit  K1   = P3^0;       //正转
  8. sbit  K2   = P3^1;       //反转
  9. sbit  K3   = P3^2;       //停止
  10. sbit  BEEP = P3^3;       //蜂鸣器
  11. /********************************************************/
  12. /*                                                  
  13. /* 延时t毫秒
  14. /* 11.0592MHz时钟,延时约1ms                                    
  15. /*                                                      
  16. /********************************************************/
  17. void delay(uint t)

  18. {                           
  19.    uint k;
  20.    while(t--)
  21.    {
  22.      for(k=0; k<125; k++)
  23.      { }
  24.    }
  25. }

  26. /**********************************************************/
  27. void delayB(uchar x)    //x*0.14MS
  28. {
  29.    uchar i;
  30.    while(x--)
  31.    {
  32.      for (i=0; i<2; i++)
  33.      { }
  34.    }
  35. }

  36. /**********************************************************/
  37. void beep()
  38. {
  39.    uchar i;
  40.    for (i=0;i<100;i++)
  41.     {
  42.      delayB(4);
  43.      BEEP=!BEEP;                 //BEEP取反
  44.     }
  45.      BEEP=1;                    //关闭蜂鸣器
  46. }

  47. /********************************************************/
  48. /*
  49. /*步进电机正转
  50. /*
  51. /********************************************************/
  52. void  motor_ffw()
  53. {
  54.    uchar i;
  55.    uint  j;
  56.    uint  a;                                                  //转n圈
  57.    a=2;
  58.    for (j=0; j<8*a; j++)         //转1*n圈
  59.     {
  60.             if(K3==0)
  61.         {break;}                //退出此循环程序
  62.       for (i=0; i<8; i++)       //一个周期转45度
  63.         {
  64.           P1 = FFW[i];          //取数据
  65.           delay(1);            //调节转速
  66.         }
  67.     }
  68. }

  69. /********************************************************/
  70. /*
  71. /*步进电机反转
  72. /*
  73. /********************************************************/
  74. void  motor_rev()
  75. {
  76.      uchar i;
  77.          uint  j;
  78.          uint  a;
  79.          a=2;                                                  //转n圈
  80.          for (j=0; j<8*a; j++)       //转1×n圈
  81.       {
  82.             if(K3==0)
  83.          {break;}               //退出此循环程序
  84.         for (i=0; i<8; i++)     //一个周期转45度
  85.         {
  86.           P1 = REV[i];          //取数据
  87.           delay(1);            //调节转速
  88.         }
  89.       }
  90. }

  91. /********************************************************
  92. *                                                      
  93. *  主程序                                               
  94. *                                                      
  95. *********************************************************/

  96. main()
  97. {
  98.       uchar r,N=64;             //N 步进电机运转圈数
  99.    while(1)
  100.     {  
  101.       if(K1==0)
  102.           {
  103.         beep();
  104.                 for(r=0;r<N;r++)
  105.          {
  106.                    motor_ffw();       //电机正转
  107.                    if(K3==0)
  108.                   {beep();break;}    //退出此循环程序
  109.              }
  110.       }
  111.           else if(K2==0)
  112. ……………………

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

所有资料51hei提供下载:
减速步进电机正反转窗帘开关.zip (14.12 KB, 下载次数: 76)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:208108 发表于 2017-7-20 10:54 | 显示全部楼层
电机得用多大功率?这款5V步进电机好像力度不够吧?
回复

使用道具 举报

ID:156580 发表于 2017-7-27 08:38 | 显示全部楼层
duranhuang 发表于 2017-7-20 10:54
电机得用多大功率?这款5V步进电机好像力度不够吧?

同求,原理简单,参数才是重点
回复

使用道具 举报

ID:249545 发表于 2017-11-24 17:02 | 显示全部楼层
经典!作者彭伟原著.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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