-
Notifications
You must be signed in to change notification settings - Fork 4
DisplayTechnology
技术是不断更新换代的,从原始到现在更容易让我们深入了解不同技术的优缺点,结合目前主流方案,我整理了现实中常见的几种显示技术: CRT、LCD、LED 和 OLED
-
CRT(Cathode ray tube,即阴极射线管)
CRT 的电子枪按照上面方式,从上到下一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描。
为了把显示器的显示过程和系统的视频控制器进行同步,显示器(或者其他硬件)会用硬件时钟产生一系列的定时信号。 当电子枪换到新的一行,准备进行扫描时,显示器会发出一个水平同步信号(horizonal synchronization),简称 HSync;
而当一帧画面绘制完成后,电子枪回复到原位,准备画下一帧前,显示器会发出一个垂直同步信号(vertical synchronization),简称 > VSync。 显示器通常以固定频率进行刷新,这个刷新率就是 VSync 信号产生的频率。尽管现在的设备大都是液晶显示屏了,但原理仍然没有变
-
LCD(Liquid Crystal Display,俗称液晶显示屏)
LCD 和 OLED 的显示原理都是基于通过三基色组合成像素点的光学原理,像素点非常微小并且密集,人眼视距在正常的范围是看不到像素点的。
LCD 液晶显示器面板是很多层的结构,LCD 面板的发光原理是通过在显示面板最下方的一层背光面板发射白光,光纤透过显示面板的多层结构,照亮整个显示面板来实现发光。
每一个屋里像素点(Pixel)由RGB三个颜色的子像素 Sub Pixel 组成,每一个子像素都是一个可以被单独控制的透光单元,子像素本身是不带颜色的,而是透过背光板发出来的白光,通过最外层的RGB三种颜色的图层被白光照亮而显示出来的颜色。
在这个过程中通过三个基色的子像素分别控制进光量,实现三基色不同亮度的组合,加上距离足够远的话,人眼是无法分辨出三个不同颜色的子像素,就能组合出特定颜色的像素点
-
e.g.
- 一个像素的三个子像素(R、G、B)全部允许最大的背光通过,即R、G、B同时达到最高亮度,那么由这三个子像素组成的一个像素点在一定的距离外就会被人眼识别成白色
- 一个像素的R、G的子像素如果不透光,而B透光,从远处看这个像素就是蓝色
- 一个像素的R、G的子像素都透光,B不透光,那么这个像素点显示的就是黄色
- 一个像素的R、G、B子像素全部不透光,看起来就是黑色
LCD 利用到了两层偏振膜过滤掉多角度射入的杂光,只保留某一个角度射入的光线(原理类似于我们摄影时镜头使用了 PL 镜的效果,过滤水面、桌面的反光),第一层偏振膜负责过滤掉其他角度过来的杂光,第二层偏振膜通过与第一层偏振膜达到垂直角度,就能完全过滤掉光,这样光就无法穿透了,这样达到了黑色像素的效果;每个像素点通过这种单独控制进光量大小的方式来调节亮度,最终显示彩色和黑白
-
LCD 为何叫做液晶显示器
一块 LCD 屏幕上像素点有几百几千万甚至上亿颗,每一个像素点又由三基色的三个子像素组成,旋转这么大数量的偏振膜来单独控制每一个子像素的进光量,是个不小的工程。
在两层偏振膜之间有一层特殊的材料,就是传说中的液晶层,通过电压能够控制液晶的螺旋结构,改变通过液晶层的光波的光学特性,使光的偏振角度发生变化,最终实现控制光线是否能通过第二层偏振膜.
所以相对于 LCD 的显示原理,真实情况下 LCD 是通过电压控制两层偏振膜之间的液晶层的螺旋结构来改变光的偏振角度,旋转的部分是在液晶层,而不是在偏振膜
每一个子像素都有单独控制电压的逻辑电路,这就解决了几百上千万级别的子像素透光控制的问题,三个子像素组成一个像素点,成千上万个像素点平铺在一起,就是一块 LCD 屏幕
-
LCD 的优点
- 技术成熟
- 价格相对低廉
-
LCD 的缺点
- 没办法显示纯黑色,两层偏振膜尽可能的过滤掉了杂光,但仍有一定杂光透过,因此纯黑色看起来也是发灰的效果
- 因为没有真正意义上的黑色,导致 LCD 的画面对比度(最亮的白色和最暗的黑色的比值)不够大
- 背光板发出来的光线至少 80% 被过滤掉了,功耗比较大,比如需要更大亮度的屏幕,就需要背光板提供更大亮度的背光,亮度更大,反面导致黑色像素黑度更加不够。即想要屏幕亮度提升,对比度就会有所下降,而对比度提升,就需要更好的偏振膜来过滤出更纯粹的黑色,同时亮度又不能太高
- 除了两层偏振膜和液晶层外,还有电极层、基板和玻璃层等等,光线通过这些层会造成相当大的亮度损耗
LCD 技术需要优化的主要就是:对比度、功耗还有亮度
前些年流行的 LED 电视,实际上 LED 电视就是 LCD 的面板,只不过背光板用的是 LED 发光板
-
-
OLED(Organic Light-Emitting Diode,俗称有机电激光显示)
OLED 和 LCD 的显示原理都是基于通过三基色组合成像素点的光学原理,像素点非常微小并且密集,人眼视距在正常的范围是看不到像素点的。
-
虽然 LCD 和 OLED 的显示原理是一样的,但是 LCD 和 OLED 组成最小发光单元的原理却有着本质上的不同
-
OLED 没有背光板
OLED 通过每一个像素点自发光,
-
OLED 不需要两层偏振膜
其实 OLED 本身并不需要偏振膜,至少偏振膜在 OLED 的显示器的作用跟 LCD 不一样
OLED 的面板的偏振膜是在最上层,用来过滤自然光照射到显示面板之后,再反射回人眼的这个杂光(更像 PL 镜的描述了),就算没有这一层偏振膜 OLED 也照样能看,只不过可能锐度和对比度受到杂光的影响,显示效果会打折,而 LCD 缺了任何一层偏振膜都不能正常显示了 -
OLED 显示黑色的时候,子像素是完全关闭的
不同于 LCD 是通过偏振膜阻挡大部分的背光光线显示出灰蒙蒙的黑色, OLED 的是纯黑色
-
-
OLED 的优点
- OLED 面板可以做到很薄,因为不需要背光板和底层的偏振膜,少了很多层的结构
- 省电,因为 OLED 每个像素自发光,而不是依靠最下层一整层的这个背光板,所以电能转换成光的这个效率很高,没有太多热损耗,不像 LCD 驱动背光板的能源 80% 都是浪费掉的,而当显示纯黑的时候, OLED 的像素点完全是不亮的
- 纯粹的黑色,能效高无遮挡,显示的对比度高于 LCD 的对比度
- OLED 可以做成柔性屏,在可穿戴设备上 OLED 基本上是目前最好的解决方案
-
OLED 的缺点
- 成本高
- 烧屏
- 碳基的有机发光半导体显示屏,从物理层面上避免不了自然损耗,也就是寿命问题,引起这个问题的原因主要有两个因素:持续通电时间和温度。这两个因素互相作用,更长的通电时间意味着更多的发热量,OLED烧屏现象主要出现在长期并且高亮度的显示的部分,比如显示器上固定显示边框和UI的位置,亮度是个很大的因素,最高亮度可能会导致烧屏现象产生的速度提高一倍,并且烧屏是永久且无法修复的。
- LG和苹果都是通过位移那些长期固定显示某个元素的像素点的方式来避免像素过渡的使用,比如 iPhone 全面屏手机下方那个拉杆就会自己周期性的位移来避免烧屏
- LCD 屏幕也有烧屏现象,但是产生的原理跟 OLDE 不一样,并且不是永久性的,LCD 屏上出现烧屏现象,一般关机冷却几个小时就会自动复原
AMOLED 本质上就是 OLED,没区别
MicroLED 从发光原理上也跟 OLDE 差不太多,不过因为没有使用到有机材料,基本上解决了烧屏问题,并且从色彩、亮度、功耗、像素密度上都是 OLED 的大幅升级版本,尤其是亮度
-
ShenYj.github.io - 简书地址 - 返回首页
-
Apple
Common
蓝牙
LBS
音视频
- AVAudioSessionchange_route
- 切换线路
- StreamingKit
- Audio Unit 基础
OC 与 Swift 混编
Object-C
- 代码混淆
- autoreleasepool
- 忽略编译器(clang)警告
- 定时器
- 锁
- RunLoop
- block
- NS_REFINED_FOR_SWIFT
- NS_CLOSED_ENUM
- NS_TYPED_ENUM、NS_STRING_ENUM
- NS_TYPED_EXTENSIBLE_ENUM、NS_EXTENSIBLE_STRING_ENUM
- 关键字nonnull和nullable
- class、objc_getClass和object_getclass方法区别
- isKindOfClass和isMemberOfClass
- 应用程序的加载
- non-lazy classes & lazy classes
- load方法
- initialize方法
- 方法的本质
- 类型编码
- self和super
- 类的内存分析
Swift
- precondition
- 权限控制
- Array常用Api
- String初始化、定义
- String常用Api
- String截取演练
- Set定义、创建
- Set访问和修改
- Dictionary操作
- Dictionary和KeyValuePairs
- Dictionary与String转换
- 常用高阶函数
- enum原始值
- enum关联值
- enum遍历
- 递归enum
- enum内存分配
- 指针
- for循环
- break跳出循环
- 变量名与关键字冲突
- 类的定义
- 类的继承和初始化
- 关键字: final
- 关键字: mutating
- 关键字: lazy
- 修饰类方法的关键字: static
- 关键字: final、dynamic、objc和_dynamicReplacement
- 关键字:@dynamicMemberLookup和@dynamicCallable
- 关键字: propertyWrapper
- 自定义运算符
- 下标: subscript
- 扩展: extension
- 协议: protocol
- 协议和扩展
- 为什么需要泛型
- 泛型函数定义
- 泛型类型
- 泛型的类型约束
- 关联类型
- 为泛型定义要求
- 泛型下标
- 多线程
- Attributes
- 错误处理
- Codable
- DispatchSourceTimer
- Swift 5.x 演练: 更多功能编辑页
- Swift 5.x 类库收集
- 单元测试笔记
- 实例对象内存结构
- 元类型、Type、Self
- frozen
- convention
- Swift(5.3.2)源码编译
- SQLite.Swift类库演练
- Swift 5.5 关键字: async/await
- Swift 5.5 新特性: Continuations
- Swift 5.5 新特性: Actor
- Swift 方法调度
- Swift Mirror
- Swift 关键字: @_silgen_name
- Swift 关键字: @_disfavoredOverload
- swiftmodule
- Swift 5.6 新特性: Type placeholders
- Swift 5.6 新特性: #unavailable
- Swift 5.6 新特性: CodingKeyRepresentable
- Swift 5.6 新特性: existential any
- Swift 5.7 新特性: if-let/guard 语法简化
- Swift 5.7 新特性: Multi-statement closure type inference
- Swift 5.8 新特性: @backDeployed
- Swift 5.9 新特性: if switch expressions
- Swift 6.0 新特性:@preconcurrency
RxSwift
macOS - AppKit
-
iOS Assembly(ARM64)
-
C++
C++ 基础
- cout、cin
- 函数重载
- 默认参数
- extern "C"
- pragma once
- inline function
- const
- Reference
- 汇编
- 类和对象
- 堆空间内存管理
- Constructor
- Destructor
- 成员变量初始化
- 声明与实现分离
- namespace
- 继承
- 访问权限
- 初始化列表
- 多态:虚函数
- 多态:虚函数实现原理
- 多态:虚析构函数
- 多态:纯虚函数
- 多态:抽象类
- 多继承
- static
- static: 单例模式
- const 成员
- 引用类型成员
- 拷贝构造函数
- 调用父类的拷贝构造函数
- 浅拷贝、深拷贝
- 对象型参数和返回值
- 匿名对象
- 隐式构造
- 编译器自动生成的构造函数
- 友元
- 内部类
- 局部类
- 运算符重载
- 模板
- 类型转换
- C++标准
- Lambda
- 异常
- 智能指针
-
Flutter
Dart
Flutter
-
Go
Go 基础
-
Ruby
Ruby 基础
-
React-Native
React-Native
-
工具篇
-
Swift Package Manager
-
自动化
-
TroubleShooting
-
扩展