在使用stm32显示文本时,首先要使用字模软件生成字库,如下:
这里,使用的是Consolas字体,点阵大小为16*16(汉字),此时英文字体的大小为8*16,宽度为汉字字体的一半,然后设置选项参数(包括阴码、逐行扫描、十六进制等),具体配置如下:
然后就可以生成字库,首先生成ASCII字库:
会生成两个文件,即字库 + 索引:
因为ASCII编码表的0 ~ 31是不可见字符,从32(空格)33(感叹号!)...开始才是文本字符,因此为了节省空间,直接删去前面多余不用的不可见字符,操作如下:
删除后:
然后利用PCtoLCD取模软件重新加载txt文件生成字库:
利用WinHex软件打开字库,来看一下数据,如果生成正确的话,第一个16字节(英文为16,中文为32)应该为空格,第二个为感叹号:
直接验证一下,这个生成的字符图案的正确性:
/* 生成的字模数据 */
uint8_t test_module[] = {
0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,
0x18,0x08,0x00,0X08,0X18,0X00,0X00,0X00
};
void Display_char_test(void)
{
uint8_t i = 0, j = 0, k = 0;
/* 字模数据有16行 */
for (i = 0; i < 16; i++)
{
/* 每行16列,2字节 */
for (j = 0; j < 1; j++)
{
/* 每个字节8位 */
for (k = 0; k < 8; k++)
{
/* 对每个数据字节从高位到低位进行遍历 */
if ((test_module[i * 1 + j] & (0X80 >> (k))) != 0)
{
printf("*");
}
else
{
printf(" ");
}
}
}
printf("\n");
}
}
串口打印结果如下:
这和取模软件的图案一致:
接下来,生成中文GB2312 宋体 的字库:
同样的,看一下生成的字库数据:
同理,根据生成的数据,尝试打印“顿号”:
至此,字库数据生成完毕。