FSMC_LCD
1. TFT-LCD(Thin Film Transistor Liquid Crystal Display)[薄膜晶体管液晶显示器]
2. 液晶

物质在熔融状态或在溶液状态下虽然获得了液体物质的流动性,但在材料内部仍然保留有分子排列的一维或二维有序,在物理性质上表现出各向异性。这种兼有晶体和液体部分性质的状态称为液晶态,处于这种状态下的物质叫液晶。


4. 相关名词
| LC | Liquid Crystal液态晶体 |
| CF | Color Filter彩色滤光片,分R、G、B三种颜色的滤光片 |
| B/L | Back Light背光 |
| L/G | Light Guide导光板 |
| data line | 数据线,进行资料的传输 |
| scan line | 扫描线,控制TFT开闭, |
5. TFT-LCD显示器面板


5.1 偏光板

液晶分子可改变光的极化状态,穿过扭曲液晶时,光线被液晶分子扭转90度,通过TFT电压控制开关来控制液晶分子两端的电压,不同压差下有不同的穿透率,极化程度也相应改变,从而达到控制光线强弱的目的。
5.2 背光模组
背光模组主要为液晶面板提供均匀、高亮度的光源,由于TFT-LCD非自发光性,因此需利用外加光源,如发光二极管、冷阴极射线管等。
主要功能:提供液晶面板平面光源,提供适当的辉度、色度、均匀度、视角等
6 液晶亮度的控制原理

液晶必须用交流信号驱动,长时间维持某一极性,液晶分子可能受到破坏;

7 TFT-LCD显示原理
图像都是由一个个像素(pixel)构成,每个像素均由三种颜色(RGB)的小光点(dot)构成。
7.1 TFT-LCD显示方式

先开启第一行,其余关闭;

接着关闭第一行,电压已经固定所以显示颜色也已固定。开启第二行,其余仍保持关闭。以此类推,可完成整个画面显示。
7.2 TFT-LCD指标
1)解析度:解析度越高,画面越清晰

解析度与驱动IC的关系
7.3 颜色深度:LCD可显示的颜色数目

对6位显示器共可以显示颜色数目为:2^6 + 2^6 + 2^6 = 262144;
对8位显示器共可以显示颜色数目为:2^8 + 2^8 + 2^8 = 16777216;
256 Color: 8(R) * 8(G) * 4(B) = 256 color;
High Color: 32(R) * 64(G) * 32(B) = 65536 color;
Full Color: 64(R) * 64(G) * 64(B) = 262144 color;
True Color: 256(R) * 256(G) * 256(B) = 16777216 color;
7.4 Dithering
7.5 TFT-LCD穿透率
TFT-LCD光学穿透率不高:TFT开口率约60%以上;CF的率光效率约1/3以下;偏光板的极化效率约40%上下。三者相乘约为8%。

闭口率:液晶分子中光学能够穿过的有效区域比例。即液晶分子中有效的透光区域与全部面积的比例,就称之为闭口率。
所以LCD的设计中要努力增加开口率,只有开口率提高,便可增加亮度,同时背光板的亮度也不用那么高。
8 TFT-LCD基本驱动方式




9 数字屏与模拟屏
液晶是根据电压发生扭曲,控制其透光多少决定亮度的。液晶和光都是没有颜色的,加了虑光片就产生了颜色。 因为是用电压控制,所以一定是模拟量了。这是从液晶本身的工作方式看; 液晶被加工成液晶屏以后,根据接出来的引线不同,分为模拟的和数字的。模拟屏和数字屏的屏本身是没有区别的,点亮的时候驱动行列驱动IC用的都是数字信号。
一、模拟屏和数字屏就屏本身来说是没有区别的,主要区别是在电路上。加到液晶屏像素上的肯定都是数字信号。在屏的边缘有很多行列驱动IC,就是所谓的驱动器。在屏后面的电路板上主要是控制器,控制器将收到的信号转换为符合驱动器时序要求的驱动信号,送给驱动器点亮相应的像素。
模拟屏和数字屏在这写部分是一样的,他们的区别主要在于输入上。数字屏直接输入数字信号,RGB每种颜色信号都被视频处理电路转换若干位数字信号,直接送入屏上的控制驱动器,A/D转换是在前面的电路中完成的。而模拟屏输入是三基色模拟信号输入,它的A/D转换是在液晶屏上的电路中完成的。
二、关键的区别在输入的RGB信号是仿真的还是数字的。真正的输入到屏上的是一个具体的电压值,这个电压值的大小决定了液晶的偏转的大小,从而决定了透过光的多少,可以认为驱动屏需要的是仿真信号,但绝对不是数字信号(对RGB信号而言,当然时序信号是数字的)输入的RGB如果是仿真信号,这样的屏叫仿真屏,在LCM的DRIVER IC内部进行采样处理,然后把样本值送到TFT上。输入的RGB信号如果是数字的叫数字屏,在LXM的DRIVER IC内部要进行D/A转换,这部份工作是由GAMMA校正电路完成的。
(LCD真彩显示使用TFT型LCD,主动点阵显示,需要采用源极驱动器(source driver)和栅极驱动器(gate driver)去控制LCD场效应晶体管FET的源极与栅极.源极驱动器接收显示数据驱动LCD列显示,也称为数据驱动器(data driver),栅极驱动器控制逐行扫描。
三、模拟屏的输入信号是模拟的RGB信号, 一般每行信号要和上一行反向, 还要有配合的VCOM信号, 需要+10V以上和-10V以下的偏压,垂直分辨率一般为230左右;数字屏的输入信号分TTL和LVDS等几种,一般红绿兰三色各用6到8位数字量来表示,不需要外接偏压, 垂直分辨率一般为400以上。
其实数字屏与模拟屏都是用数字信号驱动显示的。现在人们所说的数字屏与模拟屏是从液晶屏的接口来区分的,可以直接输入模拟信号的屏就是模拟屏,要输入数字信号的就是数字屏。模拟屏比数字屏多了个A/D转换器,用来将模拟信号转换为数字信号。数字屏就直接处理数字信号来显示。数字屏从它的信号传输方式来分,可分为TTL,LVDS等等方式。
10 开发板液晶屏组成(数字屏)
一块TFT液晶屏(用来显示输入信息)、驱动IC R61509V芯片(驱动液晶屏使其正常工作)、模数转换芯片XPT2046(通过内部SPI通信将模拟信号转换为数字信号,然后对驱动IC进行寄存器分析);
11 FSMC
FSMC一旦设置好后WR(读)、WD(写)、DB0-DB15这些数据线和控制线,就会自动的产生时序送入到LCD;
TFT-LCD用FSMC_NE4做片选信号,这是由于SRAM操作时序与FSMC操作时序相似。不同的时LCD有RS信号,无地址信号;FSMC有地址信号,无RS信号;所以用FSMC的A10连接LCD的RS。
由于对TFT-LCD的操作类似于SRAM的操作,因此选择块1中的一个64MB的区域作为操作地址,这里选择了第4个存储区域,范围为0x6C000000-0x6FFFFFFF;LCD通过RS信号来确定传输的是数据是数据还是命令,结合FSMC控制原理,本质上RS可以理解为一个地址信号。把RS接到A10上面,当A10=0时就是写命令,A10=1时就是写数据,也就是操作A10为0或者为1就可以控制LCD是写入命令还是数据了。
LCD_BASE地址:根据外部电路连接确定,如选择bank1的块4就是从地址0x6c000000开始,而stm32的fsmc在16位数据宽度时,地址线是右移一位对齐,因此0x000007FE,二进制位0111 1111 1110,右移对齐一位后变为011 1111 1111,此时A10为最前面的0,也就是RS=0,代表写命令,如果这个地址再加1,就变成了100 0000 0000,此时A10为最前面的1,也就是RS=1,代表写数据。我们将这个地址强制转换为LCD_TypeDef结构体地址,那么可以得到LCD->LCD_CMD的地址就是0x6C0007FE,对应A10的状态为0(即RS=0),而LCD->LCD_DATA的地址就是0x6C000800(结构体地址自增),对应A10的状态为1,(即RS=1),从而实现对RS的控制。
FSMC_LCD的更多相关文章
随机推荐
- Linux下的搜索查找命令的详解(whereis)
2.whereis 和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据 ...
- nw.js---创建一个hello word的方法
一.如果用nw.js 来开发桌面应用 首先到Nw.js中文网下载软件: https://nwjs.org.cn/download.html 下载下来进行解压就可以了,绿色的免安装的,整个目录结果是这样 ...
- 把一张图片变成base64
// image_file可为urlprivate function base64EncodeImage($image_file) { $image_info = getimagesize($imag ...
- 3 Oracle 32位客户端安装及arcgis连接
关于Oracle服务器端安装及配置的过程详见第2篇文章,链接如下:http://www.cnblogs.com/gistrd/p/8494292.html,本篇介绍客户端安装配置及连接arcgis过程 ...
- Express中间件的原理及实现
在Node开发中免不了要使用框架,比如express.koa.koa2拿使用的最多的express来举例子开发中肯定会用到很多类似于下面的这种代码 var express = require('exp ...
- python中文分词库——pynlpir
安装 pip install pynlpir import pynlpir #加载包 pynlpir.open() #加载nlpir的库,这步是必须的 #否则会出现 段错误/段转储 segment f ...
- python_str 字符串的所有方法
# _Author:huang# date: 2017/11/28 # 字符串 '''print("hello" * 3)print("hello world" ...
- 数据库查询的数据导出到xls表,集合数据导出到xls表
//实体类package com.outxls; public class Student { private Integer studentId; private String studentNam ...
- shop_z 一套非常适合二次开发的php后台管理系统
QQ群:247823727 如果你需要定制某些功能开联系群主,价格实惠,后期交接完善,有上手培训 shop_z基础thinkphp5 php7上开发运行,速度杠杠的 地址:https://gitee ...
- 《Mysql 用户管理》
一:数据库用户 ROOT 和 其他用户有什么区别么? - Mysql root 和 linux root 不是一回事,数据库 root 只不过是初始化时候自己建立的一个用户而已,随时可以删除/修改. ...