(王传林)TM402ALCD显示模块是一种典型的字符点阵显示器组件,它由控制器、驱动器、字符发生器和液晶显示屏组成。其中字符有5×7点阵和5×10点阵两种规格,并可由软件很方便地设置。模块组成框图见图1。引脚说明见表1。

表1
引线号 符号 名称 功能
1 Vss 接地
2 Vdd 模块工作电源 +5V
3 Vee 液晶驱动电压 0~5V,可由一个10k
~20k的电位器分压获得
4 RS 寄存器选择信号 H:数据寄存器
L:指令寄存器
5 R/W 读/写信号 H:读。L:写
6 E 片选信号 下降沿触发
7~14 DB0~DB7 数据线 传送数据或指令
一、模块主要技术参数:
显示容量:满屏可显示2行×40个字符;
字符组成:5×7点阵或5×10点阵;
内藏字符发生器:可提供一套内含192个字符的日本工业标准字符集,其中包括全部英文大小写字母、0~9共十个阿拉伯数字及日文中的片假名,以及32个特殊字符(购此器件时附有其使用的标准字符集表,在此从略);
显示存储单元DDRAM:80个字节;
控制指令:11条;
与MPU接口方式:8位或4位;
内部字符扫描信号的占空比:1/8,1/16;
电源电压:5V;
功耗:(1~15)mw。
二、模块的内部结构:
控制电路主要由指令寄存器(IR)、数据寄存器(DR),忙标志(BF),地址计数器(AC),显示数据寄存器(DD RAM),字符发生器ROM(CG ROM)、字符发生器RAM(CG RAM)和时序发生器电路组成。
三、指令说明:
1.清显示(Clear Display)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DBO
0 0 0 0 0 0 0 0 0 1
清显示指令使 DD RAM的内容全部被清除。光标回到原位,地址计数器AC=0。
2.回原点(Return Home)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DBO
0 0 0 0 0 0 0 0 1 *
Return HOme指令使光标和光标所在位的字符返回屏幕的左上角。但DD RAM单元的内容不变。即原来屏慕上显示的内容保持不变。
3.设置输入模式(Entry Mode Set)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DBO
0 0 0 0 0 0 0 0 I/D *
I/D:当数据写入DD RAM(CG RAM)或从DD RAM(CG RAM)中读出数据时, AC自动加1或自动减1。I/D=1自动加1,I/D=0自动减1。
S:S=1时,当数据写入DD RAM时,显示将全部左移(I/D=1),或右移(I/D=0)。此时看上去光标未动,仅仅是显示移动。但从DD RAM中读数据时,显示不移动。
S=0时,显示不移动,光标左移(I/D=0)或右移(I/D=1)。
4.显示控制(Display on /off Control)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DBO
0 0 0 0 0 0 1 D C B
D:显示控制 D=1开显示(Display on),D=0关显示(Display off)。此时DD RAM的内容保持不变。
C:光标控制 C=1开光标显示;C=0关光标显示。
B:闪烁控制 B=1光标所指的字符同光标一起以0.4秒时间间隔交变闪烁;B=0不闪烁。
5.光标或显示移位(Cursor or Display shift)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DN0
0 0 0 0 0 1 S/C R/L * *
此指令使光标和显示在没有对DD RAM进行读写操作时被左移或右移。在二行显示方式时,光标或闪烁的位置不会从第一行移到第二行,即只能作整屏移动。
6.功能设置(Function Set)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DBO
0 0 0 0 1 D/C N F * *
实际上这条指令是设置数据接口长度,即是采用4位总线还是采用8位总线,显示行数及点阵是5×7还是5×10。
DL=1∶8位数据总线DB0~DB7;
DL=0:4位数据总线DB7~DB4,DB3~DB0不用。在此方式下数据操作需两次完成。
N=1;二行显示;N=0:一行显示。
F=0:5×7点阵;F=1:5×10点阵。
7.设置CG RAM地址(CG RAM Address Set)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 1 C5 C4 C3 C2 C1 C0
这条指令设置CG RAM地址指针。地址码C5~C0被送入AC。在此后,就可以将用户自定义的显示字符数据写入CG RAM或从CG RAM中选出。
8.设置DD RAM地址(DD RAM Address Set)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 D6 D5 D4 D3 D2 D1 D0
这条指令设置DD RAM地址指针。地址码00H~27H,40H~67H有效。在此后,就可以将显示字符码写入DD RAM或从DD RAM中读出。
9. 读忙标志BF和地址计数器AC(Read busy flag and address counter)
RS R/M DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 1 BF A6 A5 A4 A3 A2 A2 A0
当BS=0、R/W=1时,在E信号高电平“H”的作用下,BF和A6~A0被读到DB7~DB0的相应位。
BF为内部操作忙标志。BF=1表示组件正在进行内部操作,这时组件不接收任何外部指令和数据。直到内部操作结束(BF=1),MPU才能访问组件。
A6~A0为AC内容(地址计数器内容)。BF=0时,送到DB6~DB0的数据(A6~A0)才有效。
10.写数据到DD RAM或 CG RAM(Write data to DD RAM or CG RAM)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 0 D7 D6 D5 D4 D3 D2 D1 D0
D7~D0为字符码(写入DD RAM)或字符图形数据(用户自定义的特殊字符图形数据,写入CGRAM)。它被写入数据寄存器DR。再由内部操作写入地址指针所指的DD RAM单元或CG RAM单元。
11.读DD RAM或CG RAM数据(Read data from DD RAM or CG RAM)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 1 D7 D6 D5 D4 D3 D2 D1 D0
此指令与上一指令(写指令)相反。它将DD RAM(CG RAM)的内容读到数据总线DB7~DB0。
四、应用实例——电路接口和软件编程
下面是一个TM402A LCD显示模块与单片机80C31的接口与编程应用实例,其中包括电路连线(见图2),演示程序清单。该程序的关键指令后面都加了注释,这样可较方便地分析出程序的功能。

根据电路硬件接线关系,不难分析出单片机80C31对TM402A的控制地址有4个:
向TM402A写入控制指令10H;
读TM402A内部忙标志11H;
向TM402A写入显示数据12H;
读TM402A数据13H。
演示程序的设计思路如下:
①首先将待显示的一屏信息字符送80C31内部RAM 30H~79H单元;
②设置TM402A显示系统方式为2行、8位数据传送5×7点阵方式;
③清显示屏、开显示屏;
④执行显示程序主体;
⑤延迟一个时间段,重复③、④。
程序启动后在TM402A屏幕上首先显示一屏信息:

注:祝《无线电》杂志各位新年快乐!
E
程序清单如下:
ORG 0000H
START: MOV DPTP,#DIS-CHA
MOV R7,#80
MOV B1,#30H;欲显示字符数据送缓冲区
CHABUF: CLR A
M0VC A, @A+DPTR
MOV @R1,A
INC DPTP
INC R1
DJNZ R7,CHABUF ;显示系统设置:2行,8位口,5×7点阵
MOV A,#38H
MOV R0,#10H
ACALL RDBUSY
M0VX @R ;清显示屏,AC=0
goto: MOV A,#01H
ACALL RDBUSY
MOVX @R0,AR;开显示
MOV A,#0CH
ACALL RDBUSY
MOVX @ R
MOV R1, #30H ;缓冲区首地址;开始显示
SHOW: MOV R0,#10H
MOV A,#80H ;第一行地址
ACALL RDBUSY
MOVX@R
MOV R2,#40
ACALL SEND
MOV R0,#10H
MOV A,#0C0H ;第二行地址
ACALL RDBUSY
MOVX @R
MOV R2,#40
ACALL SEND
ACALL DELAY
SJMP GOT0
SEND: MOVX RO,#12H
MOV A,@R1
ACALL RDBUSY
MOVX @RO,A
INC R1
DJNZ R2,SEND
RET;延时子程序
DELAY: MOV R5, # 0FFH
DL1: MOV R6,#0FFH
DL2: DJNZ R6,DL2
DJNZ R5,DL1
RET;判断TM402A内部是否处于忙状态子程序
RDBUSY: PUSH ACC
PUSH 00H
MOV R0,#11H
NO: MOVX A,@ R0
RLC A
JC NO ;BF=1?
POP 00H
POP ACC
RET;待显示的字符
DIS-CHA 20H, 20H, 20H,20H,20H,20H,20H,20H
DB 20H, 20H, 20H,20H,20H,20H,20H,20H
DB 20H, 48H, 61H,70H,70H,79H,20H,6EH
DB 65H, 77H, 20H,79H,65H,6lH,72H,20H
DB 74H, 6FH, 20H,20H,20H,20H,20H,20H
DB 20H, 20H, 20H,20H,20H,20H
DB 52H, 41H, 44H,45H,4FH,20H
DB 4DH, 41H, 47H,4lH,5AH,45H,4EH,45
DB 27H, 20H, 65H,76H,65H,72H,79H,62H
DB 65H, 64H, 69H,20H,21H,20H,20H,20H
DB 20H, 20H, 20H,20H
END