以下能驱动两相四线步进电机正转反转
按键1正转 键2反转 功能正常
我想让按键按下后能转且持续2秒转动后停止。最好两键能互锁。
小白能力有限 望各位高手不吝赐教。 特此感谢了
#include <reg52.h>
sbit EN=P1^6; //使能
sbit A1=P1^7;
sbit B1=P1^5;
sbit Key1=P3^7; //按键!
sbit Key2=P3^5; //按键!
void D_MS(void){
unsigned int i=80; //速度
for(;i>0;i--)
;
}
void RRM(void){ //正转
EN=1;
A1=1;
D_MS();
B1=1;
D_MS();
A1=0;
D_MS();
B1=0;
D_MS();
EN=0;
}
void LLM(void){ //反转
EN=1;
B1=0;
D_MS();
A1=0;
D_MS();
B1=1;
D_MS();
A1=1;
D_MS();
EN=0;
}
void main(void){
A1=0;
B1=0;
EN=0;
while(1){
if(Key1==0){
D_MS();
while(Key1==0){
RRM();
}
}
if(Key2==0){
D_MS();
while(Key2==0){
LLM();
}
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我编程是小白啊
1.8度的电机,每秒一转,8细分,就是1600个脉冲,要转两圈就是3200个脉冲。中断内变量计数就是6400次
如在中断内:
if(CP_count < 6400)
{
CP = !CP;
CP_count++;
}
初始化时,CP 和 CP_count 先清零。 另外 sbit CP = P1^7
在方向控制中清零脉冲变量,要转2圈才能切换方向,可加判断 if(CP_count== 6400) 时,再切换方向、清零变量
不明白只能是先看基础资料
if(Key1==0)
{
D_MS();
while(Key1==0)
{
flag=1; //电机正转标志
}
}
if(Key2==0)
{
D_MS();
while(Key2==0)
{
flag=2;//电机反转标志
}
}
if(flag==1)
{
for(i=0;i<1000;i++)//改1000的值就能改电机持续转的时间了,不够的话用两层for循环
{
RRM();
}
}
else if(flag==2)
{
for(i=0;i<1000;i++)
{
LLM();
}
}
flag=0;
一周热门 更多>