网上入手了一个俄罗斯方块掌机,想取其屏幕用于DIY,但找遍全网均没有屏幕面板资料。经过几个月的摸索,已经能够点亮,记录全过程。
相关资料:
段码式液晶屏一种古老的显示屏,早期主要用来替代数码管,显示的笔段可以制作成不同的形状,因此演变成各种各样的样式。


段码屏的每一个显示段,可以看作是一个特殊形状的像素。每个显示段都由两个电极控制,当施加适当电压时就能改变其显示状态。
在实际制造中,为了减少所需的驱动引脚数量,多个像素的某一侧电极会连接在一起,形成公共端。这样就构成了类似网格的行列结构,这些公共端即COM端和SEG端。COM端和SEG端的组合可以驱动不同的像素,映射关系即为真值表:

这种设计思路和LED点阵屏的行列扫描方式很相似,都是通过行列交叉的方式来控制各个显示单元,但在驱动方式上,段码屏和LED点阵有本质区别。
LED点阵屏采用逐行点亮的方式工作。由于LED只能单向导电,控制起来很简单:给要点亮的那一行施加正向电压,同时给其他行施反向电压。这样就能确保每次只点亮目标行的LED,其他行都保持熄灭,通过快速轮换实现整体显示效果。
以一个例子说明,假如要点亮第一行第一个像素,同时关闭其他像素,可以按下述策略设置行(R)和列(C)的电压:
C1 C2
│ │
R1 ────┼────┬────┼────┬─── +5v
│ │ │ │
├─|◀─┘ ├─|◁─┘ ...
│ +5V │ 0V
│ │
R2 ────┼────┬────┼────┬─── 0V
│ │ │ │
├─|◁─┘ ├─|◁─┘ ...
│ 0V │ -5V
│ │
... ...
│ │
0V +5v
四个像素的压差均在二极管下发用数字标明,可以看到:
上述的扫描方式若用来驱动段码液晶就完全不可行了。以上为例,若换成段码液晶屏,虽然左上角像素可以点亮,并且右上和左下的像素因为压差未到达阈值电压Vth而不点亮,但右下角的像素却无法关闭!因为段码屏的像素没有单向导电性,只要像素两端压差超过Vth即会点亮。
因此,如果直接采用与LED点阵相同的扫描驱动方式来驱动段码液晶屏,会导致一个严重的问题:在扫描某一行时,其他非扫描行上的像素也会被部分点亮。这种串扰现象会造成屏幕整体呈现全黑或全灰的显示效果,使得原本要显示的图像完全无法辨认,失去了画面应有的对比度和清晰度。
段码液晶需要更精细的电压控制即:
有一种方式可以满足上述条件,假设段码屏的驱动电压为3.3V,阈值电压为1V,点亮左上角像素,同时关闭其他像素:
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!总结一下要点:
只需设计一个电路满足下述条件即可完美驱动屏幕:
一般来讲,MCU的IO只能产生两种固定电压,要驱动段码液晶屏需要外挂驱动IC,后者的内部有专用的电路可以产生不同档位的电平。但有一种权电阻网络的电路结构,也可以实现类似的功能:
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以简化设计。