IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32G030F6P6基于HAL库模拟SPI驱动1.8寸TFT LCD屏幕 -> 正文阅读

[嵌入式]STM32G030F6P6基于HAL库模拟SPI驱动1.8寸TFT LCD屏幕

1 硬件介绍

1.1 硬件模块介绍

1.2 LCD端口定义定义

1.3?LCD与STM32连接

2 如何利用STM32G030F6P6 驱动SPI LCD显示屏

????2.1*Cub配置基本工程*

????2.2 *LCD液晶屏驱动程序*

3 测试

1 硬件介绍

1.1硬件模块介绍

? ? ? 系统硬件主要STM32G030F6P6最小系统开发板、ST-LINK V2程序下载调试器和1.8‘ TFT LCD液晶屏,驱动芯片为ST7735。

1.2LCD端口含义

? ??SPI接口的LCD引脚有8脚,如图所示.其中GND和VCC是液晶的电源引脚,VCC接3.3V。SCL和SDA分别为SPI的时钟信号线和数据线。RES为LCD的复位信号,可以有STM32控制其复位。DC为数据/命令选择端,低电平写命令,高电平写数据。CS为液晶屏片选信号,低电平使能;BL为背光信号,低电平关闭背光。

1.3LCD与STM32连接

? ? ???最小系统板原理图如下图,LCD与STM32接线如下。

????????LCD_VCC---->H1的3脚VCC_3V3

????????LCD_GND--->H1的2脚GND

????????LCD_SCL---->H2的12脚----->STM32的PA4

????????LCD_SDA---->H2的11脚----->STM32的PA5

????????LCD_RES---->H2的10脚----->STM32的PA6

????????LCD_DC---->H2的9脚----->STM32的PA7

????????LCD_CS---->H2的8脚----->STM32的PA8

????????LCD_BL---->H2的7脚----->STM32的PA11

2?如何利用STM32G030F6P6 驱动SPI LCD显示屏

2.1*Cub配置基本工程

? ? ?首先利用CubeMX工具进行基本配置,时钟采用芯片内部高速时钟,所有用到的IO全部配置推免输出模式,配置如下图所示。

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库操作。

? ? ? (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

#include "main.h"

#define USE_HORIZONTAL 1? //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏

#if USE_HORIZONTAL==0||USE_HORIZONTAL==1

#define LCD_W 128

#define LCD_H 160

#else

#define LCD_W 160

#define LCD_H 128

#endif

//-----------------LCD端口定义----------------?

#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);

#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);

#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);

#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);

#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);

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

3 测试

? ?在使用LCD屏显示之前,要先进行初始化,调用LAC_Init()函数,在main函数中添加如下代码。

? ? ? 调用LCD_FILL背景填充函数,将背景色设为黑色。测试一下液晶屏显示字符函数、画圆形函数和浮点数字显示函数。关于这些函数的功能说明在LCD.C中都有介绍,这就不再详细介绍。下图是测试代码实际显示效果。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:35:53  更:2022-05-11 16:36:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:27:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码