四相步进电机控制程序(可随时控制转动角度)
时间:11-11
来源:互联网
点击:
- /************************************************
- 文件:四相步进电机控制程序
- [ ]:
- 描述:驱动方式彩用一相劢磁
- moto_maichong_time 一个脉冲信号时间,单位1MS
- moto_qu_one 转动角度64(45度)
- 调用函数 moto_dispose(char moto_NU) 形参值为1至8
- P1口与电机相连
- 时间:2011年1月11日
- *************************************************/
- #defineucharunsignedchar
- #definemoto_maichong_time 10//一个脉冲信号时间单位1MS(224ms)
- #definemoto_qu_one64*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;//正反转标志位
- intmoto_qu_k=0;//转动的初使值
- intmoto_qu_kk=1;//转动的最大值
- intmoto_qu_j=0;//劢磁信号的初始值
- voidmoto_delay(intmoto_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反转*/
- voidqudong(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个励磁脉冲信号时间
- }
- }
- }
- /*控制步进电机转动圈数、正反转。正数为正转、负数反转*/
- voidmoto_dispose(charmoto_NU)
- {
- /*根据传入值,控制电机正反转*/
- if(moto_NU<0)
- {
- moto_begin=4;//控制电机反转
- moto_NU*=-1;//取转动圈数
- }
- else
- moto_begin=0;//控制电机正转
- /*根据传入值,控制电机转动圈数*/
- qudong(moto_NU);
- }
四相步进电机控制程序转动角 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)