3.5inch TFT Touch Shield

来自Waveshare Wiki
跳转至: 导航搜索

说明

3.5inch TFT Touch Shield
{{{name2}}}
{{{name3}}}
功能简介
特性 3.5寸Arudino电阻屏 带LCD控制器 TFT
驱动芯片 ILI9486(LCD控制)、XPT2046(触摸)
分辨率 480x320
' 无特性,不解释
' 无特性,不解释
接口 SPI Arduino

Arduino

本例程已经在Arduino uno上测试通过,直接按下图插入Arduino uno即可

插入方式

连接图如下(点击可放大)
注意:下图是2.8寸TFT屏与Arduino uno的连接图,但本产品与其连接方式完全一样
Arduino connect 1.png
Arduino connect 2.png

硬件配置

  • 如果 Arduino 主板带有 ICSP 接口,将显示模块上的 SPI Config 开关置于 ICSP 方向(默认)(本公司的Arduino UNO主板是带有ICSP接口的,直接插上即可)
  • 如果 Arduino 主板没有 ICSP 接口,将显示模块上的 SPI Config 开关分别至于 SCLK\D13,MISO\D12, MOSI\D11

安装编译软件(Windows教程)

arduino IDE 安装教程

运行程序

解压压缩包,打开文件夹,打开Arduino文件夹,可以看到LCD_Show、LCD_ShowBMP、LCD_Touch三个工程文件夹
首先直接打开LCD_Show文件夹中的LCD_Show.ino文件,然后选择开发板型号Arduino UNO

3.5inchTFT Arduino test 1.png
选择对应的COM口

3.5inchTFT Arduino test 2.png
然后点击编译并上传即可

3.5inchTFT Arduino test 3.png

程序说明

LCD_Show用于显示一些不同颜色形状的图案及时间、 LCD_ShowBMP用于显示BMP格式的图片、LCD_Touch用于使用触摸功能

本产品使用的显示控制器为ILI9486 ,我们需要通过SPI通讯协议对该控制器进行初始化,初始化函数都写在LCD_Driver.cpp里
可以看到在LCD_Show.ino中有

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

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

  • 画点
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)




在使用LCD_ShowBMP用于显示图片实验前,先把资料中PIC文件夹下中的图片复制到SD卡根目录 (根目录想必你应该明白吧,就是将图片直接存到SD卡,不要放在任何子文件夹里哈)
然后将SD卡插入屏幕背面的SD卡卡槽里开始下载程序验证即可

  • 在这里要注意的是SD卡要是FAT格式的,图片要是480*320像素24位色深.BMP格式

在这里也稍微做下解释,本例程显示BMP图片首先也是通过SPI协议来读取SD卡中BMP格式的图片数据,再把这些数据以图像显示出来即可
在LCD_ShowBMP.ino中:

SD_Init();//SD卡初始化
LCD_ShowBMP();//显示BMP图片

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


在LCD_Touch.ino中:

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

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

程序提供了像素点大小为

   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图片取模软件将不同大小不同格式的图片转换成数组数据,再用我们写好的函数显示出来
  • 资料中给出了所有控制芯片的数据手册供大家参考,如果你想更加深入的了解底层函数为什么这样写,就去数据手册看看吧!

STM32

本例程已经在XNUCLEO-F103RB上测试通过,直接按下图插入XNUCLEO-F103RB即可。XNUCLEO-F103RB的型号是STM32F103RBT6,如果有需要移植程序,请对照原理图按实际引脚连接

插入方式:

连接图如下(点击可放大):
注意:下图是2.8寸TFT屏与XNUCLEO-F103RB的连接图,但本产品与其连接方式完全一样
STM32 connect 1.JPG
STM32 connect 2.JPG

软件说明

例程是基于HAL库进行开发的。 下载程序,找到STM32程序文件目录,打开STM32\XNUCLEO-F103RB\lcd3in5-demo\MDK-ARM\ lcd3in5-demo.uvprojx
3.5inchTFT stm32 test 1.png

依次点击编译下载
3.5inchTFT stm32 test 2.png

程序说明

本例程在运行后,先显示一些字符、图案,然后再显示四张图片,最后再显示触摸画板功能,实际上就是在Arduino平台代码三个工程的整合 在主函数中,我们将三个主要函数按顺序放置且将TP_DrawBoard();放在死循环中即可实现上述功能

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

同Arduino平台的一样使用的是相同的驱动和程序框架,关于不同函数的位置参考Arduino教程即可
在使用LCD_ShowBMP用于显示图片实验前,先把资料中PIC文件夹下中的图片复制到SD卡根目录 ,然后将SD卡插入屏幕背面的SD卡卡槽里开始下载程序验证即可

  • 在这里要注意的是SD卡要是FAT格式的,图片要是480*320像素24位色深.BMP格式

程序提供了像素点大小为

   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图片取模软件将不同大小不同格式的图片转换成数组数据,再用我们写好的函数显示出来
  • 资料中给出了所有控制芯片的数据手册供大家参考,如果你想更加深入的了解底层函数为什么这样写,就去数据手册看看吧!

FAQ


  • 对于一些没有ICSP接口的开发板(如NUCLEO),需要将拨码开关拨向非ICSP侧才能正常工作



售后

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

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