[DemoCode下载] 51单片机实现步进电机加减速的例子-加注释

[复制链接]
2540|6
 楼主| 小猫爱吃鱼 发表于 2015-8-16 20:55 | 显示全部楼层 |阅读模式
  1. void  motor_ffw()
  2. {
  3.    unsigned char i;

  4.       for (i=0; i<8; i++)       //一个周期转30度
  5.         {
  6.           P1 = FFW[i]&0x1f;  //取数据
  7.   //FFW为步进码
  8.           delay();           //调节转速
  9.         }
  10.      }



  11. void delay()  
  12. {                          
  13.    unsigned int k,t;
  14.     t=rate;  //转速定义
  15.    while(t--)
  16.    {
  17.      for(k=0; k<150; k++)
  18.      { }
  19.    }
  20. }
  21. void motor_turn()
  22. {
  23. unsigned char x;
  24. rate=0x0a;
  25. x=0x40;
  26. do
  27. {
  28.   mote_ffw();
  29.   rate--;  //每进一步时间越来越短
  30. }while(rate!=0x01);//处于加速过程
  31. do
  32. {
  33. motor_ffw();
  34. x--;     //每减一,进一步,匀速过程
  35.           //此处同样可以设延时函数
  36. } while(x!=0x01);
  37. do
  38. {
  39.   motor_ffw();
  40.   rate++; //每进一步时间越来越长

  41. }  while(rate!=0x0a);//处于减速过程
  42. }


598330983 发表于 2015-8-16 21:10 | 显示全部楼层
加减速主要是延时的问题,还有电机的响应时间,如果电流大了,响应时间会短。
734774645 发表于 2015-8-16 22:16 | 显示全部楼层
楼主弄个资料啊,那个步进电机分好几种呢。有四线的,还有其他线制的。我见那个光驱和软驱用的是四线的。我前天拆解了几个,正研究怎么弄呢。
玛尼玛尼哄 发表于 2015-8-16 22:20 | 显示全部楼层
这个需要驱动电路支持才行,端口电流太小。
天灵灵地灵灵 发表于 2015-8-16 22:28 | 显示全部楼层
写的不明白,没头没尾的,读数据,读哪儿的,如何执行。
643757107 发表于 2015-8-16 22:40 | 显示全部楼层
最好弄个变量,然后按键调控这个变量的大小,这个数如果是正,就正转,如果是负值就反转,如果是0就停止,另外单独弄个停止按键,用于快速停止。
芙蓉洞 发表于 2015-8-17 15:48 | 显示全部楼层
资料还是很好用的,就是这个程序的电路是什么样子的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

294

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部