单片机接控制步进电机的程序 很简单的 过来看看吧 80
我编了一个程序,让单片机发100个脉冲,之后电机就停止转动。但是把单片机、驱动器、电机连起来,运行的时候,步进电机一直转,没有出现预期的停止。我的驱动器的脉冲负接P1^2...
我编了一个程序 ,让单片机发100个脉冲,之后电机就停止转动。但是把单片机、驱动器、电机连起来,运行的时候,步进电机一直转,没有出现预期的停止。我的驱动器的脉冲负接 P1^2,驱动器的脉冲正接+5V。
#include<reg52.h>
#include <intrins.h>
#define VALUE 40
sbit sp = P1^2;
unsigned int a;
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
void main()
{
a=0;
while(1)
{ sp=0;
delay(10);
sp=1;
delay(10);
a++;
if(a==100)
{
break;
}
}
} 展开
#include<reg52.h>
#include <intrins.h>
#define VALUE 40
sbit sp = P1^2;
unsigned int a;
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
void main()
{
a=0;
while(1)
{ sp=0;
delay(10);
sp=1;
delay(10);
a++;
if(a==100)
{
break;
}
}
} 展开
展开全部
有2个问题:1,ZD-6209-V2C输入端要求5mA的电流,不知你用的是哪种单片机,如果是89C52单片机的准双向IO是不能提供这个电流的;
2,你的程序没有跳出循环,我认为应该是if(a==100)break;另外break之后如果没有执行其它程序是否会返回main,请留意一下你的编译器。
2,你的程序没有跳出循环,我认为应该是if(a==100)break;另外break之后如果没有执行其它程序是否会返回main,请留意一下你的编译器。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主函数改一下就可以了
void main()
{
a=0;
while(1)
{
if(a < 100)
{
sp=0;
delay(10);
sp=1;
delay(10);
a++;
}
}
}
void main()
{
a=0;
while(1)
{
if(a < 100)
{
sp=0;
delay(10);
sp=1;
delay(10);
a++;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把break改为while(1)试下,,当a=100,时,让程序停在那里。。如果你用break,当a=100时,程序退出去了,这时单片机不知道该干什么事了,所以他有可能又再次进入主函数运行,就一直转了,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个程序肯定不会停止。你改成 if(a==100)while(1);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询