1.8寸彩色触摸屏
模块来源
采购链接:
https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-23991449512.20.62ae703buie1Ei&id=568584833602
资料下载链接:
https://pan.baidu.com/s/1n_vp38V7ij88PUGpbJPd7Q
资料提取码:8888
规格参数
文件7.2-1 屏幕规格书
工作电压:3.3V
工作电流:30MA
模块尺寸:35(H) x 56(V) MM
像素大小:128(H) x 160(V)RGB
驱动芯片:ST7735S
通信协议:SPI
管脚数量:12 Pin(2.54mm间距排针)
带电阻触摸芯片:XPT2046
原理解析
SPI与IIC类似,都分有软件SPI和硬件SPI。
ESP32-S3芯片集成了四个 SPI 控制器:
• SPI0
• SPI1
• 通用 SPI2,即 GP-SPI2
• 通用 SPI3,即 GP-SPI3
SPI0 和 SPI1 控制器主要供内部使用以访问外部 flash 及 PSRAM。我们只能使用SPI2和SPI3。
硬件SPI支持以下特性:
移植过程
我们的目标是将例程移植至ESP32-S3开发板上。已经为大家提供了完整的驱动代码,按照以下步骤,即可完成移植。
软件SPI移植
该屏幕需要设置12个接口,具体接口说明见 表7.4.1-1 各引脚说明。
这里选择的引脚见表7.4.1-2 软件SPI接线
为大家准备的【OLED】和【TOUCH】文件夹,复制到自己工程中的main文件夹中。
软件SPI驱动代码:
将LCD文件夹和TOUCH文件夹复制到main文件下:
打开自己的工程,将我们刚刚复制过来的文件导入.c和.h文件路径。
- 在VSCode中打开main文件夹下的CMakeLists.txt文件
- 添加这些路径
到这里移植完成了,请移步到 7.5 进行移植验证。
移植验证
在main.c中输入代码如下
#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "esp_timer.h"
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"
#include "touch.h"
void app_main(void)
{
float t=0;
u16 lastpos[2];//最后一次的数据
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
lastpos[0]=0XFFFF;
// LCD_ShowChinese(0,0,(uint8_t *)"中景园电子",RED,WHITE,24,0);
// LCD_ShowString(24,30,(uint8_t *)"LCD_W:",RED,WHITE,16,0);
// LCD_ShowIntNum(72,30,LCD_W,3,RED,WHITE,16);
// LCD_ShowString(24,50,(uint8_t *)"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(65,80,40,40,gImage_1);
// delay_ms(1000);
// LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
TP_Init();
LCD_ShowString(10,LCD_H-40,(uint8_t *)"X:",RED,WHITE,16,0);
LCD_ShowIntNum(26,LCD_H-40,0,3,RED,WHITE,16);
LCD_ShowString(10,LCD_H-20,(uint8_t *)"Y:",RED,WHITE,16,0);
LCD_ShowIntNum(26,LCD_H-20,0,3,RED,WHITE,16);
while(1)
{
tp_dev.scan(0);//扫描
if(tp_dev.sta&TP_PRES_DOWN)//有按键被按下
{
delay_ms(1);//必要的延时,否则老认为有按键按下.
if((tp_dev.x[0]<(LCD_W-1)&&tp_dev.x[0]>=1)&&(tp_dev.y[0]<(LCD_H-1)&&tp_dev.y[0]>=1))
{
if(lastpos[0]==0XFFFF)
{
lastpos[0]=tp_dev.x[0];
lastpos[1]=tp_dev.y[0];
}
LCD_DrawRoughLine(lastpos[0],lastpos[1],tp_dev.x[0],tp_dev.y[0],BLUE);//画线
lastpos[0]=tp_dev.x[0];
lastpos[1]=tp_dev.y[0];
LCD_ShowString(10,LCD_H-40,(uint8_t *)"X:",RED,WHITE,16,0);
LCD_ShowIntNum(26,LCD_H-40,tp_dev.x[0],3,RED,WHITE,16);
LCD_ShowString(10,LCD_H-20,(uint8_t *)"Y:",RED,WHITE,16,0);
LCD_ShowIntNum(26,LCD_H-20,tp_dev.y[0],3,RED,WHITE,16);
}
}
delay_ms(100);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
上电效果: