我的程序只有正反转和停止,无法完成加速减速,请问可以帮我改写然后实现加速减速吗?
#include <reg51.h>
#include <absacc.h>
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
#define UP 20
#define DOWN 30
#define STOP 40
#define HASTEN 50
#define DECLERATE 60
void delay()//延时程序
{
unsigned i,j,k;
for(i=0;i<0x02;i++)
for(j=0;j<0x02;j++)
for(k=0;k<0xff;k++);
}
main()
{
unsigned char temp;
while(1)
{
if(p10==0)
{
temp=UP;//控制正转
P2=0X00;
delay();
}
if(p11==0)
{
temp=DOWN;//控制反转
P2=0X00;
delay();
}
if(p12==0)
{
temp=STOP;//控制停止
}
if(p13==0)
{
temp=HASTEN;//控制加速
P2=0X00;
delay();
}
if(p14==0)
{
temp=DECLERATE;//控制减速
P2=0X00;
delay();
}
switch(temp)
{
case DOWN : P2=0X01;//控制反转 //0011
delay();
delay();
P2=0X02;//0110
delay();
delay();
P2=0X04;//1100
delay();
delay();
P2=0X08;//1001
delay();
delay();
break;
case UP : P2=0X08;//控制正转
delay();
delay();
P2=0X04;
delay();
delay();
P2=0X02;
delay();
delay();
P2=0X01;
delay();
delay();
break;
case STOP ://控制停止
P2=0X00;
delay();
delay();
break;
}
}
}
把你的电路图发一下
我之前用过H桥驱动直流电机,实现正反转以及加减速。
加减速的原理就是PWM,控制通电时间的占空比,100%通电时间则速度最大,小于100%则相应减速,不过速度不是线性的而已。
通过pwm控制占空比调节速度