纠结了2天1602的cgram,请指教

2020-02-05 09:11发布

DD RAM DATA
CHARACTER CODES   CGRAM ADDRESS      CGRAM DATA PETERNS
7 6 5 4 3 2 1 0    5 4 3 2 1 0           7 6 5 4 3 2 1 0
LLLLXLLL                L L L                L H H H H
                        L L H                H L L L L
                        L H L                H L L L L
                        L H H                L H H H L
                   LLL  H L L            XXX L L L L H
                        H L H                L L L L H
                        H H L                H H H H L
                        H H H
    zhey这样显示的就是一个S型
自编字形的列位置对应于CGRA DATA 的0—4 位,行位置对应于
CGRAM ADDRESS 的0—2 位 这个是咋么对应的,还有1602两行5*8的单元格一共有32个,我想问就是自定义的单元格最多是可以定义多少个
希望哪个知道的告诉我一下 ,先谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
grant-liao
1楼-- · 2020-02-05 11:10
我也不是很确定对不对先暂时说下把

1602 是只能显示16个字符,能显示两行
一个字符是8位
内部RAM地址映射表如下
第一行  00H 01H 02H 03H ......27H
第二行  40H 41H 42H 43H ......67H
当我们向00-0F,40H-4FH地址的任何一位写入数据时可以立即显示出来
但是将数据写到10-27H,50-67H的时候必须通过特别指令移位移动到正常的显示区域。
grant-liao
2楼-- · 2020-02-05 11:37
你说的是自己编汉字啊
注意它最多只能写八个汉字,一个汉字是连个字节。
一个字要用到上下两行
Edward3121
3楼-- · 2020-02-05 17:37
我正好刚研究完1602的CGRAM。具体是这样的

1602总共有8x8字节的CGRAM,如果用5x8点阵,就只能写8个字,如果用5x11点阵就只有4个字了。
就是说有8个CGRAM,每个CGRAM有8个字节的空间,这8个字节对应着5x8点阵的8行。
定义好的字符对应的DDRAM地址是0x00-0x07,直接调用就好。

我举个例子:

unsigned char code chs[][8]={             //LCD自造字符数据
0x04,0x04,0x04,0x07,0x04,0x04,0x1f,0x00,  //上
0x1f,0x04,0x04,0x06,0x05,0x04,0x04,0x00};//下
unsigned char code cgramaddr[][8]={          //CGRAM地址
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,  //第一个
0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f};//第二个

char i;

for(i=0;i<2;i++)                          //循环写入第一个和第二个CGRAM
{
        for(j=0;j<8;j++)
        {
                lcdwrite_cmd(cgramaddr[j]);//lcdwrite_cmd是1602命令写入子函数
                lcdwrite_dat(chs[j]);      //lcdwrite_dat是1602数据写入子函数
        }
}

//1602经过初始化之后可以直接执行下列函数

lcdwrite_dat('a'); //这是直接写入字符a
lcdwrite_dat(0x61);//通过写入DDRAM地址显示字符a
lcdwrite_dat(0x00);//写入DDRAM地址显示第一个自定义字符
lcdwrite_dat(0x01);//写入DDRAM地址显示第二个自定义字符
lovewwy
4楼-- · 2020-02-05 17:53
mark.
loveye21
5楼-- · 2020-02-05 22:00
 精彩回答 2  元偷偷看……
liuboyf
6楼-- · 2020-02-06 03:37
一行最多只能显示32位,再多了就会乱码呀

一周热门 更多>