标题:
单片机按键控制步进电机的程序修改
[打印本页]
作者:
egsresrhtrhrtst
时间:
2023-2-21 14:59
标题:
单片机按键控制步进电机的程序修改
写了个按键控制步进电机的程序,按键控制正反转和停止,但是因为用了延时导致按键不太好用,各位给看看要是用定时器实现,需要怎么改一下,或者有什么更好,更简洁的方法
单片机源程序如下:
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#define uchar unsigned char
#define uint unsigned int
sbit MOTOA = P1^0; //定义A极
sbit MOTOB = P1^1; //定义B极
sbit MOTOC = P1^2; //定义C极
sbit MOTOD = P1^3; //定义D极
sbit key1 = P0^0;
sbit key2 = P0^1;
sbit key3 = P0^2;
sbit key4 = P0^3;
void keyscan();
#define SPEED 400
void delay(uint i) //延时函数
{
while(i--);
}
void main()
{
P1=0X00;
while(1)
{
keyscan();
}
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
while(1)
{
MOTOA = 0;
MOTOB = 0;
MOTOC = 0;
MOTOD = 0;
delay(SPEED);//延时
MOTOA = 0;
MOTOB = 0;
MOTOC = 0;
MOTOD = 0;
delay(SPEED);
MOTOA = 0;
MOTOB = 0;
MOTOC = 0;
MOTOD = 0;
delay(SPEED);
MOTOA = 0;
MOTOB = 0;
MOTOC = 0;
MOTOD = 0;
delay(SPEED);
if(key2==0||key3==0||key4==0)break;
}
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
while(1)
{
MOTOA = 0;
MOTOB = 1;
MOTOC = 1;
MOTOD = 1;
delay(SPEED);//延时
MOTOA = 1;
MOTOB = 0;
MOTOC = 1;
MOTOD = 1;
delay(SPEED);
MOTOA = 1;
MOTOB = 1;
MOTOC = 0;
MOTOD = 1;
delay(SPEED);
MOTOA = 1;
MOTOB = 1;
MOTOC = 1;
MOTOD = 0;
delay(SPEED);
if(key1==0||key3==0||key4==0)break;
}
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
while(1)
{
MOTOA = 1;
MOTOB = 1;
MOTOC = 1;
MOTOD = 0;
delay(SPEED);//延时
MOTOA = 1;
MOTOB = 1;
MOTOC = 0;
MOTOD = 1;
delay(SPEED);
MOTOA = 1;
MOTOB = 0;
MOTOC = 1;
MOTOD = 1;
delay(SPEED);
MOTOA = 0;
MOTOB = 1;
MOTOC = 1;
MOTOD = 1;
delay(SPEED);
if(key1==0||key2==0||key4==0)break;
}
}
}
if(key4==0)
{
delay(10);
if(key4==0)
{
while(1)
{
MOTOA = 1;
MOTOB = 1;
MOTOC = 1;
MOTOD = 1;
delay(SPEED);//延时
MOTOA = 1;
MOTOB = 1;
MOTOC = 1;
MOTOD = 1;
delay(SPEED);
MOTOA = 1;
MOTOB = 1;
MOTOC = 1;
MOTOD = 1;
delay(SPEED);
MOTOA = 1;
MOTOB = 1;
MOTOC = 1;
MOTOD = 1;
delay(SPEED);
if(key1==0||key2==0||key3==0)break;
}
}
}
}
作者:
人中狼
时间:
2023-2-21 16:26
步进电机控制放到定时器里
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1