4. 图片的显示 在显示屏的例程中,提供图片的显示函数,那我们能否来显示自己的图片内容呢? 1)色彩模式的辨识 在我们显示自己的图片前,首先要弄清楚它所使用的色彩模式及图片格式等。 通过对例程中对色彩的定义,可以分析出它所使用的是16位色,色彩模式为R5G6B5。
2)制备图片显示的数据 例程中所提供的图片显示函数为: void LCD_PicDraw(u8 X_Location, u16Y_Location, u8 Height, u16 Width, uc8 *Pptr) { u32xid = 0; u32ImgAdds = 0; u32yid = 0; u32i = 0, j = 0, color = 0; xid= X_Location; yid= Y_Location; LCD_StarterSet(xid, yid); for(i = 0; i < Height; i++) // <240 { LCD_WriteRAMPrior(); for (j = 0; j < Width; j++) //<320 { ImgAdds = (i * Width * 2) + (j * 2); color = Pptr[ImgAdds] << 8 | (Pptr[ImgAdds + 1]); LCD_WriteRAM(color); } xid++; LCD_StarterSet(xid, yid); } } 由此看出,所显示的图片是以字节为单位进行存储,每个像素点采用的色彩模式为R5G6B5。 为此我们要显示一幅图片可以用Image2Led软件来把图片转换为数组数据来存储,其转换前的参数设置如图1所示,生成的文件如图2所示。 图1 参数设置 图2 生成的文件 3)图片的显示 显示图3所示效果的主程序为: int main(void) { LCD_Init(); LCD_Config(); LCD_Clear(0x2c5c); LCD_BackColorSet(0x2c5c); LCD_TextColorSet(Yellow); LCD_CharDisplayA(Line1,70, 0); LCD_CharDisplayA(Line1,90, 1); LCD_CharDisplayA(Line1,110, 2); LCD_CharDisplayA(Line1,130, 3); LCD_CharDisplayA(Line1,150, 4); LCD_PicDraw((100),(80), 68, 56, gImage_jsj); while (1); } 图3 显示效果 值得指出的是当图片较大时,会出现异常现象,导致无法完成程序下载,见图4和图5所示。 图4通过编译 图5下载时出现崩溃
|