基本信息
文件名称:NXP 系列:LPC1768 (适用于复杂娱乐设备)_(19).LPC1768PWM脉宽调制.docx
文件大小:27.33 KB
总页数:27 页
更新时间:2025-06-15
总字数:约1.47万字
文档摘要

PAGE1

PAGE1

LPC1768PWM脉宽调制

介绍

脉宽调制(PWM,PulseWidthModulation)是一种用于控制信号的常见技术,通过调节脉冲的宽度来控制输出信号的平均值。LPC1768单片机提供了多路PWM输出,可以用于各种控制应用,如电机控制、LED亮度调节、音频信号生成等。本节将详细介绍LPC1768的PWM功能及其在复杂娱乐设备中的应用。

LPC1768的PWM模块

LPC1768单片机的PWM模块是基于定时器/计数器(Timer/Counter)实现的。LPC1768有多个定时器/计数器,每个定时器/计数器可以配置为PWM输出。这些定时器/计数器包括:

Match寄存器:用于设置脉冲的宽度。

Capture寄存器:用于捕获外部信号。

PWM控制寄存器:用于配置PWM的模式和功能。

中断控制寄存器:用于配置中断。

PWM的基本原理

PWM的基本原理是通过改变脉冲的高电平时间(脉冲宽度)来控制信号的平均值。脉冲周期(周期时间)保持不变,而脉冲宽度可以在0到周期时间之间变化。脉冲宽度与脉冲周期的比值称为占空比(DutyCycle),占空比决定了PWM信号的平均值。

配置PWM

在LPC1768中,配置PWM需要以下几个步骤:

初始化定时器/计数器:设置定时器的时钟源和预分频值。

配置匹配寄存器:设置脉冲的宽度。

配置PWM控制寄存器:选择PWM模式和输出引脚。

启用PWM输出:启动定时器并使能PWM输出。

初始化定时器/计数器

LPC1768的定时器/计数器可以通过寄存器进行配置。以下是一个初始化定时器/计数器的示例代码:

#includeLPC17xx.h

//初始化定时器1

voidinit_PWM_Timer1(void){

//使能定时器1的电源

LPC_SC-PCONP|=(114);

//选择定时器1的时钟源

LPC_SC-PCLKSEL1=~(328);

LPC_SC-PCLKSEL1|=(128);//选择PCLK为定时器1的时钟源

//使能定时器1的时钟

LPC_SC-PCLKSEL1|=(114);

//设置预分频值

LPC_TIM1-PR=0;//预分频值为0,即不分频

//设置匹配寄存器

LPC_TIM1-MR0=10000;//设置脉冲周期为10000个时钟周期

LPC_TIM1-MR1=5000;//设置脉冲宽度为5000个时钟周期

//配置PWM模式

LPC_TIM1-MCR=(19)|(18);//MR0和MR1中断使能

//配置PWM输出引脚

LPC_PINCON-PINSEL0=~(34);//清除引脚选择

LPC_PINCON-PINSEL0|=(24);//选择P0.1作为PWM输出引脚

//启用PWM输出

LPC_TIM1-TCR=(10);//使能定时器

LPC_TIM1-TCR=(10)|(11);//重置定时器并启动

}

intmain(void){

init_PWM_Timer1();

while(1){

//主循环

}

}

配置匹配寄存器

匹配寄存器(MatchRegister)用于设置脉冲的宽度。通过设置不同的匹配寄存器值,可以实现不同占空比的PWM信号。以下是一个调整PWM占空比的示例代码:

//调整PWM占空比

voidset_PWM_DutyCycle(uint32_tdutyCycle){

LPC_TIM1-MR1=(LPC_TIM1-MR0*dutyCycle)/100;//设置脉冲宽度

}

intmain(void){

init_PWM_Timer1();

set_PWM_DutyCycle(50);//设置占空比为50%

while(1){

//主循环

}

}

配置PWM控制寄存器

PWM控制寄存器(PWMControlRegister)用于选择PWM模式和输出引脚。以下是一个配置PWM控制寄存器的示例代码:

//配置PWM模式

voidconfig_PWM_Mode(void){

LPC_PINCON-PI