PWM 周期、脉冲宽度、占空比 中微8位单片机学习笔记

PWM 周期=[PWMT+1]*Tosc*(CLKDIV 分频值)

这个公式描述了脉冲宽度调制(PWM)的周期计算方法:

  • PWM周期:指的是一个完整的PWM波形的周期时间,通常以时间单位表示,比如毫秒或微秒。
  • PWMT:表示PWM定时器的预设值。
  • Tosc:是振荡器周期时间,即一个振荡周期的时间。通常以时间单位表示,比如秒或者微秒。
  • CLKDIV分频值:指的是时钟分频器的分频值,用于控制时钟信号的频率。

根据这个公式,首先你需要计算[PWMT+1]*Tosc,然后乘以时钟分频器的分频值,就可以得到PWM的周期。

脉冲宽度 = (PWMDx[9:0]+1)*TOSC*(CLKDIV 分频值)

这个公式描述了计算脉冲宽度的方法:

  • 脉冲宽度:指的是PWM信号的高电平持续时间,通常以时间单位表示,比如毫秒或微秒。
  • PWMDx[9:0]:表示PWM寄存器中的预设值,用于确定PWM的高电平持续时间。这里的[9:0]表示该寄存器中包含了10位的值。
  • TOSC:是振荡器的周期时间,即一个振荡周期的时间。通常以时间单位表示,比如秒或者微秒。
  • CLKDIV分频值:指的是时钟分频器的分频值,用于控制时钟信号的频率。

根据这个公式,首先你需要将PWMDx[9:0]的值加1,然后乘以TOSC和时钟分频器的分频值,就可以得到脉冲的宽度。

PWM 占空比计算公式:

                                                        占空比= ( PWMDx[9:0]+1) / ( PWMT [ 9:0 ] +1)

举例说明: 

void Set_PWM()
{
	PWMTL = 0x8f;					//PWM0~3共周期,周期低位
	PWMT4L = 0x8f;					//PWM4独立周期,周期低位		
	PWMTH = 0B00001101;				//周期高两位及PWM4占空比高两位	
 
									//PWM0~3周期为:(0B110001111+1)*(1/16)*2 =50uS
									//PWM4周期为:(0B1110001111+1)*(1/16)*2 =114uS		
	
	PWMD01H = 0x00;					//高位改变后不能立即生效,需要给占空比的低位寄存器后才能加载
	//PWM0 占空比设置为20%
	PWMD0L = 0x4F;					//(79+1)/(399+1) = 20%
	//PWM1 占空比设置为40%
	PWMD1L = 0x9F;					//(159+1)/(399+1) = 40%
 
	PWMD23H = 0x10;
	//PWM2 占空比设置为60%
	PWMD2L = 0xEF;					//(239+1)/(399+1) = 60%
	//PWM3 占空比设置为80%
	PWMD3L = 0x3F;					//(319+1)/(399+1) = 80%
 
	//PWM4 占空比设置为25%
	PWMD4L = 0xE3;					//(227+1)/(911+1) = 25%
	
	
	PWM01DT = 0x3F;					//死区时间,低6位有效位=(0B00111111+1)*(1/16)*1 =4uS
	PWM23DT = 0;
	
	PWMCON2 = 0B00000000;			//正常输出
	PWMCON1 = 0B00000000;			//PWM01位置选择为RB5/RB4;禁止死区;可使能PWM0/1互补,PWM2/3互补
	PWMCON0 = 0B00111111;			//PWM分频Fosc/2,使能PWM0、PWM1、PWM2、PWM3、PWM4
}

以PWM0为例,PWM0的占空比高2位是00,低8位是0100 1111,即0x04F,十进制为79,

PWM0的周期高2位是01,低8位是1000 1111,即0x18F,十进制为399

(PWM0的周期由一个10位的值组成,高2位为01,低8位为1000 1111,即0x18F。要将这个值解释为一个十进制数,可以使用以下方法:

  1. 首先,将高2位与低8位组合成一个完整的10位二进制数。高位01,低位10001111,组合起来为0110001111。
  2. 将这个10位二进制数转换为十进制数。在这种情况下,0110001111的十进制表示为399)

根据公式3  占空比=(PWMDx[9:0]+1)/(PWMT[9:0]+1),可以计算出占空比为(79+1)/(399+1)=20%

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值