3.5inch TFT Touch Shield
说明
| |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
Arduino
本例程已经在Arduino uno上测试通过,直接按下图插入Arduino uno即可
插入方式
连接图如下(点击可放大)
注意:下图是2.8寸TFT屏与Arduino uno的连接图,但本产品与其连接方式完全一样
硬件配置
- 如果 Arduino 主板带有 ICSP 接口,将显示模块上的 SPI Config 开关置于 ICSP 方向(默认)(本公司的Arduino UNO主板是带有ICSP接口的,直接插上即可)
- 如果 Arduino 主板没有 ICSP 接口,将显示模块上的 SPI Config 开关分别至于 SCLK\D13,MISO\D12, MOSI\D11
安装编译软件(Windows教程)
运行程序
解压压缩包,打开文件夹,打开Arduino文件夹,可以看到LCD_Show、LCD_ShowBMP、LCD_Touch三个工程文件夹
首先直接打开LCD_Show文件夹中的LCD_Show.ino文件,然后选择开发板型号Arduino UNO
选择对应的COM口
然后点击编译并上传即可
程序说明
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的连接图,但本产品与其连接方式完全一样
软件说明
例程是基于HAL库进行开发的。 下载程序,找到STM32程序文件目录,打开STM32\XNUCLEO-F103RB\lcd3in5-demo\MDK-ARM\
lcd3in5-demo.uvprojx
依次点击编译下载
程序说明
本例程在运行后,先显示一些字符、图案,然后再显示四张图片,最后再显示触摸画板功能,实际上就是在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侧才能正常工作
5V/138.6mA