1 模块简介
液晶显示模块是一种将液晶显示器件、连接件、集成电路、PCB线路板、背光源、结构件装配在一起的组件。英文名称叫“LCD Module”,简称“LCM”,中文一般称为“液晶显示模块”。实际上它是一种商品化的部件。根据我国有关国家标准的规定:只有不可拆分的一体化部件才称为“模块”,可拆分的叫作“组件”。所以规范的叫法应称为“液晶显示组件”。但是由于长期以来人们都已习惯称其为“模块”。
图形点阵式液晶显示模块具有尺寸小、功耗小、可靠性高、成本低等优点,可显示各种图像与文本信息,因此在电子仪器中得到广泛的应用。
LCD240128A是热致液晶STN型图形点阵式显示模块,它由STN型液晶板、液晶显示控制器、液晶驱动器、背光板等组成,图1所示是LCD240128A模块的结构框图。它的整屏尺寸为114×104mm,有240×128点,可显示16点阵汉字15×8个,亦可显示各种图形。因此,在智能式电子仪器中,LCD240128A可用来作为显示器,以显示各种图形和文本信息。LCD240128A液晶模块内有T6963A液晶驱动控制器,该模块的外部接口引脚定义如表1所列。
表1 LCD240128A的引脚定义
T6863A内部含有共128字节的字符发生器CGROM,可外接8k(最大为128k)字节的RAM作为外部的显示缓冲区及字符发生器CGRAM,并允许MPU访问显示缓冲区,甚至还可进行位操作。
根据T6963A的特性设计出的LCD240128A模块与AT89S58单片机的接口电路如图2所示。
从图2可以看出,液晶模块的控制指令端口为4FFFH,数据端口为4FFEH,可通过电位器P1来调整液晶的显示效果。
点阵图形液晶模块的特点是点阵像素连续排列,行和列在排布中均没有空隔。因此可以显示了连续、完整的图形。由于它也是有X-Y矩阵像素构成的,所以除显示图形外,也可以显示字符。
2 控制命令
为了更好地阐述LCD240128A的控制方法,这里先介绍T6963A的指令。
T6963A的指令格式为:数据1+数据2+指令字节,但是,有的指令只含有一个数据或根本就没有数据。而LCD240128A模块选择的是单屏结构、每行最大为80个字节、总行数为16的显示模式。
为了确保每条指令的正确执行,有必要在执行指令前,先分析一下模块的状态字:
2.1 地址指令设置命令
地址指令设置命令主要包括如下三种设置:
(1)设置光标位置:D1+D2+21H;
其中D1为光标离液晶屏左上角的横向字符数;D2为光标离液晶屏左上角的纵向字符数。
(2_设置CGRAM的位置:D1+00H+22H;
此指令中D1的有效位为低5位,用于设置2kCGRAM在8k显示RAM中的高5位地址,中间8位为字符代码,低3位为字符8×8点阵行计数值。
(3)设置当前要操作的单元:D1+D2+24H
其中D1为地址的低字节,D2为高字节。
2.2 显示区域设置命令
显示区域设置命令主要是对文本区首址和每行字符数以及图形区的首址和每行字符数进行设置。
(1)设置文本显示区的首址:D1+D2+40H
其中D1为低字节,D2为高字节,地址对应于显示屏左上角的字符位。
(2)设置文本区的每行字符数:D1+00H+41H
(3)设置图形区首址:D1+D2+42H
其中D1为地址的低字节,D2为高字节。
(4)设置图形区每行字符数:D1+00H+43H
2.3 设置显示方式
设置显示方式的格式为:1 0 0 0 N3 N2 N1 N0
各位的意义如下:
N3-字符发生器选择位,当N3=1时,选择CGRAM,字符代码为00H~FFH,字节空间为2k;当N3=0时,选择CGROM,字符代码为00H~7FH.
通过N2、N1和N0的不同组合可对合成显示方式进行选择,选择方式如表2所列。只有当文本方式和图形方式均打开时,上述合成显示方式的设置才有效。
表2 合成显示方式选择
2.4 设置显示状态
显示状态指令模式为:1 0 0 1 N3 N2 N1 N0
其中:N0为光标闪烁位,1为可以,0为禁止;
N1为为光标显示,1为可以,0为禁止;
N2为文本显示,1为可以,0为禁止;
N3为图形显示,1为可以,0为禁止。
2.5 光标形状选择
光标形状选择指令格式为:1 0 1 0 0 N2 N1 N0
光标形状为8点(列)×N点(行),其中N的值由N0~N2决定。
2.6 设置数据自动读/写方式
该指令包括B0H,B1H和B2H(B3H)等。其中:
B0H表示自动写;B1H表示自动读;B2H为结束自动方式。
该指令的格式为:D1+指令字节,意义如下:
D1+C0H:表示数据写,地址加1;
C1H:表示数据读,地址加1;
D1+C2H:表示数据写,地址减1;
C3H:表示数据读,地址减1;
D1+C4H:表示数据写,地址不变;
C5H:表示数据读,地址不变。
有了上述指令,我们就可开始下一步的软件设计,至于T6963A的更详细说明,请参考文献[1]。
3 控制软件
该控制软件主要讨论液晶模块的初始化、CGROM中字符的显示、CGRAM的设置以及汉字与图形的显示等。
3.1 初始化与准备工作
以下为状态检测程序:
STA1:LCALL STATE
JNB ACC.0,STA1 ;指令读写状态
JNB ACC.1,STA1 ;数据读写状态
RET
STA2:LCALL STATE
JNB ACC.2,STA2 ;数据自动读状态
RET
STA3:LCALL STATE
JNB ACC.3,STA3 ;数据自动写状态
RET
STA6:LCALL STATE
JB ACC.6,ERR ;屏读/拷贝状态
RET
;- - - - - - - - - - - - - - - - - - - - - -
ERR_;LJMP ERR ;出错处理程序
;- - - - - - - - - - - - - - - - - - - - - -
;
STATE:MOV DPTR,#4001H
MOVX A,@DPTR
RET
在下面的写指令与数据程序中,R2为数据D1,R3为数据D2,R4为指令字节;
;
WR2:LCALL STA1 ;有D1与D2
MOV A,R2
LCALL WRD
WR1:LCALL STA1 ;无D1,
MOV A,R3
LCALL WRD
WR0:LCALL STA1 ;无D1与D2,
MOV A,R4
AJMP WR00
WRD:MOV DPTR,#4000H
WR00:MOVX @DPTR,A
RET
;
以下是读数程序:
;
RD_:LCALL STA1
MOV DPTR,#4000H
MOVX A,@DPTR
RET
;
有关硬件的初始化,LCD240128A在模块制造时就已做了如下选择:
FS=0,用于选择8×8点阵;
MD2=0,MD3=0确定了每行最大字符数为80;
MDS=1,MD0=0,MD1=0,确定了总行数为16;
下面为软件的初始化程序:
INITATION:LCALL CLR_
MOV R2,#0 ;建立文本区首址
MOV R3,#0 ;为00H
MOV R4,#40H
LCALL WR2
MOV R2,#1EH ;设置文本区宽度
MOV R3,#0 ;为30
MOV R4,#41H
LCALL WR2
;
MOV R2,#00H ;设置图形区首址
MOV R3,#00H
MOV R4,#42H
LCALL WR2
MOV R2,#1EH ;设置图形区宽度
MOV R3,#0
MOV R4,#43H
LCALL WR2
MOV R4,#0A0H
LCALL WR0 ;设置光标形状
MOV R4,#98H ;打开文本与图形方式
LCALL WR0
MOV R4,#80H ;采用逻辑“或”
LCALL WR0
RET
;
CLR_; MOV R2,#0 ;清RAM单元
MOV R3,#0
MOV R4,#24H
LCALL WR2
MOV R4,#0B0H ;设置自动写
LCALL WR0
MOV R2,#1FH
;
CLR1: MOV R3,#0FFH
CLR2: LCALL STA3
CLR A ;写入0
LCALL WRD
DJNZ R3,CLR2
DJNZ R2,CLR1
MOV R4,#0B3H ;结束自动写
LCALL WR0
RET
;
CLR_:MOV R2,#0 ;清RAM单元
MOV R3,#0
MOV R4,#24H
LCALL WR2
MOV R4,#0B0H ;设置自动写
LCALL WR0
MOV R2,#1FH
;
CLR1: MOV R3,#0FFH
CLR2: LCALL STA3
CLR A ;写入0
LCALL WRD
DJNZ R3,CLR2
DJNZ R2,CLR1
MOV R4,#0B3H ;结束自动写
LCALL WR0
RET
;
3.2 CGROM中的字符显示
在1k字节的CGROM中,含有以下00H~7FH为字符代码的常用字母与符号。并于它们的显示程序可以描述如下,这里以显示:“OK!”为例:
3.3 图形方式下显示汉字
可以很方便地从计算机中提取点阵式的汉字字模,并按左上,左下,右上,右下的顺序,把字模保存在程序ROM中,下面以占用32个字节的汉字16点阵“交”字为例如以说明:
下面这个子程序,可以显示一个汉字“交”,通过调用该子程序,即可显示一组语句,具体说明如下:
;R2,R3,R4,R5,A
HZDISP:MOV DPTR,#HK0
MOV B,#20H
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
MDDC A,DPH
MOV DPH,A
push dph
push dp1
MOV R2,#10H
MOV A,#00H ;指向字模的左半部地址
HZD1:pop dp1
Pop dph
MOV R5,A
MOVC A,@A+DPTR
Push dph
Push dp1
MOV R3,A
MOV R4,#0C0H
LCALL WR1
pop dp1
pop dph
MOV A,R5
ADD,A,#10H ;指向字模的右半部地址
MOVC A,@A+DPTR
PUSH DPH
PUSH DPL
;
MOV R3,A
LCALL WR1
MOV A,R2
MOV R3,A
;改变显示指针,
MOV R2,#1CH
MOV R4,#0C1H
HZD2:LCALL WR0
DJNZ R2,HZD2
;
MOV A,R3
MOV R2,A
MOV A,R5
INC A
DJNZ R2,HZD1
pop dp1
pop dph
RET
在TA6963A的控制指令中,有一个位操作指令,格式为:1 1 1 1 D3 D2 D1 D0
格式中的D2D1D0用于确定要操作的是0~7位某一位,D3确定该位为1或0.该指令可对当前显示地址指针所指的显示单元中的数据的任一位写“0”或写“1”。有了这个指令,欠就可以很方便地设置点或清除点,从而达到显示任意曲线或图案的目的。
4 结语
利用LCD240128A液晶模块可以增加系统的可读性。本文就其基本的控制软件与电路作为分析。当然,液晶模块的控制集成电路有很多种,各套指令也有一定的差异,但其基本思想都有很多相似的地址。