正转与反转输入信号不能同时置为1;
P3^4=0;p3^5=0;不转;
p3^4=0;p3^5=1;转动;
p3^4=1;p3^5=0;转动;
程序不对啊,步进电机没有驱动,下面给你一段程序,写入你的程序中试试:
uchar code motoz[4]={0x01,0x04,0x02,0x08}; //步进电机正转顺序编码
uchar code motof[4]={0x08,0x02,0x04,0x01}; //步进电机反转顺序编码
#define MOTOR P3
for(i=0;i<4;i++) //4步一个循环
{
MOTOR=motoz[i]; //P3驱动
delay(800);
如果只是测试能不能转的话,可以用下面的代码。如果你要实现真反转或者别的控制那你自己写函数,进行位控制就可以。注意不要让L9110的两个输入都是0,这样电机会朝着一个方向转。实际方向可能与竞争冒险有关(猜测),但是并不会烧芯片,只是可能影响你的物理结构或者把电机烧了。
另外电机不能转并不是代码的问题,而是硬件电路的问题。51的IO口和L9110并不兼容。应该是COMS和TTL不兼容的问题。但是具体我没探索过。你在两者之间加一个电压跟随器就可以解决了。
#include
void main(void){
while(1){
P3=0x5f; //两个电机转向相同。
}
}