Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7565937
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 数据库开发技术

2011-01-13 17:03:34

  1. /************************************************
  2. 文件:四相步进电机控制程序
  3. [ ]: 罗志勇、周彬炎、霍小波
  4. 描述:驱动方式彩用一相劢磁
  5.       moto_maichong_time 一个脉冲信号时间,单位1MS
  6.       moto_qu_one     转动角度64(45度)
  7.      调用函数 moto_dispose(char moto_NU) 形参值为1至8
  8.      P1口与电机相连
  9. 时间:2011年1月11日
  10. *************************************************/

  11. #define uchar unsigned char

  12. #define moto_maichong_time 10 //一个脉冲信号时间单位1MS(224ms)

  13. #define    moto_qu_one    64 //转动45度值


  14. /* 一相励磁,电机正转I/O高低电平对应表*/
  15. uchar moto_table1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x2,0x01};

  16. /* 二相励磁,电机正转I/O高低电平对应表*/
  17. uchar moto_table2[]={0x0c,0x06,0x03,0x09,0x09,0x03,0x6,0x0c};

  18. uchar moto_begin; //正反转标志位


  19. void moto_delay(int moto_i)     //延时1MS函数

  20. {
  21.     uchar moto_j,moto_k;
  22.     for(moto_j=moto_i;moto_j>0;moto_j--)
  23.         for(moto_k=125;moto_k>0;moto_k--);
  24. }

  25. /*电机速度,正反转控制。正反转由moto_begin取0正转、4反转*/
  26. void qudong(uchar moto_num)
  27. {
  28.     int moto_qu_j,moto_qu_k;
  29.     
  30.     /*电机转动一圈*/
  31.     for(moto_qu_k=0;moto_qu_k<(moto_qu_one*moto_num);moto_qu_k++)
  32.     {
  33.         /*四个励磁脉冲信号*/
  34.         for(moto_qu_j=moto_begin;moto_qu_j<4+moto_begin;moto_qu_j++)
  35.         {
  36.             P1 = moto_table2[moto_qu_j];     //选择劢磁方式                

  37.             moto_delay( moto_maichong_time );    //1个励磁脉冲信号时间

  38.         }
  39.     }
  40. }

  41. /*控制步进电机转动圈数、正反转。正数为正转、负数反转*/
  42. void moto_dispose(char moto_NU)     
  43. {
  44.     /*根据传入值,控制电机正反转*/
  45.     if(moto_NU<0)
  46.     {
  47.         moto_begin=4; //控制电机反转

  48.         moto_NU *= -1; //取转动圈数

  49.     }
  50.     else
  51.         moto_begin=0;    //控制电机正转        

  52.         
  53.     /*根据传入值,控制电机转动圈数*/    
  54.     qudong(moto_NU);        
  55. }
阅读(1639) | 评论(0) | 转发(2) |
0

上一篇:INT0

下一篇:矩阵键盘

给主人留下些什么吧!~~