0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Adafruit_ST7735 不闪更新

分享:

要避免 Adafruit_ST7735 屏幕更新时出现闪烁问题,可以采取以下优化方法(使用中文回答):

1. 使用双缓冲技术

如果开发板内存足够(如 ESP32/Arduino Mega),创建屏幕缓冲区避免直接刷屏:

#include <Adafruit_ST7735.h>
#include <Adafruit_GFX.h>

// 屏幕尺寸常量
#define TFT_WIDTH  128
#define TFT_HEIGHT 160

uint16_t buffer[TFT_WIDTH * TFT_HEIGHT]; // 帧缓冲区

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.initR(INITR_BLACKTAB);
  memset(buffer, 0x0000, sizeof(buffer)); // 初始化为黑色
}

void loop() {
  // 在缓冲区绘制内容
  drawToBuffer();

  // 一次性刷新整个屏幕(无闪烁)
  tft.startWrite();
  tft.drawRGBBitmap(0, 0, buffer, TFT_WIDTH, TFT_HEIGHT);
  tft.endWrite();
}

void drawToBuffer() {
  // 在 buffer 数组中直接操作像素数据
  // 示例:画一个红色矩形
  for (int y=20; y<50; y++) {
    for (int x=30; x<80; x++) {
      buffer[y * TFT_WIDTH + x] = ST7735_RED;
    }
  }
}

2. 局部更新优化

只刷新变化区域减少闪烁:

void updatePartial(int x, int y, int w, int h) {
  tft.startWrite();
  tft.setAddrWindow(x, y, x+w-1, y+h-1);
  for (int row=y; row<y+h; row++) {
    for (int col=x; col<x+w; col++) {
      tft.writeColor(buffer[row * TFT_WIDTH + col]);
    }
  }
  tft.endWrite();
}

3. 关闭自动重绘

使用 startWrite()endWrite() 包裹绘图操作:

tft.startWrite();
// 连续绘制操作(无中间刷新)
tft.fillRect(10, 10, 50, 30, ST7735_BLUE);
tft.drawCircle(60, 40, 20, ST7735_GREEN);
tft.endWrite(); // 统一提交

4. 减少全屏清除

避免频繁使用 fillScreen()

// 改为局部覆盖
tft.fillRect(0, 0, TFT_WIDTH, 20, ST7735_BLACK); // 仅清除状态栏区域

5. 调整刷新率

控制刷新速度:

uint32_t lastUpdate = 0;
void loop() {
  if (millis() - lastUpdate > 50) { // 50ms刷新一次
    updateScreen();
    lastUpdate = millis();
  }
}

6. 降低SPI时钟频率

减少信号干扰(在初始化时设置):

tft.initR(INITR_BLACKTAB);
SPI.setClockDivider(SPI_CLOCK_DIV4); // 降低SPI速度

推荐方案选择:

  • 优先双缓冲(内存充足时)
  • 局部更新+批处理(内存有限时)
  • 避免fillScreen全屏刷新

注意:双缓冲需要消耗较多内存(128x160的16位屏需40KB),适用于ESP32/Mega等大内存板卡。对于Uno/Nano等小内存板卡,重点优化局部更新和批处理操作。

这样可以显著降低屏幕闪烁现象,提升视觉流畅度。请根据具体硬件条件选择最适合的策略。

在Arduino上使用1.8英寸TFT显示屏的入门指南

下载每个库并解压缩文件夹。将它们重命名为“ Adafruit_ST7735”和“ Adafruit_GFX”,并将每个文件夹放置在Arduino Libraries文件夹内。我已将库的屏幕快照附加

2019-12-12 11:09:40

ST7735的相关资料分享

目录前言一、3线SPI二、使用1.命令2.对应引脚调整总结前言驱动芯片是ST7735,之前在Arduino上找库,没几个能用的(我FW不能用肯定是我的错),最后还是自己从STM32移植一个。顺便介绍

茶壶茶茶 2022-01-25 06:18:42

如何实现ST7735STFT屏幕的驱动?

如何实现ST7735STFT屏幕的驱动?

小野七七 2022-02-08 06:08:17

CW32L083移植驱动st7735 TFT屏

在CW32L083上驱动ST7735

2023-07-04 19:16:19

TFT1.44寸屏ST7735驱动GitHub的相关资料推荐

STM32应用之TFT1.44寸屏ST7735驱动GitHub项目下载链接:点我下载硬件平台:stm32f103rct和1.44寸128x128 TFT屏(st7735驱动)IDE:keil MDK

母猪会上树 2022-02-18 06:56:58

ST7735 TFT显示屏颜色错乱问题怎么解决?

ST7735 TFT显示屏颜色错乱问题怎么解决?

梅利号 2022-02-17 06:32:14

[经验] 上海航芯ACM32F403RET7外设SPI测试。点亮SPI LCD屏.驱动芯片ST7735.

= ST7735_YSTART;// based on Adafruit ST7735 library for Arduinostatic const uint8_tinit_cmds1

HQGBOY 2022-10-23 10:55:04

【Milk-V Duo 开发板免费体验】3. 点亮st7735屏幕

前言 本文介绍milkv-duo加载st7735的lcd屏幕,以及屏幕显示log。 参考文章:记录为Linux配置spi屏幕(st7735s)https://community.milkv.io/t

voidpbq 2023-09-18 22:05:24

为什么无法让I2C+SPI在Wemos D1 Mini Pro上工作?

= Adafruit_ST7735(TFT_CS,TFT_DC, TFT_RST);BME280I2C bme;void setup(void) {Serial.begin(9600);while

heks 2023-02-27 08:20:08

STM32F103ZET6驱动的ST7735s一直出现白屏是为啥呢?怎么解决?

STM32F103ZET6驱动的ST7735s一直出现白屏是为啥呢?怎么解决?

深海零下一度1 2022-02-21 07:25:38

STM32F407VET6+ST7735TFT LCD彩屏驱动程序分享

硬件准备STM32F407VET6开发板一块编译器使用的是STM32cubeide。屏幕使用的是如图所示的屏幕,驱动芯片是st7735.驱动协议采用的是spi通讯协议。和stm32芯片的连接方式如下

沈文强66 2022-02-18 07:34:17

怎样把ILI9326移植到Fireduino上替代原先的ST7735库呢

中断的引脚,进入中断后可以通过SPI方式读取电阻屏的AD值来计算点击的坐标,估计使用的芯片是XPT2046之类的。但是官方默认是ST7735 IC的显示屏,而且到现在为止,这个配套的显示屏还没有上市,买不到,无奈只好使用原来的给Arduino准备的TFT了。

lucas_songlea 2022-04-11 15:07:19

【国民技术N32项目移植】N32G457项目移植之RT-Thread SPI_TFT_LCD ST7735

函数,不需要改造,直接可以用。新建LCD_ST7735工程1、打开RT-Thread Studio,并新建空的工程:(这样新建细说,详细的新建工程见我上篇帖子:【国民技术N32项目移植】N32G457项目

华仔stm32 2023-01-30 23:40:17

物联网行业中的TFT-LCD屏驱动_ST7735S设计详解

ST7735S是另一款液晶显示控制器,它具有更高的性能和功能。它支持最高分辨率为160×128的TFT模块,支持完整的RGB分量控制,并且具有一个16位数据总线,可以支持最高分辨率为320×240

2024-09-29 11:54:28

烧写以后灯的问题

我自己打板子搞了个ATMEGA48的小板子。好多年了。 现在有一个出问题。 先贴出原理图: 我写了一个灯的程序,其中一块板子灯可以,另外一块,一直亮。 是不是那个管脚坏了?请大神帮我分析一下。谢谢!

chenbingjy 2023-05-23 09:30:07

LilyGo-T-Wristband板无法通过SPI从ST7735读取ID寄存器咋办?

我在使用 LilyGo-T-Wristband 板将 Arduino 代码移植到本机 idf-esp 代码时遇到问题。无法通过 SPI 从 ST7735 读取 ID 寄存器。这是我的 SPI

ht_liu 2023-03-01 06:59:31

led屏要怎么拍

首先需核实LED屏幕的刷新速度,确保快门速度设置低于屏幕刷新速度,如无法得知可以控制快门速度低于1/160秒,如果还是画面闪烁再继续逐步下调。最后通过全手动模式或快门优先模式,固定快门速度,即可确保画面

2020-03-08 16:48:26

B7735

B7735 - SAW Components Low-Loss Filter for Mobile Communication 942,5 MHz - EPCOS

2022-11-04 17:22:44

Adafruit Feather nRF52 Bluefruit的学习指南

是可能是由于预建的adafruit-nrfutil无法在Mac上运行。如果您的Mac早于MacOS,则二进制文件是在MacOS 10.13上生成的。请更新您的macOS,或者您可以在这里按照此仓库

2019-11-27 09:03:35

【沁恒微CH32V307评估板试用体验】SPI驱动ST7735时序

驱动LCD是单片常用外设之一,我这里书写SPI驱动后,驱动ST7735不成功,将驱动与时序附下,希望得到沁恒官网的支持:ST7735初始化

华仔stm32 2022-05-26 20:19:37

为什么我的树莓派ATC灯

我买了两个树莓派发现插卡通电后发现有一个正常,ATC 灯正常,另外一个板ATC灯长亮,,不知道是不是板坏了。请朋友帮忙分析一下,谢谢!Raspberry Pi 2 Model B

Arttronix 2019-07-16 05:39:06

固件更新ST-LINK错误怎么解决?

固件更新。于是我点击Firmware upgrade,在Upgrade tool中识别出了ST-LINK/V2,所以我升级成功了。但是现在在重新启动设备并返回到 CubeProgrammer 后

bairunwanda168 2023-01-03 06:11:08

【LuckFox Pico 开发板免费试用】3. 通过fbtft点亮st7735屏幕

前言 本章使用fbtft添加spi lcd st7735/gc9306。 fbtft生成fb0设备,后续通过lvgl可以实现自定义界面绘制。 一、电路图 使用开发板的spi0的scl以及mosi

voidpbq 2023-11-14 21:08:15

72-7735

TENMA - 72-7735 - Handheld Digital Multimeter, 3999 Count, Mean Value, Auto, Manual Range, 3.75 Digit

2024-06-21 01:48:04

一次学会使用Adafruit IO平台!

Adafruit IO 是一个免费/付费的IoT 平台,提供数据云端化、图像化的服务整合,Adafruit IO 可以让用户自由定义云端的资料内容;

2022-11-22 16:16:19

Adafruit 电缆组件 — 原型开发优选线束解析

为什么选择 Adafruit? ● Adafruit 是开源硬件领域的重要玩家。 Adafruit Industries 成立于 2005 年,以提供电子元件、硬件套件、开发工具和学习资源著名。它不

2025-12-04 15:58:48

如何确保在ST25DV64K准备好通过RFID读取之前更新ST25DV64K的EEPROM中的数据?

ST25DV64K 的 EEPROM,然后 ST25DV64K 芯片准备好通过 RFID 读取。如果 V_EH 上的电压太低且微控制器尚未打开,我希望通过 RFID 访问 ST25DV64 芯片。只有当微控制器

chm5 2023-01-31 08:05:55

怎样使用ST25 NFC App通过ST25DV64K更新固件呢

4个月前,我们完成了一个产品的设计,我们可以使用ST25 NFC App通过ST25DV64K更新固件。安装新版本(NFC TAP App V.3.6.0)后,它不再工作了。我们可以访问以前版本的应用程序吗?

yfdsfqdqd 2022-12-23 10:17:26

浅析Adafruit_NeoPixel常用库函数

初始化包含头文件#include 针对AVR单片机的特殊设置#ifdef __AVR__ #include// Required for 16 MHz Adafruit Trinket#endif

gXDhn 2021-07-13 07:44:54

探索Adafruit FONA MiniGSM:小巧模块的强大功能

探索Adafruit FONA MiniGSM:小巧模块的强大功能 一、引言 在电子设计的世界里,我们常常追求小巧、多功能的模块,以满足各种项目的需求。Adafruit FONA MiniGSM就是

2026-05-10 16:40:06

加载更多
相关标签