点阵 LCD 的显示原理
在数字电路中,所有的数据都是以 0 和 1 保存的,对 LCD 控制器进行不同的数据操作,可以得
到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要 8 位(一字节)即可。而对于
中文,常用却有 6000 以上,于是我们的 DOS 前辈想了一个办法,就是将 ASCII 表的高 128 个很
少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低 128 位则留给英文字符使用,
即英文的内码。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字
的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位
信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图 1 所示:
图 1 “A”字模图
而中文的“你”在字模中的记载却如图 2 所示:
图 2 “你”字模图
12864 点阵型 LCD 简介
12864 是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及 128×64 全点阵液晶显示器组
成。可完成图形显示,也可以显示 8×4 个(16×16 点阵)汉字。
管脚号
管脚名称
LEVER
管脚功能描述
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
VSS
VDD
V0
0
电源地
+5.0V 电源电压
-
液晶显示器驱动电压
D/I(RS)
H/L
D/I=“H”,表示 DB7∽DB0 为显示数据
D/I=“L”,表示 DB7∽DB0 为显示指令数据
R/W
H/L
R/W=“H”,E=“H”数据被读到 DB7∽DB0
R/W=“L”,E=“H→L”数据被写到 IR 或 DR
E
H/L
R/W=“L”,E 信号下降沿锁存 DB7∽DB0
R/W=“H”,E=“H”DDRAM 数据读到 DB7∽DB0
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
CS1
CS2
RET
H/L
H/L
H/L
H/L
H/L
H/L
H/L
H/L
H/L
H/L
H/L
数据线
数据线
数据线
数据线
数据线
数据线
数据线
数据线
H:选择芯片(右半屏)信号
H:选择芯片(左半屏)信号
复位信号,低电平复位
VOUT
-10V
LCD 驱动负电压
19
20
LED+
LED-
-
-
LED 背光板电源
LED 背光板电源
表 1:12864LCD 的引脚说明
在使用 12864LCD 前先必须了解以下功能器件才能进行编程。12864 内部功能器件及相关功能
如下:
1. 指令寄存器(IR)
IR 是用于寄存指令码,与数据寄存器数据相对应。当 D/I=0 时,在 E 信号下降沿的作用下,指
令码写入 IR。
2.数据寄存器(DR)
DR 是用于寄存数据的,与指令寄存器寄存指令相对应。当 D/I=1 时,在下降沿作用下,图形显
示数据写入 DR,或在 E 信号高电平作用下由 DR 读到 DB7∽DB0 数据总线。DR 和 DDRAM 之间
的数据传输是模块内部自动执行的。
3.忙标志:BF
BF 标志提供内部工作情况。BF=1 表示模块在内部操作,此时模块不接受外部指令和数据。BF=0
时,模块为准备状态,随时可接受外部指令和数据。
利用 STATUS READ 指令,可以将 BF 读到 DB7 总线,从检验模块之工作状态。
4.显示控制触发器 DFF
此触发器是用于模块屏幕显示开和关的控制。DFF=1 为开显示(DISPLAY OFF),DDRAM 的
内容就显示在屏幕上,DFF=0 为关显示(DISPLAY OFF)。
DDF 的状态是指令 DISPLAY ON/OFF 和 RST 信号控制的。
5.XY 地址计数器
XY 地址计数器是一个 9 位计数器。高 3 位是 X 地址计数器,低 6 位为 Y 地址计数器,XY 地址
计数器实际上是作为 DDRAM 的地址指针,X 地址计数器为 DDRAM 的页指针,Y 地址计数器为
DDRAM 的 Y 地址指针。
X 地址计数器是没有记数功能的,只能用指令设置。
Y 地址计数器具有循环记数功能,各显示数据写入后,Y 地址自动加 1,Y 地址指针从 0 到 63。
6.显示数据 RAM(DDRAM)
DDRAM 是存储图形显示数据的。数据为 1 表示显示选择,数据为 0 表示显示非选择。DDRAM
与地址和显示位置的关系见 DDRAM 地址表。
7.Z 地址计数器
Z 地址计数器是一个 6 位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一
行扫描完成,此地址计数器自动加 1,指向下一行扫描数据,RST 复位后 Z 地址计数器为 0。
Z 地址计数器可以用指令 DISPLAY START LINE 预置。因此,显示屏幕的起始行就由此指令控
制,即 DDRAM 的数据从哪一行开始显示在屏幕的第一行。此模块的 DDRAM 共 64 行,屏幕可以
循环滚动显示 64 行。
12864LCD 的指令系统及时序
该类液晶显示模块(即 KS0108B 及其兼容控制驱动器)的指令系统比较简单,总共只有七种。
其指令表如表 2 所示:
指令名称
控制信号
控制代码
R/W RS
DB7 DB6
DB5
DB4 DB3 DB2 DB1 DB0
0
1
1
0
0
1
0
1
1
X
1
X
1
X
1
X
BUSY
0 ON/OFF RST
1
X
1
X
0
1
X
X
X
0
1
X
X
X
0
1/0
X
X
X
0
写数据
读数据
显示开关
显示起始行设置
页设置
列地址设置
读状态
写数据
读数据
0
0
0
0
1
0
1
0
0
0
0
0
1
1
表 2:12864LCD 指令表
各功能指令分别介绍如下。
显示开/关指令
R/WRS
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
00
00111111/0
当 DB0=1 时,LCD 显示 RAM 中的内容;DB0=0 时,关闭显示。
2、显示起始行(ROW)设置指令
R/WRS
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
00
11 显示起始行(0~63)
该指令设置了对应液晶屏最上一行的显示 RAM 的行号,有规律地改变显示起始行,可以使 LCD 实
现显示滚屏的效果。
3、页(PAGE)设置指令
R/WRS
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
00
10111 页号(0~7)
显示 RAM 共 64 行,分 8 页,每页 8 行。
4、列地址(Y Address)设置指令
R/WRS
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
00
01 显示列地址(0~63)
设置了页地址和列地址,就唯一确定了显示 RAM 中的一个单元,这样 MPU 就可以
用读、写指令读出该单元中的内容或向该单元写进一个字节数据。
5、读状态指令
R/WRS
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
10
BUSY0ON/OFFREST0000
该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:
BUSY:1-内部在工作 0-正常状态
ON/OFF:1-显示关闭 0-显示打开
RESET:1-复位状态 0-正常状态
在 BUSY 和 RESET 状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。
在对液晶显示模块操作之前要查询 BUSY 状态,以确定是否可以对液晶显示模块进行操作。
6、写数据指令
R/WRS
01
读数据指令
R/WRS
11
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
写数据
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
读显示数据
读、写数据指令每执行完一次读、写操作,列地址就自动增一。必须注意的是,进行读操作之
前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。
12864 点阵型 LCD 软硬件设计实例
通过以上学习,现在就来实际应用 12864LCD 的软硬件设计。本实例将在 LCD 上显示如图 3
所示内容:
图 3 模拟显示效果图
在调试前先将显示切换开关切换到 LCD 显示状态。
图 4 128*64LCD 实验演示图
硬件原理图
图 5 硬件原理图
程序流程图