搜索
bottom↓
回复: 6

彩屏显示单色就可以,显示渐变色就不行

[复制链接]

出0入0汤圆

发表于 2012-4-26 18:38:44 | 显示全部楼层 |阅读模式
2.6寸的彩屏,芯片ili9320,显示彩条或单色的图片都可以,就是显示渐变的图片不行,显示渐变色时,红色好像正常,绿色和蓝色有很多洋红色在里面,附上寄存器设置,请大家给看看问题出在哪了?
LCD_Write_COM(0x00,0xE5);LCD_Write_DATA(0x08,0x00);
                  LCD_Write_COM(0x00,0x00); LCD_Write_DATA(0x00,0x01);
                 delayms(100);
       
        LCD_Write_COM(0x00,0x01); LCD_Write_DATA(0x01,0x00);
        LCD_Write_COM(0x00,0x02); LCD_Write_DATA(0x07,0x00);
        LCD_Write_COM(0x00,0x03); LCD_Write_DATA(0x10,0x30);
        LCD_Write_COM(0x00,0x04); LCD_Write_DATA(0x00,0x00);        
        LCD_Write_COM(0x00,0x08); LCD_Write_DATA(0x02,0x02);        
        LCD_Write_COM(0x00,0x09); LCD_Write_DATA(0x00,0x00);        
        LCD_Write_COM(0x00,0x0A); LCD_Write_DATA(0x00,0x00);
        LCD_Write_COM(0x00,0x0C); LCD_Write_DATA(0x00,0x00);
        LCD_Write_COM(0x00,0x0D); LCD_Write_DATA(0x00,0x00);
        LCD_Write_COM(0x00,0x0F); LCD_Write_DATA(0x00,0x00);
        //*************Power On sequence ****************//
        LCD_Write_COM(0x00,0x10); LCD_Write_DATA(0x00,0x00);
        LCD_Write_COM(0x00,0x11); LCD_Write_DATA(0x00,0x07);
        LCD_Write_COM(0x00,0x12); LCD_Write_DATA(0x00,0x00);
        LCD_Write_COM(0x00,0x13); LCD_Write_DATA(0x00,0x00);
        delayms(200);

        LCD_Write_COM(0x00,0x10); LCD_Write_DATA(0x17,0xb0);
        LCD_Write_COM(0x00,0x11); LCD_Write_DATA(0x01,0x37);
        delayms(50);
        LCD_Write_COM(0x00,0x12); LCD_Write_DATA(0x01,0x3b);
        delayms(50);
        LCD_Write_COM(0x00,0x13); LCD_Write_DATA(0x0e,0x00);
        LCD_Write_COM(0x00,0x29); LCD_Write_DATA(0x00,0x09);
        delayms(50);

        LCD_Write_COM(0x00,0x20); LCD_Write_DATA(0x00,0x00);
                  LCD_Write_COM(0x00,0x21); LCD_Write_DATA(0x00,0x00);

        // ----------- Adjust the Gamma Curve ----------//
        LCD_Write_COM(0x00,0x30); LCD_Write_DATA(0x03,0x07);
        delayms(50);
        LCD_Write_COM(0x00,0x31); LCD_Write_DATA(0x05,0x07);
        LCD_Write_COM(0x00,0x32); LCD_Write_DATA(0x05,0x00);
        LCD_Write_COM(0x00,0x35); LCD_Write_DATA(0x03,0x04);
        LCD_Write_COM(0x00,0x36); LCD_Write_DATA(0x00,0x07);
        LCD_Write_COM(0x00,0x37); LCD_Write_DATA(0x07,0x07);
        LCD_Write_COM(0x00,0x38); LCD_Write_DATA(0x00,0x07);
        LCD_Write_COM(0x00,0x39); LCD_Write_DATA(0x00,0x07);
        LCD_Write_COM(0x00,0x3C); LCD_Write_DATA(0x06,0x00);       
        LCD_Write_COM(0x00,0x3D); LCD_Write_DATA(0x07,0x00);
        delayms(5);
               
        //------------------ Set GRAM area ---------------//
        LCD_Write_COM(0x00,0x50); LCD_Write_DATA(0x00,0x00);
        LCD_Write_COM(0x00,0x51); LCD_Write_DATA(0x00,0xEF);
        LCD_Write_COM(0x00,0x52); LCD_Write_DATA(0x00,0x00);        
        LCD_Write_COM(0x00,0x53); LCD_Write_DATA(0x01,0x3F);       
        LCD_Write_COM(0x00,0x60); LCD_Write_DATA(0x36,0x00);
        LCD_Write_COM(0x00,0x61); LCD_Write_DATA(0x00,0x01);        
        LCD_Write_COM(0x00,0x6A); LCD_Write_DATA(0x00,0x00);
       
        //-------------- Partial Display Control ---------//
        LCD_Write_COM(0x00,0x80); LCD_Write_DATA(0x00,0x00);       
        LCD_Write_COM(0x00,0x81); LCD_Write_DATA(0x00,0x00);       
        LCD_Write_COM(0x00,0x82); LCD_Write_DATA(0x00,0x00);       
        LCD_Write_COM(0x00,0x83); LCD_Write_DATA(0x00,0x00);       
        LCD_Write_COM(0x00,0x84); LCD_Write_DATA(0x00,0x00);       
        LCD_Write_COM(0x00,0x85); LCD_Write_DATA(0x00,0x00);
       
        //-------------- Panel Control -------------------//
        LCD_Write_COM(0x00,0x90); LCD_Write_DATA(0x00,0x10);       
        LCD_Write_COM(0x00,0x92); LCD_Write_DATA(0x00,0x00);
        LCD_Write_COM(0x00,0x93); LCD_Write_DATA(0x00,0x03);
        LCD_Write_COM(0x00,0x95); LCD_Write_DATA(0x01,0x10);
        LCD_Write_COM(0x00,0x97); LCD_Write_DATA(0x00,0x00);       
        LCD_Write_COM(0x00,0x98); LCD_Write_DATA(0x00,0x00);
        LCD_Write_COM(0x00,0x07); LCD_Write_DATA(0x01,0x33);
                 delayms(300);


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2012-4-26 20:39:16 | 显示全部楼层
沉的好快,自己顶一下!

出0入0汤圆

发表于 2012-4-26 20:49:57 | 显示全部楼层
要加 插值   我用双线性插值 效果很好  

出0入0汤圆

发表于 2012-4-26 20:52:29 | 显示全部楼层
算法比较简单 百度一下你就知道   

出0入0汤圆

发表于 2012-4-26 20:53:05 | 显示全部楼层
算了 把我的代码贴出来吧   这个可是原创哇

//-------------------------------渐变填充 ----------------------------------------------------------
         #define         Gradient_Vertical 1
         #define         Gradient_Horizontal 0
void Fill_Gradient        (u16 x,u16 y,u16 b,u16 h,u32 StartColor,u32 EndColor,char Dir)
        {
        double bl,n,p;
        char i=0;
        u16 R,G,B,R1,G1,B1,R2,G2,B2,color;
                                         //00    00  00
        R1=         (StartColor>>8)&0xf800;
        R2=        (EndColor>>8)&0xf800;
        G1=         (StartColor>>5)&0x07e0;
    G2=         (EndColor>>5)&0x07e0;
        B1=         (StartColor>>3)&0x001f;
    B2=         (EndColor>>3)&0x001f;

        if(Dir)           //  Gradient_Vertical
                 {
                        bl=1/(double) h;
                        for(i=0;i<h;i++)
                                 {
                                n=i*bl;
                                p=n-(int)n ;
                                R=(int)(R1*(1-p)+R2*p)&0xf800;
                                G=(int)(G1*(1-p)+G2*p)&0x07e0;
                                B=(int)(B1*(1-p)+B2*p)&0x001f;
                                color=R+G+B;
                                LCD_Fill(  x,  y+i,  b,1,color);
                                }
          }else
                  {
                           bl=1/(double) b;
                        for(i=0;i<b;i++)
                                 {
                                n=i*bl;
                                p=n-(int)n ;
                                R=(int)(R1*(1-p)+R2*p)&0xf800;
                                G=(int)(G1*(1-p)+G2*p)&0x07e0;
                                B=(int)(B1*(1-p)+B2*p)&0x001f;
                                color=R+G+B;
                                LCD_Fill(  x+i,  y,  1,h,color);
                                }
                  
                  
                  
                  }

        }
//-------------------------------渐变填充完毕----------------------------------------------------------

出0入0汤圆

发表于 2012-4-26 22:15:40 | 显示全部楼层
支持原创~~~~~~~~~~~

出0入0汤圆

 楼主| 发表于 2012-4-27 07:37:24 | 显示全部楼层
hexixiaomao 发表于 2012-4-26 20:53
算了 把我的代码贴出来吧   这个可是原创哇

//-------------------------------渐变填充 ---------------- ...

非常感谢hexixiaomao的回复,我原本以为只是哪个寄存器没设置正确,我先是用图片取模软件显示图片时出现这样的问题,然后又用渐变的三个颜色图片取模试验得到一楼的效果,不知这个原创的代码适不适用于图片取模?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 23:08

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

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