LCD液晶显示和接口
	 
	液晶显示器(LCD)是一种功耗极低的显示器件,它广泛应用于便携式电子产品中,它不仅省电,而且能够显示大量的信息,如文字、曲线、图形等,其显示界面较之数码管有了质的提高。
	1.LCD显示器简介
	LCD显示器由于类型、用途不同,其性能、结构不可能完全相同,但其基本形态和结构却是大同小异。
	    1)LCD显示器的结构
	液晶显示器的结构图如图7.24所示。不同类型的液晶显示器件其组成可能会有不同,但是所有液晶显示器件都可以认为是由两片光刻有透明导电电极的基板,夹持一个液晶层,封接成一个偏平盒,有时在外表面还可能贴装上偏振片等构成。
	
	图7.24  液晶显示器结构图
	 
	现将构成液晶显示器件的三大基本部件和特点介绍如下:
	(1)玻璃基板
	这是一种表面极其平整的浮法生产薄玻璃片。表面蒸镀有一层In2O3或SnO2透明导电层,即ITO膜层。经光刻加工制成透明导电图形。这些图形由像素图形和外引线图形组成。因此,外引线不能进行传统的锡焊,只能通过导电橡胶条或导电胶带等进行连接。如果划伤、割断或腐蚀,则会造成器件报废。
	(2)液晶
	液晶材料是液晶显示器件的主体。不同器件所用液晶材料不同,液晶材料大都是由几种乃至十几种单体液晶材料混合而成。每种液晶材料都有自己固定的清亮点TL和结晶点TS。因此也要求每种液晶显示器件必须使用和保存在Ts~TL之间的一定温度范围内,如果使用或保存温度过低,结晶会破坏液晶显示器件的定向层;而温度过高,液晶会失去液晶态,也就失去了液晶显示器件的功能。
	(3)偏振片
	偏振片又称偏光片,由塑料膜材料制成。涂有一层光学压敏胶,可以贴在液晶盒的表面。前偏振片表面还有一保护膜,使用时应揭去,偏振片怕高温、高湿,在高温高湿条件下会使其退偏振或起泡。
	 
	    2)LCD显示器的特点
	液晶显示器有以下显著特点。
	    (1)低压微功耗:工作电压只有3~5V,工作电流只有几个uA/cm2。因此它成为便携式和手持仪器仪表的显示屏幕。
	    (2)平板型结构:LCD显示器内由两片平行玻璃组成的夹层盒,面积可大可小,且适合于大批量生产,安装时占用体积小,减小了设备体积。
	    (3)被动显示:液晶本身不发光,而是靠调制外界光进行显示。因此适合人的视觉习惯,不会使人眼睛疲劳。
	    (4)显示信息量大:LCD显示器,其像素可以做得很小,相同面积上可容纳更多信息。
	    (5)易于彩色化
	    (6)没有电磁辐射:在其显示期间不会产生电磁辐射,对环境无污染,有利于人体健康。
	(7)寿命长:LCD器件本身无老化问题,寿命极长。
	 
	    2.LCD显示器分类   
	    通常可将LCD为笔段型、字符型和点阵图形型。
	    (1)笔段型。笔段型是以长条状显示像素组成一位显示。该类型主要用于数字显示,也可用于显示西文字母或某些字符。这种段型显示通常有六段、七段、八段、九段、十四段和十六段等,在形状上总是围绕数字“8”的结构变化,其中以七段显示最常用,广泛用于电子表、数字仪表、笔记本计算机中。
	    (2)字符型。字符型液晶显示模块是专门用来显示字母、数字、符号等的点阵型液晶显示模块。在电极图形设计上它是由若干个5 ×8或5×11点阵组成,每一个点阵显示一个字符。这类模块广泛应用于寻呼机、大哥大电话、电子笔记本等类电子设备中。
	    (3)点阵图形型。点阵图形型是在一平板上排列多行和多列,形成矩阵形式的晶格点,点的大小可根据显示的清晰度来设计。这类液晶显示器可广泛用于图形显示如游戏机、笔记本电脑和彩色电视等设备中。
	LCD还有一些其他的分类方法。按采光方式可分为自然采光,背光源采光LCD。按LCD的显示驱动方式可分为静态驱动,动态驱动,双频驱动LCD。按控制器的安装方式可分为含有控制器和不含控制器两类。
	含有控制器的LCD又称为内置式LCD。内置式LCD把控制器和驱动器用厚膜电路做在液晶显示模块印制底板上,只需通过控制器接口外接数字信号或模拟信号即可驱动LCD显示。因内置式LCD使用方便,简洁,在字符型LCD和点阵图形型LCD中得到广泛应用。
	不含控制器的LCD还需另外选配相应的控制器和驱动器才能工作。
	 
	3.8051与笔段型LCD的接口
	用单片机的并行接口与笔段型LCD直接相连,再通过软件编程驱动笔段型LCD显示,是实现静态液晶显示器件驱动的常用方法之一,尤其适合于位数较少的笔段型LCD。图7.25
	
	图7.25  笔段型接口电路
	给出了8751与3位半8字笔段型LCD的接口电路,图中通过8751的并行接口P1、P2、P3来实现静态液晶显示。
	软件编写启动程序的基本要求是:
	(1)显示位的状态与背电极BP不在同一状态上,即当BP为1状态时,显示位数据为0状态;当BP为0状态时,显示位数据为1状态。
	(2)不显示位的状态与BP状态相同。
	    (3)定时间隔地将驱动信号取反,以实现交流驱动波形的变化。
	    在编程时首先要建立显示缓冲区和显示驱动区。比如把  DIS1,DIS2,DIS3单元设置为显示缓冲区,同时建立驱动区DRIl,DRI2,DRI3单元用来实现驱动波形的变化和输出。P1,P2,P3为驱动的输出瑞。各区与驱动输出的对应关系如表7.5所示。
	 
	    表7.5  各区与驱动输出的对应关系
	 
	
		
			| 
					  
					显示单元      驱动单元      驱动输出 
					  | 
					位-段对应关系 
					D7  D6  D5  D4  D3  D2  D1  D0 | 
		
			| 
					DIS1            DRI1             P1 
					DIS2            DRI2             P2 
					DIS3            DRI3             P3 | 
					     4bc  1f  1g   1e  1d   1c  1b   1a 
					     4g   2f  2g   2e  2d   2c  2b   2a 
					       BP   3f  3g   3e  3d   3c  3b   3a | 
	
	                                                                                                            
	在编程时首先还要建立显示字形数据库。现设定显示状态为“l”,不显示状态为“0”,可得0~9的字型数据为:5FH,06H,3BH,2FH,66H,6DH,7DH,07H,7FH,6FH。
	    编程的基本思路是:
	    (1)使用定时器产生交流驱动波形。在显示驱动区内将数据求反,然后送人驱动输出。
	    (2)在显示缓冲区内修改显示数据,然后将BP位置“0”用以表示有新数据输入。
	    (3)在显示驱动程序中先判断驱动区BP位是否为“1”。若是“1”,再判断显示区BP位是否为“0”,若为“0”,表示显示区的数据为新修改的数据,则将显示缓冲区内的显示数据写入显示驱动区内,再输出给驱动输出端。否则驱动区单元内容求反输出。
	    (4)如此循环下去,实现了在液晶显示器件上的交流驱动,进而达到显示的效果。
	    驱动程序如下。
	    驱动基础程序:采用定时器0为驱动时钟,中断程序为驱动子程序。
	           DIS1    EQU          30H
	                        DIS2    EQU          31H
	                        DIS3   EQU         32H
	                        DRIl  EQU          33H
	                        DRI2    EQU          34H
	                        DRI3  EQU          35H
	ORG   000BH             ;定时器0中断入口
	LCD:   MOV     TL0,#OEFH          ;设置时间常数
	                 MOV    TH0,#OD8H           ;扫描频率= 50HZ
	                 PUSH   ACC                          ;A入“栈”
	                 MOV    A,DRI3                          ;取驱动单元DRI3
	                 JNB      ACC.7,LCD1         ;判BP= 1否,否则转
	                 MOV    A,DIS3                    ;取小时单元DIS3
	                  JB      ACC.7,LCD1         ;判BP= 0否,否则转
	                 MOV    DIR3,A                          ;显示区→驱动区
	                 SETB    ACC.7                    ;置BP= 1表示数据已旧
	                 MOV    DIS3,A                    ;写入显示单元
	                 MOV    DRI2,DIS2
	                 MOV    DRI1,DIS1
	                 LJMP    LCD2                         ;转驱动输出
	        LCD1:  MOV    A,DRI3
	                  CPL      A                               ;驱动单元数据取反
	                 MOV    DRI3,A
	                 MOV    A,DRI2
	                 CPL             A
	                 MOV    DRI2,A
	                 MOV    A,DRI1
	                 CPL      A
	                 MOV    DRI1,A
	        LCD2:  MOV    P1,DRI1                  ;驱动输出
	                 MOV    P2,DRI2
	                 MOV    P3,DRI3     
	                 POP     ACC                          ;A出“栈”
	                 SETB   TR0
	                 RETI
	    驱动程序使用了定时器0中断方式,定时器每20ms中断一次,在程序中要判断显示驱动区BP位的状态。当BP= 1时,可以修改显示驱动区内容,这时判断一下显示区BP位的状态。当BP= 0时表示显示区的数据已被更新。此时需要将显示区的数据传输给驱动区,再输出给驱动输出瑞。由于原BP为“l”,所以此时修改驱动区数据正好也是交流驱动的实现。若驱动区BP=0,或显示区BP=1(表示数据未被修改),那么仅将驱动区数据取反,再输出给驱动输出瑞驱动液晶显示器件。
	    在主程序中,要实现中断方式驱动液晶显示器件,需要一些初始化设置,同样也对显示缓冲区,显示驱动区和驱动输出初始化。
	因受篇幅限制,主程序及四位数字修改子程序不再叙述。
	 
	    4.8051与字符型LCD的接口
	    字符型液晶显示模块是一类专用于显示字母,数字,符号等的点阵型液晶显示模块,字符型液晶显示模块是由若干个5 ×8或5 ×11点阵块组成的字符块集。每一个字符块是一个字符位,每一位都可以显示一个字符,字符位之间空有一个点距的间隔起着字符间距和行距的作用;这类模块使用的是专用于字符显示控制与驱动的IC芯片。因此,这类模块的应用范围仅局限于字符而显示不了图形,所以称其为字符型液晶显示模块。
	字符型液晶显示驱动控制器广泛应用于字符型液晶显示模块上。目前最常用的字符型液晶显示驱动控制器是HD44780U,最常用的液晶显示驱动器为HD44100及其替代品。
	    字符型液晶显示模块在世界上是比较通用的,而且接口格式也是比较统一的,其主要原因是各制造商所采用的模块控制器都是HD44780U及其兼容品,不管它的显示屏的尺寸如何,它的操作指令及其形成的模块接口信号定义都是兼容的。所以会使用一种字符型液晶显示模块,就会通晓所有的字符型液晶显示模块。
	HD44780U由控制部,驱动部和接口部三部分组成。
	控制部是HD44780U的核心,它产生HD44789U内部的工作时钟,控制着各功能电路的工作。控制部控制全部功能逻辑电路的工作状态,管理字符发生器CGROM和CGRAM、显示存储器DDRAM。HD44780U的控制部由时序发生器电路,地址指针计数器AC,光标闪烁控制电路,字符发生器,显示存储器和复位电路组成。
	HD44780U的驱动部具有液晶显示驱动能力和扩展驱动能力,由并/串数据转换电路、16路行驱动器和16位移位寄存器、40路列驱动器和40位锁存器、40位移位寄存器和液晶显示驱动信号输出和液晶显示驱动偏压等组成。
	HD44780U的接口部是HD44780U与计算机的接口,由I/O缓冲器,指令寄存器和译码器,数据寄存器,“忙”标志BF触发器等组成。
	HD44780U的指令系统共有8条指令,限于篇幅这里不再列出。
	5.字符型液晶显示模块接口电路
	    HD44780可与单片机接口,由单片机输出直接控制HD44780及其时序。HD44780与液晶显示器连接方框图如图7.26所示。
	
	图7.26  HD44780与液晶连接框图
	单片机与字符型LCD显示模块的连接方法分为直接访问和间接访问两种,数据传输的形式可分为8位和4位两种。
	1)直接访问方式
	直接访问方式是把字符型液晶显示模块作为存储器或I/O接口设备直接连到单片机总线上,采用8位数据传输形式时,数据端DB0~DB7直接与单片机的数据线相连,寄存器选择端RS信号和读写选择端R/W信号利用单片机的地址线控制。使能端E信号则由单片机的RD和WR信号共同控制,以实现HD44780所需的接口时序。图7.27给出了以存储器访问方式对液晶显示驱动的控制电路。
	在图7.27中,8位数据总线与8031的数据总线直接相连,P0口产生的地址信号被锁存在74LS373内,其输出A0、A1给出了RS和RW的控制信号。E信号由RD和WR信号逻辑与非后产生,然后与高位地址线组成的“片选”信号选通控制。高3位地址线经译码输出打开了E信号的控制门,接着RD或WR控制信号和P0口进行数据传输,实现对字符型LCD显示模块的每一次访问。在写操作过程中,HD 44780要求E信号结束后,数据线上的数据要保持10μs以上的时间,而单片机8031的PO接口在WR信号失效后将有58μs(以12MHz晶振计算)的数据保持时间,足以满足该项控制时间的要求。在读操作过程中,HD44780在E信号为高电平时就将所需数据送到数据线上,E信号结束后,数据可保持20μs,这满足了8031对该时序的要求。
	单片机对字符型LCD显示模块的操作是通过软件实现的。编程时要求单片机每一次访问都要先对忙标志BF进行识别,当BE为0时,即HD 44780允许单片机访问时,再进行下一步操作。
	
	图7.27  直接控制方式下8031与字符型液晶显示模块的接口
	在图7.27的电路下产生操作字符型液晶显示模块的各驱动子程序如下:
	COM             EQU       20H               ;指令寄存器
	           DAT             EQU       21H               ;数据寄存器
	           CW_Add    EQU    0F000H          ;指令口写地址
	           CR_Add        EQU      0F002H          ;指令口读地址
	DW_Add    EQU    0F001H          ;数据口写地址
	           DR-Add       EQU       0F003H          ;数据口读地址
	(1)读BF和AC值子程序
	             PRO:    PUSH     DPH
	                PUSH     DPL
	                PUSH     ACC
	                MOV      DPTR,#CR_Add              ;设置指令口读地址
	                MOVX    A,@DPTR                        ;读BF和AC值
	                MOV      COM,A                            ;存入COM单元
	                POP       ACC
	                POP       DPL
	                POP       DPH
	                RET
	(2)写指令代码子程序
	PR1:   PUSH     DPH
	                PUSH     DPL
	                PUSH     ACC
	                MOV      DPTR,#CR_Add              ;设置指令口读地址
	PRll:    MOVX    A,@DPTR                        ;读BF和AC值
	                JB          ACC.7,PRll                    ;判BF=0?是,继续
	                MOV      A,COM                            ;取指令代码
	                MOV      DPTR,#CW_Add             ;设置指令口写地址
	                MOVX    @DPTR,A                        ;写指令代码
	                POP        ACC
	                POP        DPL
	                POP        DPH
	                RET
	(3)写显示数据子程序
	PR2:     PUSH     DPH
	                PUSH     DPL
	                PUSH     ACC
	                MOV      DPTR,#CR_Add              ;设置指令口读地址
	        PR21:MOVX    A,@DPTR                        ;读BF和AC值
	                JB          ACC.7,PR21                   ;判BF=0?是继续
	                MOV      A,DAT                              ;取数据
	                MOV      DPTR,#DW_Add           ;设置数据口写地址
	                MOVX    @DPTR,A                        ;写数据
	                POP        ACC
	                POP        DPL
	                POP        DPH
	                RET
	(4)读显示数据子程序
	PR3:     PUSH     DPH
	                PUSH     DPL
	                PUSH     ACC
	                MOV      DPTR,#CR_Add              ;设置指令口读地址
	        PR31:   MOVX    A,@DPTR                        ;读BF和AC值
	                JB          ACC.7,PR31                   ;判BF=0?是,继续
	                MOV      DPTR,#DR_Add              ;设置数据口读地址
	                MOVX    A,@DPTR                        ;读数据
	                MOV      DAT,A                              ;存入DAT单元
	                POP        ACC
	                POP        DPL
	                POP        DPH
	                RET
	(5)初始化子程序                                                                                 
	INT:     MOV      A,#30H                                   ;工作方式设置指令代码
	                            MOV      DPTR,#CW_Add              ;指令口地址设置
	                            MOV      R2,#03H                           ;循环量=3
	              INT1:   MOVX    @DPTR,A                        ;写指令代码
	            LCALL   DELAY                               ;调延时子程序
	            DJNZ     R2,INT1
	MOV   A,#38H                           ;设置工作方式(8位总线)
	MOV   A,#28H                           ;设置工作方式(4位总线)
	MOVX    @DPTR,A
	MOV      COM,#28H                     ;以4位总线形式设置
	LCALL   PR1
	MOV      COM,#01H                     ;清屏
	            LCALL   PR1
	            MOV   COM,#06H                      ;设置输入方式
	            LCALL   PR1
	            MOV   COM,#OFH                     ;设置显示方式
	            LCALL   PRI
	            RET
	DELAY:……                                                ;延时子程序
	            RET                                                                                                                                                                                
	以上给出了8位数据总线形式的接口电路及驱动软件。4位数据总线形式是应用于4位计算机的接口。在8031上应用4位数据线是将数据总线高4位认为是字符型液晶显示模块的数据总线,数据总线的低4位无用,这样图7.27的电路不变就可以仿真出4位计算机对字符型液晶显示模块的接口。因受篇幅限制,这里不再叙述,请读者查阅有关参考资料。
	    2)间接访问方式
	间接控制方式是计算机把字符型液晶显示模块作为终端与计算机的并行接口连接,计算机通过对该并行接口的操作间接实现对字符型液晶显示模块的控制。图7.28以8031的P1和P3接口作为并行接口与字符型液晶显示模块连接的实用接口电路。图中电位器为V0口提供可调的驱动电压,用以实现显示对比度的调节。在写操作时,使能信号E的下降沿有效,在软件设置顺序上,先设置RS,R/W状态,再设置数据,然后产生E信号的脉冲,最后复位RS和R/W状态。在读操作时,使能信号E的高电平有效,所以在软件设置顺序上,先设置RS和R/W状态,再设置E信号为高,这时从数据口读取数据,然后将E信号置低,最后复位RS和R/W状态。间接控制方式通过软件执行产生操作时序,所以在时间上是足够满足要求的。因此间接控制方式能够实现高速计算机与字符型液晶显示模块的连接。因受篇幅限制,其软件的编制过程此处不再叙述。
	
	图7.28  间接控制方式下8031与字符型液晶显示模块的接口
	    6.图形液晶显示接口
	    图形液晶显示器可显示汉字及复杂图形,广泛应用于游戏机、笔记本电脑和彩色电视等设备中。图形液晶显示一般都需与专用液晶显示控制器配套使用,属于内置式LCD。常用的图形液晶显示控制器有SED1520,HD61202,T6963C,HD61830A/B,SED1330/1335/1336/E1330,MSM6255,CL-GD6245等。各类液晶显示控制器的结构各异,指令系统也不同,但其控制过程基本相同。读者如有兴趣,可参阅有关参考资料。