1、简介
屏幕厂家提供的都是标准库,网上找了找没看到好用的HAL库屏幕驱动,因此本文对HAL库驱动TFT屏幕进行详细讲解。
2、CubeMX初始化配置
2.1 基础配置
2.1.1 SYS配置
2.1.2 RCC配置
2.2 屏幕引脚配置
2.3 项目生成
3、KEIL端程序整合
3.1 LCD驱动添加
首先打开厂家提供的便准库文件找到LCD驱动,驱动链接:点此跳转。
首先在Core/Src目录下,添加lcd.c,lcd_init.c如下图所示:
接着在Core/Inc目录下,添加对应的.h文件如下图所示:
接着对驱动进行添加如下图所示:
3.2 函数修改
3.2.1 lcd.h修改
将原来lcd.h中 #include "sys.h"删除,并且添加如下代码:
#include "main.h" #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t
3.2.2 lcd_init.h 修改
首先也是将原来llcd_innit.h中 #include "sys.h"删除,并且添加如下代码:
#include "main.h" #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t
接着将LCD端口定义函数用如下代码替换:
#define LCD_RES_Clr() HAL_GPIO_WritePin(TFT_RES_GPIO_Port,TFT_RES_Pin, GPIO_PIN_RESET)//RES #define LCD_RES_Set() HAL_GPIO_WritePin(TFT_RES_GPIO_Port,TFT_RES_Pin, GPIO_PIN_SET) #define LCD_DC_Clr() HAL_GPIO_WritePin(TFT_DC_GPIO_Port,TFT_DC_Pin, GPIO_PIN_RESET)//DC #define LCD_DC_Set() HAL_GPIO_WritePin(TFT_DC_GPIO_Port,TFT_DC_Pin, GPIO_PIN_SET) #define LCD_CS_Clr() HAL_GPIO_WritePin(TFT_CS_GPIO_Port,TFT_CS_Pin, GPIO_PIN_RESET)//CS #define LCD_CS_Set() HAL_GPIO_WritePin(TFT_CS_GPIO_Port,TFT_CS_Pin, GPIO_PIN_SET) #define LCD_BLK_Clr() HAL_GPIO_WritePin(TFT_BL_GPIO_Port,TFT_BL_Pin, GPIO_PIN_RESET)//BLK #define LCD_BLK_Set() HAL_GPIO_WritePin(TFT_BL_GPIO_Port,TFT_BL_Pin, GPIO_PIN_SET)
3.2.3 lcd.c修改
将头文件#include "delay.h"删除
3.2.4 lcd_inIt.c修改
1、将头文件#include "delay.h"删除
2、添加头文件#include "spi.h"
3、将 LCD_GPIO_Init(void)函数内全部注释,如下图所示:
4、将LCD_Writ_Bus(u8 dat) )函数用以下代码替换,如下图所示:
LCD_CS_Clr(); HAL_SPI_Transmit(&hspi1,&dat,1, 1000); LCD_CS_Set();
5、延时函数替换
CTRL+F进行整体替换
3.3 主函数代码
3.3.1 添加头文件
#include "lcd_init.h" #include "lcd.h" #include "pic.h"
3.3.2 LCD进行初始化
float t=0; u8 i,j; LCD_Init();//LCD初始化 LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
添加位置如下图所示:
3.3.3 while中添加如下代码
LCD_ShowChinese(0,0,"中景园电子",RED,WHITE,32,0); LCD_ShowString(0,40,"LCD_W:",RED,WHITE,16,0); LCD_ShowIntNum(48,40,LCD_W,3,RED,WHITE,16); LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0); LCD_ShowIntNum(128,40,LCD_H,3,RED,WHITE,16); LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0); LCD_ShowString(0,70,"Increaseing Nun:",RED,WHITE,16,0); LCD_ShowFloatNum1(128,70,t,4,RED,WHITE,16); t+=0.11; if(USE_HORIZONTAL ==0||USE_HORIZONTAL ==1)//判断是否为纵向显示 { for(j=0;j<5;j++) { for(i=0;i<6;i++) { LCD_ShowPicture(40*i,120+j*40,40,40,gImage_1); } } } else { for(j=0;j<3;j++) { for(i=0;i<8;i++) { LCD_ShowPicture(40*i,120+j*40,40,40,gImage_1); } }
4、硬件连接
VCC----3.3V
GND---GND
A1 ---- BL/LED
A2 ---- RES/RST
A3 ---- DC/RS
A4 ---- CS
A5 ---- SCLK
A7 ---- MOSI/SDA
八引脚或者11引脚都只需按照上诉连接即可。
5、 效果展示
上文如有错误,恳请各位大佬指正。