如何用C语言控制步进电机 正转后自动反转

#include<reg52.h>
#define uchar unsigned char
sbit K1=P3^0; // 按下独立键盘S2正转
sbit K2=P3^1; // 按下独立键盘S3反转
sbit K3=P3^2; // 按下独立键盘S4停转
uchar code table[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
uchar code table1[]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
void main()
{
uchar k,i;
P1=table[0];
while(1)
{
if(!K1)
delay(5);
if(!K1)
k=1;

if(!K2)
delay(5);
if(!K2)
k=2;

if(!K3)
delay(5);
if(!K3)
k=3;

if(k==1||k==2)
{
for(i=0;i<8;i++)
{
if(k==1) P1=table[i];
else P1=table1[i];
delay(20);
}
}
}
}

以上代码是 按下K1按键 的时候步进电机正转,按下K2按键的时候步进电机反转

我想要的效果是按下K1的时候 步进电机正转5秒然后自动反转3秒。。如此循环

有高手能帮忙修改下。不胜感激

中断2,启动-停止切换(通过切换flag_status),显示状态。do-while是延时。
中断1,计数器count增1,如果达到预设的数值tab[sp],计数器归零,标志flag置1。这个好像与速度有关。通过调整延时时间来调整速度。
中断0,读键盘。没有scan_key()的源代码,不知道里面有些什么操作。
while(1){...}循环是电机运转,flag_status是状态,1转动,0停止。
没有看到与正转反转有关的代码。也许在motor_cw_ccw();函数里面,这个就是电机动一下的函数。

原程序不完整,没有相应函数、变量的定义及意义说明。难以确切理解。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答