目录
一、软件硬件的准备
软件: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”函数显示中文字体,注意,必须是由字模数据的字才能显示,没有字模数据的字不会显示,所以想显示哪些中文字体,需要生成这些字模的字体并添加到代码中。

4万+

被折叠的 条评论
为什么被折叠?



