新手上路 
 
	- 积分
 - 25
 
        - 金钱
 - 25 
 
       - 注册时间
 - 2018-2-1
 
      - 在线时间
 - 4 小时
 
 
 
 | 
 
 
 
正点原子MCU屏使用为16位真彩色显示,image2lcd软件可生成相应数组(数组太大了) 
图像数据头如下: 
const unsigned char gImage_code[153608] = { 0X10,0X10,0X00,0XF0,0X01,0X40,0X01,0X1B,  ......  }  (前八个是图片数组信息,后面的是数据) 
定义为: 
typedef struct _HEADCOLOR 
{ 
   unsigned char scan; 
   unsigned char gray; 
   unsigned short w; 
   unsigned short h; 
   unsigned char is565; 
   unsigned char rgb; 
}HEADCOLOR;  
scan: 扫描模式  
- Bit7: 0:自左至右扫描,1:自右至左扫描。
 - Bit6: 0:自顶至底扫描,1:自底至顶扫描。
 - Bit5: 0:字节内象素数据从高位到低位排列,1:字节内象素数据从低位到高位排列。
 - Bit4: 0:WORD类型高低位字节顺序与PC相同,1:WORD类型高低位字节顺序与PC相反。
 - Bit3~2: 保留。
 - Bit1~0: [00]水平扫描,[01]垂直扫描,[10]数据水平,字节垂直,[11]数据垂直,字节水平。
 
  gray: 灰度值  
   灰度值,1:单色,2:四灰,4:十六灰,8:256色,12:4096色,16:16位彩色,24:24位彩色,32:32位彩色。 
 
w: 图像的宽度。 
 
h: 图像的高度。 
is565: 在4096色模式下为0表示使用[16bits(WORD)]格式,此时图像数据中每个WORD表示一个象素;为1表示使用[12bits(连续字节流)]格式,此时连续排列的每12Bits代表一个象素。 
在16位彩色模式下为0表示R G B颜色分量所占用的位数都为5Bits,为1表示R G B颜色分量所占用的位数分别为5Bits,6Bits,5Bits。 
在18位彩色模式下为0表示"6Bits in Low Byte",为1表示"6Bits in High Byte"。 
在24位彩色和32位彩色模式下is565无效。 
 
rgb: 描述R G B颜色分量的排列顺序,rgb中每2Bits表示一种颜色分量,[00]表示空白,[01]表示Red,[10]表示Green,[11]表示Blue。 
 
显示程序: 
//图像显示函数,适用Image2Lcd V2.9 图像编译软件  By:gaofei                 
void Picture_Draw(u16 S_x,u16 S_y,const unsigned char *pic) 
{ 
        u32 i=8,len; 
        u16 temp,x,y,D_x=0,D_y=0; 
         
        x=(uint16_t)((pic[2]<<8)+pic[3])-1;       //获取图片的宽度 
        y=(uint16_t)((pic[4]<<8)+pic[5])-1;       //获取图片的高度 
         
        len=2*x*y;        //获取图片像素点数 
         
        while(i<(len+8))      //显示所有像素点 
        { 
                temp=(uint16_t)((pic<<8)+pic[i+1]);      //image2lcd生成的是8位数组,十六位真彩色图像生成为高8位和低8位,这儿将其转换成16位数据, 
                if(D_x>x) {D_x=0;D_y++;}         //逐行显示 
                LCD_Fast_DrawPoint(S_x+D_x,S_y+D_y,temp);    //画点,拼凑图像,调用正点原子快速画点函数 
                D_x++; 
                i=i+2; 
        } 
         
} 
 
 
 
 |   
 
 
 
 |