想求这个程序,预期希望电机每次转动90度,SPEED最好为1 ,有想法联系QQ1130011026
#include sbit led=P1^0; sbit A1=P2^0; //定义步进电机连接端口 sbit B1=P2^1; sbit C1=P2^2; sbit D1=P2^3;
#define uchar unsigned char #define uint unsigned int #define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电 #define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电 #define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电 #define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电 #define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电 #define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电 #define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电 #define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电 #define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
void zhengzhuan() { unsigned int j=0; Speed=3; led=0;//转动 j=512; //旋转一周时间 Coil_OFF while(j--) //正向 { Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替 DelayMs(Speed); //改变这个参数可以调整电机转速 , //数字越小,转速越大,力矩越小 Coil_B1 DelayMs(Speed); Coil_C1 DelayMs(Speed); Coil_D1 DelayMs(Speed); } } void fanzhuan() { unsigned int j=0; Speed=3; led=1;//反向 Coil_OFF j=512; while(j--)//反向 { Coil_D1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替 DelayMs(Speed); //改变这个参数可以调整电机转速 , //数字越小,转速越大,力矩越小 Coil_C1 DelayMs(Speed); Coil_B1 DelayMs(Speed); Coil_A1 DelayMs(Speed); } } 想求这个程序,预期希望电机每次转动90度,SPEED最好为1 ,有想法联系QQ1130011026 求大家帮忙
刚查了下资料,你的这个步进是四相八拍的电机,但是你程序里面控制是按四相四拍来控制的,你这个不会有问题么?
你程序里这样写?
你应该调用后面这个四相八拍的吧?
实在没时间帮你修改了,而且手上也没东西,调试也不方便,帮你找了个用定时器写的步进正反转的程序,看了下写的还不错,可以参考一下,希望能帮到你: