浦江一水 发表于 2024-11-19 21:57:40

浅说漫话为实验箱(板)配置显示屏

浅说漫话为实验箱(实验板)配置显示屏

日前淘了三块TFT显示屏,
其中一块是专用于AI8051U实验箱的触摸屏, 现已收到,
这样就可以在AI8051U实验箱做做关于触摸屏的实验了。

在淘屏的过程中,有一点经历、体会和思考,聊一聊,
供也想为实验箱或实验板选配彩屏的坛友同学参考。

初入论坛不久,本人有幸申请到了32G12K128_V9.62实验箱,
当时看到此彩屏的引脚排列,就想到了是配Arduino触摸显示屏的,
网上一查,2.4寸的Arduino触摸显示屏,遍地都是,
而且价格不贵...(Arduino的生态策略)
很随意地花了大约20元出头,淘了一块,是ILI9341的,还配了一支笔。

由于32G实验箱的官方例程中关于触摸屏的实验,
是针对ILI9325驱动的,故一直没有在32G实验箱上做这方面的实验。
总体感觉,显示屏使用正常,而且在Arduino开发板上也能用,比较满意。
看一下Arduino触摸显示屏的正反面:
正面与反面


这是5V供电的屏,5V电源引脚进入后经U1(1117)降压为3.3V,U2、U3驱动集成电路及IO口等实际都工作在3.3V。

3.3V的引脚悬空,无连接。板上有SD(TTF)卡座,除了支持触摸屏外还支持SD卡读写功能。
正面上部的按钮,是复位按钮,用在Arduino开发板上起复位作用。

最近,又很荣幸地获赠了AI8051U_V1.2实验箱,
经神管及时提醒:可能要配一块3.3V供电的触摸屏。
这才使我认真考虑了:为什么?
仔细观察分析了两个实验箱的差异,感觉存在两个问题:供电和触摸。
原Arduino屏(5V供电的)如何在AI8051U实验箱屏供电是3.3V的情况下使用?
这个问题经思考和摸索,已经解决。
可参见我的另外一帖:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11527
无论从理论分析和实践体验,都是可正常使用的,
而且修改操作方法很简单,非常容易操作。

接下来就是研究触摸问题了。

为什么Arduino开发板上能正常触摸使用,而到AI8051U实验箱上就不能用?
显然,引脚定义不同, AI8051U实验箱上在此位置上的引脚是指向TP_...触摸屏接口的,
而Arduino屏的相同位置的引脚指向SD_...存储卡的,答案就在这里了。
那么可以想象,专门用于AI8051U实验箱,带触摸功能的屏,一定是没有SD卡的,
购买专用屏之前,一直想先了解一下专用屏的反面是怎样的,但是一直没有机会。
直到屏到手,才得见其真面貌,也证实了之前的猜想。请看:
正面与反面

情况就很清楚了:
这是3.3V供电的屏,3.3V电源经引脚进入后直接供显示屏及各IO使用,
板上无SD卡模块位置,即显示屏不附加SD(TTF)卡功能
专用屏是利用了Arduino屏原来用于SD卡的引脚,
增加了XPT2046芯片,经芯片再连接四线电阻触摸屏,
从而实现触摸功能,同时也放弃了屏模块支持SD卡的功能。
省却了1117降压模块,其位置空余,使得5V引脚悬空。
顶部无复位按钮,也暗示了虽引用了Arduino的引脚布局,
但与Arduino无关的,并不承担其复位功能。

而Arduino屏在支持SD卡的同时,又能支持触摸功能,
能不引起一点点对此的思考吗?
经过调查思考和研究,发现Arduino屏,居然是不经过芯片,
直接控制四线电阻触摸屏,CPU直接承担ADC转换计算,实现触摸功能。
在此先感叹一下Arduino在这里的巧妙构思和程序微妙,后另题再作学习研究了。

专用屏,在AI8051U实验上的测试,
使用官方的测试代码,是正常的。

由于是3.3V供电,对比之前用5V供电的Arduino屏,感觉亮度是低了一些。

如果把专用屏插回到Arduino开发板上,则是一片白色亮屏,
   原Arduino程序,对专用屏是不支持的。
如果把专用屏插回到32G实验箱上,也是一片白色亮屏,测量引脚电压,3.3V是到位的。
   初步思考,可能是改制后与原实验箱的引脚使用有所冲突,
   导致原32G实验箱相关彩屏的实验程序,均无法使专用屏正常显示。(还有待研究)

从而真正明确了,这确实是一块专门用于AI8051U实验箱的屏,
网上卖家极少,也就物以稀为贵了。

也曾搜寻过32G实验箱例程38所说,驱动是ILI9325的并支持触摸的屏,但毫无踪影。

至此,大概可以这样小结一下:
如果你仅拥有AI8051U实验箱,
   可选用这块专用屏,可以实验需要带有触摸屏功能的程序;
如果你仅拥有32G实验箱,
   可选用Arduino的屏,或者再继续搜寻一下当初设计实验箱时、例程38所指的那块带触摸的屏;
如果你既拥有32G实验箱,又拥有AI8051U实验箱,
   并且一块屏也没配,而又需要在AI8051U实验箱实验触摸屏的话,
   那么,可以配一块Arduino屏,用于32G实验箱,
   再配一块专用屏,专用于AI8051U实验箱。(基于目前的市场状况)
   如果你已经配了一块Arduino的5V的屏了,而且并不考虑在AI8051U实验箱做触摸屏实验的话,
   那么,你完全可以将那块Arduino屏用于AI8051U实验箱(经5V小改)。

然而,同样引脚排列的Arduino屏,
已经看到有3.5寸、分辨率是480*320的了...


话说这3.5寸的Arduino屏,分辨率比原来2.4寸的翻了倍, 其价格却与2.4寸专用屏相仿,可见其性价比还是较高的。
观其外形尺寸,引脚分布,在AI8051U实验箱还是能插上即用的。


不过,它还是属于一块不带专用触摸芯片的触摸屏。
尽管有文献已表明,通过内部ADC直接对触摸屏转换,是可以实现触摸功能的。
但是触摸精度、灵敏度以及要频繁切换从而增加CPU负担等特点,说明其并不是一块十分完美理想的屏。


以上所说,不管是2.4寸的Arduino屏,还是3.5寸的Arduino屏,还都是属于8位数据的并口屏。
为什么要用并口屏?因为其传输数据的速度比串口屏要高。
那么既然要追求较高的传输速度,为什么不用16位数据的并口屏呢?
因为其占用的IO口太多了。
对于AI8051U其IO端口并不是非常充足的芯片而言,是要权衡一下的。
然而, 事实上,Arduino已经在 Arduino Mega 2560 的开发板上使用16位并口屏了。

试问一下, 如果让你设计一个产品,并为此产品配置显示屏的话,
你会选用Arduino屏吗? 你会拘泥于这样的引脚排列吗? 大概率可能是不会的。
那么, 是否可以关注一下,一字排列14针引脚的TFT_SPI接口的触摸屏呢?
这就是接下来要说的,文首提及的三块屏中的第二块屏了。
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12078&extra=page%3D1
这是一块2.4寸SPI接口的,分辨率为240*320的带有专用触摸片的触摸屏。
而且价格比较亲民,非常适合爱好者们实验选用。


SPI接口的特点是相对并口占用IO端口数量较少,从上图中可见:
除了电源,触摸屏占用5个IO口,SPI通讯口只用了7针,包括了数据写入读出以及背光控制。
实验也已经表明,AI8051U驱动这块显示屏是没有问题的。是比较好用的。


这是Ai8051U驱动2.4寸SPI_240*320_触摸屏实验的留影。
触摸笔所到之处,显示不同的色块。

再来网上浏览,发现同类的显示屏,还真不少。
2.4寸

2.8寸

3.2寸

3.5寸

4.0寸

诸位是否发现?这些显示屏,虽然尺寸不同,分辨率不同,但是它们的接口排列定义,却是相同的。
似乎已经约定俗成,形成了一种标准,这样很有利于用户的选用和互换。
。。。。。。

继续聊聊,关于为单片机配置显示屏的话题....
随着智能手机的普及,人们已经越来越熟悉和习惯那种图形界面的便捷操作。
当你用单片机开发做带有显示屏的项目时,用户已不满足简单的字符型菜单界面了。
然而要做彩色图片页面切换、图标菜单、动态曲线、滑屏过渡显示等类似手机的华丽操作,并非轻而易举能实现的,那是要消耗大量硬、软件资源的。
尽管AI8051U这样高性能的MCU,具有QSPI+DMA+LCM的机制,但是真正用于做图形界面项目的,还是十分费劲的。
其实现今的市面上,已经存在着这样的一种屏,可以让你事半功倍。
这就是本文一开头所说的第三块屏了。。。
这是淘到的“迪文DMG48320C035”一款入门级的智能串口屏:
3.5英寸,分辨率为480*320, RMB 16.5元(不含路费)。
屏正反面



几乎可以说,她是占用单片机的引脚接口最少的屏了(仅GND VCC RXD TXD 四针接口), 适用于任何型号的单片机。

只要用简单的串口指令控制,就能轻松驾驭,实现各种文本、图片、图标、进度、动画....显示。
展示一个简单的实例:这是用擎天柱核心板驱动的。




若套用一句话:“用 DMA 解放 CPU, 让 CPU 去干更重要的事。”
那么是否可以: 用“智能串口屏”解放 CPU, 让 CPU 去干更重要的事。

(本文完)

DebugLab 发表于 2024-11-19 23:29:59

冲哥(电子DIY小家)的屏?

DebugLab 发表于 2024-11-19 23:32:12

XT2046专用触摸屏芯片速度和精度好一些,
直接用单片机的ADC要反复切换通道,
浪费大量资源,精度也差一些

浦江一水 发表于 2024-11-20 08:43:09

DebugLab 发表于 2024-11-19 23:29
冲哥(电子DIY小家)的屏?

是的.搜索到目前为止,就此一家,别无分店。

我曾试图寻找当年设计32G实验箱时,所选用的ILI9325驱动的触摸屏,无果。

浦江一水 发表于 2024-11-20 09:09:51

DebugLab 发表于 2024-11-19 23:32
XT2046专用触摸屏芯片速度和精度好一些,
直接用单片机的ADC要反复切换通道,
浪费大量资源,精度也差一些


所言极是。
谢谢超版的留言。

这也正是上面本贴还要继续讲述的。
研究了Arduino的程序,是需要四线电阻屏的两个引脚接单片机具有ADC输入功能的引脚,
这就说明了是在利用单片机ADC功能,加以算法,实现了免芯片转换的触摸功能。
从理论上讲,Arduino能实现的,Ai8051U也应该能实现的。
至于反复切换通道和占用资源及精度问题,现在先说能不能用,以后再说好不好用。
“反复切换”这一点, Ai8051U的性能速度远超 Arduino_UNO所用芯片了。
“精度”问题,是一个算法优化问题。用XPT2046如果不加滤波和多重求均算法,也是一塌糊涂的。

ercircle 发表于 2024-11-20 09:24:43

遇到相同的问题,看了下和Ai8051U实验箱pin脚关系如图,还没研究它这个控制原理

DebugLab 发表于 2024-11-20 09:34:35

ercircle 发表于 2024-11-20 09:24
遇到相同的问题,看了下和Ai8051U实验箱pin脚关系如图,还没研究它这个控制原理
...

看看xpt2046手册就明白了

ercircle 发表于 2024-11-20 09:36:37

DebugLab 发表于 2024-11-20 09:34
看看xpt2046手册就明白了

{:5_300:}收到

浦江一水 发表于 2024-11-21 21:00:27

DebugLab 发表于 2024-11-19 23:32
XT2046专用触摸屏芯片速度和精度好一些,
直接用单片机的ADC要反复切换通道,
浪费大量资源,精度也差一些


若有“直接用单片机的ADC要反复切换...浪费...精度也差”的例程代码,发过来看看,
学习研究,看能否优化?人家Arduino敢为天下先,咱国芯AI8051U,性能优越,何以惧之?

DebugLab 发表于 2024-11-21 22:05:50

浦江一水 发表于 2024-11-21 21:00
若有“直接用单片机的ADC要反复切换...浪费...精度也差”的例程代码,发过来看看,
学习研究,看能否优化 ...

https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11264
页: [1] 2
查看完整版本: 浅说漫话为实验箱(板)配置显示屏