[本文由创梦电子工作室原创,转载请注明出处
2004.04.19]
显示自定义字符
前面所述的是调用模块内部的字符库,将它显示出来,有些特殊的字符字符库里并没有,要显示它,怎么办呢?
LCM模块提供了8个自定义字符的的功能,可以通过自己设置字符的点阵图.
以常用的5x8点阵来说,只要能用5x8点阵表达出来的图形,都可以显示出来,如:
图
A
查看CGROM字符代码表,可以发现
从00000000B~00000111B地址的内容是没有定义的
它是留给用户自己定义的,当用户定义好CGRAM中的内容后可以像调用CGROM字符一样来调用自定义好的字符
如设定好了00000001B的内容,
;-----------------------------------------------------------------------
mov
a,#03H
;字符的显示位置
03
ORL a,#80H
;第8位置1,以符合DDRAM地址设置指令格式
call LCM_COMMAND_00
;设定DDRAM地址
(显示位置)
mov a,#
00000001B
;读00000001B字符码
call LCM_COMMAND_10
;设定DDRAM数据
(显示字符)
;------------------------------------------------------------------------------------
设定CGRAM内容(自定义点阵图形)
设定CGRAM的内容,如果5x8点阵的话,每行5点,共8行,要一行一行设定CGRAM的内容,每一行对应一个CGRAM
地址。
定义一行的内容,分两步:
1.设定行地址
2.设定行内容
1.
设定行地址(CGRAM地址):
用到的命令如下
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
1
|
DATA
|
|
|
|
|
|
|
|
|
|
|
|
可以看出CGRAM地址是6位
CGRAM地址(6位)
|
5 4 3
|
2 1 0
|
自定义字符码
范围000~111
|
字符码行地址
范围000~111
|
比如定义001号字符第一行,那它的CGRAM地址码就是001001B,对应的CGRAM地址指令码就是01001001B
2.
设定CGRAM数据(内容)
指令码如下
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
1
|
0
|
DATA
|
指令的DATA部分就是点阵要显示的内容,DATA的一位数代表一个点的显示与否,0表示不显示,1表示要显示。由于我们用的是5x8的,一行只有5点,所以DATA部分低5位有效,比如要定义一行
那它的CGRAM数据就是
00010101B
DDRAM数据
|
CGRAM地址
|
CGRAM数据
|
7 6 5 4 3 2 1 0
|
5 4 3
|
2 1 0
|
7 6 5 4 3 2 1 0
|
0000xaaa
|
aaa
|
0 0 0
|
x x x 0 0 1 0 0
|
0 0 1
|
x x x 0 0 1 0 0
|
0 1 0
|
x x x 1 0 1 0 1
|
0 1 1
|
x x x 1 1 1 1 1
|
1 0 0
|
x x x 1 1 1 1 1
|
1 0 1
|
x x x 1 1 1 1 1
|
1 1 0
|
x x x 1 0 0 0 1
|
1 1 1
|
x x x 0 0 0 0 0
|
注:aaa
为用户定义的字符码 000~111B
xxx 表示无效位 可任意值
CGRAM显示的是图A的图形
1 2
|