如何用Pwm控制直流电机,使小车缓慢启动缓慢停止,求C51程序 最好有PWM S型曲线数组
答案:2 悬赏:0
解决时间 2021-02-11 03:11
- 提问者网友:沉默的哀伤
- 2021-02-10 15:14
如何用Pwm控制直流电机,使小车缓慢启动缓慢停止,求C51程序 最好有PWM S型曲线数组
最佳答案
- 二级知识专家网友:情窦初殇
- 2021-02-10 16:15
调其中的speed,即时调整占空比,调t即是调周期的长短
#include<reg51.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
sbit en1=P1^0;
sbit s1=P1^2;
sbit s2=P1^3;
uchar t=0;
uchar m1=0;
uchar tmp1,tmp2;
void motor(uchar index, char speed)
{
if(speed>=-100 && speed<=100)
{
if(index==1)
{
m1=abs(speed);
if(speed<0)
{
s1=0;
s2=1;
}
else
{
s1=1;
s2=0;
}
}
}
}
void delay(uint j)
{
for(j;j>0;j--);
}
void main()
{
uchar i;
TMOD=0x02;
TH0=0x9B; 定时101us
TL0=0x9B;
EA=1;
ET0=1;
TR0=1;
while(1)
{
for(i=0;i<=100;i++)
{
motor(1,i);
delay(5000);
}
for(i=100;i>0;i--)
{
motor(1,i);
delay(5000);
}
for(i=0;i<=100;i++)
{
motor(1,-i);
delay(5000);
}
for(i=100;i>0;i--)
{
motor(1,-i);
delay(5000);
}
}
}
void timer0() interrupt 1
{
if(t==0)
{
tmp1=m1;
tmp2=m2;
}
if(t<tmp1) en1=1; else en1=0;
t++;
if(t>=100) t=0;
}
#include<reg51.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
sbit en1=P1^0;
sbit s1=P1^2;
sbit s2=P1^3;
uchar t=0;
uchar m1=0;
uchar tmp1,tmp2;
void motor(uchar index, char speed)
{
if(speed>=-100 && speed<=100)
{
if(index==1)
{
m1=abs(speed);
if(speed<0)
{
s1=0;
s2=1;
}
else
{
s1=1;
s2=0;
}
}
}
}
void delay(uint j)
{
for(j;j>0;j--);
}
void main()
{
uchar i;
TMOD=0x02;
TH0=0x9B; 定时101us
TL0=0x9B;
EA=1;
ET0=1;
TR0=1;
while(1)
{
for(i=0;i<=100;i++)
{
motor(1,i);
delay(5000);
}
for(i=100;i>0;i--)
{
motor(1,i);
delay(5000);
}
for(i=0;i<=100;i++)
{
motor(1,-i);
delay(5000);
}
for(i=100;i>0;i--)
{
motor(1,-i);
delay(5000);
}
}
}
void timer0() interrupt 1
{
if(t==0)
{
tmp1=m1;
tmp2=m2;
}
if(t<tmp1) en1=1; else en1=0;
t++;
if(t>=100) t=0;
}
全部回答
- 1楼网友:初心未变
- 2021-02-10 17:06
你好!
推荐楼主去中国电子DIY之家看看
我的回答你还满意吗~~
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |