I.简介
littlevgl 6.0 显示中文,从查找的资料来看,一种利用内部flash,通过官方工具或网友制作的工具,生成.C文件放到内部编译,在声明下,就可以显示中文。这种方法只是用少量字体,毕竟这种做法很占用内部flash。
另外两种是放到SD卡或外部spiflash。放到SD卡的网上的实例大多是基于7.0的,暂时没有去实现,我这里实现的是从SD卡拷贝到spiflash中(利用工具生成.bin 和.c )。还有看到网上有从SD卡上电拷贝到外部SDRAM中,用法和第一种相似,这种做法从理论上来看速度应该更快。
II实现过程
I. 第一种实现方式
使用工具生成,注意选择XBF字体,内部大数组,点击保存生成china_test的文件,添加工程中,注意声明下,就可以使用了。
代码如下:
#include "lvgl/lvgl.h"
LV_FONT_DECLARE(china_test);
void lv_chinest_test(void)
{
static lv_style_t style;
lv_obj_t * label;
label =lv_label_create( lv_scr_act(), NULL);
lv_obj_set_size( label, 100, 100);
lv_style_copy(&style, &lv_style_plain);
style.body.main_color = LV_COLOR_BLACK;
style.body.grad_color = LV_COLOR_BLACK;
style.text.font = &china_test;
lv_obj_set_style(label, &style);
lv_label_set_text(label, "中文测试");
printf("1234");
}
显示结果如下

II. 字库放到spiflash显示汉字
首先制作字库文件,可以添加常用汉字,字号和字体样式自主选择 ,如下图,加入常用汉字
会生成HZ.bin 和 HZ.c 两个文件,把HZ.bin 放大SD卡,一定要记得路径例如“/HZ.bin”,利用文件系统打开这个文件,让后拷贝到spiflash 某个固定地址,一定要记得起始地址(这个非常重要),我是利用正点原子汉字显示实验历程修改的,主要修改你要写入的文件(字库)路径,其他不做修改。这里只做测试,替换掉UNIGBK_PATH路径
//字库存放在磁盘中的路径
u8const GBK24_PATH="/SYSTEM/FONT/GBK24.FON"; //GBK24的存放位置
u8const GBK16_PATH="/SYSTEM/FONT/GBK16.FON"; //GBK16的存放位置
u8const GBK12_PATH="/SYSTEM/FONT/GBK12.FON"; //GBK12的存放位置
//u8const UNIGBK_PATH="/SYSTEM/FONT/UNIGBK.BIN"; //UNIGBK.BIN的存放位置
u8const UNIGBK_PATH="/HZ.bin";
正点原子默认代码按KEY0自动升级上述四个字库,有个函数可以单独升级某个字库,这里没做测试,直接修改u8 update_font(u16 x,u16 y,u8 size,u8 src),屏蔽掉其他三个文件的读写即可。
修改代码如下:添加两处#if 0 #end注释其他即可
//先查找文件是否正常
strcpy((char*)pname,(char*)src); //copy src内容到pname
strcat((char*)pname,(char*)UNIGBK_PATH)
LittlevGL中文显示方案

最低0.47元/天 解锁文章

1203

被折叠的 条评论
为什么被折叠?



