RGB565


(1)RGB565格式說明

      RGB565彩色模式, 一個像素占兩個字節, 
其中:第一個字節的前5位用來表示R(Red),第一個字節的后三位+第二個字節的前三位用來表示G(Green),第二個字節的后5位用來表示B(Blue)。如:15 14 13 121110 9 8 , 7 6 5 4 3 2 1 0

      而bitmap圖片是一個RGB888,每個像素由3個字節組成,R->8bit,G->8bit,B->8bit;RGB565 
的每個pixels是由2字節組成,R->5bit,G->6bit,B->5bit。轉換的思路是取出原圖的點,對每個采樣進行運算。

(2)互轉程序

#define RGB565_MASK_RED        0xF800   
#define 
RGB565_MASK_GREEN    0x07E0   
#define 
RGB565_MASK_BLUE       0x001F   
void rgb565_2_rgb24(BYTE *rgb24, WORD 
rgb565)    //把一個字的565數據轉成3個分離的R ,G,B
{    
      //extract RGB   
//分離出單獨的RGB
      rgb24[2] = (rgb565 & RGB565_MASK_RED) >> 11;      

      rgb24[1] = (rgb565 & RGB565_MASK_GREEN) >> 5;   
      
rgb24[0] = (rgb565 & RGB565_MASK_BLUE);   

      //amplify the 
image   //往高位移動填滿單字節的8位
      rgb24[2] <<= 3;   
      rgb24[1] 
<<= 2;   
      rgb24[0] <<= 3;   
}

 

USHORT rgb24_2_rgb565(int r, int g, int b)   //應該會損失數據內容
{
        
return (USHORT)(((unsigned(r) << 8) & 0xF800) | 
            
((unsigned(g) << 3) & 0x7E0)  |
            ((unsigned(b) >> 
3)));
}

(3)顯式彩條測試畫面

       如果在一個240X400分辨率的LCD屏幕上,設置三條豎彩帶,分別是紅綠藍,以測試畫面效果。程序如下:

void MainAddressSetting()
{
      U16 xx,yy;
      
CpuMainWriteCom(0x0210);CpuMainWriteData(0x0000);    //X位置起始點
      
CpuMainWriteCom(0x0211);CpuMainWriteData(0x00ef);     //X位置終結點
      
CpuMainWriteCom(0x0212);CpuMainWriteData(0x0000);    //Y位置起始點
      
CpuMainWriteCom(0x0213);CpuMainWriteData(0x018f);     //Y位置終結點
      
CpuMainWriteCom(0x0200);CpuMainWriteData(0x0000);
      
CpuMainWriteCom(0x0201);CpuMainWriteData(0x0000);    //GRAM ADDR SET     

      
CpuMainWriteCom(0x0202);                                                 //GRAM 
WRITE START
      for(yy=0;yy<400;yy++)
      {
           
for(xx=0;xx<80;xx++)                                 
//xx應該只是表示點的個數,並不意味地址
                 CpuMainWriteData(0xf800)
           
for(xx=0;xx<80;xx++)
                 
CpuMainWriteData(0x7e0)
           
for(xx=0;xx<80;xx++)
                 CpuMainWriteData(0x001f)
      
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM