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;
}

单步调试

红色

绿色

蓝色

相关推荐
暴力求解7 小时前
C语言---动态内存管理、柔性数组
c语言·开发语言·算法
whoarethenext7 小时前
C/C++ OpenCV 矩阵运算
c语言·c++·opencv·矩阵运算
@老蝴7 小时前
C语言 — 动态内存管理
android·c语言·开发语言
凤年徐8 小时前
【数据结构初阶】顺序表的应用
c语言·开发语言·数据结构·c++·笔记·算法·顺序表
湮雨塵飛11 小时前
ESP32开发之LED闪烁和呼吸的实现
vscode·嵌入式硬件·esp32·freertos·呼吸灯
C_Liu_11 小时前
C语言:字符函数和字符串函数
c语言·开发语言
iCxhust12 小时前
Deepseek给出的8255显示例程
c语言·开发语言·c++·单片机·嵌入式硬件
小智学长 | 嵌入式12 小时前
SOC-ESP32S3部分:28-BLE低功耗蓝牙
网络·单片机·esp32
qq_259297247312 小时前
文件IO流
linux·c语言·物联网
RFID舜识物联网13 小时前
RFID测温芯片助力新能源产业安全与能效提升
大数据·人工智能·嵌入式硬件·物联网·安全