微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码

LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码

时间:04-25 来源:网络整理 点击:

用 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屏的输入极性相一致

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top