Red de conocimiento informático - Consumibles informáticos - (Problema de lenguaje C) Problema de programación del controlador LCD que descarta dígitos RGB

(Problema de lenguaje C) Problema de programación del controlador LCD que descarta dígitos RGB

Es principalmente un problema de conversión de desplazamiento de bits.

Por ejemplo: un RGB de color de 24 bits (0x50, 0x60, 0x70) se convierte a 565 de 16 bits:

r = R amp; 0xF8 = (01010000 amp; 11111000 ) = 01010000 (los primeros 5 dígitos son válidos)

g = G amp 0xFC = (01100000 amp; 11111100) = 01100000 (los primeros 6 dígitos son válidos)

b = B amp; 0xF8 = (01110000 amp; 11111000) = 01110000 (los primeros 5 bits son válidos)

El color es un tipo int corto de 16 bits y los 8 bits altos están compuestos por los 5 bits de r y los primeros 3 bits de g.

Alto se puede escribir así: alto = r | (glt; lt; 5)? Debe ser alto = r | (ggt; gt; 5)

alto = r | (ggt; gt; 5) = 01010000 | (01100000gt; gt; 5) = 01010000 | p>

bajo = (glt;lt;3) | (bgt;gt;3) = (01100000lt;lt;3) | (01110000gt;gt;3) = 0000000 | >Todos los bits bajos y altos combinados son color=(high lt; lt; 8) | low=(00000000 01010011lt; lt; 8) | (00000000 00001110) = (01010011 000000000)|(00000000 00001110) = 0101001 1 0001110 = 01010 011000 01110 (565) (Este resultado es tomar los primeros 5 dígitos de r, los primeros 6 dígitos de g y los primeros 5 dígitos de b)

La definición de macro para convertir 888 a 565 en La microventana es la siguiente: comprender mejor algunos

/* crear píxeles de formato 5/6/5 de 16 bits a partir de colorval RGB (0x00BBGGRR)*/*///c es un valor largo sin firmar, 0x00BBGGRR

/* En este formato, se ignora alfa #define COLOR2PIXEL565(c) \

((((c) amp; 0xf8) lt; lt; 8) | (((c) amplificador; 0xfc00) gt; gt; 5) | (((c) amplificador; 0xf80000) gt; 19))