一起玩物联网人工智能小车(ESP32)——使用TFT_eSPI库的1.3寸SPI彩色显示屏(ST7789)教程(三)

摘要:本文介绍TFT_eSPI中文字库的制作方法

前面已经介绍了TFT_eSPI库的基本使用方法,如果你可以将英文显示到液晶屏幕上了,那么就可以尝试本文的制作中文字库,并显示中文到液晶屏幕了,否则还是要先完成上一篇文章的学习。

接下来就开始制作中文字库。TFT_eSPI自带了一个制作字库的基于processing软件的示例工程文件。该文件位于TFT_eSPI安装目录中的\Tools\Create_Smooth_Font\Create_font目录下面,名称为Create_font.pde。

这个pde需要使用processing软件打开,其官方网站为;https://processing.org/,这是一个免费软件,点击“Download”之后,按操作系统选择相应的版本下载就可以了。如下图所示:

Windows版本的Processing不需要进行安装,下载解压缩之后,直接运行“processing.exe”文件就可以了。启动后的processing软件如下图所示:

然后单击“文件”菜单中的“打开”功能,然后选择TFT_eSPI中的Create_font.pde文件。之后找到如下这一段代码,我的文件是在文件的120行。如下图所示:

在这里需要指定生成字库文件所使用的字体文件。在这里有两种方法指定所使用的字体文件。第一种方法是,如果使用的是系统字体文件,那么按快捷键Ctrl+K之后,会打开刚才选择项目文件Create_font.pde的目录,然后在FontFiles文件夹中会有一个名称为“systemFontList.txt”的文件,文件中内容的样子如下所示:

这里列举了系统中所有的字体,每个字体名字前面有一个数字需要,找到你想使用的字体,并记住对应的序号。然后将其配置在processing项目中,给fontNumber变量赋值成该序号值就可以了。

另一种设置字体文件的办法是将字体文件拷贝到与Create_font.pde文件同级的data目录下,然后将文件名赋值给fontName,文件扩展名赋值给fontType变量就可以了。在这里要注意的就是这个文件名是区分大小写的,一定要按照原始文件的大小写来进行配置,否则会找不到字体文件。

接下来是给fontSize和displayFontSize变量赋值,分别是使用的字体大小和显示字体的大小,两者可不同,processing软件会进行相应的转换。

接下来还要配置需要转换哪些文字。因为中文文字非常多,我们也不会所有的文字都用到,因此,在单片机领域,通常只处理我们需要的文字。这样可以大大的节省存储空间。在processing中,采用Unicode编码来设置要转换的字符。在Unicode字符集中,有一些常用的字符比如拉丁字母、希腊字母等,这些字符不是很多,又比较常用可以将其包含进来,具体是通过unicodeBlocks变量来进行配置的。如下图所示:

如果要使用这些字符,就需要把相应行前面的注释符号“//”去掉就可以了。之后生成的字库里面,就有这些字符了。

中文字符由于数量太多,且不连续。因此,通常是需要逐个来指定的。在指定这些中文字符前,需要先找到这些中文字符所对应的Unicode编码。在这里可以使用在线转换工具,比如:http://www.jsons.cn/unicode/。首先在上面的文本框中输入要转换的中文文字——你好!欢迎来到一起玩儿科技!。然后单击“中文 转换 Unicode”按钮,就生成这些文字的Unicode编码了,如下图所示:

在这里需要提醒的是,重复的文字不需要转换多次,例如这句话中有两个“!”,那么在转换的时候,可以去掉一个。另外就是文字的顺序是随意的,不一定按照将来输出的顺序。也就是把你将来要显示的中文语句,剔除掉重复文字之后进行转化就可以了。

转换后的字符串用\u代表是Unicode编码,但在编程中,是用0x代表十六进制数,因此对于转换后的字符串还需要再做一个替换操作,也就是将所有的“\u”替换成“,0x”,然后再去掉第一个逗号,就变成C语言的代码了,替换后的结果如下所示:

0x4f60,0x597d,0xff01,0x6b22,0x8fce,0x6765,0x5230,0x4e00,0x8d77,0x73a9,0x513f,0x79d1,0x6280,0xff01

接着,把这行代码拷贝到processing中,赋值给specificUnicodes数组,形式如下所示:

接下来单击工具栏上的运行按钮。就开始编译、生成TFT_eSPI所需要的字库文件了。如果之前的修改没有任何问题,那么运行之后,将会弹出一个对话框,该对话框显示字库中都包含哪些字符。如下所示:

同时,在你的FontFiles文件夹中也生成了包含字体信息的头文件,文件的命名为:“字体名称+字号.h”,这时,就可以把这个文件拷贝到Arduino IDE的工程文件“.ino”文件所作的目录来进行使用了。或者也可以使用Arduino IDE的“项目”菜单中的“添加文件”功能,将这个头文件引入到Arduino IDE的项目中。

最后,在使用这个中文字体库的时候,需要先用#include引入该头文件。然后在显示之前使用loadFont()方法来加载字体,显示之后再使用unloadFont()将字体从内存中剔除,以节省内存空间。这个可以参照本部分第一篇文章中的代码。

好了,这就是制作中文字库并在TFT_eSPI项目中使用的完整过程。

物联沃分享整理
物联沃-IOTWORD物联网 » 一起玩物联网人工智能小车(ESP32)——使用TFT_eSPI库的1.3寸SPI彩色显示屏(ST7789)教程(三)

发表评论