ILI9341_SPI屏的使用教程目录
- 引言
- 接线
- STM32CubMX配置
- ILI9341_SPI库函数移植
- 在工程中添加ILI9341_SPI库
- 显示字符串例程
- 效果演示:
- 进阶操作
- 显示中文字符
- 打开取字模软件,选择取模方式: 横向取模、 字节不倒叙
- 输入要显示的中文后按下Ctrl+Enter
- 设置取模方式生成点阵
- 移植点阵
- 效果演示
- 显示图片
- 调整图片大小
- 图片取模
- 使用方法
- 效果演示
引言
最近我们在做STM32单片机的实训,实训中用到了ILI9341_SPI屏,但是老师给的标准库的spi库,虽然标准库我也会一点,但是因为种种原因(比如可能是因为懒)我在使用STM32CubMX,因此我试着把ILI9341_SPI的标准库程序移植到了HAL库上。
接线
STM32CubMX配置
如果不使用STM32CubMX可以跳过直接看移植过程
先创建一个STM32CubMX(芯片我用的STM32F103C6)工程,创建工程、设置时钟、设置IDE、设置分.c/.h输出,前面的我就不演示了,设置完后再将ILI9341_SPI屏用到的几个引脚为输出模式(如下图),引脚连接在前面,然后生成代码。这里我的引脚最大输出速度设置的是高,但是在后面显示图片的时候发现图片乱码,检查后发现因为我设置的40MHZ的内部时钟,而引脚最大输出速度设置为高好像是50MHZ,改为Medium,就可以正常显示了,这里根据自己设置的时钟主频来选择引脚最大输出速度
ILI9341_SPI库函数移植
将ILI9341_SPI程序复制到生成代码的文件夹中
在工程中添加ILI9341_SPI库
## 代码移植
在main.c中添加:
#include "sys.h"
#include "lcd.h"
#include "spi.h"
#include "GUI.h"
在main.h中添加:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define delay_ms(x) HAL_Delay(x)
#define Delay_ms(x) HAL_Delay(x)
编译一下程序就算好了
显示字符串例程
在main函数中添加
LCD_Init();
Show_Str(0,16,BLACK,0XFFFF,(u8 *)"666666",16,1);
Show_Str函数的具体使用方法自己看函数说明吧,挺详细的
效果演示:
进阶操作
显示中文字符
想要在LCD屏上默认只能显示英文字符和数字,想要显示中文要在取字模软件中取字模添加到font.h中
打开取字模软件,选择取模方式: 横向取模、 字节不倒叙
输入要显示的中文后按下Ctrl+Enter
设置取模方式生成点阵
移植点阵
将生成的点阵放到font.h中,可以再GUI.c中找到该头文件跳转进去,找到tfont16(可能是因为生成的是1616的点阵,下面还有tfont24、tfont32可能对应的2424的点阵和32*32的点阵,这个我没用到,有大佬知道可以在评论区说一下)数组将点阵按照下列格式放入该数组:
效果演示
显示图片
调整图片大小
使用画图打开要显示的图片,按像素重新调整大小为合适尺寸(不要超过屏幕大小)
图片取模
打开图片取模软件按下图设置给图片取模:
将生成的.h文件保存到ILI9341_SPI\Photo文件夹中:
使用方法
在main.c中包含头文件:
#include "test.h"
在mainz函数中加入函数:
Paint_Bmp(0,48,100,87,gImage_test); //图片左上角坐标(0,48),图片大小100*87,test.h中的数组gImage_test
编译后如果没有出错就完成了
效果演示