LCM12832ZK型串/并行图形点阵液晶显示模块及其应用
扫描二维码
随时随地手机看文章
摘要:LCMl2832ZK是一种具有8位/4位并行、2线/3线串行多种接口方式,内带8000多种GB2312简体中文字库的图形点阵液晶显示模块。它具有体积小、功耗低、价格便宜、使用方便等特点,因而广泛应用于许多领域。文中介绍了LCMl2832ZK的性能特点、引脚说明、操作指令以及接口方式,并以AT89C52单片机及2线串行接口方式为例,给出了相应的硬件电路及软件程序代码。
关键词:串/并行接口; 单片机; 液晶显示;LCMl2832ZK
引言
液晶显示模块(LCD Module,简称LCM)是一种将液晶显示器件、连接件、集成电路、PCB线路板、背光源、结构件装配在一起的组件,由于其具有显示内容丰富、体积小、重量轻、寿命长、使用方便、安全省电、无辐射等优点,因此广泛应用于移动通讯、仪器仪表、电子设备、家用电器等各个领域。文中介绍了一种具有串/并多种接口方式,且内部含有GB2312一级、二级简体中文字库的图形点阵液晶模块LCMl2832ZK,该模块是由北京青云创新科技发展有限公司推出的。
1 性能特点
LCMl2832ZK是具有串/并行接口、内部含有中文字库的图形点阵液晶显示模块,其内置的控制/驱动器采用台湾矽创电子公司生产的ST7920[2].因而具有较强的控制显示功能。LCMl2832ZK的液晶显不屏为128×32点阵,可显示2行,每行8个汉字。该模块具有2MB的中文字型ROM(CGROM),共提供8192个16×16点阵中文字型;同时,为了便于英文和其它常用字符的显示,具有16KB半宽字型ROM(HCGROM),提供128个16×8点阵的字母符号字型;另外,绘图显示画面还提供一个64×256点阵的绘图区域(GDRAM)及240点的ICONRAM,可以和文字画面混合显示.且内含CGRAM可提供4组软件可编程的16×16点阵造字功能。
LCMl2832ZK模块采用LED背光,工作电压/电流分别为3V/1.2mA或5V/2mA,具有2.7~5.5V的宽工作电压范围,还具有睡眠、正常及低功耗工作模式,可满足系统各种工作电压及便携式仪器低功耗的要求。为了适应多种微处理器和单片机接口的需要,模块提供了4位/8位并行、2线/3线串行多种接口方式。另外,模块还提供了画面清除、光标显示/隐藏、显示打开/关闭、显示字符闪烁、光标移位、显示移位、反白显示、睡眠模式等操作指令。该模块可实现汉字、ASCII码、点阵图形的同屏显示,广泛用于各种仪器仪表、家用电器及通信产品中。
2 模块引脚定义和用户命令
为了更好地阐述L,CMl2832ZK的接口方式及控制方法,先介绍该模块的引脚定义及用户命令。
2.1模块引脚定义
LCMl2832ZK模块的引脚定义如表1所列。
表1 LCM12832ZK的引脚定义
引脚 | 名称 | 方向 |
说 明 |
1 | V0 | - | LCD亮度调整,外接电阻端 |
2 | VR | - | LCD亮度调整,外接电阻端 |
3 | GND | - | 地 |
4 | VCC | - | 3V/5V |
5 | NC | - | 未用 |
6 | RS(CS) | I | 选择寄存器(并行);0:指令寄存器;1:数据寄存器片选(串行);0:禁止;1:允许 |
7 | RW(SID) | I | 读写控制器(并行)0:写入;1:读输入串行数据(串行) |
8 | E(SCLK) | I | 读写数据起始脚(并行);输入串行脉冲(串行) |
9~16 | D0-D7 | I/O | 数据线0-7 |
17 | PSB | I/O | 控制界面;0:串行;1:并行8/4位 |
18 | RST | I/O | 复位信号,低有效 |
19 | LK | I | 背光源负极 |
20 | LA | I | 背光源正极 |
2.2用户命令说明
LCMl2832ZK的指令集包括基本指令集(RE=0)和扩充指令集(RE=1)两大类,用户可以通过这些命令使模块执行相应的显示或控制功能。下面简要介绍部分常用的操作命令:
(1)设定DDRAM(I)isplay Data RAM)地址:
设定DDRAM地址到地址计数器(AC)。第一行
RS |
RW |
DB7 |
DB6 |
DB5 |
0 |
0 |
1 |
AC6 |
AC5 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
AC4 |
AC3 |
AC2 |
ACl |
AC0 |
AC范围为:80H~8’7H;第二行AC范围为90H。9’7H。
(2)设定CGRAM((]haracter Generator RAM)地址:
设定CGRAM地址到地址计数器(AC)。
RS |
RW |
DB7 |
DB6 |
DB5 |
0 |
0 |
0 |
1 |
AC5 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
AC4 |
AC3 |
AC2 |
ACl |
AC0 |
(3)进入点设定(Enter Mode Set)
在数据的读取与写入时,指定光标的移动方向
RS |
RW |
DB7 |
DB6 |
DB5 |
0 |
0 |
0 |
0 |
0 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
0 |
0 |
1 |
I/D |
S |
及显示的位移。
I/D:位地上计数器递增递减选择。
当I/D=1,光标右移,DDRAM的位地址计数器+1;
当I/D=0,光标左移,DDRAM的位地址计数器-1;
S:显示画面整体位移
S |
I/D |
DESCRIPTION |
H |
H |
画面整体左移 |
H |
L |
画面整体右移 |
(4)显示状态开/关
RS |
RW |
DB7 |
DB6 |
DB5 |
0 |
0 |
0 |
0 |
0 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
0 |
1 |
D |
C |
B |
控制整体显示、光标、显示、光标位置反白的ON/0FF。
D=1,整体显示ON;D:0,整体显示OFF
C=1,光标显示ON;C=0,光标显示OFF
B=1,光标位置显示反白0N;B=0,光标位置显示反白OFF
(5)清除显示
RS |
RW |
DB7 |
DB6 |
DB5 |
0 |
0 |
0 |
0 |
0 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
0 |
0 |
0 |
0 |
1 |
将DDRAM添满“20H”(space code),并设定DDRAM的地址计数器(AC)到“00H”。
(6)功能设定
RS |
RW |
DB7 |
DB6 |
DB5 |
0 |
0 |
0 |
0 |
1 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
DL |
X |
RE |
X |
X |
DL=l,为8_bit MPU控制界面;DL=O,为4一BITMPU控制界面;
RE=1,为扩充指令集;R:E=0,为基本指令集。
(7)光标或显示移位控制
RS |
RW |
DB7 |
DB6 |
DB5 |
0 |
0 |
0 |
0 |
0 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
1 |
S/C |
R/L |
X |
X |
设定光标的移动与显示的移位控制,该指令并不改变:DDRAM的内容。
S/C |
R/L |
Description |
AC Value |
L |
L |
光标向左移动 |
AC=AC-1 |
L |
H |
光标向右移动 |
AC=AC+1 |
H |
L |
显示向左移动,且光标跟着移动 |
AC=AC |
H |
H |
显示向右移动,且光标跟着移动 |
AC=AC |
(8)读取忙碌标志(BF)和位址计数器
RS |
RW |
DB7 |
DB6 |
DB5 |
0 |
1 |
BF |
AC6 |
AC5 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
AC4 |
AC3 |
AC2 |
AC1 |
AC0 |
读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值。
(9)写入资料到RAM
RS |
RW |
DB7 |
DB6 |
DB5 |
1 |
0 |
D7 |
D6 |
D5 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
D4 |
D3 |
D2 |
D1 |
D0 |
写入资料到内部RAM,写入后会使AC改变。
(10)读取RAM的值
RS |
RW |
DB7 |
DB6 |
DB5 |
1 |
1 |
D7 |
D6 |
D5 |
DB4 |
DB3 |
DB2 |
DBl |
DB0 |
D4 |
D3 |
D2 |
D1 |
D0 |
从内部RAM:读取数据,读取后会使.AC改变。
3 接口方式与时序
LCMl2832ZK具有串/并行多种接口方式,易与各种型号单片机、微处理器连接。
3.1并行接口数据传输
当L,CMl2832ZK的PSB脚接高电平时(或模块背面S/P的短路电阻在“P”侧),模块将进入并行传输模式。在并行传输模式下,可由指令位(DL FLAG)来选择8位或4位接口方式,主控制系统将配合“RS”、“Rw”、“E”、D0~D7来完成指令/数据的传送。
在4位传输模式中,每一个8位的指令或数据都将被分为两组:较高4位(D7~D4)的数据会被放在第一组的D7~D4部分,而较低4位(D3。DO)的数据则会被放在第二组的D7~D4部分,在4位传输模式中,D3~。DO界面未使用。
3.2串行接口数据传输
当PSB脚接低电平时(或模块背面S/P的短路电阻在“S”侧),模块将进入串行接口模式。在串行模式下将使用2条线作串行数据的传输,主控系统将配合传输同步时钟线(SCLK)和接收串行数据线(SID)来完成串行传输的动作。
从图1可知,单片机与液晶模块之间传送1字节的数据共需24个时钟脉冲。首先传输起始位元组,即模块在起始位元组需先接收到5个连续的“1”(同步位元字串),此时传输计数将被重置并且串行传输将被同步.紧接着的2个位元字串分别指定数据传输方向(读或写)位元“RW”以及数据寄存器或指令寄存器选择位元“RW”,最后的第8位固定为“0”。在接收到同步位元及“RW”和“RW”起始位元组后,每一个八位元指令将被分为2个位元组接收,其中较高4位(D7一D4)的指令会被放在第1个位元组的高4位,而较低4位(D3~D0)的指令则会被放在第2个位元组的高4位.至于相关其他4位则都为0,如此完成一个字节指令或数据的传送。
4 字符显示及模块使用说明
4.1字符显示
LCMl2832ZK按照每个中文字符16x16点阵将显示屏分为2行8列.共16个区,每个区可显示1个中文字符或2个16x8点阵全高ASCII码字符。LCMl2832ZK内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字型)的内容。三种不同字符/字型的编码选择范围为:0000~0006H显示自定义字型.02H~7FH显示半宽ASCII码字符.A1AOH—F7FFH显示8192种GB2312中文字库字型。
4.2模块使用说明
使用LCMl2832ZK显示模块时,应注意以下几点。
①引脚RST和PSB可悬空,不接时,为并行接口方式:引脚VR和 V0之间必须接可变电阻(2.2kΩ~10kΩ),该可变电阻一端接VR,调整端接V0,另一端悬空。
②模块在接收指令前,单片机必须先确认模块内部处于非忙状态,即读取BF标志时BF为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和该指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。
③RE为基本指令集与扩充指令集的选择控制位。当变更RE后,以后的指令集将维持在最后的状态,除非再次变更RE位,否则使用相同指令集时,无需每次均重设RE位。
④串行传输时,如果有多个数据或指令要传送,必须要等到一个指令完成执行完毕后再传送下一个指令或数据,否则会造成指令或数据的丢失。这是因为液晶模块内部没有发送/接收缓冲区。
⑤若要在某一个位置显示中文字符,应先设定显示字符的位置,即先设定显示地址,再写入中文字符编码。
图2
5 LCMl2832ZK应用实例
将引脚PSB接地,片选CS固定接高电平。使用LCMl2832ZK的2线串行接口方式可大大简化液晶显示模块与单片机之间的接口设计。同时,也使液晶显示模块显示汉字变得极为容易,从而改变过去单片机系统人机界面不够友好的弊端。AT89C52单片机与LCMl2832ZK模块的2线串行接口电路如图2所示,下面给出相应的软件程序代码。
;;口线定义
::CS一一一一将CS接固定高电平
SID EQU P1.0
SCLK EQU P1.1
:液晶模块初始化子程序
_INIT_LCM:
;;延时>40ms
MOV R7,#00110000B ;使用8位控制界面
LCALL_WRITE_COMMAND
;;延时>100μs
MOV R7,#00110000B ;使用基本指令集
LCALL-WRIrI'E-COMMAND
;;延时>37μs
MOV R7,#00001 100B ;整体显示ON
LCALL _WRITE-COMMAND
;;延时>100μs
MOV R7,#00000001B ;清屏
LCALL -WRITE-COMMAND
;;延时>10ms
MOV R7.加00001 10B :进入点设定
LCALL.WRITE COMMAND
RET
;;字符显示子程序
MOV R7,#80H :设定DDRAM位址
MOV DPTR.#STRINGl
LCALL—PUT_STRING ;在第一行显示字符串1
MOV R7。#90H :设定DDRAM位址
MOV DPTR.}}STRING2
LCALL_PUT_STRING ;在第二行显示字符串2
_PUT_STRING:MOV A,R7
ORL A,#80H
MOV R7,A
LCALL_WRITE_COMMAND
DISP_STR_LOOP:MOV A,加
MOVC A.@A+DPTR
CJNE A,#o,CONT_STR_DISP
RET
CONT STR DISP:MOV R7,A
LCALL_WRITE_DATA
INC DPTR
SJMP DISP_STR_LOOP
STRINGl:D B ’海军航空
工程学院’,0;;汉字代码
STRING2:DB’中文图形
液晶显示’.0
;;串行字节数据发送子程序
_WRITE_DATA:MOV A,
R7
::发送起始位元组”
11111010"
;;发送第1个位元组的高4
位即串行指令的高4位
D7~D4
CLR SCLK
MOV C,ACC,7
MOV SID,C
SETB SCLK
CLR SCLK,
MOV C,ACC,6
MOV SID,C
SETB SCLK
CLR SCLK
MOV C,ACC,5
MOV SID,C
SETB SCLK
CLR SCLK
MOV C,ACC,4
MOV SID,C
SETB SCLK
;;发送第1个位元组的低4位”0 0 0 0”
;;发送第2个位元组的高4位即串行指令的低4位
D3~D0
CLR SCLK
MOV C,ACC,3
MOV SID,C
SETB SCLK
CLR SCLK
MOV C,ACC,2
MOV SID,C
SETB SCLK
CLR SCLK
MOV C,ACC,1
MOV SID,C
SETB SCLK
CIJR SCLK
MOV C,ACC,O
MOV SID,C
SETB SCLK
;;发送第2个位元组的低4位“0 0 0 0”
;;当有连续多个指令被执行时,指令执行时间必须被考虑
RET
6 结束语
分析了LCM12832ZK的性能特点、操作指令、接口方式以及使用注意事项等,并以AT89C52单片机及2线串行接口方式为例,给出了相应的硬件电路及软件程序。由该模块构成的液晶显示方案与同类型的液晶显示模块相比,不论是硬件电路结构的设计还是软件程序的编制都要简洁得多,并且价格也略低于相同点阵的其它同类模块。因此,该模块将会在众多领域得到更广泛的应用。