一.基础知识
HD44780 液晶芯片内置了 DDRAM、CGROM 和 CGRAM。HD44780 内置了 192 个常用字符的字模,
存于字符产生器 CGROM(Character Generator ROM)中,另外还有 8 个允许用户自定义的字符产生 RAM,
称为 CGRAM(Character Generator RAM)。
5X8 点阵的字符
定义一行的内容,分两步:
1. 设定行地址(CGRAM 地址):
用到的命令如下:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 1 DATA
其中:DB5DB4DB3 为字符号,也就是你将来要显示该字符时要用到的字符地址。
DB2DB1DB0 为行号。
2. 设定 CGRAM 数据(内容)指令码如下:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 0 DATA
其中:DB4DB3DB2DB1DB0 对应于每行 5 点的字模数据。
DB7DB6DB5 可为任何数据,一般取“000”。
置地址发生存储器地址
利用写命令指令, 调用该条语句。D7 - D0 所以从0100 xxxx 开始(也是从0x40开始构造字符)。
显示地址.,所以要与0x80进行 "或"操作。
例如想显示在第一行第五个位置
数据写入 DDRAM 或 CGRAM 指令
如果写入地址在0x40 -0x47,则显示代码的地址在0x00处。
unsigned char code str[] = {0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00}; //一共八行,所以给第5行一个八位数据。
/*******************************************************************************
Function : LCD1602_WriteCharacter
Description : LCD1602自定义字符
Input : unsigned char cha :输入的字符放的位置
Output : 无
Return : 无
*******************************************************************************/
void LCD1602_WriteCharacter(unsigned char cha)
{
unsigned char i;
LCD_WriteCommand(0x40); //起始地址0x40
for (i = 0;i < 8;i++)
{
LCD_WriteData(str[i]);
}
LCD_WriteCommand(0x80 | cha); //显示字符
LCD_WriteData(0x00);
}