你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G030F6P6基于HAL库模拟SPI驱动1.8寸TFT LCD屏幕

[复制链接]
STMCU小助手 发布时间:2022-11-27 22:00
1 硬件介绍
1.1硬件模块介绍
      系统硬件主要STM32G030F6P6最小系统开发板、ST-LINK V2程序下载调试器和1.8‘ TFT LCD液晶屏,驱动芯片为ST7735。
微信图片_20221126220342.jpg
1.2LCD端口含义
SPI接口的LCD引脚有8脚,如图所示.其中GND和VCC是液晶的电源引脚,VCC接3.3V。SCL和SDA分别为SPI的时钟信号线和数据线。RES为LCD的复位信号,可以有STM32控制其复位。DC为数据/命令选择端,低电平写命令,高电平写数据。CS为液晶屏片选信号,低电平使能;BL为背光信号,低电平关闭背光。

! \1 u1 }- p4 [! P' m) }0 Z" v
微信图片_20221126220339.png
  g/ R- v9 g  `  Z) q  O6 [
1.3LCD与STM32连接
最小系统板原理图如下图,LCD与STM32接线如下。
        LCD_VCC---->H1的3脚VCC_3V3
9 G. T* @, i& S0 _9 \- |
        LCD_GND--->H1的2脚GND/ r' A* g' y$ M, g
        LCD_SCL---->H2的12脚----->STM32的PA4
        LCD_SDA---->H2的11脚----->STM32的PA55 C3 U7 g9 h$ X2 _" `- s" a
        LCD_RES---->H2的10脚----->STM32的PA6
        LCD_DC---->H2的9脚----->STM32的PA76 R, O7 D  }( D  ?- Q& U
        LCD_CS---->H2的8脚----->STM32的PA8
        LCD_BL---->H2的7脚----->STM32的PA11
+ J6 o1 A. U* \: ]0 F' w9 B; {
微信图片_20221126220335.png

4 s+ e. ]- n0 A( ]8 b# n; T
2 如何利用STM32G030F6P6 驱动SPI LCD显示屏
" Y# t/ z" K  N) ]2 Y
2.1*Cub配置基本工程
     首先利用CubeMX工具进行基本配置,时钟采用芯片内部高速时钟,所有用到的IO全部配置推免输出模式,配置如下图所示。
微信图片_20221126220327.png
微信图片_20221126220323.png
2.2 *LCD液晶屏驱动程序*
  LCD液晶屏SPI驱动程序是基于合宙1.8'TFTLCD标准库函数SPI示例程序修改的。标准库函数例程和本案例完整代码工程获取方式为公众号回复SPI LCD驱动获取下载地址。
      修改内容:
      (1)修改lcd_init.h、lcd_init.c、lcd.h和lcd.c,将四个文件中u8改为uint8_t,u16改为uint16_t,u32改为uint32_t.
     (2)删除lcd.h中的#include "sys.h",删除lcd_init.h中的#include "delay.h"
       (3)修改lcd_init.c和lcd.c中的delay_ms(100)为HAL_Delay(100);
      (4)修改lcd_init.h中对LCD端口定义的置为和复位操作,为HAL库操作。- w" N& o8 V. x4 ]
      (5)删除lcd_init.h中void LCD_GPIO_Init(void);//初始化GPIO声明以及lcd_init.c实现;因为初始化应在main函数中MX_GPIO_Init()实现。
通过以上5步SPI驱动就移植好了。改动最大的就是lcd_init.h,修改之后lcd_init.h的代码如下,完整代码回复SPI LCD驱动获取。
#ifndef __LCD_INIT_H
#define __LCD_INIT_H

% y% k+ x9 Y, e
#include "main.h"
0 J0 v$ N" s2 X, Z
#define USE_HORIZONTAL 1  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏
2 A/ n# @2 c, F. A
#if USE_HORIZONTAL==0||USE_HORIZONTAL==1
#define LCD_W 128
#define LCD_H 160
1 Q1 z- M9 x/ u7 E9 g6 g+ S3 Z
#else
#define LCD_W 160
#define LCD_H 128
#endif
# G' j8 v# N8 U% }/ g
//-----------------LCD端口定义----------------

- B  \; Q$ _2 Y6 d
#define LCD_SCLK_Clr() HAL_GPIO_WritePin(GPIOA, LCD_SCL_Pin, GPIO_PIN_RESET);//SCL=SCLK
#define LCD_SCLK_Set() HAL_GPIO_WritePin(GPIOA, LCD_SCL_Pin, GPIO_PIN_SET);

$ _9 l) D( C* W' i/ `/ ]4 v
#define LCD_MOSI_Clr() HAL_GPIO_WritePin(GPIOA, LCD_SDA_Pin, GPIO_PIN_RESET);//SDA=MOSI
#define LCD_MOSI_Set() HAL_GPIO_WritePin(GPIOA, LCD_SDA_Pin, GPIO_PIN_SET);
& F+ @, H0 p" f6 a: ?
#define LCD_RES_Clr()  HAL_GPIO_WritePin(GPIOA, LCD_RES_Pin, GPIO_PIN_RESET);//RES
#define LCD_RES_Set()  HAL_GPIO_WritePin(GPIOA, LCD_RES_Pin, GPIO_PIN_SET);
) H7 l% O" _# A' f: O) B
#define LCD_DC_Clr()   HAL_GPIO_WritePin(GPIOA, LCD_DC_Pin, GPIO_PIN_RESET);//DC
#define LCD_DC_Set()   HAL_GPIO_WritePin(GPIOA, LCD_DC_Pin, GPIO_PIN_SET);
      
#define LCD_CS_Clr()   HAL_GPIO_WritePin(GPIOA, LCD_CS_Pin, GPIO_PIN_RESET);//CS
#define LCD_CS_Set()   HAL_GPIO_WritePin(GPIOA, LCD_CS_Pin, GPIO_PIN_SET);
2 h, I  m9 d/ p
#define LCD_BLK_Clr()  HAL_GPIO_WritePin(GPIOA, LCD_BL_Pin, GPIO_PIN_RESET);//BLK
#define LCD_BLK_Set()  HAL_GPIO_WritePin(GPIOA, LCD_BL_Pin, GPIO_PIN_SET);
* X# A' @$ S/ m# T2 C2 G
void LCD_GPIO_Init(void);//初始化GPIO
void LCD_Writ_Bus(uint8_t dat);//模拟SPI时序
void LCD_WR_DATA8(uint8_t dat);//写入一个字节
void LCD_WR_DATA(uint16_t dat);//写入两个字节
void LCD_WR_REG(uint8_t dat);//写入一个指令
void LCD_Address_Set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2);//设置坐标函数
void LCD_Init(void);//LCD初始化
#endif

( T4 D) e6 ]; G9 j) U/ E
3 测试
在使用LCD屏显示之前,要先进行初始化,调用LAC_Init()函数,在main函数中添加如下代码。

% e8 G# G6 A* V/ N7 t
微信图片_20221126220318.png

/ Y' o2 t0 {! h! _9 L. a

7 A3 K: p/ ]; l3 w8 x  v
      调用LCD_FILL背景填充函数,将背景色设为黑色。测试一下液晶屏显示字符函数、画圆形函数和浮点数字显示函数。关于这些函数的功能说明在LCD.C中都有介绍,这就不再详细介绍。下图是测试代码实际显示效果。
微信图片_20221126220313.jpg
  l0 z- F# a. t$ y& u  ~
转载自:MCU学习笔记

# [. R& o6 `2 t0 \# F
收藏 评论1 发布时间:2022-11-27 22:00

举报

1个回答
3182579662@qq.c 回答时间:2024-3-30 16:00:02

SPI LCD驱动

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版