1602自定义字模方法 CGRAM

来源:互联网 发布:java改string编码 编辑:程序博客网 时间:2024/05/16 08:06
 LCD1602是5X8点阵,分二行,每行十六个显示单元。因为点数少,其显示汉字的效果并不好,单个显示单元只能显示一些简单的汉字。但是其字形并不好看。
    查看LCD1602的CGROM字符代码表,可以发现 从00000000B~00000111B(00H~07H)地址的内容是没有定义的,它是留给用户自己定义的,用户可以通过先定义LCD1602的CGRAM中的内容,然后就可以同调用CGROM字符一样来调用自定义好的字符
    那么如何设定CGRAM中的内容呢?首先我们要把所要编写的字符对应于5X8点阵的“字模”提取出来,我们可以通过相关的软件来提取,也可以手工提取。说白了也就是将点阵的某一行中有显示的点用1表示,无显示的点用0表示,以此形成该行对应的字模数据。

    设定CGRAM的内容,要一行一行的设定,每一行对应一个CGRAM,5X8点阵,每行5点,共8行,因此每个字模要由8Byte数据构成;由于每行只有5个点,所以每个字节只有低5位有效,高3位无效,可设置为000。写好后,就可像调用CGROM字符一样来来调用它了。


 定义一行的内容,分两步:


     1. 设定行地址(CGRAM地址):


        用到的命令如下:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0   0    0    1    DATA[5:0]
其中:DB5DB4DB3为字符号,也就是你将来要显示该字符时要用到的字符地址(即字符码)。//所以地址要加上0X40;

      DB2DB1DB0为行号;DATA[5:0]含义可以参考下图。


图1


2. 设定CGRAM数据(内容)指令码如下:


RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1   0  DATA[7:0]
其中:DATA[4:0]对应于每行5点的字模数据。
           DATA[7:5]可为任何数据,一般取“000”。



比如要在地址0x01处自定义“土”字。那么首先将其字符码确定,对应的DB[5:3]=001,行地址为000到111共8行。

查看数据手册,自定义字符的指令为:


图2

可知要自定义一个字符,对应的字符地址+行地址共有8个,为0x48--0x4F,每次发送完地址之后要发相应的数据。数据(由图1中得出)如下:分别为0x04,0x04,0x0e,0x04,0x04,0x1f,0x00,0x00。每个数据的高三位均为0.



0 0