首页 理论教育 单片机与嵌入式系统中的LED亮度调节器

单片机与嵌入式系统中的LED亮度调节器

时间:2023-11-19 理论教育 版权反馈
【摘要】:方案设计LED亮度的变化本质是加载到LED上平均电压的变化,我们可以通过PWM信号输出高电平持续时间的变化,在一个周期内的积分来得到可变化的平均电压,进而改变其亮度。图8-15是利用边沿对齐PWM功能产生PWM信号。该初始化代码包含了TPM1定时溢出和通道模式的设定。

单片机与嵌入式系统中的LED亮度调节器

1.实践要求与方案设计

(1)要求

使用TPM模块的功PWM功能,制作一个LED亮度调节器,要求在TPM1CH0引脚上输出占空比从20%~80%不断变化的PWM波,用来调节LED小灯亮度的渐变,使用内部4MHz总线时钟。

(2)方案设计

LED亮度的变化本质是加载到LED上平均电压的变化,我们可以通过PWM信号输出高电平持续时间(即占空比)的变化,在一个周期内的积分来得到可变化的平均电压,进而改变其亮度。

要在引脚TPM1CH0产生PWM信号,可把TPM1CH0引脚设定在边沿对齐PWM模式,PWM信号的周期由TPM1模数寄存器TPMIMOD中的值决定,占空比由通道值寄存器TPM1C0V中的值决定,此处选择PWM信号周期为1ms。选择4MHz总线时钟作为TPM模块时钟,可把计数器分频因子设为1,则定时器的计数周期为0.25μs,20%~80%占空比即对应高电在一个周期内持续200~800μs。200μs所对应的计数个数为800个,800μs所对应的计数个数为3200个,1ms所需要的计数个数为4000个。因而4000个计数为一个周期,只要在每个周期内使得计时个数从800个均匀变化到3200个,即可实现20%~80%占空比变化。图8-15是利用边沿对齐PWM功能产生PWM信号(ELSnA=0)。

978-7-111-50417-7-Chapter08-36.jpg

图8-15 利用边沿对齐PWM功能产生PWM信号(ELSnA=0)

2.硬件电路设计

电路主要由MC9S08AC16单片机最小应用系统组成,在TPM1CH0引脚上以灌电流方式外接一个LED,方波发生器硬件电路示意图如图8-16所示,其中TPM1CH0引脚与PTE2引脚为复用引脚,在LQFP_44引脚封装中为第10引脚,该引脚可以外接数字示波器进行波形检测。

978-7-111-50417-7-Chapter08-37.jpg(www.xing528.com)

图8-16 方波发生器硬件电路示意图

3.软件设计与调试

在PWM功能设置方面,按照设计方案进行初始化设置,选择总线时钟频率,1分频,使能TPM1溢出中断,CPWMS=0,禁止通道0中断,选择边沿对齐PWM,比较满足时输出低电平。该初始化代码包含了TPM1定时溢出和通道模式的设定。

978-7-111-50417-7-Chapter08-38.jpg

978-7-111-50417-7-Chapter08-39.jpg

在控制占空比变化方面,可定义一个全局变量Duty用以保存当前占空比对应的数值,在溢出中断服务函数中改变Duty的值,每次步进1%(对应计数值40),即每次周期结束后改变下一周期内的占空比增加1%,进而可以控制占空比从20%均匀增加至80%。当通道值计数器中的值(Duty的值)大于周期的80%(即4000×80%=3200)时,通道值计数器自动回复初始值,恢复占空比20%。由于在电路上PWM输出低电平(逻辑0)时发光二极管点亮,代码中设PWM输出极性为正脉冲,当通道值寄存器值增加时,低电平在一个周期内持续时间将减少,发光二极管亮度减弱。需要注意的是,在向通道值寄存器写值时,所写的值在下一个周期时影响占空比。其中断处理函数如下。

978-7-111-50417-7-Chapter08-40.jpg

main()主函数完成TPM初始化函数的调用和GPIO端口的设置,具体如下。

978-7-111-50417-7-Chapter08-41.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈