项目中需要在嵌入式系统中驱动一块彩屏,需要用颜色来表征一个信号的强度,当时就想到了matlab里的jet配色,无奈网上没有类似代
码,只好自己写了一套函数
屏幕支持16位彩色,为RGB565格式,在此贴出代码,希望可以帮大家节省时间。
IPS_GetRGB565Color
- 由R,G,B颜色分量获得RGB565格式的色彩
- 输入R,G,B分量
- 返回RGB565格式的16位彩色
u16 IPS_GetRGB565Color(u8 R,u8 G,u8 B)
{
u16 rgb565;
rgb565 = (R>>3)<<11;
rgb565 |= (G>>2)<<5;
rgb565 |= (B>>3);
return rgb565;
}
IPS_GetJetColor
- 根据输入的强度值(0-255)返回对应的Jet伪彩色模型配色
- 输入强度值val(0-255)
- 输出RGB565格式的Jet伪彩色模型配色
u16 IPS_GetJetColor(u8 val)
{
u8 R,G,B;
R = ( val > 128 ) ? (val < 192 ) ? ( val - 128 ) * 4 : 255 : 0;
G = ( val < 64 ) ? val * 4 : ( val > 192) ? (256 - (4 * ( val - 192 ) ) ) : 255;
B = ( val <= 64 ) ? 255 : ( val > 128 ) ? 0 : (256 - (4 * ( val - 128) ) );
return IPS_GetRGB565Color(R,G,B);
}
实际效果:
如左侧彩条