3.2寸ILI9341彩色触摸屏
模块来源
规格参数
工作电压:3.3V-5V
工作电流:90mA
模块尺寸:50.0(H) x 86(V) MM
像素大小:320(H) x 240(V)RGB
驱动芯片:ILI9341
通信协议:SPI
硬件连接
- VCC:连接到开发板的5V
- GND:连接到开发板的GND。
- CS:芯片选择,连接到开发板的10号引脚。
- RESET:重置,连接到开发板的9号引脚。
- DC (或RS ):数据/命令控制,连接到开发板的8号引脚。
- SDI/MOSI (或TFT_MOSI):主设备输出,从设备输入,连接到开发板的11号引脚。
- SCK (或TFT_SCK):时钟,连接到开发板的13号引脚。
- LED:背光控制,可以直接连接到开发板的A3或者3.3V或5V,通过一个电阻限流,或者连接到一个PWM输出以控制亮度。
- SDO/MISO (或TFT_MISO):主设备输入,从设备输出,如果你需要从TFT读数据,该线需要连接到开发板的12号引脚,本例程中未使用到该引脚,并且该引脚也没有作用。
- T_CLK:触摸屏时钟,连接到开发板的13号引脚。
- T_CS:触摸屏芯片选择,连接到开发板的4号引脚。
- T_DIN:触摸屏数据输入,连接到开发板的11号引脚。
- T_DO:触摸屏数据输出,连接到开发板的12号引脚。
- T_IRQ:触摸屏中断,不接。
使用方法
,如果使用ATMEGA328P控制该屏幕,需要使用电平转换模块或者修改短接屏幕上的一对焊盘。我们实际测试时发现,当我们没有使用电平转换模块直接接到显示屏幕上,发现它根本无法运行,要么无法显示,要么显示一半是画屏。这是因为屏幕的引脚只能输入3.3V高电平。而开发板输出具有5V的高电平。
因为我们没有电平转换模块,因此采用屏幕厂家提供的方法:短路法。
该短路方法操作简单,布线短,不需要外接设备。缺点是模块在运行过程中会产生大量的热量。
短路方法是将J1组件位置短路(如下图所示),并在模块背面进行焊锡。短路后运行模块VCC引脚必须连接5V电源(未连接3.3V电源)。
安装库
使用Arduino IDE控制该款屏幕,需要安装支持ILI9341和XPT2046的库。常用的库有Adafruit_ILI9341和Adafruit_GFX库,便于图形显示的操作,以及专门为XPT2046触摸屏设计的库,如Utouch或XPT2046_Touchscreen库。
- 打开Arduino IDE
- 前往 “工具” > “管理库…”
- 搜索并安装 “
Adafruit ILI9341
”,“Adafruit GFX
”,以及 “XPT2046_Touchscreen
” 库。这些库为你提供显示和触摸功能的基本方法。
编写代码
c
/******************************************************************************
* 测试硬件:ColorEasyDuino开发板
* 版 本 号: V1.0
* 修改作者: www.lckfb.com
* 修改日期: 2024年04月08日
* 功能介绍:
*****************************************************************************
* 开发板软硬件资料与相关项目软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
******************************************************************************/
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <XPT2046_Touchscreen.h>
// 为显示屏和触摸屏定义引脚
#define TFT_CS 10
#define TFT_RST 9
#define TFT_DC 8
#define TOUCH_CS 4
// 初始化ILI9341
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC,TFT_RST);
// 初始化XPT2046触摸屏
XPT2046_Touchscreen touch(TOUCH_CS);
void setup() {
Serial.begin(9600);
// 初始化显示屏
tft.begin();
// 触摸屏初始化
touch.begin();
touch.setRotation(1);
// 设置文字大小
tft.setTextSize(2);
// 设置文字颜色, ILI9341_BLUE为白色背景,ILI9341_BLACK为黑色文字
tft.setTextColor(ILI9341_BLACK, ILI9341_BLUE);
// 清屏为白色
tft.fillScreen(ILI9341_BLUE);
//设置显示位置的x,y坐标
tft.setCursor(240/2-(7*16), 320/2);
// 显示文字
tft.println("Hello, ILI9341!");
}
void loop() {
// 触摸屏检测等相关代码可以放在这里
if (touch.touched()) {
TS_Point p = touch.getPoint();
//设置显示位置
tft.setCursor(5, 5);
//显示触摸位置的X坐标
tft.print("X = ");
tft.print(p.x);
tft.println(" ");
//显示触摸位置的Y坐标
tft.print("Y = ");
tft.print(p.y);
tft.println(" ");
// 可以根据需要添加更多的触摸相关操作
}
delay(5);
}
1
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
64
65
66
67
68
69
70
71
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
64
65
66
67
68
69
70
71