搜索
bottom↓
回复: 9

求助:ST7920控制器的12864液晶 清空GDRAM出错

[复制链接]

出0入0汤圆

发表于 2010-8-31 10:47:49 | 显示全部楼层 |阅读模式
用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,换其它的地址也是这样,我想了很久也不明白为什么,麻烦指教一下,先在这里谢过!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-8-31 12:42:38 | 显示全部楼层
回复【楼主位】piaopiao2009
-----------------------------------------------------------------------

千万别沉啊 这个问题困扰我好久了 大家随便说说自己的看法也行啊

出0入0汤圆

 楼主| 发表于 2010-8-31 17:34:30 | 显示全部楼层
回复【1楼】piaopiao2009
-----------------------------------------------------------------------

千万别沉 自己再顶一下!

出0入0汤圆

 楼主| 发表于 2010-8-31 22:23:43 | 显示全部楼层
回复【2楼】piaopiao2009
-----------------------------------------------------------------------

希望大家多发表一下意见

出0入0汤圆

发表于 2010-9-1 16:28:53 | 显示全部楼层
我也有差不多的问题,唉。。。

出0入0汤圆

 楼主| 发表于 2010-9-1 17:54:54 | 显示全部楼层
回复【4楼】insect2006
-----------------------------------------------------------------------

大家过来发表一下意见啊 太愁人了!

出0入0汤圆

 楼主| 发表于 2010-9-1 20:41:01 | 显示全部楼层
回复【5楼】piaopiao2009
-----------------------------------------------------------------------

大家过来发表一下意见啊 太愁人了!

出0入0汤圆

 楼主| 发表于 2010-9-2 18:17:00 | 显示全部楼层
回复【6楼】piaopiao2009
-----------------------------------------------------------------------

每天一顶!

出0入0汤圆

发表于 2012-8-3 21:44:37 | 显示全部楼层
GDRAM老读不到

出0入0汤圆

发表于 2013-6-4 21:11:15 | 显示全部楼层
跟ST7920的GDRAM分布空间有关系,不是16*32个双字节, 而是 32*16个双字节。X列地址是32个,行地址只有16.
我手头上的是这样的。
也许LCD厂家设计有差异的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表