搜索
bottom↓
回复: 20

TK499用USB方式下载emWin任意外置XBF字库,从此不用再为显示汉字而发愁

[复制链接]

出0入143汤圆

发表于 2020-6-12 02:23:26 | 显示全部楼层 |阅读模式
本帖最后由 tiky 于 2020-6-12 02:27 编辑

TK499的QSPI例程及emWin例程已经出了很久,但是还有不少网友没利用起来。现在出一个单独的例程给大家参考一下,配置就一两步就行了。附件压缩包给出了7种字体,与下载程序一样,同样的下载程序的方式弹出U盘后,7种字库可以一起拖到U盘中就下载进去了(注意:字库相对较大,几MB级别,要等U盘退出后才算完成,一般是进度条走尽的两倍时间)。
关键代码如下:
  1. /*================================ ST16  宋体16*16 ================================*/
  2. GUI_FONT stFont;//字体名称
  3. static GUI_XBF_DATA xbfData;
  4. static int stFont_addr;//字体地址,用函数自动获取
  5. static int _cbGetData(U32 off,U16 NumBytes, void *pVoid, void *pBuffer)
  6. {
  7.         QSPIReadGroup(stFont_addr + off, pBuffer, NumBytes);
  8.         return 0;
  9. }

  10. void CreateXBF_Font(void)
  11. {
  12.         GUI_XBF_CreateFont(&stFont,&xbfData,GUI_XBF_TYPE_PROP,_cbGetData,0);
  13. }

  14. GUI_FONT * SetFont_Xbf(void)
  15. {
  16.   return ((GUI_FONT *)GUI_SetFont(&stFont));
  17. }
复制代码


然后用这个函数初始化一下字库,主要作用是获取字库的地址交给emWin,有多少个字库就要给多少个地址,要不emWin找不着这个字库的地址用不了。
  1. void init_all_Font_addr(void)
  2. {
  3.         stFont_addr=get_file_address_NOR_FLASH("ST16.xbf");
  4.         XKF24_Font_addr=get_file_address_NOR_FLASH("JDXKF24.xbf");
  5.         xkj32_Font_addr=get_file_address_NOR_FLASH("JXK32.xbf");

  6.         SMG24_Font_addr=get_file_address_NOR_FLASH("SMG24.XBF");
  7.         SMG36_Font_addr=get_file_address_NOR_FLASH("SMG36.XBF");
  8.         SMG48_Font_addr=get_file_address_NOR_FLASH("SMG48.XBF");
  9.         SMG64_Font_addr=get_file_address_NOR_FLASH("SMG64.XBF");       
  10. }
复制代码


然后就可以随便用了,应用样例:
  1. //========== 存储在外部QSPI FLASH里的全字库 字体 ==========//
  2. void XBF_Disp(void)//宋体16*16
  3. {
  4.        
  5.         CreateXBF_Font();         //create extern flash font lib
  6.         GUI_UC_SetEncodeUTF8();
  7.         SetFont_Xbf();
  8.         GUI_SetColor(GUI_RED);
  9.         GUI_DispStringHCenterAt("欢迎使用好钜润科技产品",240,200);
  10.         GUI_DispStringHCenterAt("当前全字库存储在外部QSPI FLASH",240,220);
  11.   GUI_DispStringHCenterAt("emWin外部XBF字库演示",240,240);
  12. }
复制代码


TK050_XBF.jpg

基于评估板与5寸屏的演示效果,其它屏基本一样,因为只涉及QSPI底层,所以基于TK499评估板的其它屏也同样适用
参考程序: TK499_emWin_TK050F5590_XBF横屏版_支持二次开发.rar (15.95 MB)

出0入143汤圆

 楼主| 发表于 2020-6-12 11:13:49 来自手机 | 显示全部楼层
我们的芯片主战液晶屏,低功耗都不太好,屏背心一亮,都是mA级别的了,芯片上功耗省点没起到太大作用

出0入143汤圆

 楼主| 发表于 2020-6-12 18:35:34 | 显示全部楼层
bias 发表于 2020-6-12 14:55
那个仿数码管的数字字体,能分享个.c数组文件吗

另外这个仿数码管字体,能不能显示英文ASCII码 ...


这个字库带有ASCII,如下图。这个是直接生成XBF文件,emWin的字库格式,不是数组形式的,字库也在附件中了。
ASCII.jpg

出0入143汤圆

 楼主| 发表于 2020-6-12 19:14:48 | 显示全部楼层
bias 发表于 2020-6-12 14:55
那个仿数码管的数字字体,能分享个.c数组文件吗

另外这个仿数码管字体,能不能显示英文ASCII码 ...

上面那个字库的源Windowns下TTF文件找不到了,我发现Windowns自带有一个DigifaceWide的数码管字体,好像漂亮一点,发上来,你要多大多小,自己生成就可以了。
源TTF字库文件: digifaw.rar (18.43 KB)

出0入143汤圆

 楼主| 发表于 2020-6-15 12:17:28 | 显示全部楼层
lordor 发表于 2020-6-13 23:13
源文件放上面了

另外楼主能不能介绍一下,你的源文件,怎么修改适配4.1寸,一体的屏,电阻屏的。

你这个是4.3寸Smart Board,我们工程师做了一个例程给你,你看一下有什么不同,可以显示7种字体的,这个Smart Board的FLASH空间有16MB,放个十几种字库都可以了
程序: TK499_emWin_SmartBoard_TK043F1168_XBF横屏版_支持二次开发.rar (14.88 MB)

出0入143汤圆

 楼主| 发表于 2020-6-15 12:29:57 | 显示全部楼层
你的程序也是可以的,只不过忘记了调用init_all_Font_addr();这个函数了,这个函数的作用是把所有字库的起始地址取出来,存在全局变量中,emWin要调用随时可以取用

出0入143汤圆

 楼主| 发表于 2020-6-15 23:41:40 | 显示全部楼层
Bootloader是要2020年6月份后的才有这个高级的功能,你上面回贴说升级到最新的了,我以为你的就是最新的;最新的Bootloader在论坛里的TK499评估板资料专贴里也有。

出0入143汤圆

 楼主| 发表于 2021-4-8 00:36:23 | 显示全部楼层
在例程的main函数里有这个注释,你看一下是否符合这个要求:

//============= emWin的xbf字体支持汉字,要求用UTF8编码格式,所以xbf_font.c这个文件是UTF8编码格式,printf在UTF8文件下是打印不了中文的=============//
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 07:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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