单片机/MCUwilliam hill官网
直播中

capslk

9年用户 83经验值
擅长:可编程逻辑 嵌入式技术 光电显示 控制/MCU RF/无线
私信 关注
[问答]

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

比如说:单片机是STC12C5A60S2晶振是11.0592Mhz,我想让PWM的周期是500us,占空比为20%,这个占空比的值和周期值我该怎么计算?麻烦把公式写一下。

回帖(14)

无量寿经

2015-9-15 17:56:20
以下内容来源于《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的频率 = 计数脉冲频率/256
8位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无效
开漏
开漏


举报

周闯

2015-9-15 18:21:13
PWM是通过计数器产生的,占空比 = 比较值/计数器重载值;
周期 = 计数器重载值/计数器的时钟频率(=晶振频率*倍频/分频)
举报

capslk

2015-9-16 09:32:31
引用: chongqingzhou 发表于 2015-9-15 18:21
PWM是通过计数器产生的,占空比 = 比较值/计数器重载值;
周期 = 计数器重载值/计数器的时钟频率(=晶振频率*倍频/分频)

能不能稍微再详细一些,概念比较模糊。
举报

capslk

2015-9-16 09:33:56
引用: 无量寿经 发表于 2015-9-15 22:23
以下内容来源于《51单片机轻松入门-基于STC15W4K系列》
4、脉宽调节模式
   PWM意为脉冲宽度调制,可用于调整输出直流平均电压,对于矩形波而言,输出平均压等于峰值电压×占空比,占空比是一个脉冲周期内高电平时间与周期的比值,例如,峰值电压等于5V,占空比等于50%的方波信号平均电压等于2.5V,也就是万用表直流档测量 ...

8位PWM的周期 = 计数脉冲周期×256 这个还是不是太清楚,这个计数脉冲周期是什么?
举报

黄涌

2015-9-16 12:34:20
周期 = 计数器重载值/计数器的时钟频率(=晶振频率*倍频/分频)
STC12C5A60S2手册上有的,比较清晰
举报

steven01

2016-1-21 16:13:56
周期 = 计数器重载值/计数器的时钟频率(=晶振频率*倍频/分频)
STC12C5A60S2手册上有的,比较清晰
举报

ouygreat

2016-8-19 11:57:58
……
举报

w3158

2016-8-22 22:53:26
这个好啊,正好在找这方面的
举报

电小龙

2016-8-23 08:36:28
8位的PWM的话,每个周期里要分为256个小脉冲,你要的占空比就是这256个脉冲里的高电平占这个整个256个电平的比例
1 举报

花不语怪风

2016-10-11 22:08:11
进来学习一下,这个PWM我也是不太会用
举报

王伟

2017-7-30 10:25:44
学习学习  赚积分
举报

王磊

2017-8-1 13:36:40
详细讲解
举报

李玉奎

2018-4-20 17:13:58
8位的PWM的话,每个周期里要分为256个小脉冲,你要的占空比就是这256个脉冲里的高电平占这个整个256个电平的比例  学习了
1 举报

陈昊

2019-6-27 17:08:00
所以占空比是用16进制表示还是用10进制表示。。。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分