怎么用51单片机控制直流减速电机缓慢启动,缓慢停止?

采用pwm控占空比调速,现在电机启动时是直接按设定占空比转,停止时直接转速为0,很容易把电机齿轮卡坏。怎么写程序让它启动时,占空比慢慢升上去,停止时占空比慢慢降下来?
void control() //按键控制电机转动
{
if(up==0)
{Delay10ms(1);
if(up==0)
{run();} } //前进

else if(down==0)
{Delay10ms(1);
if(down==0)

{ backrun();} }//后退
else if(left==0)
{Delay10ms(1);
if(left==0)
{
leftrun();} } //左转
else if(right==0)
{Delay10ms(1);
if(right==0)
{
rightrun();} } //右转

else {Delay10ms(2);
stoprun();}//停止

}

下面是一个run函数,程序太多这里能看到大概了。
//前进
void run(void)
{
push_val_left=speed; //左电机调速,速度调节变量 0-20
push_val_right=speed; //右电机调速
Left_moto_go ; //左电机往前走
Right_moto_go ; //右电机往前走
}

这个还是比较容易实现的,定义个曲线表就可以了,比如按梯形曲线或S型曲线,定义一个升速和降速表,点击的控制分三个阶段:
1、启动
2、运行
3、刹车
所以需要修改run()这个程序,按这三部曲来做。追问

原来是从run这里入手,我一直修改控制函数那里,我试试

温馨提示:答案为网友推荐,仅供参考