LCD RGB 控制技术讲解 — 时钟篇(上)
时序图
下面是LCD RGB 控制的典型时序图
天啊,一下就上这玩意,怎么看???
其实要解释上面的时序图,我们还需要了解一些LCD的显示过程。所以现在只是有个印象,稍后我们详细讲解。
LCD显示流程
LCD显示一张图片,其实是每一个像素点的填充,只是速度很快我们人眼没有察觉而已。如果将LCD的显示频率降低,我们能明显感觉整个屏幕的闪烁现象。
- 我们将LCD屏幕分为水平方向和垂直方向
一般我们的行在水平方向,LCD每一行的像素点被逐一填充,填充完一行继续填充下一行,填充顺序可以为左->右 或者 右->左
- 一行有多少像素点?
- 一个LCD需要填充多少行?
通过查看LCD的手册,例如一个800*480的液晶屏,表示一行(水平)800个像素点,一共有480行。
例如下图中现实一帧的图像(从左到右,从上到下)
每一帧图像,就从第一行的第一个像素点一直填充到最后一行的最后一个像素点。
为了能简单演示一下效果,假设我们现在让LCD现实蓝色,那么LCD的填充效果就像下面的图片
好了,如果能了解这个像素填充的过程。那么我接下来就开始分时时钟和LCD现实的关系。
LCD时钟分析
我们知道了LCD现实一帧图像也就是像素填充的过程,但是由于速度太快我们察觉不出来,那么这个“快”到底是多快呢?
显示一行
- 800*480的RGB LCD屏幕
- 24bpp 显示模式
显示一行,我们LCD需要填充800个像素点。每一个像素由RGB三元素组成,每个元素(R、G、B)由8bit位数组成,也就是说一个像素我们需要通过信号线传输24bit的数据。
那么显示一行800个像素需要多长时间呢?我们先看一个要介绍的时钟–像素时钟CLK
像素时钟
上图中CLK就是像素时钟,每一个时钟周期发送一个像素的数据。根据我们LCD的参数,例如一行有800个像素,那么经过800个CLK时钟,我们就填充完了800个像素。
问题来了…
1. 哪一个CLK代表一行的开始?
2. 哪一个CLK代表第一个有效的像素数据?
所以针对上面的问题,我们还需要介绍两个时钟行同步时钟HSYNC和有效数据使能VDEN
水平同步时钟 HSYNC
HSYNC水平同步信号,表示一行数据的开始。具体如下图
其中CLK没有任何变化,只是多了HSYNC和DEN两个信号。
如图中的红色箭头,当HSYNC产生了如图所示的变化表示新的一行数据传送马上开始,当ENB信号线为高电平期间传输的数据视为有效数据。这样一来,一行800个像素的数据才能正确的传送完成。
显示一帧
垂直同步时钟VSYNC
为什么要有VSYNC呢,按照我们之前假设的800*480LCD。从第一行一直到最后一行,整个LCD屏幕所有像素填充完毕,这一过程也就是写了一帧数据,我们如果要LCD能够实时显示画面,很显然一帧数据肯定不够,所以L要给LCD不断的提供新的帧数据,这无非也就是重复上述显示一帧的过程。
上图中VSYNC垂直同步信号,当产生如图所示的变化,就代表新的一帧数据马上开始传送。那么这里没有有效数据信号呢??
其实很简单,因为新的一帧数据不就是从LCD第一行的第一个像素开始填充嘛,那么前面我们已经说明了每一行都自己的同步信号,而每一行也有对应的数据有效信号线。所以垂直同步信号只用关心从一帧数据(8000*480)的同步,而不同关心每一行的同步。
于是,我们将上面分析的时钟放在一起,就变成了LCD RGB模式的典型时序图
LCD RGB 控制技术讲解 — 时钟篇(上)的更多相关文章
- LCD RGB 控制技术讲解 — 时钟篇(上)【转】
1. 时序图 下面是LCD RGB 控制的典型时序图 天啊,一下就上这玩意,怎么看??? 其实要解释上面的时序图,我们还需要了解一些LCD的显示过程.所以现在只是有个印象,稍后我们详细讲解. 2. L ...
- LCD RGB 控制技术 时钟篇(下)【转】
上一篇博文,我们介绍了LCD RGB控制模式的典型时钟.那么这一片我们要详细的去讨论剩下的细节部分. 我们先回顾一下之前的典型时序图 在这个典型的时序图里面,除了上篇博文讲述的HSYNC VSYNC ...
- LCD RGB 控制技术 时钟篇(下)
我们先回顾一下之前的典型时序图 在这个典型的时序图里面,除了上篇博文讲述的HSYNC VSYNC VDEN VCLK这几信号外,我们还能看见诸如HSPW. VSPW,HBPD. HFPD,VBPD. ...
- Apache Maven 入门篇 ( 上 )
作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法. 这个入门篇分上下两篇.本文着重动手,用 mav ...
- [转]Apache Maven 入门篇 ( 上 )
原文地址:Apache Maven 入门篇 ( 上 ) 作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这 ...
- 前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(上)
第1章.基础篇(上) Abstract:文档树.节点操作.属性操作.样式操作.事件 DOM (Document Object Model) - 文档对象模型 以对象的方式来表示对应的html,它有一系 ...
- 6-C++远征之封装篇[上]-学习笔记
C++远征之封装篇(上) 课程简介 类(抽象概念),对象(真实具体) 配角: 数据成员和成员函数(构成了精彩而完整的类) 构造函数 & 析构函数(描述了对象的生生死死) 对象复制和对象赋值 ( ...
- SpringBoot图文教程「概念+案例 思维导图」「基础篇上」
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐 ...
- c++学习笔记之封装篇(上)
title: c++学习笔记之封装篇(上) date: 2017-03-12 18:59:01 tags: [c++,c,封装,类] categories: [学习,程序员,c/c++] --- 一. ...
随机推荐
- ArrayList扩容
jdk1.5 public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new Illega ...
- 【日志过滤】Nginx日志过滤 使用ngx_log_if不记录特定日志
ngx_log_if是Nginx的一个第三方模块.它在Github上的描述是这样介绍的:ngx_log_if是一个独立的模块,允许您控制不要写的访问日志,类似于Apache的"CustomL ...
- 【Jmeter】配置不同业务请求比例,应对综合场景压测
背景 在进行综合场景压测时,遇到了如何实现不同的请求所占比例不同的问题. 有人说将这些请求分别放到单独的线程组下,然后将线程组的线程数按照比例进行配置. 这种方法不是很好,因为服务器对不同的请求处理能 ...
- m_Orchestrate learning system---网站的语言选择功能(中文英文)
m_Orchestrate learning system---网站的语言选择功能(中文英文) 一.总结 一句话总结:有两种方法,一是session+js端代码,而是session+php端代码. 推 ...
- Rails-Treasure chest3 嵌套表单; Ransack(3900✨)用于模糊查询, ranked-model(800🌟)自订列表顺序; PaperTrail(5000✨)跟踪model's data,auditing and versioning.
自订列表顺序, gem 'ranked-model' 多步骤表单 显示资料验证错误讯息 资料筛选和搜寻, gem 'ransack' (3900✨); 软删除和版本控制 数据汇出(csv), 自订列表 ...
- 谈谈oracle里的join、left join、right join、full join-版本2
--1.left join 左表为主表,左表返回全部数据,右表只返回与左表相匹配的数据select t1.fpdm,t1.fphm ,t1.zjr,t1.zjsj,t1.zjjx,t1.zjje ...
- VAE--就是AutoEncoder的编码输出服从正态分布
花式解释AutoEncoder与VAE 什么是自动编码器 自动编码器(AutoEncoder)最开始作为一种数据的压缩方法,其特点有: 1)跟数据相关程度很高,这意味着自动编码器只能压缩与训练数据相似 ...
- javascript---关于字符串和数组的方法
在学习javascript过程中,遇到过很多关于数组和字符串的一些操作.之前也总结了不少方法,可是一遇到自己用的时候,就忘了.不是忘了方法叫什么名,就是忘了方法的参数有什么,返回的是什么? 现在就再次 ...
- less 全局变量使用
less 全局变量使用 忽然想定义一个变量,但是却需要每个 .vue 文件都需要单独引入这个全局变量才可以,导致很多重复不必要的工作,因而得寻找一种可以任何地方都可以访问的方法 借助换肤这个功能 sa ...
- 理解Javascript的Event Loop
一.单线程 js作为浏览器脚本语言,他的主要用途是与用户交互,以及操作DOM,这决定了它只能是单线程,为什么呢?因为假如js同时有两个线程,一个线程是在DOM上增加内容,另一个线程是删除这个节点,那么 ...