1.软件准备
(1)编程平台:Keil5
(2)CubeMX
(3)中景园屏幕资料链接:点击跳转 提取码:8888
2.硬件准备
(1)1.44寸TFT彩屏
(2)F1的板子,本例使用经典F103C8T6
(3)ST-link 下载器
(4)杜邦线若干
3.模块资料
(1)模块简介:
1.44寸彩色液晶显示模块,128x128分辨率,内置ST7735S控制器,可选配触摸屏,高画质,宽视角,支持8080 8-bit 并行接口与3线、4线串行接口,65K/262K真彩色,FPC连接(可选配连接器),2.8V电压,支持横屏或竖屏显示。
(2)模块部分参数
①控制芯片:ST7735S
②接口类型:4线SPI
③工作电压:2.8V——3.3V
④工作电流:15mA
⑤模块引脚数量:8 Pin
⑥模块尺寸:30*46.50*3.45 mm
4.CubeMX配置
(1)芯片选择
(2)配置RCC、SYS、时钟树
配置RCC
配置SYS
配置时钟树
(3)配置SPI1
(4)配置GPIO
(5)设置路径、生成代码工程
5、Keil5代码
(1)添加文件
(2)添加头文件路径
(3)编译一次并跳转错误到lcd.h和lcd_innit.h
两个错误分别来自lcd.h和lcd_innit.h
(4)lcd.h和lcd_innit.h修改
①将原来的 #include "sys.h"变为如下
#include "main.h"
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
②lcd_innit.h还要改独自改一处
引脚宏定义部分全部用以下代码替代:
#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)
(5)lcd.c修改
删除#include "delay.h"头文件即可
(6)lcd_inut.c修改
①修改#include "delay.h"头文件为#include "spi.h"
②删除掉此函数的全部内容void LCD_GPIO_Init(void)
③修改写字节函数
①②③总结即如下:
HAL_SPI_Transmit(&hspi1,&dat,1, 1000);
④修改延时函数
HAL_Delay(100);
(7)main.c函数
①添加头文件
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"
②while循环前添加:
float t=0;
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
③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);