找回密码
 注册
搜索
查看: 1316|回复: 7

[讨论] 我的hx8347为什么不能对lcd读数据?

[复制链接]
发表于 2008-4-14 09:49:07 | 显示全部楼层 |阅读模式
这是初始化代码:
Init_data(0x0042,0x0008);
        //DelayMs(50);
        //gamma setting
        Init_data(0x0046,0x00B4);
        Init_data(0x0047,0x0043);
        Init_data(0x0048,0x0013);
        Init_data(0x0049,0x0047);
        Init_data(0x004A,0x0014);
        Init_data(0x004B,0x0036);
        Init_data(0x004C,0x0003);
        Init_data(0x004D,0x0046);
        Init_data(0x004E,0x0005);
        Init_data(0x004F,0x0010);
        Init_data(0x0050,0x0008);
        Init_data(0x0051,0x000a);

        //Window setting
        Init_data(0x0002,0x0000);
        Init_data(0x0003,0x0000);
        Init_data(0x0004,0x0000);
        Init_data(0x0005,0x00EF);
        Init_data(0x0006,0x0000);
        Init_data(0x0007,0x0000);
        Init_data(0x0008,0x0001);
        Init_data(0x0009,0x003F);

        DelayMs(10);
        Init_data(0x0001,0x0006);
        Init_data(0x0016,0x00C8);  
        Init_data(0x0023,0x0095);
        Init_data(0x0024,0x0095);
        Init_data(0x0025,0x00FF);
        Init_data(0x0027,0x0002);
        Init_data(0x0028,0x0002);
        Init_data(0x0029,0x0002);
        Init_data(0x002A,0x0002);
        Init_data(0x002C,0x0002);
        Init_data(0x002D,0x0002);

        Init_data(0x003A,0x0001);
        Init_data(0x003B,0x0001);
        Init_data(0x003C,0x00F0);   
        Init_data(0x003D,0x0000);

        DelayMs(20);
        Init_data(0x0035,0x0038);
        Init_data(0x0036,0x0078);
        Init_data(0x003E,0x0038);
        Init_data(0x0040,0x000F);
        Init_data(0x0041,0x00F0);
        Init_data(0x0038,0x0000);   
        //power setting
        Init_data(0x0019,0x0049);
        Init_data(0x0093,0x000A);

        DelayMs(10);

        Init_data(0x0020,0x0020);  

        Init_data(0x001D,0x0003);  
        Init_data(0x001E,0x0000);

        Init_data(0x001F,0x0009);  

        Init_data(0x0044,0x0053);
        Init_data(0x0045,0x0010);
        DelayMs(10);
        Init_data(0x001C,0x0004);
        DelayMs(20);
        Init_data(0x0043,0x0080);   
        DelayMs(50);
        Init_data(0x001B,0x000a);   
        DelayMs(40);
        Init_data(0x001B,0x0012);   
        DelayMs(40);

//display on setting
        Init_data(0x0090,0x007F);
        Init_data(0x0026,0x0004);

        DelayMs(40);
        Init_data(0x0026,0x0024);
        Init_data(0x0026,0x002C);
        DelayMs(40);  
        //        Init_data(0x0070,0x0008);
        Init_data(0x0070,0x0008);
        Init_data(0x0026,0x003C);
        Init_data(0x0057,0x0002);
        Init_data(0x0055,0x0000);
        Init_data(0x0057,0x0000);

设置窗口:
boolean disppriv_set_window(unsigned short left, unsigned short top, unsigned short width, unsigned short height)
{
        if((left+width)<=240)
            {
                   // m_sa_select(3);
                Init_data(0x0002, left>>8);
                Init_data(0x0003, left);
                Init_data(0x0006, top>>8);
                Init_data(0x0007, top);
       
                //Init_data(0x0050,left);
                Init_data(0x0004, (left+width-1)>>8);
                Init_data(0x0005, left+width-1);
                //Init_data(0x0052,top);
                Init_data(0x0008, (top+height-1)>>8);
                Init_data(0x0009, top+height-1);
                return TRUE;
            }
      else
                  return FALSE;
}
。。。。。。
。。。。。。

对lcd读数据:

disppriv_set_window(i,j,1,1);                    //先固定窗口大小为一个象素
                    LCD_COMMAND(0x0022);   
      for(j=0; j<320; j++)
      {   
            for(i=0; i<240; i++)
            {
                      disppriv_set_window(i,j,1,1);                    //先固定窗口大小为一个象素
                    LCD_COMMAND(0x0022);                            //发送读取该象素对应的RAM指令
                    buf = *((volatile unsigned short int *) 0x40100000);       //读取第一个无效数据
                  
                    buf = *((volatile unsigned short int *) 0x40100000);       //读取有效数据
                                                 *pt =buf;                                                   //将读到的数据存入数组中
                     pt++;
                    }
         }

同样的一段代码,换了一块lcd后,改了初始化代码,一点问题都没有。麻烦大家帮看看,是什么地方出了问题,谢谢!
 楼主| 发表于 2008-4-14 22:22:40 | 显示全部楼层
怎么都没有人了解的么?难道只有我们一家在用hx8347的lcd?
点评回复

使用道具 举报

发表于 2008-4-15 11:09:27 | 显示全部楼层
你首先看看硬件连接有没有问题,lcd的pin脚与板上的pin脚是否一致,然后确认屏是否有问题;再看看初始化代码是否有问题,与ic是否一致,当然你还要注意看看你对比的那块屏的ic在读写时是否跟8347一样,是否有移位了。
点评回复

使用道具 举报

 楼主| 发表于 2008-4-15 15:04:27 | 显示全部楼层
目前的情况是,能正常显示和浏览图片,在小窗口显示连续的几张图片的时候有问题,就不能够刷屏幕,也不能对指定区域的lcd屏幕读数据(读gram,在我们的cpu和gram做了地址映射,数据是0x40100000,命令是0x40000000)
点评回复

使用道具 举报

 楼主| 发表于 2008-4-15 22:49:20 | 显示全部楼层
刷屏的问题解决了,是我们的cmmand(0x22);连续读了多次,本来在显示一真图片的时候只需要一次就行了的,结果我们是在每行调用一次.但是读lcd的问题还没解决!
点评回复

使用道具 举报

 楼主| 发表于 2008-4-17 16:14:01 | 显示全部楼层
搞定了,原来是数据读的方式有问题,只能8位读
点评回复

使用道具 举报

发表于 2008-4-23 13:53:59 | 显示全部楼层
建议斑竹给楼主加分。楼主做了实事,这个经验对大家很有帮助。
点评回复

使用道具 举报

发表于 2008-4-25 16:49:25 | 显示全部楼层
学习到了,谢谢楼主,请问用的gamma值是根据什么来调的
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-15 20:37 , Processed in 0.046720 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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