基于S3C2440的LED背光源节电系统设计方案
定时器输出时钟频率= PCLK/(prescaler value+1)/(divider value)
TCFG0 寄存器设置:TCFG0=99;//prescaler value=99
TCFG1 寄存器设置:TCFG1=0x03;//divider value=1/16
这样,当PCLK=400M 时,定时器输出频率为6.25M.
定时器初值的设置包括:
TCNTB0 寄存器设置:TCNTB0=62500;// 装入初值1s 中断一次
TCMPB0 寄存器设置:TCMPB0=rTCNTB0》1;//50%
接着就可以启动定时器,第一次必须手动装载:TCON=1《1;
装载后, 改为自动装载, 并启动定时器:TCON=0x09.
S3C2440 芯片内部集成了LCD 控制器,用来向LCD 传输图像数据,并提供必要的控制信号,比如VFRAME、VLINE、VCLK、VM 等,可以支持STNLCD和TFTLCD.mini2440 采用3.5in(分辨率为240×320像素)的TFT 液晶显示屏,配置为常用的16BPP(5:6:5)模式。要显示图像,只要向LCD_BUFFER 写入像素数据(R(5):G(6):B(5)),LCD 控制器就会自动通过DMA读取数据送往TFTLCD显示。
图像算法是基于图像直方图进行数据变换的,所以,首先应编写子程序并先计算形成显示图像的灰度直方图,算法如下所示(其中bmp 为原始的灰度图像,bmp_2 为灰度值数组):
for( y = 0;y 320;y++ )
{for(x = 0; x 240; x++)
{bmp_2 [bmp[p]] ++;
p = p + 1;
}
}
假设取5%的失真度,那么需要变换的像素点数量为240×320×5%=3,840 点,然后根据上述算法原理采用逐点计算的方法使fgl 从灰度0 开始分别计算出对应的(fgh- fgl ),最后比较求出min(fgh - fgl)。
下一步对直方图进行线性搬移,使灰度整体向暗区域移动fgl,这样图像灰度区域由[0,255]区间内的原分布,被压缩在[0,fgh- fgl]区间。接下来应对图像进行灰度拉伸,以弥补背光导致的亮度损失。若采取线性拉伸方法, 显然拉伸的最大倍数为255/ (fgh- fgl)。算法如下所示(其中bmp 为原始的灰度图像,bmp_new 为更新图像,min= min(fgh - fgl)):
for(y = 0;y 320;y++)
{for(x = 0;x 240;x++ )
{if (bmp[p]>= fgl )
bmp_new[p] = (bmp[p] - fgl )*255/min;
else
bmp_new[p] =0;
p++;
}
}
此时像素灰度不会饱和,则背光亮度可由1 降低为(fgh- fgl)/255,由LED 驱动电路通过PWM 实现相应亮度的控制。
3 实验结果
如图4 所示为测试图像,图4(a)为原始图像,图4(b)、(c)、(d)为采用直方图裁剪与拉伸算法的试验结果图。

测试图4 (b) 的失真度为5% ,节能比例为35% ;测试图4(c)的失真度为10% ,节能比例为55% ;测试图4(d)的失真度为20% ,节能比例为67%.由实验结果可知,在一定的失真度下,显然直方图裁剪的灰度范围越小,背光亮度可降低的幅度越大。原始测试图像与经过直方图裁剪和拉伸的图像相比,在失真度5%的约束下,由于图像进行了直方图搬移,整体亮度有所变化,总的来说图像质量没有明显损失。
4 结论
本文提出了基于视觉特性的液晶显示器背光源节电调光方法,建立了直方图裁剪和拉伸的处理框架,并在此基础上利用ARM 平台加以验证,证明本文的方法在失真度为5%的情况下可实现约35%的背光节电效果,且图像质量没有明显损失。
分频器相关文章:分频器原理
评论