STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240)

目录

1、简介

2、CubeMX初始化配置

[2.1 基础配置](#2.1 基础配置)

[2.1.1 SYS配置](#2.1.1 SYS配置)

[2.1.2 RCC配置](#2.1.2 RCC配置)

[2.2 屏幕引脚配置](#2.2 屏幕引脚配置)

[2.3 项目生成](#2.3 项目生成)

3、KEIL端程序整合

[3.1 LCD驱动添加](#3.1 LCD驱动添加)

[3.2 函数修改](#3.2 函数修改)

[3.2.1 lcd.h修改](#3.2.1 lcd.h修改)

[3.2.2 lcd_innit.h 修改](#3.2.2 lcd_innit.h 修改)

[3.2.3 lcd.c修改](#3.2.3 lcd.c修改)

[3.2.4 lcd_inut.c修改](#3.2.4 lcd_inut.c修改)

[3.3 主函数代码](#3.3 主函数代码)

[3.3.1 添加头文件](#3.3.1 添加头文件)

[3.3.2 LCD进行初始化](#3.3.2 LCD进行初始化)

[3.3.3 while中添加如下代码](#3.3.3 while中添加如下代码)

4、硬件连接

[5、 效果展示](#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驱动,驱动链接如下:

LCD_7引脚240x240 https://www.aliyundrive.com/s/EKDhHV6dKqx 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

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

接着在Core/Inc目录下,添加对应的.h文件如下图所示:

接着对驱动进行添加如下图所示:

3.2 函数修改

3.2.1 lcd.h修改

将原来lcd.h中 #include "sys.h"删除,并且添加如下代码:

cpp 复制代码
#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"删除,并且添加如下代码:

cpp 复制代码
#include "main.h"
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t

接着将LCD端口定义函数用如下代码替换:

cpp 复制代码
#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) )函数用以下代码替换,如下图所示:

cpp 复制代码
LCD_CS_Clr();
HAL_SPI_Transmit(&hspi1,&dat,1, 1000);  
LCD_CS_Set();

5、延时函数替换

CTRL+F进行整体替换

复制代码
HAL_Delay

3.3 主函数代码

3.3.1 添加头文件

cpp 复制代码
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"

3.3.2 LCD进行初始化

cpp 复制代码
float t=0;
u8 i,j;
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);

添加位置如下图所示:

3.3.3 while中添加如下代码

cpp 复制代码
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;
		for(j=0;j<3;j++)
		{
			for(i=0;i<6;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

5、 效果展示

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

相关推荐
zcmodeltech1 小时前
智慧矿山沙盘模型多场景控制系统设计——基于STM32与Modbus RTU的智能开采、无人矿卡、数字孪生全场景联动方案
数据库·stm32·单片机·嵌入式硬件·物联网
youcans_2 小时前
【嵌入式软件AI编程】03. STM32 VS Code 开发环境与工具链
stm32·单片机·ai编程·嵌入式软件·claude code
国科安芯2 小时前
抗辐射MCU在低轨卫星电源管理单元中的电压监测与保护策略研究
大数据·单片机·嵌入式硬件·电源管理·低轨卫星·抗辐射·星间链路
分享资料2 小时前
去耦电容和旁路电容的区别
嵌入式硬件·硬件工程
深圳市恒锐丰科技杨生3 小时前
LTK118 2‑7V 单通道 H 桥直流有刷电机驱动芯片|集成 MOS 低压消费类驱动方案
嵌入式硬件·硬件工程
星河单片机3 小时前
STM32读取电阻式土壤湿度模块+OLED显示完整教程
stm32·单片机·嵌入式硬件·土壤湿度
不悔哥3 小时前
开源 LVGL:把手机级界面塞进 MCU
单片机·智能手机·开源
影寂ldy3 小时前
C# UdpClient 单播 三种通信版本
stm32·单片机·c#
szxinmai主板定制专家4 小时前
基于 RK3576 的智能割草机器人解决方案,从样机到量产
人工智能·嵌入式硬件·计算机视觉·fpga开发·机器人·rk3588+fpga·割草机器人
单片机仿真设计4 小时前
【proteus仿真】基于单片机的水肥一体化智能监控系统(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus