基于嵌入式Linux的LCD背光调节及驱动的实现
3.3 PWM设置函数
PWM定时器中有2个寄存器TCNTBn和TCMPBn,分别为定时器计数缓存寄存器和定时器比较缓存寄存器。TCNTBn用来设置PWM输出脉冲频率,TCMPBn的值用于设置PWM信号占空比。因此通过写入不同的TCMPBn的数值,就可以调节输出信号占空比,实现PWM功能,即:要减小PWM的脉宽,则要减小TCMPBn值,相反要增大PWM的脉宽,则要增大TCMPBn。如果使用了反相器,则增大和减小的结果相反,双缓冲特性允许定时器在工作时改写TCMPBn的值。
PWM设置函数pwm_set_duty()根据传入参数改写TCMPBn的值,可以实时地改变输出波形。PWM设置函数设置定耐器TOUT1端口GPB1的PWM功
能操作步骤如下:
(1)使能系统PCLK时钟源,获取总线时钟频率值。设置定时器TOUT1的时钟预分频值和分频值,分别写入定时器配置寄存器TCFG0和TCF G1;
(2)写入初始值到比较缓存寄存器TCMPB1和计数缓存寄存器TCNTB1;
(3)设置定时器控制寄存器TCON。使能定时器TOUT1的自动重载位,关闭反相器,开启手动更新位,启动定时器TOUT1。在定时器延时等待一定时间后定时器的下降计数器开始计数;
(4)清除定时器TOUT1的手动更新位,手动更新位必须在下次写前被清除。
4 测试结果与分析
将驱动程序编译后加载到内核测试,设定PWM输出频率为200 Hz,高电平比例为1/3的波形,通过示波器看到GPB1端口所输出波形如图5所示。
通过测试,可以得到如表1所示的该手持式设备功耗与背光亮度相关的数据。
从表1中可以看出背光亮度等级越低,系统的功耗越小。所以,在该设备使用时,在环境允许的条件下,可以降低背光亮度等级,以减少功耗。本文的背光驱动程序为背光调节提供了7级的亮度控制。在实际使用的过程中,设置1/3的亮度即可,只有在特殊的场合才需要设置为高亮。在LCD不工作的时候,可以调低或者关闭背光,这样可以大大节省能耗。在应用时,为了确保人眼看不到LED周期亮灭的情况,以获得视觉上的满意效果,PWM输出的频率一般在设置在100~300 Hz之间比较合适,否则会给人闪烁的感觉。
5 结语
本文在嵌入式Linux下,设计了一种基于PWM调节LCD背光的软硬件实现方案。本方案与普通的线性调光相比,更符合人们对LED调光精度、效率以及效果的要求,同时可以降低系统功耗并能满足手持式设备调节背光的要求,该方案已经在一款手持设备产品上得到了应用。在实际应用中,为了防止当PWM频率落在200~20 kHz之间时,LED驱动电路的电感和电容产生人耳听得见的噪声,可以根据需求,增加成本,用高耐压的钽电容代替陶瓷电容;还可以牺牲调光精度,把开关频率提高到20 kHz以上,跳出人耳听觉的范围。
调节 驱动 实现 背光 LCD 嵌入式 Linux 基于 相关文章:
- SPWM波控制单相逆变器双闭环PID调节器的Simulink建模与仿真(09-22)
- ZY-ETBL自控电动调节阀在控温系统中的应用(12-16)
- 最简单有效的PID调节方法(12-13)
- 单片机PID调节的通俗讲解(11-26)
- 单片机PWM调节LED灯亮度(11-25)
- PID算法调节C51程序(3)(11-23)