STM32(HAL库)驱动(2.0寸)TFT-LCD彩屏(240*320)

简介: STM32(HAL库)驱动(2.0寸)TFT-LCD彩屏(240*320)

1、简介

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


2、CubeMX初始化配置

2.1 基础配置

2.1.1 SYS配置


fd8fcf1bb3d7433198d8351e613f9928.png


2.1.2 RCC配置


578863891a574bf79ca22de2ea0da5cd.png


2.2 屏幕引脚配置


4a4078858c4545b98bda915e6e711b47.png

c825bbe27fd84522bd672b701b5ec645.png


2.3 项目生成


8a7288aa74b24d49ade5d5687057d8f9.png

60c8a97e105844a2881d5d481cc6715d.png


3、KEIL端程序整合

3.1 LCD驱动添加

首先打开厂家提供的便准库文件找到LCD驱动,驱动链接:点此跳转。


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


b9036382978d4f118b1334721d13c9e3.png

a4bc2944201b4a258d2c24882d9ddcec.png


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


a2a37e276038402487bca7c6b5236979.png


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


de499282eeea4ac68470c4378d4213dc.png


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、 效果展示



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

相关文章
|
2月前
|
C++ 芯片 编译器
STM32F103标准外设库—— 新建工程与库函数(四)
STM32F103标准外设库—— 新建工程与库函数(四)
44 0
STM32F103标准外设库—— 新建工程与库函数(四)
|
2月前
|
传感器 芯片 内存技术
STM32F103标准外设库——认识STM32(一)
STM32F103标准外设库——认识STM32(一)
109 0
STM32F103标准外设库——认识STM32(一)
|
2月前
|
芯片 存储 C语言
STM32F103标准外设库——固件库 (三)
STM32F103标准外设库——固件库 (三)
63 0
STM32F103标准外设库——固件库 (三)
|
25天前
【STM32】通过RTThread驱动W25QXXX
【STM32】通过RTThread驱动W25QXXX
|
1月前
STM32F103驱动oled显示屏
STM32F103驱动oled显示屏
22 0
STM32CubeIDE移植ARM DSP库
STM32CubeIDE移植ARM DSP库
No.0 个人与固件库工程文件分析 结构(STM32F429/F767/H743)
No.0 个人与固件库工程文件分析 结构(STM32F429/F767/H743)
|
8月前
|
传感器
STM32(HAL库)驱动GY30光照传感器通过串口进行打印
STM32(HAL库)驱动GY30光照传感器通过串口进行打印
|
7月前
|
存储 芯片 内存技术
STM32F0单片机快速入门十 用 SPI HAL 库读写W25Q128
STM32F0单片机快速入门十 用 SPI HAL 库读写W25Q128