LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码
用 00、01、10、11 就可以表示出四种颜色,即用两位数据可以表示一位数据,那同样是 10101010,则对应于 LCD 屏上则显示的
是颜色值为10,长度为4(8/2)的一条直线;同理,对于8位色(256色),则8位数据才能表示出一个点的颜色值,10101010在LCD屏上就只能显示为颜色值为10101010的点了。
有了上面的基础我们就可以很好的理解这个语句了:
screensize = vinfo.xres*vinfo.yres*vinfo.bits_per_pixel/8;
即FrameBuffer 的大小=LCD屏的宽度 * LCD屏的高度 * 每像素的位数 / 每字节的位数
例如,一个320*240的黑白平,FrameBuffer的大小为
320 * 240 * 1 / 8 = 9600 (字节)
而一个320 * 240的16位色LCD的 FrameBuffer的大小则为
320 * 240 * 16 / 8 = 153600(字节)
3) TFT 屏 16 位色的画点函数
有了画点函数,你还愁什么?图形汉字都可以搞定了吧!
4) CSTN屏 12位色的画点函数
注意,为了更便于代码书写,我在这个函数中将 fbp 定义为 static char * fbp,而在TFT 屏 16 位色的画点函数中 fbp 的定义为 U16 * fbp,你可以根据需要进行修改。
5) TFT 屏 16 位色下显示 24色位图函数
Bmp文件的格式可以参考网上的一些资料,如果需要也可以直接找我要。
6) CSTN屏 12位色下显示 24 色位图函数
7) 呵呵,别忘了关闭设备哦
void closegraph()
{
munmap(fbp,screensize);
close(fb);
}
收获:
1、LCD的电源电压,对于手持设备来说一般都为 5V 或 3.3V,或同时支持 5V和 3.3V,如果 LCD的需要的电源电压是 5V,那就要注意了,S3C2410 的逻辑输出电压只有 3.3V,此时一定要让你们的硬件工程师帮忙把 S3C2410 的逻辑输出电压提高到 5V,否则不能将屏点亮
2、S3C2410到 LCD屏的连线千万千万别超过 0.5 米,否则出现问题。如LCD屏上面的部分显示任何信息都是正确的,而只有屏的底部会有时正确有时错误。
3、8位色的数据结构定义:
static struct s3c2410fb_rgb rgb_8 = {
red: {offset:5, length:3,},
green: {offset:2, length:3,},
blue: {offset:0, length:2,},
transp: {offset:0, length:0,},
};
R:G:B = 3:3:2
4、CLKVAL的确定:
CLKVAL --- 这可是一个很有用的参数,其实没必要管它后面的计算,我们可以通过实际的测试来得出一个有效的值,对于320x240 的屏一般设置为 7 就可以了,而对于 640x480 的屏,该值可以小一点。
5、在设置LCDCON5时,通过 TFT/STN 屏控制信号的极性,使S3C2410的信号输出极性转换后与LCD屏的输入极性相一致
- 新型高清显示技术优劣对比(11-13)
- 品佳集团推出LCD TV一系列应用解决方案(08-11)
- OGS能否真正成为触控面板主流的关键问题(09-26)
- 为低压便携设备背光应用选择适合的LED驱动器方案(02-05)
- 意法半导体数字电视和机顶盒解决方案(02-07)
- 应用新LED驱动技术减低LCD电视用电量(05-05)