第 20 卷第 1 期
2005 年 3 月
河北工业大学成人教育学院学报
Journal of Adult Education School of Hebei University of Technology
Vol. 20 No. 1
Mar. 2005
图形液晶显示模块 L M19264 的显示原理及应用
吴永俭1 李志军1 张少如2 刘晓凯1
(河北工业大学 天津 300130)
摘 要 本文介绍了液晶显示模块的特点和分类 , 并对图形液晶显示模块 L M19264 的
汉字显示原理进行了说明 , 详细介绍了液晶显示器的结构组成 、显示 RAM 映射图和单片微
控制器的接口信号 , 对控制命令进行了说明 , 最后给出了 L M19264 和 C8051F021 单片微控
制器接口的硬件电路和用 C51 单片机语言编写的部分通用程序实例 。
关键词 液晶显示模块 ; 单片微控制器 ; 汉字显示 ; C51 编程 命令
0 引言
随着仪表的智能化以及人们对显示信息要求的不断提高 , 数字显示已远不能将纷杂的信息传递清
楚 , 图形液晶显示模块应运而生 。液晶显示器 (L CD) 具有显示信息丰富 、功耗低 、体积小 、重量
轻 、超薄等许多其它显示器无法比拟的优点 , 近几年来被广泛用于单片机控制的智能仪器 、仪表和低
功耗电子产品中 。L CD 可分为段位式 L CD 、字符式 L CD 和点阵式 L CD 。其中 , 段位式 L CD 和字符
式 L CD 只能用于字符和数字的简单显示 , 不能满足图形曲线和汉字显示的要求 ; 而点阵式 L CD 不
仅可以显示字符 、数字 , 还可以显示各种图形 、曲线及汉字 , 并且可以实现屏幕上下左右滚动 、动
画 、分区开窗口 、反转 、闪烁等功能 , 用途十分广泛 。
液晶显示模块 (L CM) 是由控制器 、行驱动器 、列驱动器 、显示存储器和液晶显示屏等器件通
过 PCB 组装成一体的低成本输出设备[ 1 ] 。其核心部件是液晶显示控制器 , 它是可编程接口芯片 , 一
方面提供与微控制器的接口 , 一方面连接行 、列驱动器 , 用户对 L CD 控制器的编程就是对 L CM 的
操作控制 。不同的液晶显示模块主要由于其自带的控制器不同 , 使得显示功能有所区别 。
1 汉字显示基础
在 PC 机上的汉字显示 , 是来自存储在 PC 机上的汉字库 , 汉字库中的汉字以点阵形式组成 。如
果系统所使用的 “汉字库”中每个汉字按 16x16 点阵模式存放 , 则每个汉字由 16x16 = 256 个点组成 ,
占用 16x2 = 32 个字节的连续内存单元 。每个字节有 8 位 , 每一位都有两种状态 , 即亮或暗 , 分别用
1 或 0 来表示 。在 16x16 点阵中 , 用各个位的亮暗来表示一个字 , 凡是笔画经过的地方都为 1 (亮) ,
没有笔画的地方都为 0 (暗) , 这样就可以表示不同的汉字 。
图一指示了本文液晶驱动器所要求的字模 (点阵状态信息) 存放与汉字显示的关系 , 图二给出了
汉字 “北”的显示实例和对应字模 。每个汉字对应 32 个字节 , 图一中标出了第 1 、第 2 个字节至第
31 、第 32 个字节的存放位置 。每个字节低位在上高位在下 , 按照从左至右 , 从上至下依次排列各个
字节 。造成汉字显示与字模存放有这样对应关系是因为不同的液晶驱动器有不同的扫描显示方式 。每
个存储单元存放一行 8 点列的信息 , 显示字符 、汉字或图形时只须将它们的点阵状态信息写入相应的
显示缓冲区即可 。
收稿日期 : 2005 - 01 - 20
作者简介 : 吴永俭 , 男 , 1972 年生 , 硕士研究生 。1 河北工业大学 2 河北师范大学
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
河北工业大学成人教育学院学报
2005 年
0 1 ……. . 6 7
8 9 …. ……14 15
16 17 …. 22 23
24 25 ………. . 30 31
22
D
0
:
D
7
D
0
:
D
7
图一 液晶汉字显示与字模存放的关系 图二
图二对应字模如下 :
0x00 , 0x20 , 0x20 , 0x20 , 0xFF , 0x00 , 0x00 , 0x00 , 0xFF , 0x40 , 0x20 , 0x30 , 0x18 , 0x10 , 0x00 ,
0x10 , 0x30 , 0x18 , 0x08 , 0x04 , 0x7F , 0x00 , 0x00 , 0x3F , 0x40 , 0x40 , 0x40 , 0x40 , 0x78 , 0x00
2 L M19264 结构组成 、接口信号 、控制命令
2. 1 结构组成
图形点阵液晶模块 L M19264[ 2 ] 是由深圳拓普微科技开发有限公司生产的 , 由一块 192 ×64 的图
形液晶屏 , 3 片列控制芯片 S6B0108 , 1 片行控制芯片 S6B0107 及其辅助电路组成 , 每片列控制芯片
内部都带有显示 RAM 缓冲区 。
19264 液晶屏由左中右相同的三个屏组成 , 每一屏包含 64 ×64 点阵 , 其点阵显示结构为 : 每一
屏的点阵包含 8 页 、64 列 , 从上到下依次为第 0~7 页 , 每一页包含 8 行 。每屏内有三个寄存器 , 分
别为页 ( X) 地址寄存器 、列 ( Y) 地址计数器 、显示起始行 ( Z) 寄存器 。页地址寄存器用来设定
内部显示数据 RAM 的页地址 , 列地址计数器设定内部显示数据 RAM 的列地址 , 显示起始行寄存器
设定显示 RAM 的起始行 , 可设定滚屏功能 。页地址 、显示起始行以及列地址可以通过向模块写入控
制指令来寻址定位 , 每读或写 1 个显示字节数据操作后列地址计数器自动加 1 。
2. 2 显示 RAM 映射
模块内部图形数据存储器中每个单元的 8 位二进制数据对应显示屏上一页中的一列 1 ×8 点阵 ,
为 “1”的位 (B IT) 对应的点显示 , 为 “0”的位对应点不显示 。字节中的高位对应的点在下 , 低位
在上 。当确定要在显示屏上某页某列写某个内容时 , 只需使 MCU 将对应的数据写入显示 RAM 的同
一页同一列的地址处即可 , 然后该模块就会自动将显示 RAM 内容送往液晶屏 , 以完成相应的显示 。
因此 , L M19264 模块类似于常见的键盘显示接口芯片 8279 , 由于它内部不仅有自己的显示 RAM 区
用于存储欲写到液晶屏上的数据 , 而且有自己的操作控制 , 因此它能根据主控制器 MCU 写入到该模
块的各种命令字及显示 RAM 数据 , 自动对液晶屏进行一系列操作而不再需要主控制器 MCU 的参
与 。如果将每个 RAM 单元对应的点阵定义为 “条”, 那么 , 一幅 64 ×64 的图象由 512 个 “条”组
成 , 对于 L M19264 模块而言 , 这些 “条”竖向排列 , 显示顺序是由左至右显示一页后再下移一页 。
显然 , 对应每屏 , 模块内部有 512 个字节 RAM , 而要使 19264 显示更新左屏画面 , 实际上就是把图
象点阵数据顺序地写入模块内部这 512 个字节 RAM 缓冲区 , 写入的数据顺序显然应按 “条”的顺序
排列 : 即从第 0 页的第 0 列的 “条”所对应的头一个显示 RAM 开始 , 按照从左到右 , 从上到下 , 直
到最后一个字节 (对应第 7 页的第 63 列) 。
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
第 1 期 吴永俭等
图形液晶显示模块 L M19264 的显示原理及应用
32
2. 3 接口信号
液晶显示模块与单片微控制器 ( MCU) 的接口信号包括 8 根数据线和 6 根控制线 。8 根数据线
是 I/ O 信号 , 6 根控制线都是输入信号 。8 根三态数据线 DB0 - DB7 用于 L CM 与 MCU 之间传输数
据 、命令和状态 。片选线 CSB 、CSA 组和功能定义是 : 00 时选中左屏 , 01 时选中中屏 , 10 时选中右
屏 , 11 时不选中 。命令数据线 RS 为 1 时 D7 - D0 是要显示的 RAM 数据 , RS 为零时 D7 - D0 是要写
入的命令 。读写控制线 R/ W 为 1 时是读模式 , 此时使能线 E 应为 1 , 数据线上信号流向是从 L CM
到 MCU ; R/ W 为零时是写模式 , 数据线上信号流向是从 MCU 到 L CM , 当 E 从 1 变为 0 时 DB0 -
DB7 上的数据写入 L CM 。复位信号线 RS TB 为 0 时显示屏关断 , 显示起始行寄存器内容为 0 , 此时
L CM 不能接收命令 。RS TB 为 1 时 L CM 正常运行 。
2. 4 控制命令
对用户来说 , 进行显示操作就是在显示缓冲区中指定的位置写入欲显示的点阵状态信息 。液晶控
制器的主要指令可分为三类 : 一是读状态指令 , 在对 L CM 的每一次操作前都要读这个状态字 , 并对
它的相应位进行判断 , 以决定 MCU 对 L CM 的访问是否有效 ; 二是设置指令 , 该类指令用于设置显
示数据的地址 、设置显示起始行 、设置显示开/ 关 ; 三是数据的读写指令 , 该指令能读写显示屏上的
数据内容 。
表一 显示控制命令代码
命令
RS R/ W D7 D6 D5 D4 D3 D2 D1 D0
显示开/ 关
0
设置列地址 0
设置页地址 0
显示起始行
设置
读状态
0
0
0
0
0
0
0
0
1
1
0
1
0
1
1
1
1
1
1
1/ 0
列地址 (0 - 63)
1
1 页地址 (0 - 7)
1 显示起始行地址 (0 - 63)
1 忙 0
关
/
开
复
位
0
0
0
0
写显示数据 1
0 要显示的数据
读显示数据 1
1 要读的显示数据
单片微控制器的显示控制命令如表 1 所示 。显示开关命令用来设置显示开或关 , 当 D0 为 1 时显
示屏能显示 , 为 0 时不能显示 , 内部状态和 RAM 中的显示数据不受影响 。设置列地址指令把要显示
数据的列地址写入 Y 地址计数器 。显示起始行设置命令设置了对应显示屏上首行的显示 RAM 中的
行号 , 有规律的修改该行号 , 可实现滚屏功能 。读状态命令当 BU S Y 位为 1 时表明驱动器正忙 , 不
能接受数据或命令 , 为 0 时表明驱动器就绪 ; 关/ 开位是 1 时表明显示处于关断状态 , 是 0 时处于显
示状态 ; 复位位是 1 时表明 L CM 处于复位状态 , 是 0 时处于正常显示状态 。写显示数据命令把要显
示数据写入显示数据 RAM 区 , 写显示命令操作后 , Y 列地址计数器自动加 1 。在读/ 写有关数据时 ,
首先要设定所读/ 写的页地址 、列地址 , 然后再读写所需数据 , MCU 读写 L CM 要遵守数据手册中读
写时序的要求 。
应注意的是 L CM 是一种慢速器件 , 一次读写操作的时间达毫秒级 , 跟不上 MCU 的访问速度 。
因此在写命令或读写数据之前应检查本次操作能否进行 , 即先判断 L CM 是否还处于忙状态 , 或者说
L CM 是否就绪 。只有 L CM 就绪 , 才可以进行新的操作 。
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
42
河北工业大学成人教育学院学报
2005 年
3 硬件接口电路和应用程序实例
图形液晶显示模块与计算机的连接方式有两种 : 直接访问方式和间接访问方式 。直接访问方式 ,
即将液晶显示模块的接口作为存储器或 I/ O 设备直接挂在计算机总线上 , 计算机以访问存储器或 I/ O
设备的方式控制液晶显示模块的工作 。间接控制方式的电路简单 , 时序可以通过编程来实现 。这里采
用了间接方式 , 液晶显示器与 Silicon laboratory 公司生产的 C8051F021[ 3 ] 单片机的接口如图三所示 。
C8051F 单片机的 I/ O 口要通过多路开关分配 , 本文 P3 和 P2 口用作一般通用口 , P3 配置为推挽输
出 , P2 根据需要分别配置为推挽输出和开漏输入 , 按照液晶显示器要求的读写时序操作 。由于所用
单片机 3. 3V 供电 , 显示模块是 5V 供电 , 为了电平匹配 , 用了电平转换芯片 74L V T245[ 4 ] 。
C51[ 5 ] 是单片机的高级语言 , 具有编程简便 、可靠性高 、库函数丰富 、容易实现模块化等一系列
优点 , 在微机控制中得到了广泛的应用 。下面介绍用 C51 编写的操作 L M19264 常用的一些基本通用
程序 。根据应用的不同 , 实际使用中编程方式要复杂灵活得多 。
由于所用显示器不带字库 , 故首先要根据所显示汉字提取字模 , 可以采用字模提取软件 V2. 1 。
把所要显示的字模依次存放在程序代码区 , 需要显示时送入显示模块即可 。
采用间接控制方式的部分驱动程序如下 :
图三 硬件连接框图
# define byte unsigned char
date byte column ; / / 定义列变量
bdate byte read _ dat , page ;
sbit r _ s = 0xb3 ; / / 定义位变量
sbit r _ w = 0xb1 ;
sbit e = 0xb2 ;
sbit csa = 0xb4 ;
sbit csb = 0xb5 ;
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
第 1 期 吴永俭等
图形液晶显示模块 L M19264 的显示原理及应用
52
sbit busy = read _ dat^7 ;
void inquire _ busy (bit b , bit a ) ; / / 查询某一屏是否 “忙”
(bit b , bit a , byte d) ; / / 向某一屏送指令
void send _ inst r
void clear _ (bit b , bit a) / / 清某一屏子程序
void clear
void ini
( ) ; / / 清屏子程序
( ) ; / / 初始化子程序
void send _ dat _ disp (bit b , bit a , byte d) ; / / 向某一屏送一个显示字节
void led _ disp (bit b , bit a , char
p) ; / / 向某一屏同一页送 8 个字节
void inquire _ busy (bit b , bit a ) / / 查询某一屏是否 “忙”
{r _ w = 1 ;
r _ s = 0 ;
csb = b ;
csa = a ;
P2MDOU T = 0x00 ; / / P2 配置为漏极开路
loop : p2 = 0xff ; / / P2 配置为输入
(busy) {goto loop ;}
e = 1 ;
read _ dat = p2 ;
e = 0 ;
if
csb = 1 ;
csa = 1 ;
r _ s = 1 ;
r _ w = 1 ;
}
void send _ inst r
{
(bit b , bit a , byte d) / / 向某一屏送命令
P2MDOU T = 0xff ; / / p2 输出方式配置为推挽
r _ w = 0 ;
r _ s = 0 ;
csb = b ;
csa = a ;
e = 1 ;
p2 = d ;
e = 0 ;
csb = 1 ;
cda = 1 ;
r _ s = 1 ;
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
62
}
r _ w = 1 ;
河北工业大学成人教育学院学报
2005 年
void send _ dat _ disp (bit b , bit a , byte d)
/ / 向某一屏送一个显示字节
{
P2MDOU T = 0xff ; / / p2 输出方式配置为推挽
r _ w = 0 ;
r - s = 1 ;
csb = b ;
csa = a ;
e = 1 ;
p2 = d ;
e = 0 ;
csb = 1 ;
csa = 1 ;
r - s = 1 ;
r - w = 1 ;
}
(i = 0 ; i < 255 ; i + + )
(j = 0 ; j < 255 ; j + + ) ;}
( ) / / 初始化子程序
void delay ()
{data byte i , j ;
for
{for
}
void ini
{ P3MDOU T = 0xff ; / / 端口 3 输出方式配置为推挽
e = 0 ; r _ w = 1 ; r _ s = 1 ; csb = csa = 1 ; delay ( ) ;
/ / 关显示
inquire _ busy (0 , 0 ) ;
send _ inst r (0 , 0 , 0x3e) ; / / 关左屏显示
inquire _ busy (0 , 1 ) ;
send _ inst r _ mid (0 , 1 , 0x3e)
inquire _ busy (1 , 0 ) ;
send _ inst r _ right
/ / 开显示
inquire _ busyt
send _ inst r (0 , 0 , 0x3f) ; / / 开左屏显示
inquire _ busy (0 , 1 ) ;
send _ inst r (0 , 1 , 0x3f) ; / / 开中屏显示
inquire _ busy (1 , 0 ) ;
send _ inst r (1 , 0 , 0x3f) / / 开右屏显示
/ / 起始行设置指令
(1 , 0 , 0x3e) ; / / 关右屏显示
; / / 关中屏显示
(0 , 0 ) ;
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
第 1 期 吴永俭等
图形液晶显示模块 L M19264 的显示原理及应用
72
quire _ busy ( 0 , 0) ;
send _ inst r (0 , 0 , 0xc0) ;
inquire _ busy (0 , 1 ) ;
send _ inst r (0 , 1 , 0xc0) ;
inquire _ busy (1 , 0 ) ;
send _ inst r
}
void clear _ (bit b , bit a) / / 清某一屏子程序
{date byte i , j , disp _ page ;
for
(i = 0 ; i < 8 ; i + + )
(1 , 0 , 0xc0)
{ disp _ page = i ;
disp _ page = disp _ page | 0xb8 ;
iquire _ busy (b , a ) ;
send _ inst r (b , a , disp _ page) ; / / 页地址设置指令
iquire _ busy (b , a ) ;
send _ inst r (b , a , 0x40) ; / / 列地址设置指令
for
{ send _ dat _ disp (b , a , 0x00) ; }
j + + ) / / 清左屏
(j = 0 ; j < 64 ;
}
}
( ) / / 清屏子程序
void clear
{ clear _ (0 , 0) ; / / 清左屏
clear _ (0 , 1) ; / / 清中屏
clear _ (1 , 0) ; / / 清右屏
}
void led _ disp (bit b , bit a , char
{ idate byte i ;
p) / / 向某一屏同一页送 8 个字节
(i = 0 ; i < 8 ; i + + )
idate char ch ;
for
{ch =
p + + ;
send _ dat _ disp (b , a , ch) ;
}
p ;
}
4 结论
智能仪表采用点阵液晶模块后 , 显示容量增大 , 多项数据一目了然 , 充分利用点阵液晶的图形显
示功能 , 还可以设计出带有汉字和图形提示的弹出和下拉菜单 , 使得一些复杂 、生硬的操作和设定步
骤变得层次分明 , 意义明确 、更符合人性化特点 , 有效地提高了仪表的功能和档次 。本文介绍的图形
液晶显示器的显示方法及编程技巧特别适合在仪器仪表中显示较丰富的信息 , 因而具有广泛的实用价
值 。
(下转第 31 页)
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
第 1 期 王建勋等
开放式 Windows 评分系统的研究
13
Loop
FileNumber = geshu
End Function
4 结束语
图 3 文件复制流程图
开放式 Windows 评分系统可以和 office 评分系统 、网络评分系统组合成考试系统用于考试外 ,
还可以在日常的计算机教学中得到广泛应用 。它可以单独提出来 , 作为教师平时对学生的测试 , 这样
可以及时掌握学生的学习情况 , 实现交互式教学 , 提高教学质量 。
参考文献
[ 1 ] 柴欣 , 于明等. 《计算机应用基础》北京 : 海洋出版社 , 2002 年.
[ 2 ] 微软有限公司. Visual Basic 6. 0 语言参考手册.
[ 3 ] 柴欣 , 李惠然等.《河北省高校计算机文化基础考试系统的研究》, 2001. 12.
(上接第 27 页)
参考文献
[ 1 ] 陈铖等. 基于 T6963C 控制器的液晶显示模块组成原理 [J ] . 信息工程大学学报 , 2003 , 4 (3) : 20 - 21.
[ 2 ] L M19264ACC - R L CD Module User Manual. Shenzhen Topway Technology Co.
[ 3 ] C8051F020/ 1/ 2/ 3 8 K ISP FL ASH MCU Family。Silicon Laboratories , Rev. 1. 4 , 2003.
[ 4 ] Datesheet 74L V T245B 3. 3V Octal t ransceiver wit h direction pin (3 - State) . p hilips semiconductors , 1999.
[ 5 ] 马忠梅 , 籍顺心 , 张凯等. 单片机的 C 语言应用程序设计. 北京 : 北京航空航天大学出版社 , 1999.
, Lt d. 2004.
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.