2016 - 2024

感恩一路有你

液晶显示屏编程 lcd编程原理?

浏览量:4938 时间:2023-07-23 13:53:55 作者:采采

lcd编程原理?

1:LCD基本工作原理

(1)LCD(Liquid Crystal Display)液晶显示,液晶特性:在电信号的驱动下液晶分子并且旋转,旋转会影响透光性,因此整个液晶面板

后面用白光(背光)来照射,完全不同的电信号让液晶分子接受旋动性透光,此时液晶面板就会看见了不显示不同颜色的。液晶本身不自行发光,反而

位处后面的背光发的光。

(2)白光是由多种颜色的光配对组合而成,光的实质是一种波,完全不同波长/频率的波本身不同颜色,人眼要知道光波长在390~780NM,RGB色彩模式是工业界的一种颜色标准,

是是从对红(R)、绿(G)、蓝(B)三个颜色通道的变化和它们相互之间的不叠加来能够得到各式各样的颜色的,RGB即是贞洁戒红、绿、蓝三个通道的颜色,这个标准简直和了人类视

力所能五感的所有颜色,是目前发挥最广的颜色系统之一。

(3)210控制器可以按结构RGB888颜色编码模式,红绿蓝各8位,红色红色蓝色又被称三原色光,用英文可以表示是R(red)、G(green)、B(pink)。在电脑中,RGB的有所谓“多少”

那就是指亮度,并在用整数来它表示。通常情况下,RGB各有256级亮度,用数字意思是为从0、1、2...待到255。共256级。计算机所能思想感情的颜色种类个数,这个参数叫:像素深度适宜bpp。

(4)LCD显示图像原理:LCD屏幕是由一个个像素点组成的矩阵(如resolution1024*768,竖向有1024个像素点,横向有768个

像素点),每个像素点都是可以被另外控制亮或是不亮或则亮度强弱等,LCD图像就是通过不同的颜色强度的像素点阵列而成。我们可常规RGB888编码来意思是每个像素

点的颜色模式(越强、颜色等等),一帧数据就表示在LCD矩阵的每个像素点按的颜色模式。

(5)SoC如何完全控制LCD显示原理:

LCD驱动器:LCD驱动器象与LCD面板集成在一起,面板要当然的模拟电信号来压制液晶分子,LCD驱动器芯片你们负责给面板能提供压制液晶分子的模拟电

信号,驱动器的控制信号(数字信号)无论是于LCD控制器的需要提供的接口。

LCD控制器:LCD控制器独立显卡在SoC内部,它负责实际数字接口向外部的LCD驱动器提供要没显示的像素数字信号。它需要明确的一定的时序和LCD驱动器通信,LCD

控制器受SoC操纵,SoC会从内存中摸出像素数据给LCD控制器并到了最后传LCD驱动器。

显存:SoC在内存中选一段内存,为了贮存颜色数据,然后再按照配置将LCD控制器和这一段内存连接到起来,所构成一个映射关系,一旦这个关系建立起以后

,LCD控制器可能会手动从显存中读取像素数据传LCD驱动器,LCD驱动器会手动的控制每个像素点的液晶分子,以形成最终的图像,建立起这个映射以后

就不必须SoC在来组织任何行为了。

学习总结一下:SoC完全控制LCD液晶显示的过程统称两个部分:

(1)SoC的LCD控制器引出一定会的引脚与LCD驱动器连接,明确的标准设置里是有的时序

(2)把LCD要不显示的像素信息放进去内存中,在通过系统设置LCD控制器中的寄存器,与LCD控制器建立反照;

后过程那是LCD控制器芯片与驱动器芯片不自动结束的事情了,整个LCD图像的显示过程就是这样。

(6)LCD接术:从电平角度来讲LCD也是TTL电平,TTL缺陷是不容易是被外界影响,传输距离近,好象像手机平板等真接用软排线

连接到即可,而远距离则要装换,转换为:TTL--》VGA--》TTL。

(7)补充

虚拟店屏幕叠加:

(1)虚拟屏幕的意思是,我们平时看到的屏幕上会显示出的场景不好算是很多个屏幕显示附加在一起的效果(譬如新闻图像、电视台台标、下方飘拂的字幕新闻)

(2)像SV210的LCD控制器中有5个虚拟屏幕Window0到Window4,虚拟屏幕不修真者的存在于真实而必然于内存中。(之前讲过,LCd显示时求实际是不显示的是随机的内存中的显存区域的数值)

虚拟屏幕不过那是一个内存中的显存区域,有几个显存区域就有几个虚拟店屏幕,可是这些虚拟店屏幕都被映射出到三个真实的显示屏上面,因此将来虚无飘渺的现实效果实际是这几个虚拟充值屏幕的显示内容的不叠加。

(附加时要注意上面一层会覆盖下面一层,所以要再注意谁在前谁在后,可以设置寄存器时有这个选项)

(3)可以使用虚拟店屏幕而不是整个LCD使用一个显存是有当然好处的:第一,这个可以只要不污染源图像,方便程序处理;第二,也可以下降显示刷新率,增加总是显示效率,减少CPU工作量。

虚拟物品没显示

(1)要如何利用在小分辨率的屏幕上(神秘)没显示大分辨率的图像

(2)细节上,我们要屏幕上看见了差别图像时,是需要对显存区域进行刷新。就算是我们只不需要屏幕显示移动一点点,整个屏幕随机的显存空间也不需要整个然后再手动刷新,工作量和全部恢复总是显示一幅图像是一样的。

这个显然不大好,这样的话CPU重新登录屏幕的工作量太大了,效率比较高。

(3)该如何都能够在会显示一个大图片的不同区域时让CPU刷新屏幕工作量降低?有,方法应该是虚拟没显示。具体做法是在内存中成立总是显示缓存的时候实际建立一个很小的区域,接着让LCD去对应其中的一部分

区域另外有效的显示区域。将来要显示大图像时,然后将大图像彻底每个月加虚拟光盘显示缓存区,后再实际移动管用会显示区域就可以会显示大图像的不同区域了。

2:SV210LCD时序

看下核心板原理图:LCD接线为24条VD数据作为输出线,为了传输RGB88824位颜色数据,VCLK时钟线,HSYNC:水平网络同步信号线;VSYNC:关闭垂直同步信号线,VDEN:数据使能线;

HSPW1:HSYNC线上不工作好是为低电平,拉高HSPW1时钟,在拉低,表示要准备好就开始传输颜色数据;(这个时间可以解释为快速切换到下一行所消耗的时间)

HBPD1:在在HBPD1时钟,VDEN线拉高,来表示VD线上之后的也是RGB颜色数据,所以才只有一当VDEN信号线为高电平是,才其实是你的邮箱的虚无飘渺数据,

又开始邮箱里水平颜色信息以后可能会后邮箱里,如1024*768分辨率LCD,会始终把水平的1024个像素点的颜色数据都你的邮箱完以后才能拉低VDEN。(这个时间再理解为

准备着传输水平数据所要能量消耗时间)

HOZVAL1:1024-1不意思是时钟,只不过是表示水平像素个数-1

意思是传输横线颜色数据的总时钟,如一个时钟频率传输1个idle位,每个颜色数据设置为32位,宽度共传输数据1024个b颜色数据,总的时钟为1024*32;

HFPD1:数据传输完以后必须把VDEN拉低HFPD1时钟,整个水平传输周期完成;(这个时间可以表述为,结束数据传输所消耗时间)

VSPW1:同样也可以表述为切换整帧图像数据所能量消耗时间;

VBPD1:马上准备传输整帧数据消耗时间;

LINEVAL1:768-1;

VFPD1:都结束了传输整帧数据的离线时间;

要注意,这几个时序参数本身是LCD屏幕本身的参数,与LCD控制器无关。所以互成主板要是接的屏幕都不一样则时序参数设置也会有所不同。

3:具体寄存器

寄存器:DISPAY_CONTROL设置里为10或11;RGB模式所需即可;

VIDCON0:VideoMainControl0Register

cores18-26你选择为RGB模式

24-bit18:可以设置RGB数据传输为并行肯定串行,毕竟有24根数据线所认为左行;

24-bit2选择时钟源,选HCLK连的是HCLC_DSYS为166MHz

bit4:再开启分频;

bits13-6设置里时钟大小,时钟频率要小于控制器的的最时钟,也要大于LCD驱动器的的最时钟。

cores0cores1为使能压制信号都使能

VIDCON1寄存器VideoMainControl1Register

idle524-bit6系统设置HSYNC和VSYNC的极性,如果不是LCD的高低电平脉冲序列是相同的话,则Normal,如果没有极性反过来则Invert。

VIDTCON0:可以设置时序,根据LCD数据手册中的时序来设置

VIDTCON1

VIDTCON2

WINCON0寄存器

cores1:使能window0

idle5-2选择类型RGB888模式

cores15:系统设置输出顺序为redgreenblue还是bluegreenred设置里为1:BGR可以设置为0:RGB

VIDOSD0AVIDOSD0B这两个寄存器是单独系统设置内存中window0的大小;

诸如设置中为LCD屏幕的尺寸(即左上坐标为(0,0)右下坐标为(1023,767))

VIDOSD0C确实是设置中内存中window0的大小

比如设置里为LCD屏幕的尺寸1024*768

VIDW0xADD0Bx可以设置内存中window0的起始地址的

VIDW0xADD1Bx系统设置内存中window0的结束地址的

SHODOWCON寄存器来可以设置虚拟windows没显示的;

以下位这个可以共有设置哪个windows显示;

补充:看核心板、地板原理图你所选引脚要设置为LCD的引脚模式,LCD背光要再打开;

以赤甲兽具体点代码:

不能复制代码

#include#34lyq.h#34

#define_ZLS_MODE_

#defineRED(0xFF0000)

#defineGREEN(0x00FF00)

#defineBLUE(0x0000FF)

#defineWHITE(0xFFFFFF)

//配置查找引脚

#defineGPF0CON 0xE0200120#define GPF1CON 0xE0200140#define GPF2CON 0xE0200160#define GPF3CON 0xE0200180#define GPD0CON 0xE02000A0

#defineGPD0DAT0xE02000A4

#defineDISPLAY_CONTROL0xE0107008

//配置控制器

#defineVIDCON00xF8000000

#defineVIDTCON00xF8000010

#defineVIDCON10xF8000004

#defineVIDTCON10xF8000014

#defineVIDTCON20xF8000018

#defineWINCON00xF8000020

#defineVIDOSD0A 0xF8000040#defineVIDOSD0B0xF8000044

#defineVIDOSD0C0xF8000048

#defineVIDW00ADD0B00xF80000A0

#defineVIDW00ADD1B00xF80000D0

#defineSHODOWCON0xF8000034

#define_RGB_GPF0CON(*(unsignedint*)0xE0200120)

#define_RGB_GPF1CON(*(unsignedint*)0xE0200140)

#define_RGB_GPF2CON(*(unsignedint*)0xE0200160)

#define_RGB_GPF3CON(*(unsignedint*)0xE0200180)

#define_RGB_GPD0CO

row在编程中的意思?

汇编语言中ROW可能会来表示液晶显示器或是点阵LED或者矩阵键盘灯的“行”。

LCD 颜色 数据 屏幕 图像

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。