求助:ST7920控制器的12864液晶 清空GDRAM出错
用ATmega128调试12864液晶,程序如下/*******************************************
函数名称:Clear_GDRAM
功 能:清除液晶GDRAM中的随机数据
参 数:无
返回值:无
********************************************/
void Clear_GDRAM(void)
{
uchar i,j;
uint x=0;
while(LCD12864_readBF()); //读忙标志
LCD12864_sendbyte(iCmd,LCDb_EXTCMD1); //扩充指令集,并关闭绘图显示
//写入并显示上半屏幕
for(i=0;i<32;i++) //行地址计数
{
for(j=0;j<8;j++) //列地址计数
{
LCD12864_sendbyte(iCmd,0x80|i);//输入行地址
Delayus(10);
LCD12864_sendbyte(iCmd,0x80|j);//输入列地址
Delayus(10);
LCD12864_sendbyte(iDat,0x00); //输入高位字节数据
Delayus(10);
LCD12864_sendbyte(iDat,0x00); //输入低位字节数据
Delayus(10);
}
}
//写入并显示下半屏幕
for(i=0;i<32;i++)
{
for(j=8;j<16;j++)
{
LCD12864_sendbyte(iCmd,0x80|i);//输入行地址
Delayus(10);
LCD12864_sendbyte(iCmd,0x80|j);//输入列地址
Delayus(10);
LCD12864_sendbyte(iDat,0x00); //输入高位字节数据
Delayus(10);
LCD12864_sendbyte(iDat,0x00); //输入低位字节数据
Delayus(10);
}
}
Delayus(10);
LCD12864_sendbyte(iCmd,LCDb_EXTCMD2); //打开绘图显示
LCD12864_sendbyte(iCmd,LCDb_BASCMD); //还原回基本指令集模式
}
void main(void)
{
uchar tmph=0,tmpl=0;
LCD12864_initial(); //初始化12864液晶,包括:初始化控制端口,清除DDRAM
Clear_GDRAM(); //将GDRAM全部用0覆盖
LCD12864_sendbyte(iCmd,LCDb_EXTCMD1); //进入扩展指令集,关闭绘图显示
LCD12864_sendbyte(iCmd,0x89);//写入垂直方向的地址
LCD12864_sendbyte(iCmd,0x87);//写入水平方向的地址
LCD12864_readbyte(iDat); //先空读一次
tmph=LCD12864_readbyte(iDat);//将高位值赋给tmph
tmpl=LCD12864_readbyte(iDat);//将低位值赋给tmpl
LCD12864_sendbyte(iCmd,LCDb_EXTCMD2); //打开绘图显示
LCD12864_sendbyte(iCmd,LCDb_BASCMD);//进入基本指令集
}
出现的问题:程序一开始就用0将GDRAM完全覆盖,但tmph,tmpl的返回值均不为0,换其它的地址也是这样,我想了很久也不明白为什么,麻烦指教一下,先在这里谢过! 回复【楼主位】piaopiao2009
-----------------------------------------------------------------------
千万别沉啊 这个问题困扰我好久了 大家随便说说自己的看法也行啊 回复【1楼】piaopiao2009
-----------------------------------------------------------------------
千万别沉 自己再顶一下! 回复【2楼】piaopiao2009
-----------------------------------------------------------------------
希望大家多发表一下意见 我也有差不多的问题,唉。。。 回复【4楼】insect2006
-----------------------------------------------------------------------
大家过来发表一下意见啊 太愁人了! 回复【5楼】piaopiao2009
-----------------------------------------------------------------------
大家过来发表一下意见啊 太愁人了! 回复【6楼】piaopiao2009
-----------------------------------------------------------------------
每天一顶! GDRAM老读不到 跟ST7920的GDRAM分布空间有关系,不是16*32个双字节, 而是 32*16个双字节。X列地址是32个,行地址只有16.
我手头上的是这样的。
也许LCD厂家设计有差异的。
页:
[1]