TFT-eSPI库 驱动GC9A01圆屏 镜像操作

打开TFT_eSPI/TFT_Drivers/GC9A01_Rotation.h (其他屏幕驱动同理)
用以下代码覆盖


// This is the command sequence that rotates the GC9A01 driver coordinate frame

rotation = m % 5;

writecommand(TFT_MADCTL);
switch (rotation) {
    case 0: // Portrait
        writedata(TFT_MAD_BGR);
        _width  = _init_width;
        _height = _init_height;
        break;
    case 1: // Landscape (Portrait + 90)
        writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR);
        _width  = _init_height;
        _height = _init_width;
        break;
    case 2: // Inverter portrait
        writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_BGR);
        _width  = _init_width;
        _height = _init_height;
        break;
    case 3: // Inverted landscape
        writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_BGR);
        _width  = _init_height;
        _height = _init_width;
        break;
    /****添加case4**********/
    case 4:
        writedata(TFT_MAD_MY | TFT_MAD_BGR);// 设置镜像旋转
        _width  = _init_width;
        _height = _init_height;
        break;
}

观察到,此代码将rotation = m % 4;改为了rotation = m % 5;
并且添加了case 4:选项

writedata()后选项含义:
TFT_MAD_BGR不解释,遇到镜像后RB翻转就加上

镜像前:
TFT-eSPI库 驱动GC9A01圆屏 镜像操作_第1张图片

TFT_MAD_MX沿Y轴翻转
TFT-eSPI库 驱动GC9A01圆屏 镜像操作_第2张图片

TFT_MAD_MY沿X轴翻转
TFT-eSPI库 驱动GC9A01圆屏 镜像操作_第3张图片

TFT_MAD_MV沿Y轴翻转并顺时针旋转270
TFT-eSPI库 驱动GC9A01圆屏 镜像操作_第4张图片

TFT_MAD_ML沿X轴翻转 (与TFT_MAD_MY作用相同,暂不清楚作用)
TFT-eSPI库 驱动GC9A01圆屏 镜像操作_第5张图片

可以看到,原代码中就是用了TFT_MAD_MX TFT_MAD_MY TFT_MAD_MV TFT_MAD_ML|连接
实现了90,180,270的旋转

你可能感兴趣的:(嵌入式硬件,单片机)