找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1685|回复: 0
打印 上一主题 下一主题
收起左侧

ESK32-360开发板TFT屏显示功能及扩展(4)

[复制链接]
跳转到指定楼层
楼主
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下载时出现崩溃

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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