![]() |
發布時間: 2024-10-4 01:10
正文摘要:程序里的顏色和圖片數據是按照紅綠藍的順序組成數組,但是到了屏幕上就變成了藍綠紅排列,怎么解決 圖片數組存儲格式 顯示圖片函數 費了一個多小時才算明白的16位RGB轉BGR但是思路錯了,沒用 如果能給出代碼那自 ... |
第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顯示的圖,一個正常的圖看看 |