PAGE1
PAGE1
PWM模块
1.PWM模块概述
脉冲宽度调制(PulseWidthModulation,PWM)是一种通过改变脉冲信号的占空比来控制输出信号的技术。在单片机中,PWM模块通常用于控制电机速度、LED亮度、音频信号等。PIC18系列单片机提供了多个PWM通道,每个通道都可以独立配置,以满足不同的应用需求。
PWM信号的基本特性包括:
频率:PWM信号的频率决定了每秒钟脉冲的个数。
占空比:占空比是指在一个周期内,高电平时间占总时间的比例。占空比的范围通常在0%到100%之间。
2.PIC18系列中的PWM模块
PIC18系列单片机中的PWM模块通常基于定时器(如Timer1、Timer2等)实现。通过配置定时器的预分频器、周期寄存器和PWM寄存器,可以生成所需的PWM信号。PIC18系列单片机的PWM模块支持多种工作模式,包括单极性模式、双极性模式和中心对齐模式。
2.1单极性模式
在单极性模式下,PWM信号的周期是由定时器的周期寄存器(PRx)决定的。输出信号的占空比可以通过设置CCP(Capture/Compare/PWM)寄存器来控制。单极性模式下,PWM信号的高电平和低电平时间都是从定时器的计数值为0时开始计算的。
2.2双极性模式
在双极性模式下,PWM信号的周期也是由定时器的周期寄存器(PRx)决定的。不同的是,占空比的控制可以通过设置两个CCP寄存器来实现,一个控制高电平的开始时间,另一个控制低电平的开始时间。这种模式适用于需要精确控制高电平和低电平时间的应用。
2.3中心对齐模式
在中心对齐模式下,PWM信号的周期仍然是由定时器的周期寄存器(PRx)决定的。但占空比的控制更加复杂,通过设置CCP寄存器,可以实现高电平和低电平时间的中心对齐。这种模式适用于需要减少PWM信号中的谐波成分的应用。
3.PWM模块的配置
3.1定时器配置
PWM信号的生成依赖于定时器的配置。以Timer2为例,配置步骤如下:
选择预分频器:预分频器决定了定时器的计数速度。可以通过设置T2CON寄存器中的T2CKPS位来选择预分频器。
设置周期寄存器:周期寄存器(PR2)决定了PWM信号的周期。可以通过设置PR2寄存器来配置周期。
启用定时器:通过设置T2CON寄存器中的TMR2ON位来启用定时器。
//配置Timer2
T2CON=0//预分频器为1:8,启用Timer2
PR2=255;//设置周期寄存器,周期为256*(1/4*10^6)=64us
3.2CCP模块配置
CCP(Capture/Compare/PWM)模块用于生成PWM信号。以CCP1为例,配置步骤如下:
选择PWM模式:通过设置CCP1CON寄存器中的CCP1M位来选择PWM模式。
设置PWM占空比:通过设置CCPR1L寄存器和CCP1CON寄存器中的DC1B1和DC1B0位来设置PWM的占空比。
启用PWM输出:通过设置TRIS寄存器来配置PWM输出引脚。
//配置CCP1为PWM模式
CCP1CON=0//选择PWM模式
CCPR1L=128;//设置占空比寄存器
CCP1CONbits.DC1B1=0;//设置占空比低8位
CCP1CONbits.DC1B0=0;//设置占空比低8位
TRISBbits.TRISB1=0;//设置RB1为输出引脚
4.PWM信号的生成
4.1生成简单PWM信号
以下是一个生成简单PWM信号的例子。假设我们使用Timer2和CCP1模块生成一个频率为1kHz、占空比为50%的PWM信号。
#includehtc.h
//配置IO口
#define_XTAL_FREQ4000000
__CONFIG(FOSC_INTRC_NOCLKOUTWDTE_OFFPWRTE_ONCP_OFFBOREN_ONIESO_OFFFCMEN_ONLVP_OFF);
voidsetup(){
//配置I/O口
TRISBbits.TRISB1=0;//设置RB1为输出引脚
//配置Timer2
T2CON=0//预分频器为1:8,启用Timer2
PR2=255;//设置周期寄存器,周期为64us
//配置CCP1为PWM模式
CCP1CON=0//选择PWM模式
CCPR1L=128;//设置占空比寄存器
CCP1CO