1 LCD1602显示自定义字符
1.1 怎么显示?
要想让LCD显示自定义字符,只需要把要显示的字符写入LCD的CGRAM寄存器中,再读取出来就行了。
问题是,怎么将自定义字符写入CGRAM呢?
根据数据手册可知,CGRAM起始地址为0x40,那么第一个字符的CGRAM地址为0x40~0x47(一个字节占用一个地址,一个自定义字符为8个字节),依次第二个字符地址为0x48~0x4F第三个为0x50~0x57···
那么在我们将自定义的字符写入到CGRAM后,LCD1602内部的DDRAM(字符显示地址数据存贮器)会给你自定义的字符分配一个显示地址,第一个字符的显示地址为0x00,第二个字符的显示地址为0x01,第三个的显示地址为0x02···
1.2 具体实现步骤
- 打开取模软件(附件:https://pan.baidu.com/s/1c366Zc8)
- 文件->新建->8*8
- 在右5*8点阵中写入想要显示的字符
- 设置
- 生成字模(八个十六进制的数)
1.3 简短参考程序
1 code uchar User[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//自定义字符℃ 2 LCD_write_com(0x40); //设定 CGRAM 地址 3 for(i=0;i<8;i++ ) 4 { 5 LCD_write_data(User[i]); //写入自定义图形 ℃ 6 } 7 LCD_write_com(0x8d); //设定屏幕上的显示位置 8 LCD_write_data(0x00); //从 CGRAM 里取出自定义图形显示
2 LCD12864显示汉字
在真实的LCD12864中,是存在字符的。但是在proteus仿真中的12864是不支持显示汉字的!
不支持显示汉字,并不是不能显示汉字!
在这里仅介绍LCD12864在仿真中的汉字取模问题。
- 打开取模软件(附件:https://pan.baidu.com/s/1c366Zc8)
- 文件->新建->16*16(在中国汉字中,任何一个汉字都可以用16*16点阵表示!)
- 在16*16点阵中画出先要显示的汉字
- 设置
- 生成字模(十六个十六进制的数)
【注】12864显示数字、字母等,也要设置取模字符串,但不再是16*16像素,而为16*8像素。但是相应的显示程序中,也不能在用显示汉字的for(16),而要改成for(8)。