MADL!AR
Code is cheap, show me the PPT!
首页
分类
Fragment
关于
俄罗斯方块段码液晶屏驱动
分类:
硬件
发布于: 2024-01-14
网上入手了一个俄罗斯方块掌机,想取其屏幕用于DIY,但找遍全网均没有屏幕面板资料。经过几个月的摸索,已经能够点亮,记录全过程。 ## 段码液晶 相关资料: * [知乎·段码液晶屏学习应用笔谈](https://zhuanlan.zhihu.com/p/443527392?utm_id=0) * [CSDN·段式LCD原理](https://blog.csdn.net/xiebingsuccess/article/details/91876306) 段码式液晶屏一种古老的显示屏,早期主要用来替代数码管,显示的笔段可以制作成不同的形状,因此演变成各种各样的样式。  #### 1. 段码液晶屏(Segment LCD)基本结构: * 由两片平行玻璃基板构成,中间填充液晶材料 * 每片玻璃内表面镀有透明导电电极(通常为氧化铟锡ITO) * 上下基板外侧各贴有一层偏光片,两者的偏振方向呈90°正交 * 液晶分子在未加电时呈现自然螺旋排列(TN型液晶的典型特性) #### 2. 光学原理 * 未加电压时: 液晶分子的螺旋结构会使光线偏振方向旋转90°,与下层偏光片匹配而透光(显示亮态) * 施加电压时(>阈值电压V
th
,通常2-3V): 电场迫使液晶分子沿电场方向排列,失去旋光性,光线被下层偏光片阻挡而遮光(显示暗态) * 必须使用交流驱动(通常30-200Hz方波)以避免液晶电解老化  段码屏的每一个显示段,可以看作是一个特殊形状的像素。每个显示段都由两个电极控制,当施加适当电压时就能改变其显示状态。 在实际制造中,为了减少所需的驱动引脚数量,多个像素的某一侧电极会连接在一起,形成公共端。这样就构成了类似网格的行列结构,这些公共端即COM端和SEG端。COM端和SEG端的组合可以驱动不同的像素,映射关系即为真值表:   这种设计思路和LED点阵屏的行列扫描方式很相似,都是通过行列交叉的方式来控制各个显示单元,但在驱动方式上,段码屏和LED点阵有本质区别。 ## LED点阵驱动方式 LED点阵屏采用逐行点亮的方式工作。由于LED只能单向导电,控制起来很简单:给要点亮的那一行施加正向电压,同时给其他行施反向电压。这样就能确保每次只点亮目标行的LED,其他行都保持熄灭,通过快速轮换实现整体显示效果。 以一个例子说明,假如要点亮第一行第一个像素,同时关闭其他像素,可以按下述策略设置行(R)和列(C)的电压: ```text C1 C2 │ │ R1 ────┼────┬────┼────┬─── +5v │ │ │ │ ├─|◀─┘ ├─|◁─┘ ... │ +5V │ 0V │ │ R2 ────┼────┬────┼────┬─── 0V │ │ │ │ ├─|◁─┘ ├─|◁─┘ ... │ 0V │ -5V │ │ ... ... │ │ 0V +5v ``` 四个像素的压差均在二极管下发用数字标明,可以看到: * 左上角的像素为正向电压,且超过LED发光的阈值,像素点亮; * 右上、左下的像素没有压差,像素不点亮; * 右下的像素,虽然有5V压差且超过阈值,但因为是反向电压,像素不点亮。 ## 段码屏驱动方式 上述的扫描方式若用来驱动段码液晶就完全不可行了。以上为例,若换成段码液晶屏,虽然左上角像素可以点亮,并且右上和左下的像素因为压差未到达阈值电压V
th
而不点亮,但右下角的像素却无法关闭!因为段码屏的像素没有单向导电性,只要像素两端压差超过V
th
即会点亮。 因此,如果直接采用与LED点阵相同的扫描驱动方式来驱动段码液晶屏,会导致一个严重的问题:在扫描某一行时,其他非扫描行上的像素也会被部分点亮。这种串扰现象会造成屏幕整体呈现全黑或全灰的显示效果,使得原本要显示的图像完全无法辨认,失去了画面应有的对比度和清晰度。 段码液晶需要更精细的电压控制即: * 选中段电压 V
on
≥ V
th
* 非选中段电压 V
off
< V
th
有一种方式可以满足上述条件,假设段码屏的驱动电压为3.3V,阈值电压为1V,点亮左上角像素,同时关闭其他像素: ```text COM1 COM2 │ │ SEG1 ────┼────┬────┼────┬─── 1.65V │ │ │ │ ├─||─┘ ├─||─┘ │1.65V │0.83V │ │ SEG2 ────┼────┬────┼────┬─── 3.3V │ │ │ │ ├─||─┘ ├─||─┘ │ 0V │-0.82V │ │ 3.3V 2.48V 可以看到,只有左上角的像素压差超过了阈值Vth。 再查看另一种情况:点亮右上角的像素,同时关闭其他像素,此时只需要将COM1调整为2.48V,将COM2调整为3.3V即可。 由于段码屏需要交流驱动,在扫描完成COM1、COM2之后,下一轮次需要反向压差。 依旧只点亮左上角像素,可以按如下方式: COM1 COM2 │ │ SEG1 ────┼────┬────┼────┬─── 1.65V │ │ │ │ ├─||─┘ ├─||─┘ │-1.65V │-0.82V │ │ SEG2 ────┼────┬────┼────┬─── 0V │ │ │ │ ├─||─┘ ├─||─┘ │ 0V │0.83V │ │ 0V 0.83V 效果同上。 ``` 以上的电压数字中,0.83V(0.82V)、1.65V、2.48V并非为特殊数字,它们分别为驱动电压的1/4、1/2和3/4!总结一下要点: 1. 正向电压扫描时: * 选中的行COM设置为VCC,非选中设为3/4 VCC * 对于选中的像素 SEG为1/2 VCC,非选中设为 VCC 2. 反向电压扫描时: * 选中的行COM设置为GND,非选中设为1/4 VCC * 对于选中的像素 SEG为1/2 VCC,非选中设为 GND 只需设计一个电路满足下述条件即可完美驱动屏幕: 1. 使COM产生0/4、1/4、3/4和4/4倍的驱动电压 2. 使SEG产生0/4、2/4和4/4倍的驱动电压 一般来讲,MCU的IO只能产生两种固定电压,要驱动段码液晶屏需要外挂驱动IC,后者的内部有专用的电路可以产生不同档位的电平。但有一种权电阻网络的电路结构,也可以实现类似的功能: ```shell VCC ─┬─ ┌┴┐100KΩ │A│ └┬┘ ┌────┐50KΩ COM ─┼──┤ C ├─── BIAS ┌┴┐ └────┘ │B│ └┬┘100KΩ ─┴─ GND ``` 其中COM直连MCU的IO,根据电阻分压原理可得: | 分压| COM | BIAS | |-------|-------|-------| | 0/4 | Lo | Hi-Z | | 1/4 | Hi-Z | Lo | | 2/4 | Hi-Z | Hi-Z | | 3/4 | Hi-Z | Hi | | 4/4 | Hi | Hi-Z | 由于BIAS只在输出1/4和3/4倍的电压时产生作用,对于SEG的电路,可以直接移除BIAS以简化设计。