KA_IX

  • 1352 主题
  • 1398 帖子
  • 8191 积分
  • 身份:LV6 初级工程师
  • E币:2020

如何实现51单片机输出PWM

2020-2-18 17:37:15 显示全部楼层
本帖最后由 KA_IX 于 2020-2-18 18:28 编辑


51单片机是可以输出PWM的,比较的麻烦。此时需要用到内部定时器来实现,可用两个定时器实现,也可以用一个定时器实现。
用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。
下面重点介绍用一个定时器的实现PWM的方法。以周期为1ms(1kHZ)为例,要产生其它频率的PWM波,程序中只需作简单修改即可。用一个定时器时(如定时器T0),首先要确定PWM的周期T和占空比D,确定了这些以后,就可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n。
因为这里我们是产生周期为1ms(1kHZ)的PWM,所以可设置中断的时间基准为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:
2.png




器上显示如下图所示:


如果想修改占空比,直接在程序里面修改下面这句即可。
当然我们可以加入其它的手段来动态改变占空比,比如按键,上位机等。
来源:
单片机精讲吴鉴鹰


最新评论

楼层直达:
我要评论
0
2
广告
关闭 热点推荐上一条 /2 下一条
快速回复 返回列表