WINCE基于PWM实现的背光驱动



********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

时间:2010.12.16

类别:WINCE驱动开发

********************************LoongEmbedded********************************

 

硬件

CPU:S3C2443,背光IC:AT1312BLCD: KD50G9-40NM-A3

系统

WINCE6.0

 

1背光驱动的技术分析

LCD显示屏自身并不发光,为了可以清楚地看到LCD显示屏的内容,需要一定的白光背光源。在中小尺寸LCD显示屏中,一般采用白光LED作为显示屏的背光源。白色LED背光电源由数个白光LED组成,如手机、数码相机一般仅需要23个白光LED,而PDAPMP则根据其显示屏的面积,可能需要36LED,我们的GPS产品的LCDKD50G9-40NM-A3,就用了12个白色LED作为背光源。对背光驱动电路的要求是:

满足背光的亮度要求;

整个显示屏亮度均匀(不允许有某一部分较亮、另一部分较暗的情况)

亮度可以方便地调节;

驱动电路占PCB空间要小;

工作效率高;

综合成本低;

对系统其它模块干扰小。

 

目前调光方式主要有两种,一种是通过改变LED的直流工作电流的方式来调整亮度,例如,有的芯片通过设置内部的寄存器来直接设置LED的直流工作电流,从而达到不同的亮度级,这种方式的缺点是可能会产生色移。所谓白光LED,其实是利用一种作为其管芯的蓝光LED所发出的短波长紫蓝光,激发涂布于输出光学透镜内壁的荧光材料,进而产生波谱较宽的白色复合光。在非额定电流工作情况下,LED所产生的光谱会有变化,导致最终的白光有色移。

 

   而另一种方式就是PWM调光,利用人眼的视觉暂停原理,以一定的频率和占空比来周期性的控制白光LED的导通电流在零电流到额定工作电流之间来回切换,从而调整亮度,这种调光方式就不会产生色移。在应用时,为了确保人眼看不到LED周期亮灭的情况,PWM调光的频率一般要大于100Hz,否则会给别人闪烁的感觉。

 

 

2.PWM的原理

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出(高电平或是低电平)来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

 

脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器(比如S3C2443的计时器3)的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。多数负载(无论是电感性负载还是电容性负载)需要的调制频率高于10Hz,通常调制频率为1kHz200kHz之间。

 

3.CPUAT1312B的电路设计

我们产品的背光控制IC采用AT1312B,电路设计部分如下:

1

 

5.CPU PWM计时器

S3C2443516位的定时器,其中定时器0123PWM功能,定时器4只是一个没有输出引脚的内部计数器。本系统用定时器3来输出PWM信号来控制背光亮度,S3C2443PWM定时器结构图如下;

2

6.系统中代码实现的部分

PCLK8prescalerclock diver值的确定

PCLK:

本系统的FCLK=400MHZPCLK=FCLK/6

 

8prescaler的值:

/Src/Common/Timer/timer_fixedtick.c下的OALTimerInit函数的下面的代码

3

所以可得到prescaler value=14

 

clock diver值:

我们在/Src/Oal/Oallib/init.c中实现InitPWMTimer3函数,在这个函数中选择时钟分隔值的代码如下:

4

下图是定时器配置寄存器中相关部分

5

结合图6,可知定时器3的输入时钟源的频率为PCLK/(2*(14+1))

6

所以可以算出定时器输入时钟频率= PCLK/(2*(14+1))=400MHZ/(2*6*15)=20MHZ/9

系统启动的时候在/Src/Oal/Oallib/init.c中的函数OEMInit中调用InitPWMTimer3函数,这个函数体如下:

7

下图是根据PCLKprescaler和时钟分割器的值来决定定时器输入频率计PWM频率的计算示例图

8

图9

10

 

背光驱动中控制背光的亮度

应用程序通过改变注册表项的值,从而通过SetEvent的方式告诉背光驱动的IST,从而背光的IST来根据应用程序新的注册表值来设置PWM的脉冲宽度来控制背光亮度,下面来看背光驱动的线程相关调控背光亮度部分的代码如下:

 

背光驱动创建所需要的事件对象

11

背光驱动的IST相关部分

12

通过改变PWM脉冲宽度来调整背光亮度

13

 

 

 

脉冲宽度调制

http://baike.baidu.com/view/168039.htm

 

LCD背光控制的实现(PWM应用)(1)

http://hi.baidu.com/rwen2012/blog/item/f96a4dd17509bdd6562c8410.html

 

背光驱动电路的选择策略和应用介绍

http://www.dzsc.com/news/html/2006-9-11/16817.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值