电子工程师自学宝典:嵌入设计篇
上QQ阅读APP看书,第一时间看更新

4.4 采用PWM方式调节LED亮度的原理与程序详解

4.4.1 采用PWM方式调节LED亮度的原理

调节LED亮度可采取两种方式:一是改变LED流过的电流大小,流过LED的电流越大,LED亮度越高;二是改变LED通电时间长短,LED通电时间越长,亮度越高。单片机的P端口只能输出5V和0V两种电压,无法采用改变LED电流大小的方法来调节亮度,只能采用改变LED通电时间长短来调节亮度。

如果让单片机的P1.7端口(LED7端)输出图4-24a所示的脉冲信号,在脉冲信号的第1个周期内,LED7=0使LED亮,但持续时间很短,故亮度暗,LED7=1使LED无电流通过,但余辉会使LED具有一定的亮度,该时间持续越长,LED亮度越暗;在脉冲信号的第2个周期内,LED7=0持续时间略有变长,LED7=1持续时间略有变短,LED稍微变亮;当脉冲信号的第499个周期来时,LED7=0持续时间最长,LED7=1持续时间最短,LED最亮。也就是说,如果单片机输出图4-24a所示的脉冲宽度逐渐变窄的脉冲信号(又称PWM脉冲)时,LED会逐渐变亮。

图4-24 采用PWM方式调节LED亮度的原理说明图

如果让单片机输出图4-24b所示的脉冲宽度逐渐变宽的脉冲信号(又称PWM脉冲)时,脉冲信号第1个周期内LED7=0持续时间最长,LED7=1持续时间最短,LED最亮,在后面周期内,LED7=0持续时间越来越短,LED7=1持续时间越来越长,LED越来越暗,在脉冲信号第499个周期来时,LED7=0持续时间最短,LED7=1持续时间最长,LED最暗。如果脉冲信号的宽度不变,LED的亮度也就不变。

4.4.2 采用PWM方式调节LED亮度的程序与说明

图4-25是采用PWM方式调节LED亮度的程序。程序执行后,单片机P1.7端口外接的LED先慢慢变亮,然后慢慢变暗。

图4-25 采用PWM方式调节LED亮度的程序

该程序中的第一个for语句会执行499次,每执行一次,P1.7端口输出的PWM脉冲变窄一些,如图4-24a所示,即LED7=0持续时间越来越长,LED7=1持续时间越来越短,LED越来越亮,在for语句执行第499次时,LED7=0持续时间最长,LED7=1持续时间最短,LED最亮。程序中的第二个for语句也会执行499次,每执行一次,P1.7端口输出的PWM脉冲变宽一些,如图4-24b所示,即LED7=0持续时间越来越短,LED7=1持续时间越来越长,LED越来越暗,在for语句执行第499次时,LED7=0持续时间最短,LED7=1持续时间最长,LED最暗。