汉显液晶模块TM12864A的应用

🏠 首页 《无线电》杂志 1997年 🔗 第3期 🔗 第28页 分类:无线电技术自学经验交流 🔗 王传林 🔗

笔者曾在本刊1997年第1期上,介绍了字符点阵液晶显示模块TM162A的使用特点和编程方法。下面再给大家介绍TM12864A汉字模块应用实例。

一、模块的结构及原理:

TM12864A是一种典型的图形点阵LCD显示模块,点阵量是 128×64DOT,其控制器是日立公司的HD61202,驱动器也是日立公司的HD61203。它们分别控制驱动左右半屏的点阵数据,可与Intel、Motorola等公司的单片机连接使用,电路框图见图1。

图1
图1 🔍原图 (768×405)

TM12864A采用两片HD61202做控制器,每片控制器带有512字节(4096BIT)的显示 RAM,共 2×512=1024(1K)字节,可全屏显示 32个 16×16点阵的汉字。该模块RAM中的每一个比特数据与屏幕上的1位像素一一对应,为1时显示黑点,为0时显示白点(不显示),所以我们只要将需要显示黑点的比特位送1,显示白点的比特位送0,即可实现“黑”、“白”点的控制,这一点用位操作指令很容易实现,送一个字节的数据,正好可以控制屏幕上8个点的显示状态。

图2是该模块的屏幕点阵分布结构图。其具体的含义是:

图2
图2 🔍原图 (1019×752)

x0~x7为页地址;y0~y63为列地址。

与TM162A不同,由于TM12864A内部不带字符发生器,所以它是工作在纯图形方式下的。即无论是显示汉字还是显示字符或图形,该模块都是读取被显示信息的点阵数据,然后送入到内部的显示RAM中,这样我们在屏幕上所看到的就是与之相对应的显示内容了,充分理解屏幕点阵与内部显示RAM的这种映射关系,是正确使用好这种显示模块的关键。

二、指令介绍

TM12864A采用两片HD61202分别控制左右半屏的显示,在编程时要分别控制,这里的左右屏的选取由片选信号CS1和CS2完成。当CS1=1时选取左屏为操作对象,CS2=l时,选取右屏为操作对象,某些情况下左右屏可同时选取。从MPU来的指令有读/写(R/W)信号、数据/指令(D/I)选择信号,指令功能包括:显示数据读/写、显示开关、设置地址、设定显示起始行、读状态等。

指令叙述如下:

1.显示开/关

B/WD D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 1 1 1 1 1 1/0

该指令控制显示的开关,不影响模块RAM中的数据和内部各状态。 DBO=1:开,DBO=0:关。

2.显示起始行设置

R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 1 1 显示起始行:0~63

3.设定页地址(X地址)

R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 1 0 1 1 1 页地址:0~7

对页地址寄存器设置页地址。

4.设定列地址(Y地址)

R/M D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 1 Y地址:0~63

对列地址寄存器设置Y地址。

5.读状态

R/M D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

1 0 BUSY 0 ON/OFF RST 0 0 0 0

RST=1表明系统正在初始化; RST=0表明系统初始化完成;ON/OFF=1时不显示;ON/OFF=0时显示; BUSY=l时正在进行内部操作; BUSY=0时准备好接收指令。

6.写显示数据

R/M D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 1 数据(8位)

将欲显示的数据写入显示存储器中。

7.读显示数据

R/M D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

1 1 数据(8位)

从显示存储器中读出被显示的数据。

在读、写操作之前,要先确定模块的内部状态,当RST=0时,才能进行地址设置和数据读写操作。显示RAM的存取地址每进行一次写操作,Y地址自动加1。

因目前单片机的种类繁多,所使用的晶振频率和得到的时钟信号也不尽相同,为了满足控制器HD61202的控制时序,可采用硬件法或软件法对TM12864A进行控制。为了使读者能快捷、方便地掌握该模块的使用,本文仍延用本刊第1期中介绍TM162A文中的接口电路,即只要在原电路上加焊Vee、RST、CS1、CS2共4根连线,就可以马上对TM12864A模块进行控制,电路原理图见图3。

图3
图3 🔍原图 (1457×1037)

三、应用实例

编程思路:

①选中左半屏为操作对象;②开显示、设置起始扫描行;③等待初始化、复位完毕;④送0~1页显示数据;⑤显示内容:中国;⑥结束。
N

ORG 0000H

on—dis:mov p1,#OOh

setb p1.0

setb p1.1;选择左半屏

nop; 注:重复五次

mov a,#3th

mov r0, #10h

acall rdbusy

movx @r0,a;开显示

mov a,#OcOh

mov r0,#10h

acall rdbusy

movx @r0,a;起始扫描行为第0行

acall wat-rst;等待复位完成

mov a,# 0b8h

mov r0,#10h

acall rdbusy

movx @r0,a;页地址X=0

mov a,#40h

mov r0,#10h

acall rdbusy

movx @r0,a;列地址 Y=0

mov dptr,#china

arall sed-dt

mov dptr,# china+32

acall sed-dt

mov a,#0b9h

mov r0,#10h

acall rdbusy

movx @r0,a;页地址X=1

mov a,# 40h

mov r0,#10h

acall rdbusy

movx @r0,a;例地址Y=0

mov dptr,#china+16

acall sed-dt

mov dptr,#china+48

acall sed-dt

sjmp $

sed-dt: mov rl,#16

sed: cir a

movc a,@a+dptr

mov r0,#12h

acall rdbusy

movx @r0,a

inc dptr

djnz rl,sed

ret

rdbusy: psh ace

push 00h

mov r0,# 11h

rdbsl: movx a,@r0

rlc a

jc rdbsl

pop 00h

pop acc

wat-rst:push acc

mov r0,#11h

wat: movx a,@r0

rlc a;注:执行四

jc wat

pop acc

ret

;汉字点阵:中国

CHINA:db 00h,0f8h,

08h, 08h, 08h,08h,08h,

0ffh,08h, 08h,08h,08h,

08h, 0fch,08h,00h

db 00h,03h,01h,

01h, 01h, 01h,01h,0ffh,

01h, 01h, 01h,1h, 01h,

03h, 00h, 00h

…………

end

(王传林)