LCD1602液晶显示完全资料
下面给出一段字符串移动显示的例子:
void display_lcd_byte(uchar y,uchar x,uchar z)
{
if(y)
{
x+=0x40;
}
x+=0x80;
write(x,0);
write(z,1);
}
void display_lcd_text(uchar y,uchar x,uchar table[])
{
uchar z=0;
uchar t;
t=strlen(table)+x;
while(xt)
{
display_lcd_byte(y,x,table[z]);
x++;
z++;
}
display_lcd_byte(y,x,' ');
}
//前两个子程序是显示子程序
void main()
{
uchar i;
LCD1602();
init();
for(i=16;i>=0;i--) //这里的循环就是为了字符串从后往前显示
{
display_lcd_text(0,i,table0); //i减一次,首个字符就往前去一位
delay(200);
}
while(1);
}
二、显示自定义字符:
要想显示自定义字符,首先就得取得想要的图形或者字符的字模数组,可以通过手动提取的方法,取得相应的字模。
如下图所示,对应一个字符显示区域。每8个字节,组成一个点阵数组。
要想让某一格子显示就让那一位为1,每行自定义5位,全白为0x00;全黑为0x1f。一共8行,每行一位数据。
将生成的点阵数组保存到CGRAM存储器中,生成自定义字符。1602内部CGRAM用于自定义的字符点阵的存储,总共64字节。由上一步点阵提取可知,每一个字符由8个字节数据组成。所以64字节CGRAM存储器,能够存储8组自定义字符的点阵数组。按照CGRAM地址划分为 0~7为第一组,8~15为第二组,依次类推56~63为第8组数据。
CHARACTER CODE是数据的显示地址,0-7的范围,能存储8位自定义的字符。(能存八个自定义,每个字符存放的)
CGRAM ADDRESS是存储数据的地址,从0-63共64个字节.存储64个数据。我们写入的数据是0x40~0x7F,共128位。(把字符数组内的8个数送进这8个地址,每存完一个字符的8位,下次地址直接转到0x48)
CGRAM DATA 字模每一行5位数据存
内部常用字符显示时,显示编码是从0x20开始的。0x00~0x0F是专门留给自定义字符显示的。0x00~0x07和0x08~0x0F内容是一样的。例如:调用0x01 位置和0x09位置,显示的内容是一样的。
LCD1602自定义显示字符的方式共四步,如下面所示:
1.设置向CGRAM中存入这个数据.初始地址是0x40。然后存一位向后加8,
总共能存8位自定义的字符。
2.然后可以把自定义的数据送入到LCD的CGRAM中。
3.向LCD写指令,送入需要显示数据的地址。
4.向LCD写指令,把显示的数据指向LCD的CGRAM存储的位置,显示出自定义字符。
举例如下:
1.建立一个字符数组;
uchar LCD_Data1[]={0x01,0x03,0x1D,0x11,0x1D,0x03,0x01,0x00};
2.设置CGRAM地址,写指令;
Write_LCD(0x40,0);
3.把数据送入CGRAM地址内;
for(i = 0; i 8 ; i ++ )
{
Write_LCD(LCD_Data1[i],1);
}
4.写需要显示的位置指令;
Write_LCD(0x80,0);
5.把CGRAM的0位的数据送向LCD1602,显示数据存储的数据;
Write_LCD(0x00,1);
评论