1.47inch Touch LCD
来自Waveshare Wiki
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
产品介绍
产品简介
1.47inch Touch LCD 配备172 × 320分辨率的电容触摸屏,支持13PIN端子接口或18PIN FPC插槽接入,并提供树莓派、ESP32、Pico、Arduino等的示例资料。
产品特性
- 172 × 320 分辨率,262K 彩色,能清晰地显示彩色图片
- 触摸屏透过率高,响应快,寿命长
- 内置 JD9853 驱动芯片和 AXS5106L 电容触控芯片,分别使用 SPI 和 I2C 接口通信,不占用过多接口引脚资源
- 引出 LCD 控制接口,可以选择 13PIN 端子接口或 18PIN 的 FPC 插槽接入显示屏
- 板载电平转换芯片,支持 3.3V/5V 两种工作电平
接口介绍
LCD引脚 | 引脚介绍 |
VCC | 电源正 (3.3V / 5V 电源输入) |
GND | 电源地 |
MISO | SPI 通信 MISO 引脚 |
MOSI | SPI 通信 MOSI 引脚 |
SCLK | SPI 通信 SCLK 引脚 |
LCD_CS | LCD 的片选引脚,低电平有效 |
LCD_DC | LCD 的数据/命令引脚,低电平表示命令,高电平表示数据 |
LCD_RST | LCD 的复位引脚,低电平有效 |
LCD_BL | LCD 的背光引脚 |
TP_SDA | TP 的数据引脚 |
TP_SCL | TP 的时钟引脚 |
TP_INT | TP 的中断引脚 |
TP_RST | TP 的复位引脚,低电平有效 |
产品尺寸
产品参数
(请保证供电电压和逻辑电压一致,否则会导致无法正常工作)
参数名称 | 参数 |
供电电压 | 3.3V/5V |
屏幕类型 | IPS |
通信接口 | Display :SPI |
Touch :I2C | |
控制芯片 | Display :JD9853 |
Touch :AXS5106L | |
分辨率 | 172(H) x 320(V) |
显示尺寸 | 17.63 (H) x 32.83 (V) mm |
产品尺寸 | 22.05(H)x 41.69(V) mm |
树莓派下使用
硬件连接
- 13PIN 杜邦线接口
LCD引脚 | 树莓派(BCM) |
VCC | 3.3V |
GND | GND |
MISO | 9/NC |
MOSI | 10 |
SCLK | 11 |
LCD_CS | 8 |
LCD_DC | 25 |
LCD_RST | 27 |
LCD_BL | 18 |
TP_SDA | 2 |
TP_SCL | 3 |
TP_INT | 4 |
TP_RST | 17 |
开启SPI与I2C接口
- 打开树莓派终端,输入以下指令进入配置界面:
sudo raspi-config
- 选择Interfacing Options -> SPI -> Yes 开启SPI接口
- 继续进入配置界面:
sudo raspi-config
- 选择Interfacing Options -> I2C -> Yes 开启I2C接口
- 重启树莓派
sudo reboot
- 检查 /boot/config.txt,可以看到'dtparam=i2c_arm=on' 和 'dtparam=spi=on' 已被写入
more /boot/config.txt
- 为了确保 SPI 没有被占用,建议其他的驱动覆盖暂时先关闭。可以使用 ls /dev/spi* 来检查 SPI 占用情况,终端输出 /dev/spidev0.0 和 /dev/spidev0.1 表示 SPI 情况正常
ls /dev/spi*
Python 环境
安装库文件
- 安装库
sudo apt-get update sudo apt-get install python3-pip sudo apt-get install python3-pil sudo apt-get install python3-numpy sudo apt-get install python3-spidev
示例操作
- 下载示例程序
cd wget https://files.waveshare.net/wiki/1.47inch%20Touch%20LCD/1.47inch_Touch_LCD_Demo_Pi.zip
- (可选,使用过解压指令可跳过这一步)安装解压环境
sudo apt-get install unzip
- 进入文件位置,执行解压指令
unzip 1.47inch_Touch_LCD_Demo_Pi.zip -d ./1.47inch_Touch_LCD
- 进入 Python 文件夹中
cd 1.47inch_Touch_LCD/Python
- 运行示例程序即可在屏幕上显示3张图片,显示完即进入画板功能
sudo python 1.47inch_Touch_LCD.py
C 环境
安装库文件
- 安装库
git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v
- 运行gpio -v会出现版本,如果没有出现说明安装出错
- 下载示例文件
- 进入文件目录,运行程序
示例操作
- 下载示例程序
cd wget https://files.waveshare.net/wiki/1.47inch%20Touch%20LCD/1.47inch_Touch_LCD_Demo_Pi.zip
- (可选,使用过解压指令可跳过这一步)安装解压环境
sudo apt-get install unzip
- 进入文件位置,执行解压指令
unzip 1.47inch_Touch_LCD_Demo_Pi.zip -d ./1.47inch_Touch_LCD
- 进入 C 文件夹中
cd 1.47inch_Touch_LCD/C
- 清除编译文件,重新编译
sudo make clean sudo make -j
- 编译成功,运行示例即可在屏幕上进行RGB刷屏,显示完即进入画板功能
sudo ./main
树莓派Pico下使用
硬件连接
- 13PIN 杜邦线接口
LCD引脚 | Raspberry Pi Pico |
VCC | 3.3V |
GND | GND |
MISO | GP12/NC |
MOSI | GP11 |
SCLK | GP10 |
LCD_CS | GP9 |
LCD_DC | GP14 |
LCD_RST | GP13 |
LCD_BL | GP15 |
TP_SDA | GP6 |
TP_SCL | GP7 |
TP_INT | GP8 |
TP_RST | GP5 |
环境搭建
- Pico的环境搭建请访问Pico快速上手
Python 环境示例程序
- 下载示例程序
- 解压示例文件,打开 Thonny
- 打开示例文件,路径为:1.47inch_Touch_LCD_Demo_Pico/Python/1.47inch_Touch_LCD.py
- 运行程序即可在屏幕上实现画板功能
- 若需上电自动运行程序,请将文件名修改为 main.py
ESP32 下使用
(请注意,以下示例通过ESP32S3运行,其他型号的ESP32请自行调整引脚定义)
硬件连接
- 13PIN 杜邦线接口
LCD引脚 | ESP32S3 |
VCC | 3.3V |
GND | GND |
MISO | 42/NC |
MOSI | 2 |
SCLK | 1 |
SD_CS | 38 |
LCD_CS | 39 |
LCD_DC | 41 |
LCD_RST | 40 |
LCD_BL | 6 |
TP_SDA | 15 |
TP_SCL | 7 |
TP_INT | 17 |
TP_RST | 16 |
Arduino环境
下载和安装 Arduino IDE
- 点击访问Arduino官网,选择对应的系统和系统位数下载。
- 运行安装程序,全部默认安装即可。
安装 Arduino-ESP32
- ESP32相关主板在Arduino IDE使用,须先安装“Arduino-ESP32板”库
- 国内部分区域安装,一般推荐“离线安装”, 若离线安装失败,则使用“在线安装”
- 安装 Arduino-ESP32教程,详见:Arduino 板管理教程
安装库
- 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。
对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。 - 库安装教程,详见:Arduino 库管理教程
库名称 | 说明 | 版本 | 库安装要求 |
---|---|---|---|
esp_lcd_touch_axs5106 | 触摸驱动库 | --- | “离线”安装 |
esp_lcd_jd9853 | LCD驱动库 | --- | “离线”安装 |
lvgl | 图形库 | v8.4.0 | “离线”安装 |
运行第一个Arduino程序
- 点击访问运行第一个Arduino程序
示例程序
lvgl_example
【程序说明】
本示例演示了使用 1.47inch Touch LCD 运行lvgl示例程序
【硬件连接】
- 将板子接入电脑
【代码分析】
i2c_bus_init(); // 初始化I2C总线 spi_bus_init(); // 初始化SPI总线 display_init(); // 初始化显示屏驱动 touch_init(); // 初始化触摸屏控制器 brightness_init(); // 初始化背光亮度控制模块 brightness_set_level(20); // 设置当前亮度为20%(取值范围0-100) lv_port_init(); // 初始化LVGL图形库运行环境(绑定硬件显示驱动) if (lvgl_lock(-1)) { // 获取图形库互斥锁(防止多线程并发访问) lv_demo_widgets(); // 初始化lv_demo lvgl_unlock(); // 释放图形库互斥锁 }
ESP-IDF 环境
环境搭建
- 点击访问IDF环境搭建
示例程序
- 下载示例程序,并解压
lvgl_exampla
【程序说明】
本示例演示了ESP32S3在ESP-IDF环境下驱动 1.47inch Touch LCD 运行lvgl示例程序
【硬件连接】
- 将板子接入电脑
【代码分析】
i2c_bus_init(); // 初始化I2C spi_bus_init(); // 初始化SPI display_init(); // 初始化显示屏 touch_init(); // 初始化触摸屏驱动 brightness_init(); // 初始化背光控制模块 brightness_set_level(20); // 设置背光亮度为20%(支持0-100级调节) lv_port_init(); // 初始化LVGL if (lvgl_lock(-1)) // 获取LVGL线程锁(-1表示阻塞等待),确保多线程安全 { // lv_demo_benchmark(); // lv_demo_music(); lv_demo_widgets(); // 启动LVGL的Demo lvgl_unlock(); // 释放LVGL线程锁 }
lvgl_brightness
【程序说明】
本示例演示了ESP32S3在ESP-IDF环境下驱动1.47inch Touch LCD 运行lvgl并能实现用触摸屏控制屏幕亮度。
【硬件连接】
- 将板子接入电脑
【代码分析】
i2c_bus_init(); // 初始化I2C spi_bus_init(); // 初始化SPI display_init(); // 初始化显示屏 touch_init(); // 初始化触摸屏驱动 brightness_init(); // 初始化背光控制模块 brightness_set_level(20); // 设置背光亮度为20%(支持0-100级调节) lv_port_init(); // 初始化LVGL if (lvgl_lock(-1)) // 获取LVGL线程锁(-1表示阻塞等待),确保多线程安全 { // lv_demo_benchmark(); // lv_demo_music(); // lv_demo_widgets(); lvgl_brightness_ui_init(lv_scr_act()); // 初始化ui lvgl_unlock(); // 释放LVGL线程锁 }
Arduino UNO下使用
硬件连接
- 13PIN 杜邦线接口
LCD引脚 | Arduino |
VCC | 5V |
GND | GND |
MISO | 12/NC |
MOSI | 11 |
SCLK | 13 |
LCD_CS | 10 |
LCD_DC | 7 |
LCD_RST | 8 |
LCD_BL | 9 |
TP_SDA | SDA |
TP_SCL | SCL |
TP_INT | 3 |
TP_RST | 4 |
安装库
- 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。
对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。 - 库安装教程,详见:Arduino 库管理教程
库名称 | 说明 | 库安装要求 |
---|---|---|
GFX_Library_for_Arduino | LCD驱动库 | “在线”或“离线”安装 |
axs5106l_device | Touch驱动库 | “离线”安装 |
示例程序
- 下载示例程序,并解压
- 进入示例文件 1.47inch_Touch_LCD_Demo_Arduino/1.47inch_Touch_LCD.ino 中,双击 1.47inch_Touch_LCD.ino 打开示例
- 选择设备与端口,编译并烧录程序
- 烧录成功进入画板功能