You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F4自定义PCB搭载ST7735驱动80x160 TFT显示屏无法全显问题

ST7735驱动80x160 TFT无法全屏显示的解决思路

核心问题分析

旋转显示屏后黑屏区域位置变化,说明硬件无故障,问题出在显示窗口的起始偏移配置——ST7735驱动需要根据屏幕的物理参数设置正确的行列起始偏移量,否则显示区域会偏离屏幕有效区域。


具体解决步骤

1. 配置正确的行列起始偏移量

你的80x160规格ST7735屏,通常需要设置非0的起始偏移(不同厂商的小屏参数略有差异)。在ST7735.c中,修改初始化逻辑,针对你的屏幕型号赋值:

// 在ST7735_Init函数开头或变量初始化处添加
#ifdef ST7735_IS_160X80
  _colstart = 26;  // 0.96寸80x160 ST7735屏常见列起始偏移
  _rowstart = 1;   // 常见行起始偏移
#endif

如果上述值无效,可尝试_colstart=0, _rowstart=0或_colstart=1, _rowstart=26这类组合测试。

2. 确保显示窗口函数正确应用偏移

检查ST7735_SetWindow(或类似设置显示区域的函数),确认偏移量已正确加入地址计算:

void ST7735_SetWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) {
  uint16_t x1 = x + _xstart;
  uint16_t x2 = x1 + w - 1;
  uint16_t y1 = y + _ystart;
  uint16_t y2 = y1 + h - 1;

  // 发送列地址设置命令
  ST7735_WriteCommand(ST7735_CASET);
  ST7735_WriteData(x1 >> 8);
  ST7735_WriteData(x1 & 0xFF);
  ST7735_WriteData(x2 >> 8);
  ST7735_WriteData(x2 & 0xFF);

  // 发行地址设置命令
  ST7735_WriteCommand(ST7735_RASET);
  ST7735_WriteData(y1 >> 8);
  ST7735_WriteData(y1 & 0xFF);
  ST7735_WriteData(y2 >> 8);
  ST7735_WriteData(y2 & 0xFF);

  ST7735_WriteCommand(ST7735_RAMWR);
}

3. 适配旋转方向的偏移逻辑

在ST7735_Init的旋转分支中,确保_xstart和_ystart根据旋转角度正确映射:

void ST7735_Init(uint8_t rot) {
  // 省略其他初始化步骤...

  rotation = rot;
  switch(rotation) {
    case 0:
      _width = ST7735_WIDTH;
      _height = ST7735_HEIGHT;
      _xstart = _colstart;
      _ystart = _rowstart;
      break;
    case 1:
      _width = ST7735_HEIGHT;
      _height = ST7735_WIDTH;
      _xstart = _rowstart;
      _ystart = ST7735_HEIGHT - _colstart - _width;
      break;
    case 2:
      _width = ST7735_WIDTH;
      _height = ST7735_HEIGHT;
      _xstart = ST7735_WIDTH - _colstart - _width;
      _ystart = ST7735_HEIGHT - _rowstart - _height;
      break;
    case 3:
      _width = ST7735_HEIGHT;
      _height = ST7735_WIDTH;
      _xstart = ST7735_WIDTH - _rowstart - _height;
      _ystart = _colstart;
      break;
  }
}

4. 核对初始化序列的显示参数

检查驱动初始化时发送的ST7735寄存器命令(如ST7735_MADCTL屏幕方向控制、ST7735_COLMOD颜色模式),确保参数与80x160屏幕匹配。例如MADCTL的扫描方向位,需对应你的屏幕物理走线。


测试验证

修改后重新编译下载,执行:

ST7735_Init(2);
fillScreen(BLACK);
testAll();

若仍有问题,可逐步调整_colstart和_rowstart的值,直到全屏显示。

内容的提问来源于stack exchange,提问作者Gripen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:35:22