
你好,请问51单片机产生的PWM波形占空比是否只能是50%的?然后如果是,那么用定时器产生的PWM波形可否通过
4个回答
展开全部
可以产生任意占空比的,虽然51定时器本身没有PWM模式,但是可以通过交替改变初始值的方式,也就是说,中断后,写入高电平时间对应的初值,再中断后,写入低电平时间对应的初值,如此循环。
如果是驱动电机的话,PWM频率建议到5至10kHz,不要太高也不要太低。
另外注意,PWM调速时,速度不是线性的,占空比太低根本就不转。
如果是驱动电机的话,PWM频率建议到5至10kHz,不要太高也不要太低。
另外注意,PWM调速时,速度不是线性的,占空比太低根本就不转。
追问
额,能否把那个交替改变初值的思路具体一点呢,这个地方我还不是很理解。辛苦了哈。。
展开全部
void TIMER0_INT() interrupt 1{ //中断服务程序
TH0=; //重置定时器初值
TL0=;
if(++time==percent)
{
port_pwm=0;
}else if(time==100){
time=0;
port_pwm=1;
}
}
注:port_pwm为自己定义的端口, 如:sbit port_pwm=P1^0;
主程序改变percent的值就能改变占空比;percent>100的话,输出恒为高电平。
TH0=; //重置定时器初值
TL0=;
if(++time==percent)
{
port_pwm=0;
}else if(time==100){
time=0;
port_pwm=1;
}
}
注:port_pwm为自己定义的端口, 如:sbit port_pwm=P1^0;
主程序改变percent的值就能改变占空比;percent>100的话,输出恒为高电平。
更多追问追答
追问
那中断函数里面为什么要重置定时器初值呢?
追答
定时器都没用过呀, 不重置初值,溢出后不就从0开始啦, 那后面定的时间就变成65535个微秒了呀。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
占空比是可以调的。
也可以用定时器来产生pwm。
也可以用定时器来产生pwm。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以改变占空比的,我来帮你啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询