标题:
步进电机控制设置转动180度为什么不停止,在一直转动,求解,该怎么修改单片机代码
[打印本页]
作者:
qwettyuio
时间:
2021-5-12 15:21
标题:
步进电机控制设置转动180度为什么不停止,在一直转动,求解,该怎么修改单片机代码
#include <reg51.h> //* 单双八拍工作方式:A-AB-B-BC-C-CD-D-DA*
unsigned char code shun[8] = {0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
unsigned char code ni[8] = {0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};
void delay(char x) //延时程序
{
char i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void motor_1(float a)//a即想要转的圈数
{
unsigned char b;
unsigned int c;
for (c=0; c<8*64*a; c++)
{
for (b=0; b<8; b++)
{
P1 = shun[b];
delay(10);
}
}
}
void motor_2(float a)//a即想要转的圈数
{
unsigned char b;
unsigned int c;
for (c=0; c<8*64*a; c++)
{
for (b=0; b<8; b++)
{
P1 = ni[b];
delay(10);
}
}
}
void main()//主程序
{
while(1)
{
motor_1(0.5); //转动1圈(可以改动)
delay(10);
P1 = 0; //防止电机发热
//motor_2(0.5); //转动1圈(可以改动)
//delay(10);
// P1 = 0; //防止电机发热
}
}
复制代码
作者:
qwettyuio
时间:
2021-5-12 15:22
该怎么修改代码控制步进电机转动一定的角度
作者:
sgq657785
时间:
2021-5-12 16:05
这样肯定是一直在转的了,while(1)一直在循环啊,你可以加按键设置条件再满足时调用转动函数就行了
作者:
cn_zhx
时间:
2021-5-13 11:45
a是浮点数,不对吧。
作者:
伤口不结
时间:
2021-5-13 17:13
不知道你驱动函数里面第一个for(c)的循环有什么作用?但是如果你只想转动180度可以只让电机走四拍
作者:
伤口不结
时间:
2021-5-13 17:15
for (b=0; b<8*a; b++)
{
P1 = ni[b];
delay(10);
}
去掉一个for 这样试试
作者:
名字不是重点
时间:
2021-5-13 17:45
while(1)
{
motor_1(0.5); //转动1圈(可以改动)
delay(10);
P1 = 0; //防止电机发热
//motor_2(0.5); //转动1圈(可以改动)
//delay(10);
// P1 = 0; //防止电机发热
}
大循环while(1){}肯定是一直运行,所以你要有个条件,只运行一次
while(1)
{
flag=XXXXX;//比如,按键赋值
if (flag) motor_1(0.5);
}
}
作者:
qwettyuio
时间:
2021-5-13 18:05
如果想用蓝牙控制转到一次几停止呢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1