arduino-esp32:基于TFT-eSPI库实现触摸显示屏_arduino tft屏幕ui设计

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

那么如果按照这个文件中所标识的引脚,将显示屏上的引脚对应的接上,其实显示部分就可以正常运作了。所以如果仅仅需要显示,需要做的工作只有两步:

  • 下载TFT-eSPI库。
  • 修改上述的头文件包含。

但是买个触摸屏只用来显示多少有点亏。TFT-eSPI也编写了对于触摸模块的驱动代码,只不过需要进行一些额外的操作,当然这也并不难。

触摸流程

在上图中的头文件里可以看到有一个TOUCH_CS的宏定义。我们要使用触摸驱动就必须把这个的注释取消掉。但是这也只有一个CS,其他的引脚似乎并没有在任何地方定义,可是显示屏的引脚上对触摸驱动也是有SPI引脚引出的。那么如果你直接把这CS引脚接上ESP32的26引脚,会发现这并没有任何用处。
在这里插入图片描述
其实这跟SPI这个协议有关。了解SPI这个协议的通信方式之后,其实就很容易解决了。
先来看看SPI协议中主机与从机的通信连接方式:
在这里插入图片描述
太具体的就不说了,网上好多。对我们这里有用的就是:
如果只存在一个SPI从设备,例如我们这里的显示模块,那么主机(ESP32)的SPI接口就可以直接通过杜邦线将两个设备的SPI接口相互连接即可正常通信。此时CS引脚直接拉低或接地即可。
但是如果存在多个SPI从设备,例如我们这里的显示模块加上触摸模块,那么根据这张图,可以发现,其实一个主设备和多个从设备的SCK、MISO、MOSI,是共享线路的,而CS引脚在这里就起到了重要的作用。它能够让主设备选择某一时刻与哪一个从设备进行通信。那么说到这里,结合上面的头文件中只定义了一个TOUCH_CS引脚,怎么驱动显示和触摸设备就很显而易见了:

我们只需要将主设备的SCK、MISO、MOSI引脚引出,然后将多个从设备的SCK、MISO、MOSI引脚分别接在引出的三条对应的线路上,最后通过程序设置CS引脚来分时的选通从设备,就可以在这里实现对触摸显示屏的正常驱动。

至于这个引出的线路怎么实现,用面包板就行了。
在这里插入图片描述
它的底部其实就是一条金属条。
在这里插入图片描述
原理就是这样,具体怎么接都行。比如我是这么接的。最上面一排的三根接ESP32的SCK、MISO、MOSI引脚,把这三条线路引到面包板上,这就对应了前文中的SPI连接图上的那三根引出的线。接下来就把从设备的SCK、MISO、MOSI引脚接在对应的线路上就行了。比如我这个面包板上下两层不连通,我用一根跳线把上面下面连通了,然后把显示屏的显示模块和触摸模块的SCK、MISO、MOSI接口分别接在了下面部分的两排上。
只有这三根线需要通过面包板来连接,其他的线直接接入ESP32原生的引脚即可。
在这里插入图片描述

踩坑

那么如果你就这样把ESP32的SCK、MISO、MOSI引脚接入了面包板,并把显示和触摸的SCK、MISO、MOSI分别接到了对应的线路上,然后把代码那么一上传,会发现这个校准的触摸程序,依旧不能实现触摸🙃。不过原因其实也很简单(虽然我找了很久🙃)。
回到上面的这个头文件,这里其实有一句注释:

leave TFT SDO disconnected if other SPI devices share MISO

意思就是:

如果有其他的SPI设备共享了MISO这条线路,那么就让TFT显示屏的SDO接口别连接这条线路。

意思很简单,就是如果你是单个的SPI设备,直接对着连接。但是如果存在多个SPI设备(比如我们这里有显示模块和触摸模块两个),那么就让显示模块对应的MISO接口不要接入这条线路。也就是只让其他的设备的MISO接入这条线路。
在这里插入图片描述
那么根据这条注释,我们把原来的接线改动一下。ESP32所引出的SCK、MISO、MOSI不需要改动。触摸模块的SCK、MISO、MOSI也不需要改动。把显示模块的MISO引脚和面包板上的ESP32的MISO线路的接线直接断开,不接了。如下图:
在这里插入图片描述
面包板上的具体接线如下图:
在这里插入图片描述

LED引脚的小技巧

LED引脚是用来控制背光的,但是其实这个头文件中是没有定义的。所以你需要自己手动的定义一个引脚让它输出高电平,或是接在3.3V的引脚上,抑或是输出PWM信号调节亮度,否则显示屏是不会亮的。但是如果你并不需要调节亮度这种功能,插拔杜邦线比较方便,又懒得自定义一个引脚的话,可以试试用这个办法:
在下载代码之前,把LED引脚空接。代码下载完毕后,将LED引脚接在ESP32的EN引脚上。
如下图:
在这里插入图片描述
这样的话,不需要你重新定义一个LED引脚,也不需要额外找一个3.3V的接口,显示屏也能够在上电后正常运作。不过记得在下载代码时要断开,否则下不进去。

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值