本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
问题一:步进电机转速不够快,而且震动很厉害,调节了很久,没有大的改观。
问题二:
#include <reg51.h>
unsigned int Flag=0;//定义正反ting转标志位
sbit key=P3^3;
sbit yy=P0^0; //控制语音芯片APR9600播放音乐
unsigned int a; //与步进电机转动圈数有关
unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/*****************延时函数***************/
void Delay(unsigned int i)
{
while(--i);
}
/***************** 主函数 ***********************/
main()
{
unsigned char i;
EX1=1; //外部中断1开
IT1=1; //边沿触发
EA=1; //全局中断开
while(1)
{
if(Flag==0) //停止
{
P1=0;
}
if(Flag==1) //正转
{
a++;
yy=0;
Delay(100);
yy=1;
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(357); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
if(a==2300){a=0;Flag=0;}
}
if(Flag==2) //反转
{
a++;
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(362); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
if(a==2300){a=0;Flag=0;}
}
}
}
/************ 中断入口函数 *******************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(500);
Flag++;
if(Flag==3)
Flag=0;
} |