用单片机控制字符型液晶显示模块Word文档下载推荐.docx
《用单片机控制字符型液晶显示模块Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《用单片机控制字符型液晶显示模块Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
![用单片机控制字符型液晶显示模块Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/25/1742c566-07c8-4b0b-af3d-3f5e512161ab/1742c566-07c8-4b0b-af3d-3f5e512161ab1.gif)
r
#
3
C
S
c
s
$
4
D
T
d
t
%
5
E
U
e
u
&
6
F
V
f
v
’
7
G
W
g
w
1000
(
8
H
X
h
x
1001
)
9
I
Y
i
y
1010
*
:
J
Z
j
z
1011
+
;
K
[
k
{
1100
<
L
¥
l
|
1101
-
=
M
]
m
}
1110
.
>
N
^
n
→
1111
/
?
O
_
o
←
HS162-4液晶模块部的控制器共有11条控制指令,如表2所示,
指令
指令码
说明
RS
R/W
D0
D1
D2
D3
D4
D5
D6
D7
清屏
清显示,光标回位
光标返回
ADD=0时,回原位
输入方式
I/D
决定是否移动以及移动方向
显示开关
D-显示,C-光标,B-光标闪烁
移位
S/C
R/L
移动光标及整体显示
功能设置
DL
DL-数据位数,L-行数,F-字体
CGRAM地址设置
A5A4A3A2A1A0
设置CGRAM的地址
DDRAM地址设置
A6A5A4A3A2A1A0
设置DDRAM的地址
忙标志/读地址计数器
BF
AC6AC5AC4AC3AC2C1AC0
读出忙标志位(BF)及AC值
CGRAM/DDRAM数据写
写数据
将容写入RAM中
CGRAM/DDRAM数据读
读数据
将容从RAM中读出
补充说明
I/D:
1-增量方式、0-减量方式
S:
1-位移
S/C:
1-显示移位、0-光标移位
R/L:
1-右移、0-左移
DL:
1-8位、0-4位
N:
1-2行、0-1行
F:
1-5X10字体、0-5X7字体
BF:
1-正在执行部操作、0-可接收指令
DDRAM:
显示数据RAM
CGRAM:
字符发生器RAM
ACG:
CGRAM地址
ADD:
DDRAM地址及光标地址
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置
指令2:
光标复位,光标返回到地址00H
指令3:
光标和显示模式设置
光标移动方向,高电平右移,低电平左移
S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标
B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标
指令6:
功能设置命令
高电平时为4位总线,低电平时为8位总线
低电平时为单行显示,高电平时双行显示
F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符
指令7:
字符发生器RAM地址设置
指令8:
指令9:
读忙信号和光标地址BF:
忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据
指令11:
读数据
HS162-4液晶显示模块可以和单片机AT89C51直接接口,电路如图1所示。
P32
P33
P34
P10
P11
P12
P13
P14
P15
P16
P17
RS
RW
D0
D1
D2
D3
D4
D5
D6
D7
AT89C51
单片机
HS162-41
液晶模块
VDD
VO
VSS
VDD+5V
10K
电位器
VSSGND
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3是HS162-4的部显示地址.
显示位置
10
11
12
13
14
15
16
第1行
80
81
82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
第2行
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
即,第1行的显示地址应为:
80H+显示位置;
第2行的显示地址应为:
C0H+显示位置。
以下是在液晶模块的第1行显示数字“0-9:
;
=>
?
”,在第2行显示字符“A—P”的程序:
RSEQUP3.2
RWEQUP3.3
EEQUP3.4
DATEQU30H;
命令单元
DAT1EQU31H;
数据单元
AJMPSTART
ORG0030H
START:
MOVDAT,#01H;
清屏
ACALLENABLE
MOVDAT,#38H;
8位2行5x7点阵
MOVDAT,#0FH;
显示器开、光标开、闪烁开
MOVDAT,#06H;
文字不动,光标自动右移
MOVR3,#2
MOVDAT,#080H;
写入显示起始地址(第一行第一个位置)
MOVDAT1,#30H;
数字0的ASCII码
ACALLDSP0
MOVDAT,#0C0H;
写入显示起始地址(第二行第一个位置)
MOVDAT1,#61H;
字母a的ASCII码
SJMP$
DSP0:
MOVR2,#16
DSP1:
ACALLRDY
MOVP1,DAT1
SETBRS
CLRRW
CLRE
SETBE
INCDAT1
DJNZR2,DSP1
RET
ENABLE:
ACALLRDY;
写入控制命令的子程序
MOVP1,#0FFH
CLRRS
MOVP1,DAT
RDY:
MOVP1,#0FFH;
判断液晶显示器是否忙的子程序
SETBRW
JBP1.7,RDY;
如果P1.7为高电平表示忙就循环等待
END
程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。
注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序RDY,然后输入显示位置的地址,最后输入要显示的字符的ASCII码。
液晶显示示例程序
RSEQUP3.2
RWEQUP3.3
EEQUP3.4
DATEQU30H
DAT1EQU31H
MOVDAT,#01H;
CLEAR
MOVDAT,#38H;
8bit2Rol5*7
MOVDAT,#0FH;
OPENLCD
MOVDAT,#06H;
LEFTTORIGHT
MOVR3,#2
MOVDAT,#080H;
FirstAddr
MOVDAT1,#30H
MOVDAT,#0C0H
MOVDAT1,#61H
HERE:
RET;
SJMPHERE
MOVR2,#16
MOVP1,DAT1
CLRRW
nop
CLRE
INCDAT1
MOVP1,#0FFH
CLRRS
MOVP1,DAT
MOVR1,#0FH
DDT8:
MOVR0,#0FFH
DDT7:
DJNZR0,DDT7
DJNZR1,DDT8
END