emwin汉字显示 无Unicode怎么办

想利用emwin在stm32的液晶屏上显示汉字,但是能够直接显示的只是英文,所以需要自己手动一波操作来完成汉字显示。从网上搜过类似的文章,但是自己操作得跟人家的不同,最主要的就是对方电脑的记事本有Unicode编码方式,而我的没有,后来琢磨出UTF-16LE编码方式也行,算是解决问题了。进行了许多失败的尝试,最终成功显示汉字,也给需要的人看看。
下面分两步讲解:

1.字库部分

使用工具:FontCvt.exe,记事本
首先确定自己需要的汉字,然后使用记事本编辑即可。
在这里插入图片描述
之后,另存为UnicodeUTF-16LE的编码方式,我的是UTF-16LE,这里就保存为UTF-16LE了。
在这里插入图片描述
汉字已经准备好了,现在就来使用FontCvt工具来生成==.c文件==,方法如下
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
最后,生成song24.c文件就完成字库的制作了。

2.程序部分

(1)将生成好的.c文件添加到Keil工程里,然后调用字体,以下面我使用GUIBuider生成的一个界面为例:
首先,在该界面的.c文件中加入定义:

extern GUI_CONST_STORAGE GUI_FONT GUI_Fontsong24;

如图所示:
在这里插入图片描述

之后,使用句柄与回调函数:

  case WM_INIT_DIALOG:

	GUI_UC_SetEncodeUTF8();  
    hItem = pMsg->hWin;
	FRAMEWIN_SetFont(hItem,&GUI_Fontsong24);
    FRAMEWIN_SetText(hItem, "汉字显示");
    FRAMEWIN_SetTitleHeight(hItem, 32);
    FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);

    hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
    BUTTON_SetFont(hItem, &GUI_Fontsong24);
    BUTTON_SetText(hItem, "汉字显示");

    break;

在这里插入图片描述
(2)更改相关.c文件的编码方式
这些相关的.c文件分别是main.c文件、制作的字库文件以及使用该字体的.c文件,将它们的编码方式更改为UTF8即可,方式和上面的UTF-16LE一样。我就是因为没有将使用song24字体的界面文件firstpageDLG.c更改为UTF8,害得多费了几个小时o(╥﹏╥)o。
在这里插入图片描述
(3)编译属性更改:

在这里插入图片描述
也就是加- -locale=english就可了(前面是两个短横线,中间无空格)

最后,展示结果O(∩_∩)O
在这里插入图片描述
参考:
https://blog.csdn.net/weixin_42157650/article/details/86634119

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值