STM32 显示屏显示中文

目录

一、软件硬件

二、中文显示原理

三、字模

四、代码

五、总结


一、软件硬件

软件:keil5

硬件:stm32

二、中文显示原理

        已知字模是图形数据,而图形在计算机中是由一个个像素点组成的,所以字模实质是一个个像素点数据。为方便处理,我们把字模定义成方块形的像素点阵,且每个像素点只有0和1这两种状态(可以理解为单色图像数据),下图两个宽、高为16x16的像素点阵组成的两个汉字图形,其中的黑色像素点即为文字的笔迹。计算机要表示这样的图形,只需使用16x16个二进制数据位,每个数据位记录一个像素点的状态,把黑色像素点以“1”表示,无色像素点以“0”表示即可。这样的一个汉字图形,使用16x16/8=32个字节来就可以记录下来。

三、字模

1、字模的生成工具是PCtoLCD2002生成字模,想要显示屏显示中文必须从字模模板中生成数组,然后拷贝进工程

2、数据的设置

以   你好  为例子生成 48*48 的字模

四、代码

1.将“lcd_show_zn.c”“GB2312_H2424.FON”模块添加至工程

(注意:“GB2312_H2424.FON”模块只需放进USER就行)

2.创建 48*48 的字体

lcd_show_zn.c部分代码

unsigned char zm48x48_index[]="你好";
 
uint8_t ZN48x48_Table[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x3C,0x00,0x0E,0x00,0x00,
0xC0,0x3F,0x00,0x0F,0x00,0x00,0xFE,0x3F,0x80,0x9F,0xFF,0x3F,0xFF,0x1F,0xC0,0xFF,
0xFF,0x7F,0xFF,0x0F,0xE0,0xFF,0xFF,0x7F,0xFF,0x07,0xF8,0xFF,0xFF,0x7F,0xFF,0x03,
0xFC,0x3F,0x00,0x78,0xFF,0x01,0xFF,0x03,0x00,0x78,0xFF,0xC1,0xFF,0x00,0x00,0x78,
0xFF,0x81,0x7F,0x80,0x01,0x1C,0xE0,0x01,0x0F,0x80,0x03,0x06,0xE0,0x01,0x00,0x80,
0x07,0x00,0xE0,0x01,0x00,0x80,0x03,0x00,0xE0,0x00,0xE0,0xC0,0x83,0x01,0xE0,0x00,
0xE0,0xC0,0x83,0x07,0xE0,0x00,0xF0,0xC0,0x83,0x07,0xE0,0x00,0xF0,0xC0,0x83,0x0F,
0xE0,0x00,0x78,0xC0,0x03,0x1F,0xE0,0x00,0x7C,0xC0,0x03,0x7F,0xE0,0x00,0x7E,0xC0,
0x03,0x7F,0xE0,0x00,0x3F,0xC0,0x03,0x7F,0xF0,0x80,0x3F,0xC0,0x03,0x7E,0xF0,0xE0,
0x1F,0xC0,0x03,0x7E,0x70,0xF8,0x1F,0xC0,0x03,0x7C,0x70,0xE0,0x0F,0xC0,0x03,0x7C,
0x70,0x80,0x07,0xE0,0x03,0x78,0x70,0x00,0x00,0xE0,0x03,0x00,0x70,0x00,0x00,0xE0,
0x03,0x00,0x70,0x00,0x00,0xE0,0x03,0x00,0x60,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"你",0*/
 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0xFE,0x1F,
0x38,0x80,0x1F,0xFF,0xFF,0x7F,0x38,0xE0,0x1F,0xFF,0xFF,0x7F,0x38,0x00,0x0E,0xFF,
0xFF,0x7F,0x38,0x00,0x0E,0xFE,0x03,0x7F,0x38,0x00,0x0E,0xFC,0x01,0x7F,0x38,0xC0,
0x0F,0xC0,0x03,0x1F,0xFC,0xFF,0x07,0x80,0x8F,0x07,0xFF,0xFF,0x07,0x00,0xDF,0x03,
0xFF,0xFF,0x07,0x00,0xFE,0x01,0xFF,0xFF,0x07,0x00,0xFE,0x00,0xFF,0xE3,0x03,0x00,
0xFC,0x00,0x7F,0xE0,0x03,0xF8,0xFF,0x7F,0x38,0xE0,0xF1,0xFF,0xFF,0x7F,0x38,0xF0,
0xF1,0xFF,0xFF,0x7F,0x78,0xF8,0xF0,0xFF,0xFF,0x7F,0x78,0x7C,0xF0,0x07,0xF0,0x79,
0xF8,0x3E,0x00,0x00,0xF0,0x00,0xF8,0x3F,0x00,0x00,0xF0,0x00,0xF0,0x7F,0x00,0x00,
0xF0,0x00,0xF8,0xFF,0x7F,0x00,0xF8,0x00,0xFF,0xFF,0x3F,0x00,0xF8,0x00,0xFF,0xFF,
0x1F,0x00,0xFC,0x00,0x7F,0xF8,0x07,0x00,0xFE,0x00,0x0F,0x00,0x00,0xC0,0x7F,0x00,
0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xE0,0xFF,
0x1F,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"好",1*/
 
};
 
 
znsFONT ZN_Font48x48 = {
  ZN48x48_Table,
  zm48x48_index,
  48, /* Width */
  48, /* Height */
};

3.设置字体

    使用“LCD_SetZNFont”函数设置字体,一般在main函数中while(1)之前调用一次即可,除非要更换字体则需重新调用

使用字体

    调用“LCD_DrawCharCN”函数显示中文字体,注意,必须是由字模数据的字才能显示,没有字模数据的字不会显示,所以想显示哪些中文字体,需要生成这些字模的字体并添加到代码中

五、总结

    

  1. 字库准备:首先需要准备包含中文字符的字库文件。可以使用字库生成工具,将中文字符转换为字模,并生成字库文件。常见的字库生成工具有FontCreator、GLCD Font Creator等。

  2. 字库导入:将生成的字库文件导入到STM32的工程中。可以将字库文件放置在工程的资源文件夹中,并在代码中引用。确保字库文件与代码相互匹配,并正确加载。

  3. 字符串处理:在代码中,使用合适的编码方式(如UTF-8)存储中文字符串。可以使用C语言的字符数组或者字符串指针来存储中文字符。

  4. 字符显示:使用显示屏的绘图函数或者图形库函数,根据字库文件中的字模来逐个显示中文字符。这涉及到字模的查找和像素点的绘制。

需要注意的是,由于中文字符的复杂性,显示中文字符可能需要较大的存储空间和更高的计算资源。因此,在选择STM32的型号和显示屏时,需要考虑其存储容量和处理能力。

此外,还需要注意以下几点:

  • 中文字符的显示需要使用适合的显示屏和显示驱动。常见的选择包括OLED、LCD、TFT等显示屏。

  • 在使用液晶显示屏时,可能需要使用液晶控制器和相应的驱动程序来实现中文字符的显示。

  • 可以参考相关的STM32开发文档和示例代码,了解更多关于显示中文字符的具体操作和技术细节。

总结起来,显示中文字符的关键步骤包括准备字库、导入字库、处理字符串和显示字符。通过正确的硬件选择、字库生成和代码编写,可以在STM32的显示屏上实现中文字符的显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值