您当前的位置: 首页 >  嵌入式

韦东山

暂无认证

  • 3浏览

    0关注

    506博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

LCD屏幕操作原理_嵌入式Linux

韦东山 发布时间:2020-11-13 18:22:21 ,浏览量:3

在线课堂:https://www.100ask.net/index(课程观看) 论  坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taobao.com/ (淘宝)      https://weidongshan.tmall.com/(天猫) 交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技

版本日期作者说明V12020韦东山摘自《嵌入式Linux应用开发完全手册》 5.1 LCD 操作原理

在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。Frame 是帧的意思,buffer 是缓冲的意思,这意味着 Framebuffer 就是一块内存,里面保存着一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值,假设 LCD 的分辨率是 1024x768,每一个像素的颜色用 32 位来表示,那么 Framebuffer 的大小就是:

1024x768x32/8=3145728 字节。

简单介绍 LCD 的操作原理:

① 驱动程序设置好 LCD 控制器: 根据 LCD 的参数设置 LCD 控制器的时序、信号极性; 根据 LCD 分辨率、BPP 分配 Framebuffer。 ② APP 使用 ioctl 获得 LCD 分辨率、BPP ③ APP 通过 mmap 映射 Framebuffer,在 Framebuffer 中写入数据 在这里插入图片描述 假设需要设置 LCD 中坐标(x,y)处像素的颜色,首要要找到这个像素对应的内存,然后根据它的 BPP 值设置颜色。假设 fb_base 是 APP 执行 mmap 后得到的 Framebuffer 地址,如下图所示: 在这里插入图片描述 可以用以下公式算出(x,y)坐标处像素对应的 Framebuffer 地址:

(x,y)像素起始地址=fb_base+(xres*bpp/8)y + xbpp/8

最后一个要解决的问题就是像素的颜色怎么表示?它是用 RGB 三原色(红、绿、蓝)来表示的,在不同的BPP 格式中,用不同的位来分别表示 R、G、B,如下图所示: 在这里插入图片描述

对于 32BPP,一般只设置其中的低 24 位,高 8 位表示透明度,一般的 LCD 都不支持。 对于 24BPP,硬件上为了方便处理,在 Framebuffer 中也是用 32 位来表示,效果跟 32BPP 是一样的。 对于 16BPP,常用的是 RGB565;很少的场合会用到 RGB555,这可以通过 ioctl 读取驱动程序中的 RGB位偏移来确定使用哪一种格式。

关注
打赏
1658827356
查看更多评论
立即登录/注册

微信扫码登录

0.0618s