打印
[其他ST产品]

STM32(HAL库)驱动(1.44寸)TFT-LCD彩屏

[复制链接]
295|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
简介

屏幕厂家提供的都是标准库,网上找了找没看到好用的HAL库屏幕驱动,因此本文对HAL库驱动TFT屏幕进行详细讲解。

2、CubeMX初始化配置2.1 基础配置2.1.1 SYS配置


2.1.2 RCC配置


使用特权

评论回复
沙发
纠结的那些年|  楼主 | 2023-11-21 00:22 | 只看该作者
2.2 屏幕引脚配置

使用特权

评论回复
板凳
纠结的那些年|  楼主 | 2023-11-21 00:23 | 只看该作者
2.3 项目生成

使用特权

评论回复
地板
纠结的那些年|  楼主 | 2023-11-21 00:23 | 只看该作者
KEIL端程序整合
3.1 LCD驱动添加
首先打开厂家提供的便准库文件找到LCD驱动,驱动链接:点此跳转。

首先在Core/Src目录下,添加lcd.c,lcd_init.c如下图所示:

使用特权

评论回复
5
纠结的那些年|  楼主 | 2023-11-21 00:23 | 只看该作者
接着在Core/Inc目录下,添加对应的.h文件如下图所示:

使用特权

评论回复
6
纠结的那些年|  楼主 | 2023-11-21 00:23 | 只看该作者

使用特权

评论回复
7
纠结的那些年|  楼主 | 2023-11-21 00:23 | 只看该作者
函数修改
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

使用特权

评论回复
8
纠结的那些年|  楼主 | 2023-11-21 00:24 | 只看该作者
接着将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)

使用特权

评论回复
9
纠结的那些年|  楼主 | 2023-11-21 00:24 | 只看该作者

使用特权

评论回复
10
纠结的那些年|  楼主 | 2023-11-21 00:24 | 只看该作者
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)函数内全部注释,如下图所示:

使用特权

评论回复
11
纠结的那些年|  楼主 | 2023-11-21 00:24 | 只看该作者

使用特权

评论回复
12
纠结的那些年|  楼主 | 2023-11-21 00:24 | 只看该作者
将LCD_Writ_Bus(u8 dat) )函数用以下代码替换,如下图所示:

LCD_CS_Clr();
HAL_SPI_Transmit(&hspi1,&dat,1, 1000);  
LCD_CS_Set();

使用特权

评论回复
13
纠结的那些年|  楼主 | 2023-11-21 00:25 | 只看该作者

使用特权

评论回复
14
纠结的那些年|  楼主 | 2023-11-21 00:25 | 只看该作者
延时函数替换

CTRL+F进行整体替换


使用特权

评论回复
15
纠结的那些年|  楼主 | 2023-11-21 00:25 | 只看该作者
主函数代码
3.3.1 添加头文件
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"

使用特权

评论回复
16
纠结的那些年|  楼主 | 2023-11-21 00:25 | 只看该作者
3.3.2 LCD进行初始化
float t=0;
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);

使用特权

评论回复
17
纠结的那些年|  楼主 | 2023-11-21 00:25 | 只看该作者
添加位置如下图所示:

使用特权

评论回复
18
纠结的那些年|  楼主 | 2023-11-21 00:26 | 只看该作者
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);

使用特权

评论回复
19
纠结的那些年|  楼主 | 2023-11-21 00:26 | 只看该作者
4、硬件连接
VCC----3.3V

GND---GND

A1 ---- BL/LED

A2 ---- RES/RST

A3 ---- DC/RS

A4 ---- CS

A5 ---- SCLK

A7 ---- MOSI/SDA

八引脚或者11引脚都只需按照上诉连接即可。

使用特权

评论回复
20
公羊子丹| | 2024-8-16 07:01 | 只看该作者

在掌握对象的变化频度时是有效的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

675

帖子

0

粉丝