RGB888色彩格式转RGB565格式

一个RGB888格式的色彩值是三字节,有24个bit

一个RGB565格式的色彩值是双字节,有16个bit

将R值的高5位取出,G值的高6位去除,B值的高5位取出,按从高到低的顺序码放在一起后就是RGB565色彩值了

R = (RGB888 & 0xF80000) >> (16+3)

G = (RGB888 & 0x00FC00) >> (8+2)

B = (RGB888 & 0x0000F8) >> (0+3)

RGB565 = (R << 11) | (G << 5) |B

代码如下

cpp 复制代码
uint16_t ST7789_RGB565(uint32_t rgb_888)
{
   uint32_t rgb_565 = 0;
   /* RED */
   rgb_565 |= ((rgb_888 & 0xF80000) >> 8);
   /* GREEN */
   rgb_565 |= ((rgb_888 & 0x00FC00) >> 5);
   /* BLUE */
   rgb_565 |= ((rgb_888 & 0x0000F8) << 0);

   return (uint16_t)rgb_565;
}

单步调试

红色

绿色

蓝色

相关推荐
qq_411262421 小时前
整体无需占用任何硬件 UART,即可新增一条全双工软串口
单片机·嵌入式硬件
阿捏利2 小时前
C Primer Plus 第6版 编程练习——第7章(上)
c语言·编程题·c primer plus
jz_ddk2 小时前
[实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)
c语言·算法·信号处理
码农Cloudy.3 小时前
C语言<数据结构-链表>
c语言·数据结构·链表
XINVRY-FPGA3 小时前
XCZU47DR-2FFVG1517I Xilinx FPGA AMD ZynqUltraScale+ RFSoC
人工智能·嵌入式硬件·fpga开发·信息与通信·信号处理·射频工程·fpga
星竹晨L3 小时前
C语言——预处理详解
c语言·开发语言
Cyrus_柯4 小时前
单片机基础(STM32-DAY2(GPIO))
单片机·嵌入式硬件
lightqjx4 小时前
【数据结构】顺序表(sequential list)
c语言·开发语言·数据结构·算法
努力的小帅4 小时前
STM32单片机_3
stm32·单片机·嵌入式硬件·学习·stm32c8t6
小立爱学习5 小时前
Linux 内存管理之address_space
linux·c语言