[学习资料] ST7735显示颜色错误的问题解决方法

[复制链接]
25757|12
 楼主| gaoyang9992006 发表于 2024-5-12 22:55 | 显示全部楼层 |阅读模式
最近用到了一块0.96寸彩色IPS屏幕,分辨率是160×80.
某宝上一共有两个品牌的这个显示屏。刚开始用的某彩品牌的,使用的Adafruit_ST7735库函数驱动,效果很好。
最近又买了一块某方的相同规格的屏幕,插接的。结果焊接好连接器,安装上通电,发现颜色不对。又修改了初始化参数,还是不对,经过测试发现蓝色和红色显示相反。
就是我设置红色,显示为蓝色,我设置为蓝色,结果是红色。
查询相关资料才知道该芯片的颜色模式是BGR,而不是通用的RGB,即R和B的存储位置是颠倒的。
于是查询了解决方法,网上有的方法是修改相关函数,将设置RGB和BRG的函数里的参数都颠倒一下。我看这太麻烦了。
为何不直接修改RGB和BGR的宏呢?
于是阅读驱动库头文件找到了相关设置位置。如下图所示




在头文件Adafruit_ST7735.h中找到
  1. #define ST7735_MADCTL_BGR 0x08
注释掉,并增加
  1. #define ST7735_MADCTL_BGR 0x00
在头文件Adafruit_ST77xx.h中找到

  1. #define ST77XX_MADCTL_RGB 0x00
注释掉,并增加
  1. #define ST77XX_MADCTL_RGB 0x08
保存两个文件,重新编译。
初始化调用函数
  1. tft.initR(INITR_MINI160x80);
即可。运行程序,显示正常了。
目的就是找到上述两个定义RGB和BRG的宏,交换两个宏对应的数字,即可实现RGB和BRG的反向映射。
让BGR色彩空间的显示芯片使用上RGB色彩的颜色。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

经过后期测试,只需要修改Adafruit_ST77xx.h中 的即可。  发表于 2024-7-18 20:03
 楼主| gaoyang9992006 发表于 2024-5-12 22:59 | 显示全部楼层
最后绿色是了绿色,蓝色是蓝色了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2024-5-12 23:00 | 显示全部楼层
在没修改的时候,绿色是绿色,蓝色是红色,红色是蓝色。。。
trucyw 发表于 2024-5-17 08:24 | 显示全部楼层
是的,就是RB替换了呢
sujingliang 发表于 2024-5-20 08:41 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2024-5-20 09:11 | 显示全部楼层

是的,感谢分享。我那个方法是使用库函数的修改方式。
 楼主| gaoyang9992006 发表于 2024-5-20 09:40 | 显示全部楼层

另外你笔下误了,不是0x80,是0x08
  1. #define ST77XX_MADCTL_RGB 0x08
天灵灵地灵灵 发表于 2024-5-21 23:18 | 显示全部楼层
原来如此,那选型时候选择RGB的就行了。
21mengnan 发表于 2024-7-19 15:31 | 显示全部楼层
有没有C语言能用的库,就是这个显示器的。
9dome猫 发表于 2024-9-28 12:42 | 显示全部楼层
OCI芯片的推出预示着光学I/O技术与现有计算技术的融合。
小灵通2018 发表于 2024-9-29 19:32 | 显示全部楼层
原来是由两种颜色模式啊。
水星限定 发表于 2025-9-10 14:32 | 显示全部楼层
ST7735 显示颜色错误可按以下方法解决:检查接线是否正确,尤其 RGB 数据引脚是否接反;核对初始化代码中颜色格式设置(如 RGB565 是否正确);确认屏幕驱动芯片型号与初始化指令匹配;若硬件正常,可尝试调整颜色映射函数,校准 RGB 分量比例,排除代码逻辑错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部