Pico-ResTouch-LCD-2.8

来自Waveshare Wiki
Eng49讨论 | 贡献2022年9月26日 (一) 14:52的版本 →‎程序
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
Pico-ResTouch-LCD-2.8
{{{name2}}}
{{{name3}}}
功能简介
特性 无特性,不解释
显示尺寸 2.8英寸
分辨率 320×240
' 无特性,不解释
' 无特性,不解释
接口 SPI

说明

产品简介

专门为Raspberry Pi Pico 设计的2.8 英寸电阻触摸屏扩展板,板载电阻式触摸控制芯片 XPT2046 和 Micro SD 卡槽,使用 SPI 接口通信

产品特性

  • 320 × 240 分辨率液晶屏,262K 彩色,能清晰地显示彩色图片
  • 板载触摸控制芯片,相比用 AD 引脚控制触摸板的方案,触摸效果更流畅
  • 板载 Micro SD 卡槽,方便放入图片直接进行显示
  • 背光灯可编程控制,更省电
  • 提供完善的配套资料手册 (Raspberry Pi Pico C/C++ 和 MicroPython 等示例程序)

产品参数

我的参数
工作电压 5V 分辨率 320 × 240 Pixels
通信接口 SPI 显示尺寸 57.60 × 43.20 mm
显示面板 IPS 像素大小 0.18 × 0.18 mm
控制芯片 ST7789 产品尺寸 70.20 × 50.20 mm

引脚接口

本款LCD使用的内置控制器为ST7789VW,是一款240 x RGB x 320像素的LCD控制器,而本LCD本身的像素为240(H)RGB x 320(V),LCD的内部RAM已完全使用。该LCD支持16位或18位每像素的输入颜色格式,即RGB565,RGB666,测试例程使用RGB565的颜色格式,这是常用的RGB格式LCD使用四线SPI通信接口,这样可以大大的节省GPIO口,同时通信是速度也会比较快,测试最大SPI写速度是60MHz

Pico-ResTouch-LCD-2.8 002.jpg 0.96inch lcd module spi.png
注:与传统的SPI协议不同的地方是:由于绝大多数用于显示,故而将从机发往主机的数据线进行了隐藏,该表格详见Datasheet Page 55(8.4 Serial Interface)章节。
RESX(LCD_RST)为复位,模块上电时拉低,通常情况下置1
CSX(LCD_CS)为从机片选, 仅当CS为低电平时,芯片才会被使能
D/CX(LCD_DC)为芯片的数据/命令控制引脚,当DC = 0时写命令,当DC = 1时写数据
SDA(MOSI)为传输的数据,即RGB数据
SCL(CLK)为SPI通信时钟
对于SPI通信而言,数据是有传输时序的,即时钟相位(CPHA)与时钟极性(CPOL)的组合
CPHA的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHA = 0,在第一个跳变沿进行数据采集
CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平
从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后

产品尺寸

Pico-ResTouch-LCD-2.8 003.jpg

硬件连接

LCD Pico 功能
VCC VSYS 电源输入
GND GND 电源地
SDIO_CLK GP5 SDIO接口SCK引脚,从设备时钟输入
LCD_DC GP8 数据/命令控制引脚(高电平数据,低电平命令)
LCD_CS GP9 LCD片选引脚(低电平有效)
LCD_CLK GP10 SPI通信CLK引脚,从设备时钟输入
MOSI GP11 SPI通信MOSI引脚,从设备数据输入
MISO GP12 SPI通信MISO引脚,从设备数据输出
LCD_BL GP13 背光控制
LCD_RST GP15 LCD复位引脚(低电平有效)
TP_CS GP16 触摸片选引脚(低电平有效)
TP_IRQ GP17 触摸中断引脚(低电平有效)
SDIO_CMD GP18 SDIO接口的CMD引脚
D0 GP19 SDIO接口的D0引脚
D1 GP20 SDIO接口的D1引脚
D2 GP21 SDIO接口的D2引脚
SD_CS/D3 GP22 SDIO接口的CS/D3引脚

Pico-ResTouch-LCD-2.8 004.jpg
注意Pico接入方向,Pico的USB应同MicroSD卡同一方向

环境搭建

1. Arduino IDE安装Pico SDK , 点击菜单栏的Tools->Board->Boards Manager后搜索Raspberry Pi Pico ,找到对应库并点击Install进行安装 ,如下图所示
Pico-10DOF-IMU012.jpg
2. VScode(Cmake)编译环境请点击The C/C++ SDK, get-start文档的9.2. Building on MS Windows进行参考并安装
Pico-ResTouch-LCD-2.8 006.jpg
3.请参考Micropython官方文档搭建python环境,在Thonny的Tools->Options->Interprete选择Raspberry Pi Pico设备,如下图所示
Pico-10DOF-IMU013.jpg

程序下载

1. 点击下载示例程序
2. VScode(Cmake)工程请使用VScode软件打开
3. 解压示例程序,Arduino示例程序直接点击.ino打开, Micorpython示例程序请上传到Pico文件系统,如图所示
Pico-10DOF-IMU014.jpg

例程使用

Arduino

1. 打开Arduino IDE或打开.ino示例程序,点击菜单栏选择Tools->Board->Raspberry Pi Pico.如下图所示
Pico-10DOF-IMU015.jpg
2. 安装TFT_eSPI库,点击菜单栏Tools->Manage Libraty,搜索TFT_eSPI后点击安装
Pico-ResTouch-LCD-2.8 007.png
3. 配置驱动文件, 打开 Arduino 库文件目录,通常在C:\Users\xxxx\Documents\Arduino\libraries\TFT_eSPI\ , 对于ResTouch-LCD-3.5 , 将TFT_eSPI库中(User_Setups\Setup60_RP2040_ILI9341.h) (User_Setup_Select.h) 的两个文件使用示例程序文件夹Arduino\ResTouch-LCD-3.5中的文件替换,ResTouch-LCD-2.8同理,如图所示
Pico-ResTouch-LCD-2.8 008.jpg
4. 选择菜单栏File-Examples->TFT_eSPI->480*320下的示例程序,再点击Edit下方upload下载代码到Pico

VScode(Cmake)

  • 使用VScode打开示例程序中的c工程,编译下载即可

Micropython

  • 打开Thonny IDE,将python/2inch8/下代码保存到Pico文件系统,如图所示,ResTouch-LCD-3.5同理

Pico-ResTouch-LCD-2.8 009.jpg

代码简析

本例程在运行后,先显示一些字符、图案,然后再显示图片,最后再显示触摸画板功能,C例程适配Pico-ResTouch-LCD-2.8和Pico-ResTouch-LCD-3.5. 在主函数中,我们将三个主要函数按顺序放置且将TP_DrawBoard();放在死循环中即可实现上述功能

GUI_Show();
LCD_Show_bmp(Bmp_ScanDir , Lcd_ScanDir);	
TP_DrawBoard();

在使用LCD_ShowBMP用于显示图片实验前,先把资料中PIC文件夹下中的图片复制到SD卡根目录 ,然后将SD卡插入屏幕背面的SD卡卡槽里开始下载程序验证即可

  • 在这里要注意的是SD卡要是FAT格式的,对应不同屏幕需要不同像素大小图片,2.8寸图片像素大小是320×240,3.5寸像素大小是480×320,图片要是24位色深.BMP格式


本产品使用的显示控制器为ST7789(2.8inch)/ILI9488(3.5inch),我们需要通过SPI通讯协议对该控制器进行初始化,初始化函数都写在LCD_Driver.c里,可以看到在lcd_test.c文件中

 System_Init();//系统初始化、配置串口波特率、SPI及相关引脚等
  LCD_SCAN_DIR Lcd_ScanDir = SCAN_DIR_DFT; //设置扫描方式 
  LCD_Init( Lcd_ScanDir, 200);//初始化屏幕,并传递了扫描方式及背光亮度

关于屏幕显示的功能函数都写在LCD_GUI.c里,每个函数的功能及传递的参数在源代码里都有解释,需要使用时直接调用即可

  • 画点
void GUI_DrawPoint(POINT Xpoint, POINT Ypoint, COLOR Color,
                   DOT_PIXEL Dot_Pixel, DOT_STYLE DOT_STYLE)
  • 画线(实线或虚线)
void GUI_DrawLine(POINT Xstart, POINT Ystart, POINT Xend, POINT Yend,
                  COLOR Color, LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel)
  • 画矩形(空心或实心)
void GUI_DrawRectangle(POINT Xstart, POINT Ystart, POINT Xend, POINT Yend,
                       COLOR Color, DRAW_FILL Filled, DOT_PIXEL Dot_Pixel)
  • 画圆(空心或实心)
void GUI_DrawCircle(POINT X_Center, POINT Y_Center, LENGTH Radius,
                    COLOR Color, DRAW_FILL  Draw_Fill , DOT_PIXEL Dot_Pixel)
  • 显示字符
void GUI_DisChar(POINT Xpoint, POINT Ypoint, const char Acsii_Char,
                 sFONT* Font, COLOR Color_Background, COLOR Color_Foreground)
  • 显示字符串
void GUI_DisString_EN(POINT Xstart, POINT Ystart, const char * pString,
                      sFONT* Font, COLOR Color_Background, COLOR Color_Foreground )
  • 显示数字
void GUI_DisNum(POINT Xpoint, POINT Ypoint, int32_t Nummber,
                sFONT* Font, COLOR Color_Background, COLOR Color_Foreground )
  • 显示时间
void GUI_Showtime(POINT Xstart, POINT Ystart, POINT Xend, POINT Yend,
                  DEV_TIME *pTime, COLOR Color)


在这里也稍微做下解释,本例程显示BMP图片首先也是通过SPI协议来读取SD卡中BMP格式的图片数据,再把这些数据以图像显示出来即可
在lcd_test.c文件中,主要使用以下两个函数显示图片:

SD_Init();//SD卡初始化
LCD_Show_bmp(bmp_scan_dir,lcd_scan_dir);//显示BMP图片

这些函数都写在LCD_Bmp.c里,实际上从SD卡中读取特定文件名的BMP格式的图片数据再调用我们自己写好的显示函数把这些数据重新“表达”为图像
这种方式不管在哪个平台,其原理都是类似的,感兴趣的朋友可以查阅相关资料对照相关代码认真研究一下
在LCD_Touch.c文件中:

  TP_Init( Lcd_ScanDir );//触摸板初始化,传递参数为扫描方式
  TP_GetAdFac();//校准屏幕
  TP_Dialog();//清屏
  TP_DrawBoard();//开启画板

该例程运行后,屏幕右边会有五种颜色,系统默认为黑色,触摸以选择画笔颜色;点击AD按钮,按屏幕提示点击红色+号对屏幕进行校准;点击右上角 CLEAR按钮对画板清屏
触摸实验默认使用了四组校准值,可以满足四个方向的画笔操作,在右边有五种颜色的选择,画笔大小默认为 9 个像素点
关于触摸屏的相关函数都写在LCD_Touch.c里,且其功能及传递参数的用途均有解释

程序提供了像素点大小为

   Width 5,Height 8    font8
   Width 7,Height 12    font12
   Width 11,Height 16    font16
   Width 14,Height 20    font20
   Width 17,Height24    font24

五种大小的字体库

  • 如果你需要不同大小不同字体的字符,可以根据资料中提供的字模提取软件生成自己想要的字库
  • 事实上你也可以Image2Lcd图片取模软件将不同大小不同格式的图片转换成数组数据,再用我们写好的函数显示出来
  • 资料中给出了所有控制芯片的数据手册供大家参考,如果你想更加深入的了解底层函数为什么这样写,就去数据手册看看吧!

Pico快速上手

固件下载

MicroPython固件下载
Pico MicroPython.gif
C_Blink固件下载
Pico Blink.gif
教程名3
列表3
教程名4
列表4
教程名5
列表5
教程名6
列表6
教程名7
列表7
教程名8
列表8

视频教程

PICO系列教程1——基础介绍

PICO系列教程2——外设GPIO

PICO系列教程3——PWM(脉冲宽度调制)

PICO系列教程4——ADC(模拟数字转换器)

PICO系列教程5——UART (异步收发传输器)

PICO系列教程6——I2C(集成电路总线)

PICO系列教程7——SPI(串行外设接口)

PICO系列教程8——PIO(可编程输入输出端口)

文字教程

基础介绍

Raspberry Pi Pico的基础介绍

MicroPython系列

【MicroPython】machine.Pin类函数详解
【MicroPython】machine.PWM类函数详解
【MicroPython】machine.ADC类函数详解
【MicroPython】machine.UART类函数详解
【MicroPython】machine.I2C类函数详解
【MicroPython】machine.SPI类函数详解
【MicroPython】rp2.StateMachine类函数详解

C/C++系列

【C/C++】 Windows教程1——环境搭建
【C/C++】 Windows教程2——创建工程

Arduino IDE 系列

环境搭建

  • 打开Arduino IDE,进入File->Preferences
  • 在弹出的对话框中,在“Additional Boards Manager URLs”字段中输入以下URL(需要梯子):
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  • 点击OK关闭对话框。
  • 进入IDE中的工具->开发板管理器
  • 在搜索框中输入“pico”,然后选择“添加”:
  • 无法下载的,可以点击此处下载压缩包提取密码为 0755 ,然后复制到指的目录下
    • 解压后,复制到C:\Users\username\AppData\Local\Arduino15下
    • 例如:我的用户名是ZhangSan,那么就是C:\Users\ZhangSan\AppData\Local\Arduino15下
    • 注意:要将文件管理器中的隐藏的项目打开:点击查看 -> 勾选隐藏的项目,不勾选会看不见AppData文件夹

Pico-W系列教程(即将上线)

  • 敬请期待

开源例程

MircoPython视频例程(github)
MicroPython固件/Blink例程(C)
树莓派官方C/C++示例程序 (github)
树莓派官方micropython示例程序 (github)
Arduino官方C/C++示例程序 (github)

开发软件

技术支持

联系人:黄工
QQ:2850151199
EMAIL:2850151199@qq.com
电话:0755-83040712
微信:扫下方二维码添加
Service20-Weichat.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证