使用STM32LCD显示汉字

汉字显示在很多单片机产品中都需要用到,显示个别汉字可使用MCU的flash保存汉字字模,而显示更多的汉字就可能要在产品中保存一整个字库作为汉字储备.

目录

一、中文显示原理

二、字模的生成

三、实验展示


一、中文显示原理

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

二、字模的生成

可以使用PCtoLCD2002生成字模,以下是下载链接

PCtoLCD2002

配置字模的解析顺序,解析顺序要和代码配套,否则会显示乱码。

生成后的字模数据如下,

彭(0) 于(1) 晏(2)

0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x08,0x80,0x10,0x1C,0xFE,0x3F,0x04,0x80,
0x00,0x02,0x80,0x08,0x01,0xF8,0x9F,0x00,0x00,0x40,0x10,0x00,0x00,0x38,0xF8,0x0F,
0x18,0x18,0x0C,0x04,0x18,0x0C,0x02,0x18,0x0C,0x01,0xF8,0xCF,0x20,0x18,0x06,0x70,
0x10,0x06,0x18,0x20,0x02,0x0C,0x60,0x11,0x06,0x20,0x0F,0x03,0xF8,0xC0,0x00,0x0C,
0x30,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,/*"彭",0*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xF0,0xFF,0x0F,0x00,0x18,0x00,0x00,
0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x10,0xFE,0xFF,
0x3F,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,
0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x80,0x19,0x00,0x00,
0x0E,0x00,0x00,0x04,0x00,0x00,0x00,0x00,/*"于",1*/

0x00,0x00,0x00,0x00,0x00,0x02,0xC0,0xFF,0x07,0x40,0x00,0x02,0xC0,0xFF,0x03,0x40,
0x00,0x02,0x40,0x00,0x02,0xC0,0xFF,0x07,0x40,0x04,0x02,0x00,0x18,0x00,0x00,0x18,
0x00,0xF0,0xFF,0x1F,0x18,0x0C,0x08,0x08,0x06,0x14,0xFE,0xFF,0x3F,0x00,0x83,0x01,
0x00,0x81,0x00,0x80,0xC1,0x00,0x00,0x7E,0x00,0x00,0xF0,0x00,0x00,0x98,0x07,0x00,
0x07,0x0E,0xFC,0x00,0x08,0x00,0x00,0x00,/*"晏",2*/

三、字模的使用方式

 1、将“lcd_show_zn”模块添加到工程中 以下分别是 lcd_show_zn.c 和lcd_show_zn.h文件链接

https://d0.ananas.chaoxing.com/download/fead8f2f8136ea8b30e64f5a2bda6d72?at_=1718522094654&ak_=420dfb9b5200011496b070e5fae11a3a&ad_=912696503ac180ef7ded6c7b178c60f9&fn=lcd_show_zn

https://d0.ananas.chaoxing.com/download/a1b6f6e1ce0d7942169e5619013d0928?at_=1718522094405&ak_=980dba5f416a81e01163cddf059c5e91&ad_=806ded59bf83bc9f13b1c68f1dbba612&fn=lcd_show_zn

2. 创建对应字体

打开lcd_show_zn.c文件,添加如下内容,该内容表示一组名字为“ZN_Font16x16”的字体,这组字体里边一共有“彭于晏”三个字,如果使用这组字体,只有存在字模数据的字才能正常显示。

编写完后,在头文件中添加:extern znsFONT ZN_Font16x16; 语句,这样就能调用ZN_Font16x16字体了

3.设置字体

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

LCD_SetZNFont(&ZN_Font16x16);

4. 使用字体

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

LCD_DrawCharCN(210,220,"彭于晏");   //在坐标点(210,220)显示“彭于晏”三个中文字体

5.中文和英文混合显示

LCD_DrawCharCN函数既可以显示中文也可以显示英文

LCD_DrawCharCN(210,220,"彭于晏 niubi");//显示 彭于晏 niubi

三、实验展示

大概展示代码如下

结论:以上是使用STM32lcd简单的实现显示汉字,以及排版的点位。

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值