- /************************************************
- 文件:四相步进电机控制程序
- [ ]:
- 描述:驱动方式彩用一相劢磁
- moto_maichong_time 一个脉冲信号时间,单位1MS
- moto_qu_one 转动角度64(45度)
- 调用函数 moto_dispose(char moto_NU) 形参值为1至8
- P1口与电机相连
- 时间:2011年1月11日
- *************************************************/
- #define uchar unsigned char
- #define moto_maichong_time 10 //一个脉冲信号时间单位1MS(224ms)
- #define moto_qu_one 64*8 //转动45度值
- /* 一相励磁,电机正转I/O高低电平对应表*/
- uchar moto_table1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x2,0x01};
- /* 二相励磁,电机正转I/O高低电平对应表*/
- uchar moto_table2[]={0x0c,0x06,0x03,0x09,0x09,0x03,0x6,0x0c};
- uchar moto_begin=0; //正反转标志位
- int moto_qu_k=0; //转动的初使值
- int moto_qu_kk=1; //转动的最大值
- int moto_qu_j=0; //劢磁信号的初始值
- void moto_delay(int moto_i) //延时1MS函数
- {
- uchar moto_j,moto_k;
- for(moto_j=moto_i;moto_j>0;moto_j--)
- for(moto_k=125;moto_k>0;moto_k--);
- }
- /*电机速度,正反转控制。正反转由moto_begin取0正转、4反转*/
- void qudong(uchar moto_num)
- {
- moto_qu_kk = moto_qu_one*moto_num;
- /*电机转动一圈*/
- for(moto_qu_k=0;moto_qu_k
- {
- /*四个励磁脉冲信号*/
- for(moto_qu_j=moto_begin;moto_qu_j<4+moto_begin;moto_qu_j++)
- {
- P1 = moto_table2[moto_qu_j]; //选择劢磁方式
- moto_delay( moto_maichong_time ); //1个励磁脉冲信号时间
- }
- }
- }
- /*控制步进电机转动圈数、正反转。正数为正转、负数反转*/
- void moto_dispose(char moto_NU)
- {
- /*根据传入值,控制电机正反转*/
- if(moto_NU<0)
- {
- moto_begin=4; //控制电机反转
- moto_NU *= -1; //取转动圈数
- }
- else
- moto_begin=0; //控制电机正转
- /*根据传入值,控制电机转动圈数*/
- qudong(moto_NU);
- }
上一篇:L298N直流步进电机驱动直流电机程序
下一篇:ADC0804测试程序
推荐阅读最新更新时间:2024-03-16 15:02