UISRC工程师学习站

标题: LCD液晶显示分析(一) [打印本页]

作者: ぉ沙皮狗的忧伤    时间: 2020-9-11 11:23
标题: LCD液晶显示分析(一)
本帖最后由 ぉ沙皮狗的忧伤 于 2020-9-11 16:43 编辑

参考网址https://blog.csdn.net/JerryGou/article/details/79952882
https://www.pianshen.com/article/6600981111/



一、框架

(1)、代码框架注:先大致了解LCD工作流程,有个印象,方便升入了解LCD
(, 下载次数: 237)
(, 下载次数: 249)
(, 下载次数: 254)




(二)、LCD解析
一、LCD 概念
1.  显示器数据组织格式
1)一幅图像成为一帧,每帧由多行组成,每行由多个像素组成。每个像素的颜色由若干位表示,对于256色LCD,每个像素由8位表示,称为8BPP。(颜色深度)


2)显示器呈Z字行的路线进行扫描显示,使用HSYNC、VSYNC控制扫描和跳转的路径;(Hsync是列,Vsync是行)
(, 下载次数: 239)
2、操作过程
1)设置LCD的HSYNC、VSYNC\VCLK等信号的参数,并将帧内存的地址告诉LCD控制器,塔克自动的发起DMA传输,从帧内存中得到图像数据,出现在数据总线VD[23:0]上。我们只需要将显示的图像数据写入帧内存中即可。
2)图像数据的存储:
例如:由三原色组建的256色(8BPP)显示模式,使用8位数据表示一个像素的颜色。但特殊的是,这8位数据用于表示在调色板中的索引值。这里的调色板使用256*16的内存,即使用16BPP的显示格式来表示对应各个索引值的颜色。因此,最终在LCD显示的仍为16BPP的数据。
内存数据和像素对应的关系为:
(, 下载次数: 246)
其中,P1、P2...为一个个的像素。
像素在调色板中的数据存放模式16BPP分为两种格式:5:6:5和5:5:5:1.即
(, 下载次数: 240)





(, 下载次数: 247)

其中
vinfo.red.offset颜色偏移量
R_offset:16  就表示16~23位描述红色
G_offset:8   就表示8~15位描述绿色
B_offset:0   就表示0~7位描述蓝色

操作过程
通过mmap从底层映射一块大小为yres*xres*bits_per_pixel/8的内存到应用层,当你操作这块内存的时候就相当于于操作yres*xres个led灯

(, 下载次数: 240)




代码讲解
上层软件代码
①、定义var和fix结构体
  var结构体描述显示屏固定的参数,fix结构体描述显示屏可变的参数

(, 下载次数: 245)
var成员变量
(, 下载次数: 240)


fix成员变量
(, 下载次数: 249)


②、打开framebuffer设备
(, 下载次数: 243)
(, 下载次数: 241)

③、从底层获取var和fix信息
(, 下载次数: 238)

④、打印颜色偏移量、分辨率即颜色深度
(, 下载次数: 243)

⑤、计算屏幕的总大小=像素点*颜色深度/8
(, 下载次数: 237)

⑥、内存映射
(, 下载次数: 235)

⑦、判断显示屏的颜色深度为RGB888 24位还是RGB565 16位
[attach]6659[/attach]用来显示蓝色,绿色,红色,白色,黑色的数值
(, 下载次数: 252)

操作映射内存,逐个显示内存的像素点
(, 下载次数: 245)










欢迎光临 UISRC工程师学习站 (https://www.uisrc.com/) Powered by Discuz! X3.5