本帖最后由 gaoyang9992006 于 2023-12-7 17:00 编辑
#申请原创# @21小跑堂
在Arduino开发中,ESP32的默认引脚配置文件为:pin_arduino.h
该文件内有以下内容:
static const uint8_t TX = 21;
static const uint8_t RX = 20;
static const uint8_t SDA = 8;
static const uint8_t SCL = 9;
static const uint8_t SS = 7;
static const uint8_t MOSI = 6;
static const uint8_t MISO = 5;
static const uint8_t SCK = 4;
static const uint8_t A0 = 0;
static const uint8_t A1 = 1;
static const uint8_t A2 = 2;
static const uint8_t A3 = 3;
static const uint8_t A4 = 4;
static const uint8_t A5 = 5;
#endif /* Pins_Arduino_h */
其中,该LCD屏幕所用的即为SPI接口
所以默认可以使用
static const uint8_t SS = 7;
static const uint8_t MOSI = 6;
static const uint8_t MISO = 5;
static const uint8_t SCK = 4;
由于该液晶屏只需要单向写入通信,因此只使用了MOSI接口,
于是可以使用MISO的接口用作屏幕上其他端口的控制,比如下面这种
另外串口占用的引脚,如果不使用的情况下是可以用作IO使用的,该引脚的数字使用编号为21,20
如上图所示测试了GPIO21,经过测试可以作为普通引脚使用。
该屏幕的BL背光引脚,默认悬空则为拉高,点亮,如果该引脚接地则息屏灯。
---------------------------------------------------------------------------------------
当一个系统中只有这一个SPI设备时候,还可以更加精简
例如CS引脚,可以直接接地,这样省去了片选的控制引脚,连接如下所示
这样系统头文件为SPI预留的4个引脚刚好够用,如果需要实现自动息屏功能,则需要额外再使用一个IO用来定时控制息屏个功能,当没有操作的时候倒计时,进入息屏模式,同样也可以通过按键实现息屏,这就又需要一个引脚了。
如果引脚不够用,无法实现,则可以增加一个开关用于控制该引脚拉低到底,可以是拨动开关,也可以是自锁按键。
---------------------------------------------
继续精简
对于LCD的RESET引脚,也可以省略一个IO,由于单片机本身也具备复位引脚,因此我们可以将该引脚与单片机的RST合并使用,由单片机复位信号复位LCD,这样只要单片机上电,那么LCD就进入复位,开始工作
这样驱动显示屏只需要3个IO引脚即可完成工作。
-----------------------------------------------------------------继续优化
经过上述的操作我们节约出来了GPIO05,刚好此时我们的背光控制BL有希望了,可以用GPIO05给其提供控制信号。
对GPIO05初始化为输出引脚,同时设置初始值为高电平,这样上电即可点亮屏幕。
当需要息屏的时候拉低GPIO05,当遇到点亮触发信号,拉高该引脚。
至此,我们使用Arduino 为ESP32C3的SPI预留的4个引脚完美的实现了ST7735的LCD彩屏控制。
|
感谢分享,奖励楼主500家园币!(家园币可兑换礼品)