作为一个软件出身的嵌入式开发者,对硬件同样感兴趣。最近在给一个产品做液晶模块选型,于是通过谷哥度娘学了点液晶模块的周边知识,整理以供观摩。
液晶的显示原理
液晶显示器LCD (Liquid Crystal Display)主要用于文本、图形及图像信息的显示。液晶显示屏具有轻薄、体积小、耗电量低、无辐射、平面直角显示以及影像稳定不闪烁等特点。液晶是一种介于固态和液态之间的有机化合物。当被加热时,它会呈现透明的液态,而冷却的时候会结晶成混乱的固态。用于液晶显示器的是Nematic液晶,当向液晶通电时,液晶体分子便排列得井然有序,可以使光线容易通过;而不通电时,液晶分子便排列混乱,阻止光线通过。
从整体来看,TN(扭曲向列型)单 {MOD}液晶显示器液晶分子的排列就像螺旋形的扭转排列。光线从上向下照射时,通常只有一个角度的光线能够穿透下来,通过上滤光片导入上部夹层的沟槽中,再通过液晶分子扭转排列的通路从下滤光片穿出。一旦通过电极给这些液晶分子加电之后,液晶分子变成竖立的状态,这样光线就无法通过,结果在显示屏上出现黑 {MOD}。这样会形成透光时(即不加电时)为白、不透光时(加电时)为黑,字符就可以显示在屏幕上了。
LCD的封装模式
常见的 有COG,COB,TAB,TCP等封装形式。
* COB:COB是Chip On Board的英文简写,它是LCM驱动线路板的另一种加工方式。
该工艺是将裸芯片用粘片胶直接贴在PCB板指定位置上,通过焊接机用铝线将芯片电极与PCB板相应焊盘连接起来,再用黑胶将芯片与铝线封住固化,从而实现芯片与线路板电极之间的电气与机械上的连接。该工艺包含有粘片、固化、压焊、测试、封胶、固化和测试七个工序。
COB工艺采用小型裸芯片,设备精度较高,用以加工线数较多、间隙较细、面积要求较小的PCB板,芯片焊压后用黑胶固化密封保护,使焊点及焊线不受到外界损坏,可靠性高,但损坏后不可修复,只能报废。
* COG:COG是Chip On Glass的英文简写,是将LCD屏与IC电路直接连在一起的一种加工方式。
该工艺是在LCD外引线集中设计的很小面积上将LCD专用的LSI-IC专用芯片粘在其间,用压焊丝将各端点按要求焊在一起,再在上面滴铸一滴封接胶即可,而IC的输入端则同样也设计在LCD外引线玻璃上,并同样压焊到芯片的输入端点上,此时,这个装有芯片LCD已经构成了一个完整的LCD模块,只要热压将其与PCB连接在一起就可以了。该工艺主要包含放屏、放ACF、放芯片、对位检查、芯片压焊、封胶、检测七个工序。
* COF:COF是Chip On Film 的英文简写。它是将集成电路芯片压焊到有一个软薄膜传输带上,再用异向导电胶将此软薄膜传输带连接到液晶显示器件的外引线处。这种方式主要用于要求小体积的显示系统上。
* TAB:TAB是Tape Automated Bonding的英文简写。它是将带有驱动电路的软带通过ACF(各向异性导电膜)粘合,并在一定的温度、压力和时间下热压而实现屏与驱动线路板连接的一种加工方式。它主要包含ACF预压、对位检查、主压和检测四个工序。
LCD模块的内部存储器
DDRAM:(Data Display Ram),数据显示RAM,往里面写啥,屏幕就会显示啥。
CGROM:(Character Generation ROM),字符发生ROM。里面存储了中文汉字的字模,也称作中文字库,编码方式有GB2312(中文简体)和BIG5(中文繁体)。
CGRAM:(Character Generation RAM),字符发生RAM。
GDRAM:(Graphic Display RAM):图形显示RAM,这一块区域用于绘图,往里面写啥,屏幕就会显示啥,它与DDRAM的区别在于,往DDRAM中写的数据是字符的编码,字符的显示先是在CGROM中找到字模,然后映射到屏幕上。
HCGROM:(Half height Character Generation ROM):半宽字符发生器,就是字母与数字,也就是ASCII码。
显示汉字有两种方法:
1.使用LCD的内部字库(位于CGROM中),把要显示的汉字的编码告诉LCD,由LCD上的MCU去取字模然后显示到屏幕上。
2.使用外部字库(无内置字库的LCD或不想用内部字库),外部程序把字模对应的点阵送给GDRAM,然后在屏幕上显示。
汉字的编码与字库
汉字的编码
汉字系统对每个汉字预先规定输入计算机中的代码,即汉字的外部码。计算机为了识别汉字,要把汉字的外部码转换成内部码进行存储和处理。输出时,还将汉字的内部码转换成汉字的字形码。主要的汉字编码有以下几种:
1) 国标码:计算机与其他系统或设备之间进行汉字代码信息交换的标准汉字代码。它用两个字节代码来表示一个汉字。行、列各 94(0-93),用先行后列的两个 7 位二进制数表示。
2) 区位码:每个汉字(图形符号)用两个字节表示,每个字节只用低 7 位,即最高位为 0 的二进制码。汉字编码使用的高字节称为区码,低字节称为位码。区位码共 94 个区,每个区有 94 个位,组成一个 94*94 的矩阵。
3) 机内码:中文或西文信息在计算机系统中的代码表示称为机内码。是计算机对汉字进行存储、运算的实际代码。一般用连续两个字节表示汉字的内码且每个字节最高位为 1。
2.2 区位码、国标码和机内码之间的转换关系
(区位码的十六进制表示)+A0A0H=机内码。国标码+8080H =(区位码的十六进制表示)+A0A0H。国标码=(区位码的十六进制表示)+2020H。
汉字显示与字模
汉字的输出是将汉字的笔划离散化,用点阵来表示。点阵的中每个点位只有两种状态:有笔画(1)、无笔画(0)。描述汉字点阵信息的二进制代码集称为汉字的字模。所有汉字和符号的点阵信息就组成了汉字库。
点阵字库文件已经给使用者提供好了,关键在于如何取得汉字的图形,即汉字的点阵字模。首先看一下如何取得汉字的区位码。计算机在处理汉字和 ASCII 字符时 ,使每个
ASCII字符占用一个字节,而一个汉字占用两个字节,其值称为汉字的内码。其中第一个字节的值为区号加上 32(20H),第二个字节的值为位号加上 32(20H)。为了与 ASCII 字符区别开,表示汉字的两个字节的最高位都是 1,也就是两个字节的值都又加上了 128(80H)。这样,通过汉字的内码,就可以计算出汉字的区位码。具体算式如下:
qh=c1-32-128=c1-160, wh=c2-32-128=c2-160 或 qh=c1-0xA0, wh=c2-0xA0
其中 qh 、wh 为汉字的区号和位号,c1、c2 为汉字的第一字节和第二字节。
根据区号和位号可以得到汉字字模在文件中的位置:
location=(94*(qh-1)+(wh-1))*一个点阵字模的字节数。
字模的表示顺序为:先从左到右,再从上到下,依此类推,画满 16×16 个点。这样,一个 16×16 点阵的汉字总共需要 16*16/8=32 个字节表示。因此,当显示16×16 点阵的汉字时,只要根据区码和位码计算出该汉字点阵在ROM 中存放的起始地址,然后从此地址连续地取出
32 个字节的汉字点阵,并写入 LCD 模块对应的地址中,就可以显示出该汉字。
其他
1.为啥LCD模块的纵向分辨率一般是16的倍数?如160x32,160x16,320x48?
------- 因为常见汉字的字库一般是16x16的,lcd纵向分辨率设计成16的倍数为了汉字显示方便。
2.如果程序空间有限,无法加载全部字库文件(上百k)怎么办?
可以使用自模提取工具(DM Tools等)提取字模,然后利用软件生成相应的机内码。接下来就可将以上所得到的汉字的机内码和其字模合在一起组成数组,如此反复就可以将所需要的所有汉字都形成数组,最后将这些汉字组成二维数组。
3.LCD模块的数据接口类型
有并口和串口两种,前者速度较快,但管脚较多。