[开发板与模块] 【ESK32-30519 + ESK32-21001测评】图片及中文显示

[复制链接]
 楼主| jinglixixi 发表于 2022-9-22 10:25 | 显示全部楼层 |阅读模式
<
本帖最后由 eltonchang2001 于 2022-11-9 11:54 编辑

利用ESK32-A2A31显示模块可以实现中文及图片显示,其实现方法如下:
1. 图片显示
在例程中提供了图片显示函数void LCD_PicDraw(u8 X_Location, u16 Y_Location, u8 Height, u16Width, uc8 *Pptr)
,它可以指定图片的显示位置、图片的长度与宽度等。
为了显示所需要的图片,可通过相应的工具来生成对应的数组文件,其后缀为*.h。
1.jpg
图1 生成工具

这样处理后,其显示效果如图2所示。
2.jpg
图2  显示效果

但此时所显示的图片效果与字符的显示方向是反向的,为此需要将显示函数改为如下的内容:
  1. void LCD_PicDraw(u8 X_Location, u16 Y_Location, u8 Height, u16 Width, uc8 *Pptr)
  2. {
  3.   u32 xid = 0;
  4.   u32 ImgAdds = 0;
  5.   u32 yid = 0;
  6.   u32 i = 0, j = 0, color = 0;
  7.   xid = Height + X_Location;
  8.   yid = Y_Location;
  9.   LCD_StarterSet(xid, yid);
  10.   for (i = 0; i < Height; i++)
  11.   {
  12.     LCD_WriteRAMPrior();
  13.     for (j = 0; j < Width; j++)
  14.     {
  15.       ImgAdds = (i * Width * 2) + (j * 2);
  16.       color = Pptr[ImgAdds] << 8 | (Pptr[ImgAdds + 1]);
  17.       LCD_WriteRAM(color);
  18.     }
  19.          xid++;
  20.     LCD_StarterSet(xid, yid);
  21.   }
  22. }


经修改,使用如下的主程序就可获得图3所示的效果。
  1. int main(void)
  2. {
  3.   LCD_Init();
  4.   LCD_Config();
  5.   LCD_BackColorSet(Black);
  6.   LCD_TextColorSet(Yellow);
  7.   LCD_StringLineDisplay(Line3, "   Photo     ");
  8.   LCD_PicDraw((50), (50), 80, 160, gImage_k);
  9.   while (1);
  10. }

3.jpg
图3修正后的显示效果

2. 中文显示
要实现中文显示,可使用字模提取软件来构建字库,见图4所示。
4.jpg
图4 提取字模
为实现中文的显示,所配置的显示函数如下:
  1. void LCD_hzDisplay(u32 Line_Num, u32 Column, u8 Ascii)
  2. {
  3.             LCD_hzDraw (Line_Num, Column, &ASCII_FontA_Table[Ascii * 32]);
  4. }


  5. void LCD_hzDraw(u32 X_Location, u32 Y_Location, u8 *Cptr)
  6. {
  7.   u32 xid = X_Location;
  8.   u32 i = 0, j = 0;
  9.   u16 u = 0;
  10.   LCD_StarterSet(X_Location, Y_Location);
  11.   for (i = 0; i < 16; i++)
  12.   {
  13.         LCD_WriteRAMPrior();
  14.                    u=Cptr[i*2];
  15.         for (j = 8; j>0; j--)
  16.         {
  17.           if ((u & (1 << (j-1))) == 0x00)
  18.           {
  19.               LCD_WriteRAM(Color_Back);
  20.           }
  21.           else
  22.           {
  23.               LCD_WriteRAM(Color_Text);
  24.           }
  25.         }
  26.         u=Cptr[i*2+1];
  27.         for (j = 8; j>0; j--)
  28.         {
  29.           if ((u & (1 << (j-1))) == 0x00)
  30.           {
  31.              LCD_WriteRAM(Color_Back);
  32.           }
  33.           else
  34.           {
  35.              LCD_WriteRAM(Color_Text);
  36.           }
  37.         }
  38.                    xid++;
  39.         LCD_StarterSet(xid, Y_Location);
  40.   }
  41. }

这样通过下面的主程序就可获得图5所示的显示效果。
  1. int main(void)
  2. {
  3.   LCD_Init();
  4.   LCD_Config();
  5.   LCD_BackColorSet(Black);
  6.   LCD_TextColorSet(Yellow);
  7.   LCD_hzDisplay(Line1, 70, 0);
  8.   LCD_ hzDisplay (Line1, 90, 1);
  9.   LCD _hzDisplay (Line1, 110, 2);
  10.   LCD_ hzDisplay (Line1, 130, 3);
  11.   LCD_ hzDisplay (Line1, 150, 4);
  12.   while (1);
  13. }

5.jpg
图5 显示效果

iamrookie 发表于 2022-9-23 15:52 | 显示全部楼层
楼主自己写的 Image2LCD 上位机工具吗
 楼主| jinglixixi 发表于 2022-9-23 16:25 | 显示全部楼层
iamrookie 发表于 2022-9-23 15:52
楼主自己写的 Image2LCD 上位机工具吗

没有,是现有的工具软件。
sanxingnote7 发表于 2022-10-1 13:53 | 显示全部楼层
这个是自带的屏幕吗               
yeates333 发表于 2022-10-1 14:06 | 显示全部楼层
能够加载汉字库吗              
geraldbetty 发表于 2022-10-1 14:27 | 显示全部楼层
如何实现中文和英文的 混合显示呢
 楼主| jinglixixi 发表于 2022-10-2 17:07 | 显示全部楼层
sanxingnote7 发表于 2022-10-1 13:53
这个是自带的屏幕吗

不是,是自配的。
 楼主| jinglixixi 发表于 2022-10-2 17:08 | 显示全部楼层
yeates333 发表于 2022-10-1 14:06
能够加载汉字库吗

少量的没问题,完整的字库要存放到外部FLASH存储器。
 楼主| jinglixixi 发表于 2022-10-2 17:10 | 显示全部楼层
geraldbetty 发表于 2022-10-1 14:27
如何实现中文和英文的 混合显示呢

简单的处理方法是分别进行定位显示,自动处理的方法是按显示内容的内码来区分处理。
chenjun89 发表于 2022-10-4 16:18 来自手机 | 显示全部楼层
屏幕大图片小
Henryko 发表于 2022-10-4 19:46 | 显示全部楼层
能加汉字字库吗
 楼主| jinglixixi 发表于 2022-10-5 08:59 | 显示全部楼层
Henryko 发表于 2022-10-4 19:46
能加汉字字库吗

全字库没戏
 楼主| jinglixixi 发表于 2022-10-5 09:00 | 显示全部楼层

受内存限制
htmlme 发表于 2022-10-5 16:50 | 显示全部楼层
这个不知道刷新的速度怎么样              
uiint 发表于 2022-10-5 17:48 | 显示全部楼层
Image2LCD 可以生成多大的图片?
loutin 发表于 2022-10-5 19:28 | 显示全部楼层
能不能使用gui来显示汉字和图片呢
 楼主| jinglixixi 发表于 2022-10-6 08:56 | 显示全部楼层
loutin 发表于 2022-10-5 19:28
能不能使用gui来显示汉字和图片呢

可能够呛,占用MCU的存储空间比较大。
 楼主| jinglixixi 发表于 2022-10-6 08:56 | 显示全部楼层
htmlme 发表于 2022-10-5 16:50
这个不知道刷新的速度怎么样

速度一般
 楼主| jinglixixi 发表于 2022-10-6 08:57 | 显示全部楼层
uiint 发表于 2022-10-5 17:48
Image2LCD 可以生成多大的图片?

常规的图片没问题
sanxingnote7 发表于 2022-10-9 20:30 | 显示全部楼层
HT32F1654单片机的性能怎么样   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

517

主题

2932

帖子

39

粉丝