这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 关于st7735s屏幕旋转的理解

共1条 1/1 1 跳转至

关于st7735s屏幕旋转的理解

助工
2025-09-26 13:48:53     打赏

1 硬件介绍

本次使用的屏幕是一个小小的0.96寸的tft屏幕,接口时spi,分辨率 160*80.它显示细腻,虽小但是比较好玩。

1758857427754484.png

2 旋转的概念,从

屏幕是长宽比例比较大,很多人喜欢竖着开发, 有的人横着看比较顺眼。默认的方式基本都是竖着,左上角作为 0.0起始坐标。

旋转屏幕就是可以把其他三个角作为起始坐标机型开发。

3 相关寄存器

一个寄存器:9 MADCTL (36h): Memory Data Access Control

1758857705636908.png

my :默认起始坐标计算0:从0到128;1 从128到0

mx :默认起始坐标计算0:从0到128;1 从128到0

mv:交换xy坐标

ml:垂直刷新方向。0 从头到底; 1: 从底到头。

mv:水平刷新方向。0:从左到右;1: 从右到左。

rgb:0:rgb颜色格式;1:bgr颜色格式,中间的g不动。

4 计算方式

使用到的配置有mx my mv

从写显示数据到屏幕显示出来,中间会有一个gram的空间保存数据,显示的时候,屏幕拿出gram数据用于显示。

所以第一个gram的数据放的位置就是我们的起始坐标。

如下屏幕标识

image.png

默认起始坐标1点

现在如果要反转到2点,调整配置如下

mv=1: 交换xy坐标系

my=1:改变y轴的扫描顺序

可以理解成屏幕逆旋转90


寻转到3

mv=1: 交换xy坐标系

mx=1:改变x轴的扫描顺序

可以理解成屏幕旋转90

5 其他问题

  1》 有图屏幕设计和硬件接线方式的不同,有时候会出现rgb的格式编程rbg格式

此时需要通过修改软件的像素写入数据格式调整

void TFT_Send16Bit(uint16_t Data){
    HAL_GPIO_WritePin(spi3_rs_GPIO_Port, spi3_rs_Pin,GPIO_PIN_SET); //DC = 1
    Data = (Data&0xf800)|((Data&0x7e0)>>5) |((Data & 0x1f) << 6); //565转成rbg565
    HAL_SPI_Transmit(&hspi3, (uint8_t*)&Data, 2, 0xFFFF);
}

2》像素从起始坐标(0.0)写入,屏幕显示确实有了较大偏移

问题:因为gram往往要比屏幕的像素点多一些,就会出现gram的读取位置问题。

方案:如果垂直方向的偏移,可以使用命令:VSCSAD: Vertical Scroll Start Address of RAM (37h)。

实现垂直方向图像回正。

如果水平方向的图像偏移, 那就使用RASET (2Bh): Row Address Set或者  CASET (2Ah): Column Address Set命令进行调整

验证方式可以通过再四个脚画四个方框,看一下正不正

如下

image.png


如上,就是本次分享的内容,有错误的话,请各位大佬指正。





共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]