关于液晶显示屏显示自定义字符
最近在研究液晶显示屏,但是关于自定义字符部分搞不懂怎么写入到CGRAM中的、什么顺序?加*号的语句看不懂,帮我解释下,谢谢!voidlcd1602_write_pic(u...
最近在研究液晶显示屏,但是关于自定义字符部分搞不懂怎么写入到CGRAM 中的、什么顺序?加*号的语句看不懂,帮我解释下,谢谢!
void lcd1602_write_pic(unsigned char add,unsigned char *pic_num)
{
unsigned char i;
add=add<<3; //******************
for(i=0;i<8;i++) //************
{
write_com(0x40|add+i);
write_date(*pic_num++); //*********指针地址是怎么变化的?pic[8][8]中加了中括号我就不能理解了!
}
}
//=============主程序===========
void main()
{int i=0;
//写八个自定义字符到 CGRAM
for(i=0;i<8;i++) //************
lcd1602_write_pic(i,pic[i]); //***********
//显示八个自定义字符
write_com(0x80+0X01);//写指令
for(i=0;i<0x08;i++)
write_date(i);//写数据
}
unsigned char code pic[8][8]={
//{0,0,0,0,0,0,0,0},
{0x04,0x0E,0x15,0x04,0x04,0x04,0x04,0x00},//↑
{0x00,0x04,0x04,0x04,0x04,0x15,0x0E,0x04},//↓
{0x00,0x04,0x08,0x1F,0x08,0x04,0x00,0x00},//←
{0x00,0x04,0x02,0x1F,0x02,0x04,0x00,0x00},//→
{0x04,0x04,0x0A,0x1F,0x1F,0x0A,0x04,0x04},//占位符
{0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00},//8
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};
这个add=add<<3;最主要的就是这个CGRAM地址搞不懂 展开
void lcd1602_write_pic(unsigned char add,unsigned char *pic_num)
{
unsigned char i;
add=add<<3; //******************
for(i=0;i<8;i++) //************
{
write_com(0x40|add+i);
write_date(*pic_num++); //*********指针地址是怎么变化的?pic[8][8]中加了中括号我就不能理解了!
}
}
//=============主程序===========
void main()
{int i=0;
//写八个自定义字符到 CGRAM
for(i=0;i<8;i++) //************
lcd1602_write_pic(i,pic[i]); //***********
//显示八个自定义字符
write_com(0x80+0X01);//写指令
for(i=0;i<0x08;i++)
write_date(i);//写数据
}
unsigned char code pic[8][8]={
//{0,0,0,0,0,0,0,0},
{0x04,0x0E,0x15,0x04,0x04,0x04,0x04,0x00},//↑
{0x00,0x04,0x04,0x04,0x04,0x15,0x0E,0x04},//↓
{0x00,0x04,0x08,0x1F,0x08,0x04,0x00,0x00},//←
{0x00,0x04,0x02,0x1F,0x02,0x04,0x00,0x00},//→
{0x04,0x04,0x0A,0x1F,0x1F,0x0A,0x04,0x04},//占位符
{0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00},//8
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};
这个add=add<<3;最主要的就是这个CGRAM地址搞不懂 展开
1个回答
展开全部
1602设定CGRAM的内容,要一行一行的设定,每一行对应一个CGRAM地址,
每行5点,共8行液空灶,因此要将8行的字模数据都写入CGRAM。
定义一行的内容,分两步:
1.设定行地址(CGRAM地址):
用到的闹扮命令如下:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 1 DATA
其中:DB5 DB4 DB3为字符号(每八行第一行的地址,也是将来被调用显示的地址亏旁),
DB2 DB1 DB0为行号(共可设定八行)。
add=add<<3:依次选定开头地址。比如说第二个字符0000 0010变成0001 0000,DB5 DB4 DB3
为010,也就代表第2个地址。
每行5点,共8行液空灶,因此要将8行的字模数据都写入CGRAM。
定义一行的内容,分两步:
1.设定行地址(CGRAM地址):
用到的闹扮命令如下:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 1 DATA
其中:DB5 DB4 DB3为字符号(每八行第一行的地址,也是将来被调用显示的地址亏旁),
DB2 DB1 DB0为行号(共可设定八行)。
add=add<<3:依次选定开头地址。比如说第二个字符0000 0010变成0001 0000,DB5 DB4 DB3
为010,也就代表第2个地址。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询