51单片机PWM占空比可调 定时器实现,,,只求方法,,望大侠赐教【恢复】
51单片机PWM占空比可调 定时器实现,,,只求方法,,望大侠赐教占空比从10%————50%
频率为500HZ 500=200+300
500=100+400
500=。。。。
很多啊
H_cnter=X,高电平计时参数
L_cnter=500-X,低电平计时参数 你理解错了, 这样怎么可以调节呢? 设置一个counter
counter++
当counter的0 bit 为1时
定时器计时200高电平
当counter的0 bit 为0时
定时器计时300低电平
这样就可以得到脉宽2/5的PWM 不懂, 想用一个定时器实现,能再参考一下吗? 用一个定时器也可以
分次定时
奇数次做高电平计时
偶数次做低电平计时
高+低电平=500HZ 谢谢, 有点 理解 最基本的方法,两个定时器,一个计500HZ的周期,一个计占空比时长。 一个定时器,做500*256HZ频率,定一个字符型变量自加
喝另一个变量(脉宽值)比较
小于输出低电平,大于输出高电平 定时器,调pwm还是很简单的。
如果用stc12/MPC82xxx带2~6 路硬件pwm,就更简单了。。。 用硬件的吧! 用个定时器,每100uS中断,每去一次加1一个寄存器,加到20要满值,比如清0寄存器置上IO,加到3清IO,一直加到20清0寄存器再置上IO。这样占空比是3/20=15%。 用个定时器,每100uS中断,每去一次加1一个寄存器,加到20要满值,比如清0寄存器置上IO,加到3清IO,一直加到20清0寄存器再置上IO。这样占空比是3/20=15%。 软件做PWM的缺点是频率做不过,分辨率做不高 用一个定时器就可以了。
我这个是我现在用的,5%-95%可调。不过频率不是500HZ的。如果要用到500HZ,可以用模式1,这样频率就可以低一些。然后每次进入定时器更新TH和TL就可以了。模式1进入中断可能要停定时器。如果是调压,模式2就可以了。重载很方便的。
void timer1svr (void) interrupt 3 using 0
{
if(duty) //如果此时是正脉宽,自动置数负脉宽置数,下面要更新为正脉宽置数以便下次中断使用
{
TH1=dutyH;
AV=0;
}
else //否则自动置数正脉宽,下面要更新为负脉宽置数以便下次中断使用
{
TH1=dutyL;
AV=1;
}
duty=~duty;//脉宽状态取反
}
duty是脉宽的状态,AV是某个IO,dutyH,dutyL是前面设定好的置数。更改置数就可以调节脉宽占空比。 还没有做呢。、哈哈 我做了一个, 非常的成功,实测波形非常好!
方法稍后奉上 学习了,不错。 分析:
你占空比10%~50% 分成50个等级 (如果分成5个等级)
F=500HZT=2000US你定时器 装40us(5个等级400us)
页:
[1]