四相步進電機控制程序(可隨時控制轉(zhuǎn)動角度)
- /************************************************
- 文件:四相步進電機控制程序
- [ ]:
- 描述:驅(qū)動方式彩用一相勱磁
- moto_maichong_time 一個脈沖信號時間,單位1MS
- moto_qu_one 轉(zhuǎn)動角度64(45度)
- 調(diào)用函數(shù) moto_dispose(char moto_NU) 形參值為1至8
- P1口與電機相連
- 時間:2011年1月11日
- *************************************************/
- #defineucharunsignedchar
- #definemoto_maichong_time 10//一個脈沖信號時間單位1MS(224ms)
- #definemoto_qu_one64*8//轉(zhuǎn)動45度值
- /* 一相勵磁,電機正轉(zhuǎn)I/O高低電平對應表*/
- uchar moto_table1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x2,0x01};
- /* 二相勵磁,電機正轉(zhuǎn)I/O高低電平對應表*/
- uchar moto_table2[]={0x0c,0x06,0x03,0x09,0x09,0x03,0x6,0x0c};
- uchar moto_begin=0;//正反轉(zhuǎn)標志位
- intmoto_qu_k=0;//轉(zhuǎn)動的初使值
- intmoto_qu_kk=1;//轉(zhuǎn)動的最大值
- intmoto_qu_j=0;//勱磁信號的初始值
- voidmoto_delay(intmoto_i)//延時1MS函數(shù)
- {
- uchar moto_j,moto_k;
- for(moto_j=moto_i;moto_j>0;moto_j--)
- for(moto_k=125;moto_k>0;moto_k--);
- }
- /*電機速度,正反轉(zhuǎn)控制。正反轉(zhuǎn)由moto_begin取0正轉(zhuǎn)、4反轉(zhuǎn)*/
- voidqudong(uchar moto_num)
- {
- moto_qu_kk=moto_qu_one*moto_num;
- /*電機轉(zhuǎn)動一圈*/
- 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個勵磁脈沖信號時間
- }
- }
- }
- /*控制步進電機轉(zhuǎn)動圈數(shù)、正反轉(zhuǎn)。正數(shù)為正轉(zhuǎn)、負數(shù)反轉(zhuǎn)*/
- voidmoto_dispose(charmoto_NU)
- {
- /*根據(jù)傳入值,控制電機正反轉(zhuǎn)*/
- if(moto_NU<0)
- {
- moto_begin=4;//控制電機反轉(zhuǎn)
- moto_NU*=-1;//取轉(zhuǎn)動圈數(shù)
- }
- else
- moto_begin=0;//控制電機正轉(zhuǎn)
- /*根據(jù)傳入值,控制電機轉(zhuǎn)動圈數(shù)*/
- qudong(moto_NU);
- }
評論