PWM的周期和占空比是如何计算的?计算公式是什么?

2019-07-15 16:06发布

比如说:单片机是STC12C5A60S2晶振是11.0592Mhz,我想让PWM的周期是500us,占空比为20%,这个占空比的值和周期值我该怎么计算?麻烦把公式写一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
无量寿经
1楼-- · 2019-07-15 17:27
以下内容来源于《51单片机轻松入门-基于STC15W4K系列》
4、脉宽调节模式
   PWM意为脉冲宽度调制,可用于调整输出直流平均电压,对于矩形波而言,输出平均压等于峰值电压×占空比,占空比是一个脉冲周期内高电平时间与周期的比值,例如,峰值电压等于5V,占空比等于50%的方波信号平均电压等于2.5V,也就是万用表直流档测量得到的电压值,8位PWM模式结构如图8-6所示, PWM输出不需要使用中断。 未命名13.JPG

通过程序设定寄存器PCA_PWMn(n=0,1,2,下同)中的位EBSn_1及EBSn_0,使其工作于8位PWM或7位PWM或6位PWM模式,当[EBSn_1,EBSn_0]=[0,0](默认值)或[1,1]时,PCA模块n工作于8位PWM模式,此时将{0,CL[7:0]}与[EPCnL,CCAPnL[7:0]]进行比较,当{0,CL[7:0]}中的值小于{EPCnL,CCAPnL[7:0]}时,输出为低,当{0,CL[7:0]}中的值等于或大于{EPCnL,CCAPnL[7:0]}时,输出为高,当EPCnL=0且CCAPnL=00H时,PWM固定输出高,当EPCnL=1且CCAPnL=FFH 时,PWM固定输出低。当CL的值由FF变为00溢出时,{EPCnH,CCAPnH[7:0]}的内容自动装载到{EPCnL,CCAPnL[7:0]}中,这样可实现无干扰地更新PWM占空比,要使能PWM模式,模块CCAPMn寄存器的ECOMn和PWMn位必须置位。PCA时钟输入源可以从以下8种中选择一种:SYSclk/12、SYSclk /8、SYSclk/6、SYSclk /4、SYSclk /2、SYSclk、定时器0的溢出、ECI/P1.2输入,PWM输出占空比由{EPCnL,CCAPnL[7:0]}确定。8位PWM的周期 = 计数脉冲周期×256                             8位PWM的频率 = 计数脉冲频率/2568位PWM的脉宽时间(高电平时间)= 计数脉冲周期×(256-CCAPnL)8位PWM的占空比 = 脉宽时间/PWM周期 = (1- CCAPnL/256) ×100%如果要实现给定频率的PWM输出,可选择定时器0的溢出或者ECI(P1.2)脚的输入作为PCA的时钟输入源。所有PCA模块都可用作PWM输出,由于所有模块共用PCA定时器,所以它们的输出频率相同,各个模块的输出占空比是独立变化的,当某个I/O 口作为PWM使用时,该口的状态如表8-9所示。表8-9 I/O口作为PWM使用时的状态
  PWM之前的状态  PWM输出时的状态弱上拉/准双向口强推挽输出/强上拉输出,要加输出限流电阻1KΩ-10KΩ强推挽输出/强上拉输出强推挽输出/强上拉输出,要加输出限流电阻1KΩ-10KΩ仅为输入/高阻PWM无效开漏开漏

chongqingzhou
2楼-- · 2019-07-15 21:56
PWM是通过计数器产生的,占空比 = 比较值/计数器重载值;
周期 = 计数器重载值/计数器的时钟频率(=晶振频率*倍频/分频)
capslk
3楼-- · 2019-07-15 23:42
chongqingzhou 发表于 2015-9-15 18:21
PWM是通过计数器产生的,占空比 = 比较值/计数器重载值;
周期 = 计数器重载值/计数器的时钟频率(=晶振频率*倍频/分频)

能不能稍微再详细一些,概念比较模糊。
capslk
4楼-- · 2019-07-16 01:31
 精彩回答 2  元偷偷看……
hyg_shen_hua
5楼-- · 2019-07-16 01:39
周期 = 计数器重载值/计数器的时钟频率(=晶振频率*倍频/分频)
STC12C5A60S2手册上有的,比较清晰
steven01
6楼-- · 2019-07-16 02:49
周期 = 计数器重载值/计数器的时钟频率(=晶振频率*倍频/分频)
STC12C5A60S2手册上有的,比较清晰

一周热门 更多>