字符型液晶
显示模块原理及应用详解
字符型液晶显示模块的基本特点
字符型液晶显示模块由字符型液晶显示屏(LCD),控制驱动主电路HD44780及其扩展驱动电路HD44100,少量阻、容元件,结构件等装配在PCB板上而成。 字符型液晶显示模块目前在国际上已经规范化,无论显示屏规格如何变化,其电特性和接口形式都是统一的。因此只要设计出一种型号的接口电路,在指令设置上稍加改动即可使用各种规格的字符型液晶显示模块。
1、液晶显示屏是以若干个5´8或5´11点阵块组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。
2、主控制驱动电路为HD44780(HITACHI)及其他公司全兼容电路,如SED1278(SEIKO EPSON)、KS0066(SAMSUNG)、NJU6408(NER JAPAN RADIO)。
3、具有字符发生器ROM可显示192种字符(160个5´7点阵字符和32个5´10点阵字符,见附录一)
4、具有64个字节的自定义字符RAM,可自定义8个5´8点阵字符或四个5´11点阵字符。
5、具有80个字节的RAM。
6、标准的接口特性,适配M6800系列MPU的操作时序。
7、模块结构紧凑、轻巧、装配容易。
8、单+5V
电源供电。
9、低功耗、长寿命、高可靠性。
HY字符型液晶显示模块特性
一、HY系列接口特性及时序
1、HD44780读、写操作(时序见附录二)
(1) 写操作(MPU至HD44780)
项目 |
符号 |
最小值 |
最大值 |
单位 |
使能周期 |
tcycE |
1000 |
- |
ns |
使能脉冲宽度 |
Pweh |
450 |
- |
ns |
使能升、降时间 |
Ter,Tef |
- |
25 |
ns |
地址建立时间 |
Tas |
140 |
- |
ns |
地址保持时间 |
Tah |
10 |
- |
ns |
数据建立时间 |
Tdsw |
195 |
- |
ns |
数据保持时间 |
Th |
10 |
- |
ns |
(2) 读操作(MPU至HD44780)
项目 |
符号 |
最小值 |
最大值 |
单位 |
使能周期 |
tcycE |
1000 |
- |
ns |
使能脉冲宽度 |
Pweh |
450 |
- |
ns |
使能升、降时间 |
Ter,Tef |
- |
25 |
ns |
地址建立时间 |
Tas |
140 |
- |
ns |
地址保持时间 |
Tah |
10 |
- |
ns |
数据延迟时间 |
Tddr |
- |
320 |
ns |
数据保持时间 |
Tdhr |
10 |
- |
ns |
(3) 信号真值表
RS |
R/W |
E |
功能 |
0 |
0 |
下降沿 |
写指令代码 |
0 |
1 |
高电平 |
读忙标志和AC码 |
1 |
0 |
下降沿 |
写数据 |
1 |
1 |
高电平 |
读数据 |
2、接口引脚功能
引脚号 |
符号 |
状态 |
功 能 |
1 |
Vss |
|
电源地 |
2 |
Vdd |
|
+5V逻辑电源 |
3 |
V0 |
|
液晶驱动电源 |
4 |
RS |
输入 |
寄存器选择1:数据;0:指令 |
5 |
R/W |
输入 |
读、写操作选择1:读;0:写 |
6 |
E |
输入 |
使能信号 |
7 |
DB0 |
三态 |
数据总线(LSB) |
8 |
DB1 |
三态 |
数据总线 |
9 |
DB2 |
三态 |
数据总线 |
10 |
DB3 |
三态 |
数据总线 |
11 |
DB4 |
三态 |
数据总线 |
12 |
DB5 |
三态 |
数据总线 |
13 |
DB6 |
三态 |
数据总线 |
14 |
DB7 |
三态 |
数据总线(MSB) |
15 |
LEDA |
输入 |
背光+5V |
16 |
LEDK |
输入 |
背光地 |
注:15、16两管脚用于带背光模块,不带背光的模块这两个管脚悬空不接。
二、HY系列电特性
(1)绝对最大值范围
项目 |
符号 |
最小值 |
最大值 |
备注 |
电路逻辑电压 |
Vdd-Vss |
0 |
7.0V |
|
液晶驱动电压 |
Vdd-V0 |
0 |
13.5V |
|
输入电压 |
VI |
Vss |
Vdd |
|
工作温度 |
|
0 -20 -30 |
+50 +70 +80 |
常温型 宽温型 超宽温型 |
存储温度 |
|
-10 -30 -40 |
+60 +80 +80 |
常温型 宽温型 超宽温型 |
(2)电特性
项目 |
符号 |
条件 |
MIN |
TYP |
MAX |
单位 |
输入高电压 |
VIH |
|
2.2 |
- |
- |
V |
输入低电压 |
VIL |
|
- |
- |
0.6 |
V |
输出高电压 |
VOH |
IOH=0.2mA |
2.4 |
- |
- |
V |
输出低电压 |
VOL |
IOL=1.2mA |
- |
- |
0.4 |
V |
电源电流 |
IDD |
|
- |
0.5 |
0.2 |
mA |
三、HY系列供电电路(见附录三)
HY字符型液晶显示模块指令集
一、指令集
1、清屏
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 0 |
0 0 0 0 0 0 0 1 |
运行时间(250Khz):1.64ms;
功能:清DDRAM和AC值。
2、归位
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 0 |
0 0 0 0 0 0 1 * |
运行时间(250Khz):1.64ms;
功能:AC=0,光标、画面回HOME位。
3、输入方式设置
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 0 |
0 0 0 0 0 1 I/D S |
运行时间(250Khz):40us;
功能:设置光标、画面移动方式。
其中:I/D=1:数据读、写操作后,AC自动增一;
I/D=0:数据读、写操作后,AC自动减一;
S=1:数据读、写操作,画面平移;
S=0:数据读、写操作,画面不动;
4、显示
开关控制
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 0 |
0 0 0 0 1 D C B |
运行时间(250Khz):40us;
功能:设置显示、光标及闪烁开、关。
其中:D表示显示开关:D=1为开,D=0为关;
C表示光标开关:C=1为开,C=0为关;
B表示闪烁开关:B=1为开,B=0为关。
5、光标、画面位移
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 0 |
0 0 0 1 S/C R/L * * |
运行时间(250Khz):40us;
功能:光标、画面移动,不影响DDRAM。
其中:S/C=1:画面平移一个字符位;
S/C=0:光标平移一个字符位;
R/L=1:右移;R/L=0:左移。
6、功能设置
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 0 |
0 0 1 DL N F * * |
运行时间(250Khz):40us;
功能:工作方式设置(初始化指令)。
其中:DL=1,8位数据接口;DL=0,四位数据接口;
N=1,两行显示;N=0,一行显示;
F=1,5´10点阵字符;F=0,5´7点阵字符。
7、CGRAM地址设置
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 0 |
0 1 A5 A4 A3 A2 A1 A0 |
运行时间(250Khz):40us;
功能:设置CGRAM地址。A5~A0=0~3FH。
8、DDRAM地址设置
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 0 |
1 A6 A5 A4 A3 A2 A1 A0 |
运行时间(250Khz):40us;
功能:设置DDRAM地址。
N=0,一行显示A6~A0=0~4FH;
N=1,两行显示,首行A6~A0=00H~2FH,
次行A6~A0=40H~67H。
9、读BF及AC值
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
0 1 |
BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 |
功能:读忙BF值和地址计数器AC值。
其中:BF=1:忙;BF=0:准备好。
此时,AC值意义为最近一次地址设置(CGRAM或DDRAM)定义。
10、 写数据
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
1 0 |
数 据 |
运行时间(250Khz):40us;
功能:根据最近设置的地址性质,数据写入DDRAM或CGRAM内。
11、 读数据
RS R/W |
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 |
1 1 |
数 据 |
运行时间(250Khz):40us;
功能:根据最近设置的地址性质,从DDRRAM或CGRAM数据读出。
一、直接访问方式接口电路及驱动程序
直接访问方式的接口电路如下图所示:
常温型模块V0接VSS,如要调节对比度请参考附图三
直接访问方式的驱动子程序如下:
A15=E的选通信号,A9=R/W,A8=RS
COM EQU 20H ;指令寄存器
DAT EQU 21H ;数据寄存器
CW_Add EQU 8000H ;指令口写地址
CR_Add EQU 8200H ;指令口读地址
DW_Add EQU 8100H ;数据口写地址
DR_Add EQU 8300H ;数据口读地址
1、读BF和AC值
PRO: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_Add ;设置指令口读地址
MOVX A,@DPTR ;读BF和AC值
MOV COM,A ;存入COM单元
POP ACC
POP DPL
POP DPH
RET
2、写指令代码子程序
PR1: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_Add ;设置指令口读地址
PR11: MOVX A,@DPTR
JB ACC.7,PR11 ;判BF=0?是继续
MOV A,COM
MOV DPTR,#CW_Add ;设置指令口写地址
MOVX @DPTR,A ;写指令代码
POP ACC
POP DPL
POP DPH
RET
2、写显示数据子程序
PR2: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_Add ;设置指令口读地址
PR21: MOVX A,@DPTR
JB ACC.7,PR21 ;判BF=0?是继续
MOV A,DAT
MOV DPTR,#DW_Add ;设置数据口写地址
MOVX @DPTR,A ;写数据
POP ACC
POP DPL
POP DPH
RET
4、读显示数据子程序
PR3: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_Add ;设置指令口读地址
PR31: MOVX A,@DPTR
JB ACC.7,PR31 ;判BF=0?是继续
MOV DPTR,#DR_Add ;设置数据口读地址
MOVX A,@DPTR ;读数据
MOV DAT,A ;存入DAT单元
POP ACC
POP DPL
POP DPH
RET
二、间接控制方式接口电路及驱动程序
间接控制方式(4位总线)是利用HD44780所具有的4位数据总线的功能,简化电路接口的一种接口方式。实用电路如下:
常温型模块V0接VSS,如要调节对比度请参考附图三
注:此种接口电路适用4位单片机或8位单片机接口不够用的情况,因4位数据传输时需传输两遍,所以比较麻烦,建议在单片机接口够用时,还是把8位数据口都接上。
间接控制方式的驱动子程序如下:
RS EQU P3.3 ;寄存器选择信号
R/W EQU P3.4 ;读/写选择信号
E EQU P3.5 ;使能信号
1、读BF和AC值
PRO : PUSH ACC
MOV P1,#0FFH ;P1置位,准备读
CLR RS ;RS=0
SETB R/W ;R/W=1
SETB E ;E=1
MOV COM,P1 ;读BF和AC6-4值
CLR E ;E=0
MOV P1,#0FFH ;P1置位,准备读
SETB E ;E=1
MOV A,P1 ;读AC3-0值
CLR E ;E=0
SWAP A ;转换成8位数据
ANL A,#0FH
ANL COM,#0F0H
ORL A,COM
MOV COM,A ;送入COM单元
POP ACC
RET
2、写指令代码子程序
PR1 : PUSH ACC
CLR RS ;RS=0
SETB R/W ;R/W=1
PR11: MOV P1,#0FFH ;P1置位,准备读
SETB E ;E=1
MOV A,P1 ;读BF和AC6-4值
CLR E ;E=0
MOV C,ACC.7 BF->进位位C
SETB E ;E=1
CLR E ;E=0(读AC3-0值)
JC PR11 ;判别BF=1?是转
CLR R/W ;R/W=0
MOV P1,COM ;写入指令代码高4位
SETB E ;E=1
CLR E ;E=0
MOV A,COM ;写入指令代码低四位
SWAP A
MOV P1,A
SETB E ;E=1
CLR E ;E=0
POP ACC
RET
3、写显示数据子程序
PR2 : PUSH ACC
CLR RS ;RS=0
SETB R/W ;R/W=1
PR21: MOV P1,#0FFH ;P1置位,准备读
SETB E ;E=1
MOV A,P1 ;读BF和AC6-4值
CLR E ;E=0
MOV C,ACC.7 BF->进位位C
SETB E ;E=1
CLR E ;E=0(读AC3-0值)
JC PR21 ;判别BF=1?是转
SETB RS ;RS=1
CLR R/W ;R/W=0
MOV P1,DAT ;写入数据高4位
SETB E ;E=1
CLR E ;E=0
MOV A,DAT ;写入数据低4位
SWAP A
MOV P1,A
SETB E ;E=1
CLR E ;E=0
POP ACC
RET
4 、读显示数据子程序
PR3 : PUSH ACC
CLR RS ;RS=0
SETB R/W ;R/W=1
PR31: MOV P1,#0FFH ;P1置位,准备读
SETB E ;E=1
MOV A,P1 ;读BF和AC6-4值
CLR E ;E=0
MOV C,ACC.7 ;BF->进位位C
SETB E ;E=1
CLR E ;E=0(读AC3-0值)
JC PR31 ;判别BF=1?是转
SETB RS ;RS=1
SETB R/W ;R/W=1
MOV P1,#0FFH ;P1置位,准备读
SETB E ;E=1
MOV COM,P1 ;读数据高4位
CLR E ;E=0
MOV P1,#0FFH ;P1置位,准备读
SETB E ;E=1
MOV A,P1 ;读数据低4位
CLR E ;E=0
SWAP A ;转换成8位
ANL A,#0FH
ANL DAT,#0F0H
ORL A,DAT
MOV DAT,A ;数据送入DAT单元
POP ACC
RET
三、应用程序
该程序是根据液晶显示模块HY-4002而编制的。其他规格的字符型液晶显示模块都适用,仅是地址的改动而已。
示例一 初始化子程序
(1)直接访问方式下的初始化子程序
INT MOV A,#30H ;此循环必要,不可删除
MOV DPTR,#CW_Add ;指令口地址设置
MOV R2,#03H ;循环量=3
INT1: MOVX @DPTR,A ;写指令代码
LCALL DELAY ;调延时子程序
DJNZ R2,INT1
MOV COM,#38H ;设置工作方式*
LCALL PR1 ;
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0FH ;设置显示方式
LCALL PR1
RET
(2)间接控制方式下的初始化子程序
INT MOV P1,#30H ;工作方式设置指令代码
CLR RS ;RS=0
CLR R/W ;RW=0
MOV R2,#03H ;循环量=3
INT1 SETB E ;E=1
CLR E ;E=0
LCALL DELAY ;调延时子程序
DJNZ R2,INT1
MOV P1,#28H ;设置工作方式*
SETB E ;E=1
CLR E ;E=0
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0FH ;设置显示方式
LCALL PR1
RET
注:*工作方式参数根据所使用的字符型液晶显示模块的特性而定。
DELAY: MOV R6,#00H ;延时子程序
MOV R7,#00H
DELAY1: NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
初始化演示程序
MAIN: MOV SP,#60H
ANL P3,#0C7H
LCALL INT
示例二 字符的写入方式
HD44780有五种字符写入方式。演示程序如下:
(1)逐字依次输入方式演示程序段
MOV COM,#06H
LCALL PR1
MOV COM,#80H
LCALL PR1
MOV DPTR,#TAB
MOV R2,#12
MOV R3,#00H
WRIN: MOV A,R3
MOVC A,@A+DPTR
MOV DTA,A
LCALL PR2
LCALL DELAY
INC R3
DINZ R2,WRIN
SJMP $
TAB: DB 43H,75H,72H,73H,6FH,72H,20H ;Cursor
DB 57F,72H,69H,74H,65H ;write
(2)光标左移输入方式演示程序段
CL_ENTER: MOV COM,#04H ; 输入方式设置
LCALL PR1
MOV COM,#90H ; 设置DDRAM 地址
LCALL PR1
MOV DPTR,#TABCL ; 设置字表首地址
MOV R2,#12H ; 循环量设置
CL_1 MOV A,R2
DEC A
MOVC A,@A+DPTR ;取字符代码
MOV DAT,A
LCALL PR2 ;写数据
LCALL DELAY ;演示用延时
DJNZ R2,CL_1
SJMP $
TABCL: DB 43H, 75H, 72H, 73H, 6FH, 72H, 20H ;Cursor
DB 4CH, 65H, 66H, 74H, 20H ;Left
DB 53H, 63H, 72H, 6FH, 6CH,6CH ;Scroll
(3)光标右移输入方式演示程序段
CR_ENTER: MOV COM,#06H ; 输入方式设置
LCALL PR1
MOV COM,#80H ; 设置DDRAM 地址
LCALL PR1
MOV DPTR,#TABCR ; 设置字表首地址
MOV R2,#13H ; 循环量设置
MOV R3,#00H
CL_1 MOV A,R3
MOVC A,@A+DPTR ;取字符代码
MOV DAT,A
LCALL PR2 ;写数据
INC R3
LCALL DELAY ;演示用延时
DJNZ R2,CR_1
SJMP $
TABCR: DB 43H, 75H, 72H, 73H, 6FH, 72H, 20H ;Cursor
DB 52H, 69H, 67H, 68H, 74H,20H ;Right
DB 53H, 63H, 72H, 6FH,6CH,6CH ;Scroll
(4)画面左滚动输入方式演示程序段
L_ENTER: MOV COM,#07H ; 输入方式设置
LCALL PR1
MOV COM,#90H ; 设置DDRAM 地址
LCALL PR1
MOV DPTR,#TABL ; 设置字表首地址
MOV R2,#0BH ; 循环量设置
MOV R3,#00H
L_1 MOV A,R3
MOVC A,@A+DPTR ;取字符代码
MOV DAT,A
LCALL PR2 ;写数据
INC R3
LCALL DELAY ;演示用延时
DJNZ R2,L_1
SJMP $
TABL: DB 4CH, 65H, 66H, 74H,20H ;Left Scroll
DB 53H, 63H, 72H, 6FH,6CH,6CH
(5) 画面右滚动输入方式演示程序段
R_ENTER: MOV COM,#05H ; 输入方式设置
LCALL PR1
MOV COM,#90H ; 设置DDRAM 地址
LCALL PR1
MOV DPTR,#TABR ; 设置字表首地址
MOV R2,#0CH ; 循环量设置
R_1 MOV A,R2
DEC A
MOVC A,@A+DPTR ;取字符代码
MOV DAT,A
LCALL PR2 ;写数据
LCALL DELAY ;演示用延时
DJNZ R2,R_1
SJMP $
TABR: DB 52H, 69H, 67H, 68H,74H,20H ;Right Scroll
DB 53H, 63H, 72H, 6FH,6CH,6CH
示例三 建立自定义字符库
字符型液晶显示模块允许用户在HD44780片内CGRAM内(64个字节00H-3FH)自建立8个5×8点阵的字符。建立自定义字符库的子程序如下:
CG_WRITE: MOV COM,#40H ;设置CGRAM地址
LCALL PR1
MOV R2,#64 ;循环量设置
MOV R3,#00H
MOV DPTR,#CGTAB ;设置字模数据首地址
CG1: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R3
DZNJ R2,CG1
RET
CGTAB: DB 08H,0FH,12H,0FH,0AH,1FH,02H,02H ;“年”代码=00H
DB 0FH,09H,0FH,09H,0FH,09H,11H,00H ;“月”代码=01H
DB 1FH,11H,11H,1FH,11H,11H,1FH,00H ;“日”代码=02H
DB 11H,0AH,04H,1FH,04H,1FH,04H,00H ;“$”代码=03H
DB 0EH,00H,1FH,0AH,0AH,0AH,13H,00H ;“元”代码=04H
DB 18H,18H,07H,08H,08H,08H,07H,00H ;“℃”代码=05H
DB 04H,0AH,15H,04H,04H,04H,04H,00H ;“↑”代码=06H
DB 17H,15H,15H,15H,15H,15H,17H,00H ;“10”代码=07H
自定义字符显示演示程序段
LCALL CG_WRITE ;调建立自定义字符子程序
MOV COM,#80H ;设置DDRAM地址
LCALL PR1
MOV DPTR,#TABDY ;设置字表首地址
MOV R2,#18 ;循环量设置
MOV R3,#00H
L00P1 MOV A,R3
MOVC A,@A+DPTR ;取字符代码
MOV DAT,A
LCALL PR2 ;写数据
INC R3
DZNJ R2,L00P1
MOV COM,#0C0H ;设置DDRAM地址
LCALL PR1
MOV R2,#18 ;循环量设置
L00P2 MOV A,R3
MOVC A,@A+DPTR ;取字符代码
MOV DAT,A
LCALL PR2 ;写数据
INC R3
DZNJ R2,L00P2
SJMP $
TABDY: DB 4DH, 44H, 4CH, 53H,34H,30H,32H,36H,36H
DB 20H, 03H, 32H, 35H,35H,2EH,30H,30H,04H
DB 31H, 39H, 39H, 37H,00H,37H 01H,31H,02H
DB 20H, 54H, 3DH, 33H,35H,05H,06H,20H,07H
功能设置指令参数N,F值及显示RAM地址对应表
规格 |
型号 |
N F |
行 |
1 2.. 8 9 10..16 17..20 21.. 24 25..40 |
8´1 |
|
0 0 |
1 |
00 01..07 |
16´1 |
|
1 0 |
1 |
00 01..07 40 41..47 |
16´2 |
|
1 0 |
1 2 |
00 01..07 08 09..0F 40 41..47 48 49..4F |
16´4 |
|
1 0 |
1 2 3 4 |
00 01..07 08 09..0F 40 41..47 48 49..4F 10 11..17 18 19..1F 50 51..57 58 59..5F |
20´1 |
|
0 0 |
1 |
00 01..07 08 09..0F 10..13 |
20´2 |
|
1 0 |
1 2 |
00 01..07 08 09..0F 10..13 40 41..47 48 49..4F 50..53 |
20´4 |
|
1 0 |
1 2 3 4 |
00 01..07 08 09..0F 10..13 40 41..47 48 49..4F 50..53 14 15..1B 1C 1D..23 24..27 54 55..5B 5C 5D..63 64..67 |
24´2 |
|
1 0 |
1 2 |
00 01..07 08 09..0F 10..13 14..17 40 41..47 48 49..4F 50..53 54..57 |
40´2 |
|
1 0 |
1 2 |
00 01..07 08 09..0F 10..13 14..17 18..27 40 41..47 48 49..4F 50..53 54..57 58..67 |
40´4 |
这是双片控制器工作,1、2行和3、4行分别由一个控制器所控制 |
1 0 |
1 2 3 4 |
00 01..07 08 09..0F 10..13 14..17 18..27 40 41..47 48 49..4F 50..53 54..57 58..67 00 01..07 08 09..0F 10..13 14..17 18..27 40 41..47 48 49..4F 50..53 54..57 58..67 |
附录一:HD44780的内部字符集
提示:点击查看图片
附录二:HY系列产品时序图
Flgure1 写时序图(MPU写数据到LCD-II)
Flgure2 读时序图(MPU从LCD-II读数据)
附录三:HY系列产品供电电路