找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 339|回复: 10
打印 上一主题 下一主题
收起左侧

st7735s颜色排列倒着怎么解决

[复制链接]
跳转到指定楼层
楼主
ID:871721 发表于 2024-10-4 01:10 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
100黑币
程序里的颜色和图片数据是按照红绿蓝的顺序组成数组,但是到了屏幕上就变成了蓝绿红排列,怎么解决
图片数组存储格式
显示图片函数
费了一个多小时才算明白的16位RGB转BGR但是思路错了,没用
如果能给出代码那自然是最好的

IMG20241004005721.jpg (1.82 MB, 下载次数: 5)

IMG20241004005721.jpg

IMG20241004005915.jpg (2.06 MB, 下载次数: 3)

IMG20241004005915.jpg

IMG20241004005805.jpg (1.01 MB, 下载次数: 4)

IMG20241004005805.jpg

最佳答案

查看完整内容

改一下显示屏的初始化代码,0x36指令,有一个bit可以设置显示颜色是红绿蓝或蓝绿红。显示数据不用做变换处理,做变换处理的方式会降低刷屏速度。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:517951 发表于 2024-10-4 01:10 | 只看该作者
改一下显示屏的初始化代码,0x36指令,有一个bit可以设置显示颜色是红绿蓝或蓝绿红。显示数据不用做变换处理,做变换处理的方式会降低刷屏速度。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:891003 发表于 2024-10-4 08:52 | 只看该作者
发一个7735显示的图,一个正常的图看看
回复

使用道具 举报

地板
ID:871721 发表于 2024-10-4 09:37 来自手机 | 只看该作者
johnhk97 发表于 2024-10-4 08:52
发一个7735显示的图,一个正常的图看看

问题已解决
回复

使用道具 举报

5#
ID:871721 发表于 2024-10-4 09:38 来自手机 | 只看该作者
johnhk97 发表于 2024-10-4 08:52
发一个7735显示的图,一个正常的图看看

已解决

IMG20241004093723.jpg (758.76 KB, 下载次数: 2)

IMG20241004093723.jpg
回复

使用道具 举报

6#
ID:384109 发表于 2024-10-4 09:57 | 只看该作者
RGB转BGR应该做移位运算就可以了吧
回复

使用道具 举报

7#
ID:871721 发表于 2024-10-4 10:18 来自手机 | 只看该作者
人中狼 发表于 2024-10-4 09:57
RGB转BGR应该做移位运算就可以了吧

这个方法我想过,但是它把一个完整的RGB565数据拆成两个字节去存储,中间的绿色的数据被拆成了两半,想要做移位运算就只能把两个字节拼起来重新组成一个完整的RGB565数据,移位后再输出,但是屏幕整体上刷新速度也会有非常明显的变慢。
回复

使用道具 举报

8#
ID:871721 发表于 2024-10-4 10:22 来自手机 | 只看该作者
原程序来自http://www.51hei.com/bbs/dpj-184179-1.html
颜色排列倒序问题已解决,改了一下写数据函数。
如果大家有更好的解决方法也可以发出来,悬赏依旧会悬赏除我以外方法最好的那个人

IMG20241004100609.jpg (1.44 MB, 下载次数: 1)

IMG20241004100609.jpg
回复

使用道具 举报

9#
ID:440403 发表于 2024-10-4 20:20 | 只看该作者
楼上说的对,用0x36寄存器,红蓝交换,通常都是用0x36寄存器的,你单纯画点没什么,你要是用DMA快速刷别的,你就知道了
回复

使用道具 举报

10#
ID:828160 发表于 2024-10-5 23:29 | 只看该作者
把数组的类型改成unsigned int,arm芯片是小端模式,51是大端模式,把数组类型由原来的uint8_t 改成uint16_t就解决了
回复

使用道具 举报

11#
ID:828160 发表于 2024-10-5 23:33 | 只看该作者
第1个字节是低8位,第2个字节是高8位,这明显是小端模式的存储方式,用在arm芯片上是没有问题的,你现在用的是8051芯片,8051芯片的数据存储方式是大端模式,你要把数组的类型改一下,由原来的unsigned char改成unsigned int,数组里面的数据由8位改成16位,例如第1个数和第2个数据,由原来的0xDF,0xE7改成0xE7DF,这样一颜色就恢复正常了,这样改还有一个好处,就是一套源码可以用在8051这种大端模式的芯片上,也可以用在arm这种小端模式的芯片上。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表