基于stm32驱动LCD显示屏显示中文

AI助手已提取文章相关产品:

目录

一、软件硬件的准备

二、TFTLCD屏幕驱动原理

三、中文显示原理 

四、字模的生成 

五、代码部分 

1、将“lcd_show_zn”模块添加到工程中

2、创建对应字体

3、lcd_show_zn.c部分代码

4、main函数部分代码


一、软件硬件的准备

软件:keil5。

硬件:stm32板子、TFTLCD屏幕。

二、TFTLCD屏幕驱动原理

介绍:4.3存的TFTLCD液晶屏。它的分辨率是480*800,通过16位并口驱动,也就是我们所说的8080并口,是一款电容触摸屏

特点:亮度好、对比度高、层次感强、颜色鲜艳、是现在最主流的lcd显示器,广泛应用于电视、手机、电脑、平板等各大电子产品。

 TFTLCD屏幕驱动流程:

指令简介:

模块对外采用16位并口,颜色深度为16位,格式为RGB565,如下图所示:

以分辨率为480*800的液晶屏为例,下面为显示原理

   红色框线是显示屏的边界线,里面的黑色框是一个一个的像素点,这样的像素点一共有800*480个。它的显示过程就是将屏幕中的像素点用特定的颜色填充,比如我们在屏中显示一个字母F。

  将像素点从左到右从上到下按顺序填充,其中填充颜色为红色的所有点显示出来的就是一个红色的F,在液晶屏中,因为像素点间的点距很小,所以我们看到的F是是连着的,中间没有间隙。 

三、中文显示原理 

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

四、字模的生成 

1、字模生成工具是以PCtoLCD2002生成字模 。

2、数据的设置 

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

不能字符串显示,毕竟不是存了字库,只能显示单个汉字,这种需要我们自己去取模,然后存放到数组,基于正点原子的例程改的,要注意的是一个汉字在数组中全部数据是全存在一起的。 

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*/

五、代码部分 

1、将“lcd_show_zn”模块添加到工程中

选择USER右击,添加新的工程,弹出对话框,选择对应.c文件添加进去。

2、创建对应字体

 3、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 */
};

4、main函数部分代码

1.设置字体

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

2、使用字体

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

您可能感兴趣的与本文相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值