![]() |
第1个字节是低8位,第2个字节是高8位,这明显是小端模式的存储方式,用在arm芯片上是没有问题的,你现在用的是8051芯片,8051芯片的数据存储方式是大端模式,你要把数组的类型改一下,由原来的unsigned char改成unsigned int,数组里面的数据由8位改成16位,例如第1个数和第2个数据,由原来的0xDF,0xE7改成0xE7DF,这样一颜色就恢复正常了,这样改还有一个好处,就是一套源码可以用在8051这种大端模式的芯片上,也可以用在arm这种小端模式的芯片上。 |
把数组的类型改成unsigned int,arm芯片是小端模式,51是大端模式,把数组类型由原来的uint8_t 改成uint16_t就解决了 |
楼上说的对,用0x36寄存器,红蓝交换,通常都是用0x36寄存器的,你单纯画点没什么,你要是用DMA快速刷别的,你就知道了 |
人中狼 发表于 2024-10-4 09:57 这个方法我想过,但是它把一个完整的RGB565数据拆成两个字节去存储,中间的绿色的数据被拆成了两半,想要做移位运算就只能把两个字节拼起来重新组成一个完整的RGB565数据,移位后再输出,但是屏幕整体上刷新速度也会有非常明显的变慢。 |
RGB转BGR应该做移位运算就可以了吧 |
johnhk97 发表于 2024-10-4 08:52 问题已解决 |
发一个7735显示的图,一个正常的图看看 |