标题: st7735s颜色排列倒着怎么解决 [打印本页]

作者: 3253087609ydrq    时间: 2024-10-4 01:10
标题: st7735s颜色排列倒着怎么解决
程序里的颜色和图片数据是按照红绿蓝的顺序组成数组,但是到了屏幕上就变成了蓝绿红排列,怎么解决
图片数组存储格式
显示图片函数
费了一个多小时才算明白的16位RGB转BGR但是思路错了,没用
如果能给出代码那自然是最好的

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

IMG20241004005721.jpg

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

IMG20241004005915.jpg

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

IMG20241004005805.jpg

作者: rayin    时间: 2024-10-4 01:10
改一下显示屏的初始化代码,0x36指令,有一个bit可以设置显示颜色是红绿蓝或蓝绿红。显示数据不用做变换处理,做变换处理的方式会降低刷屏速度。
作者: johnhk97    时间: 2024-10-4 08:52
发一个7735显示的图,一个正常的图看看
作者: 3253087609ydrq    时间: 2024-10-4 09:37
johnhk97 发表于 2024-10-4 08:52
发一个7735显示的图,一个正常的图看看

问题已解决
作者: 3253087609ydrq    时间: 2024-10-4 09:38
johnhk97 发表于 2024-10-4 08:52
发一个7735显示的图,一个正常的图看看

已解决

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

IMG20241004093723.jpg

作者: 人中狼    时间: 2024-10-4 09:57
RGB转BGR应该做移位运算就可以了吧

作者: 3253087609ydrq    时间: 2024-10-4 10:18
人中狼 发表于 2024-10-4 09:57
RGB转BGR应该做移位运算就可以了吧

这个方法我想过,但是它把一个完整的RGB565数据拆成两个字节去存储,中间的绿色的数据被拆成了两半,想要做移位运算就只能把两个字节拼起来重新组成一个完整的RGB565数据,移位后再输出,但是屏幕整体上刷新速度也会有非常明显的变慢。
作者: 3253087609ydrq    时间: 2024-10-4 10:22
原程序来自http://www.51hei.com/bbs/dpj-184179-1.html
颜色排列倒序问题已解决,改了一下写数据函数。
如果大家有更好的解决方法也可以发出来,悬赏依旧会悬赏除我以外方法最好的那个人

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

IMG20241004100609.jpg

作者: 两仪式    时间: 2024-10-4 20:20
楼上说的对,用0x36寄存器,红蓝交换,通常都是用0x36寄存器的,你单纯画点没什么,你要是用DMA快速刷别的,你就知道了
作者: 单片机研究协会    时间: 2024-10-5 23:29
把数组的类型改成unsigned int,arm芯片是小端模式,51是大端模式,把数组类型由原来的uint8_t 改成uint16_t就解决了
作者: 单片机研究协会    时间: 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这种小端模式的芯片上。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1