Как отобразить 24-битный RGB Hex на Nokia 6100 вместо 12-битного Hex - PullRequest
2 голосов
/ 22 ноября 2011

Я использую Arduino Uno для питания ЖК-дисплея Nokia 6100.В моей программе я использую 8-битный вход RGB, который можно преобразовать в 24-битный шестнадцатеричный код, используя любые доступные инструменты онлайн-конвертации, о таком преобразовании я могу позаботиться.Однако библиотека ЖК-дисплея, которую я использую, позволяет использовать только 12-битный шестнадцатеричный код.Как я могу заставить LCD принимать 24-битные значения Hex вместо 12 и получать правильный цвет на экране.Или в этом случае есть способ изменить с 24-битного шестнадцатеричного на 12-битный шестнадцатеричный?

Спасибо, Файз

1 Ответ

2 голосов
/ 22 ноября 2011

Возможно, ЖК-дисплей понимает только 4-битные каналы?В любом случае звучит так, что это предел библиотеки:)

Для преобразования в 12-битное значение (3 канала x 4 бита / канал) из 24-битного значения (3 канала x 8 бит)/ канал), просто уменьшите каждый канал с коэффициентом 2 4 - то есть разделите значение каждого 8-битного канала [0-255] на 16, чтобы получить приблизительное значениезначение в 4-битном канале [0-15].

Теперь рассмотрим следующее: «деление на 16» и «смещение вправо на 4» (без расширения знака) практически одинаково для дополнения без знака 2целые числа.То есть младшие 4 бита просто «выбрасываются».

Представьте себе это 24-битное значение в битах (с добавлением 32-битного целого):

00000000RRRRrrrrGGGGggggBBBBbbbb 

И этоцелевое значение (дополненное 16-разрядным целым числом):

0000RRRRGGGGBBBB  // just get rid of the "small letter" bits :)

И обратите внимание, что это можно получить с помощью последовательности побитовых операций:

r12 = (hex24 >> 20) & 0xF
g12 = (hex24 >> 12) & 0xF
b12 = (hex24 >> 4) & 0xF
hex12 = (r12 << 8) | (g12 << 4) | b12

Счастливое кодирование.

...