介绍
3.5英寸TFT彩色LCD,驱动IC ILI9486,480×320(HVGA)分辨率,SPI(可选8/16位并口)接口,262K色,标配电阻触摸和SD卡槽,高分辨率适合复杂GUI、工业仪表、智能家居中控屏
3.5英寸TFT彩色LCD,驱动IC ILI9486,480×320(HVGA)分辨率,SPI(可选8/16位并口)接口,262K色,标配电阻触摸和SD卡槽,高分辨率适合复杂GUI、工业仪表、智能家居中控屏
| 参数 | 值 |
|---|---|
| 供电 | 3.3V(逻辑) + 5V(背光) |
| 尺寸 | 3.5英寸 |
| 接口 | SPI + 可选8/16位并口 |
| 背光 | 6×白光LED |
| 触摸 | XPT2046电阻触摸 |
| 颜色 | 262K色(16.7M色扩展) |
| 驱动IC | ILI9486 |
| SPI速率 | 最高32MHz |
| 分辨率 | 480×320 |
| 对比度 | 350:1 |
| 可视角度 | ~160° |
| 外形尺寸 | 100mm×57mm |
| 工作温度 | -20°C~70°C |
| 显示区域 | 73.4mm×49mm |
# 3.5寸TFT ILI9486 多平台代码例程
---
## Arduino Mega (MCUFriend — 并口模式)
```cpp
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
void setup() {
uint16_t ID = tft.readID();
tft.begin(ID);
tft.setRotation(1); // 480x320 横屏
tft.fillScreen(TFT_BLACK);
// 仪表盘背景
tft.fillRoundRect(10, 10, 460, 300, 20, TFT_DARKGREY);
// 标题
tft.setTextColor(TFT_WHITE);
tft.setTextSize(3);
tft.setCursor(120, 20);
tft.println("ILI9486 3.5\"");
// 图表区域模拟
for(int x=30; x<450; x+=10) {
int h = random(50, 200);
tft.fillRect(x, 300-h, 9, h, TFT_GREEN);
}
tft.drawLine(30, 300, 450, 300, TFT_WHITE); // 基线
}
void loop() {}
```
---
## ESP32 (TFT_eSPI — SPI模式)
```cpp
// User_Setup.h:
// #define ILI9486_DRIVER
// #define TFT_WIDTH 480 #define TFT_HEIGHT 320
// #define SPI_FREQUENCY 40000000
// TFT_CS=15, TFT_DC=2, TFT_RST=4, TFT_MOSI=23, TFT_SCLK=18
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
void setup() {
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
// 渐变背景
for(int i=0; i<480; i++) {
tft.drawFastVLine(i, 0, 320,
tft.color565(i*255/480, 64, 255-i*255/480));
}
// 半透明卡片
tft.fillRoundRect(40, 40, 400, 240, 15, TFT_NAVY);
tft.setTextColor(TFT_WHITE, TFT_NAVY);
tft.drawString("ESP32 + ILI9486", 60, 60, 4);
tft.drawString("480x320 SPI Mode", 60, 100, 2);
tft.drawString("Vibe Electronics", 60, 140, 2);
}
void loop() {
// 动态时间
static uint32_t last=0;
if(millis()-last>1000) {
last=millis();
tft.setTextColor(TFT_YELLOW, TFT_NAVY);
tft.drawString("Uptime: " + String(last/1000) + "s", 60, 200, 2);
}
}
```
---
## STM32F4 (FSMC 16位并口 — 高速刷新)
```c
// STM32 FSMC 16位并口驱动
// FSMC NE1接CS, A0接DC, 数据D0-D15
#define ILI9486_BASE ((uint32_t)0x60000000)
#define ILI9486_CMD (*(__IO uint16_t*)ILI9486_BASE)
#define ILI9486_DATA (*(__IO uint16_t*)(ILI9486_BASE + (1<<17)))
void ili9486_write_cmd(uint16_t cmd) {
ILI9486_CMD = cmd;
}
void ili9486_write_data(uint16_t data) {
ILI9486_DATA = data;
}
void ili9486_init(void) {
// FSMC配置...
ili9486_write_cmd(0x01); // SW Reset
HAL_Delay(150);
ili9486_write_cmd(0x11); // Sleep Out
HAL_Delay(150);
ili9486_write_cmd(0x3A); // Pixel Format
ili9486_write_data(0x55); // 16bit
ili9486_write_cmd(0x29); // Display ON
ili9486_write_cmd(0x2C); // Memory Write Start
}
void ili9486_fill_fast(uint16_t color) {
ili9486_write_cmd(0x2A);
ili9486_write_data(0); ili9486_write_data(0); // X start=0
ili9486_write_data(0x01); ili9486_write_data(0xDF); // X end=479
ili9486_write_cmd(0x2B);
ili9486_write_data(0); ili9486_write_data(0); // Y start=0
ili9486_write_data(0x01); ili9486_write_data(0x3F); // Y end=319
ili9486_write_cmd(0x2C);
for(uint32_t i=0; i<480*320; i++) {
ILI9486_DATA = color;
}
}
```
---
## MicroPython (RP2040)
```python
from machine import Pin, SPI
import ili9486
import time
spi = SPI(0, baudrate=30000000, sck=Pin(18), mosi=Pin(19), miso=Pin(16))
tft = ili9486.ILI9486(spi, cs=Pin(17), dc=Pin(20), rst=Pin(21), w=480, h=320)
tft.fill(ili9486.BLACK)
# 绘制网格
for x in range(0, 480, 40):
tft.vline(x, 0, 320, ili9486.DARKGREY)
for y in range(0, 320, 40):
tft.hline(0, y, 480, ili9486.DARKGREY)
# 绘制节点
for x in range(60, 420, 80):
for y in range(60, 260, 80):
tft.fill_circle(x, y, 15, ili9486.CYAN)
tft.draw_circle(x, y, 15, ili9486.WHITE)
tft.text("MicroPython", 170, 10, ili9486.WHITE)
tft.show()
```
暂无参考文献