wr_lcd(comm,0x88);//第二行的水平起始地址为88H
//以后写入数据后,地址计数器(AC)会自动加一
for(k=0;k16;k++)
{
wr_lcd(dat,*ptr++);//写入32*16个图片数据因为一个数据是8位的,所以这一次就相当于写入了8个数据,所以一共为8个32*16模块
//这些16进制数,一共可以控制32*16*8个像素
}
}
wr_lcd(comm,0x36);//打开绘图显示
wr_lcd(comm,0x30);//回到基本指令集
}
最后在说一个简单的函数,拿到液晶时,我们希望检查一下液晶是不是好的,是不是所有的点都是可用的,就要写一个检查液晶的函数。原理很简单,就是把液晶的所有的像素点都点亮,看看有没有坏点就可以了,函数,如下,和写GDRAM,清除GDRAM的函数基本相同,只不过向GDRAM中写入的是全1,点亮所有的像素点,函数如下:
voidcheck_screen(void)//点亮全屏,检查坏点
{
uchari,j,k;
wr_lcd(comm,0x34);//打开扩展指令集操作GDRAM是扩展指令集
i=0x80;
for(j=0;j32;j++)//写入第一行的8个32*16模块
{
wr_lcd(comm,i++);//写入第一行8个32*16模块的垂直起始地址,在写入地址时,要先输入垂直地址,再输入水平地址
wr_lcd(comm,0x80);//第一行水平的起始地址为80H
//以后写入数据后,地址计数器(AC)会自动加一
for(k=0;k16;k++)
{
wr_lcd(dat,0xff);//全部点亮屏幕
//写入32*16个图片数据因为一个数据是8位的,所以这一次就相当于写入了8个数据,所以一共为8个32*16模块
}
}
i=0x80;
for(j=0;j32;j++)//写入第二行的8个32*16模块
{
wr_lcd(comm,i++);//写入第一行8个32*16模块的垂直起始地址,在写入地址时,要先输入垂直地址,再输入水平地址
wr_lcd(comm,0x88);//第二行的水平起始地址为88H
//以后写入数据后,地址计数器(AC)会自动加一
for(k=0;k16;k++)
{
wr_lcd(dat,0xff);//全部点亮屏幕
//写入32*16个图片数据因为一个数据是8位的,所以这一次就相当于写入了8个数据,所以一共为8个32*16模块
}
}
wr_lcd(comm,0x36);//打开绘图显示
wr_lcd(comm,0x30);//回到基本指令集
}