使用STM32 HAL库驱动1.44寸TFT-LCD彩屏的方法解析

目录

1、简介

2、CubeMX初始化配置

2.1 基础配置

2.1.1 SYS配置

 2.1.2 RCC配置

2.2 屏幕引脚配置

2.3 项目生成

 3、KEIL端程序整合

3.1 LCD驱动添加

3.2 函数修改

3.2.1 lcd.h修改

3.2.2 lcd_innit.h 修改

 3.2.3 lcd.c修改

 3.2.4 lcd_inut.c修改

 3.3 主函数代码

3.3.1 添加头文件

3.3.2 LCD进行初始化

3.3.3 while中添加如下代码

4、硬件连接

5、 效果展示


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;
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);

 添加位置如下图所示:

3.3.3 while中添加如下代码

        LCD_ShowChinese(0,0,"中景园电子",RED,WHITE,24,0);
		LCD_ShowString(24,30,"LCD_W:",RED,WHITE,16,0);
		LCD_ShowIntNum(72,30,LCD_W,3,RED,WHITE,16);
		LCD_ShowString(24,50,"LCD_H:",RED,WHITE,16,0);
		LCD_ShowIntNum(72,50,LCD_H,3,RED,WHITE,16);
		LCD_ShowFloatNum1(20,80,t,4,RED,WHITE,16);
		t+=0.11;
        LCD_ShowPicture(80,70,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、 效果展示

·

上文如有错误,恳请各位大佬指正。

物联沃分享整理
物联沃-IOTWORD物联网 » 使用STM32 HAL库驱动1.44寸TFT-LCD彩屏的方法解析

发表评论