как отобразить жирный символ в ЖК - PullRequest
0 голосов
/ 29 января 2019

Я работаю над проектом, который должен отображать некоторую строку на ЖК-дисплее.

Я создал 2d-массив с шестнадцатеричными значениями, соответствующими каждому символу, который работает нормально.Но я не могу понять, как отобразить какой-то символ в BOLD.

char pixel[10][5] = { 
  {0x7E, 0x11, 0x11, 0x11, 0x7E},  // hex values to display A
  {0x7F, 0x49, 0x49, 0x49, 0x36}   //hex values to display B
};

, используя эти шестнадцатеричные значения, я получаю A и B на ЖК-дисплее.Но мне нужно отобразить A и B (жирным шрифтом).

1 Ответ

0 голосов
/ 29 января 2019

Похоже, ваш массив пикселей содержит столбцы пикселей для матрицы символов 5x7 или 5x8 с самым младшим битом в верхней строке и первым левым столбцом.

Кажется, что две строки дают

.XXX. = bit x1
X...X = bit x2
X...X = bit x4
X...X = bit x8
XXXXX = bit 1x
X...X = bit 2x
X...X = bit 4x
..... = bit 8x

и

XXXX.
X...X
X...X
XXXX.
X...X
X...X
XXXX.
.....

Чтобы получить жирные символы, вы должны подумать о том, как они должны отображаться.В матрице 5x7 может быть невозможно отобразить все буквы жирным шрифтом, например M.Для A и B вы можете попытаться использовать шаблоны / числа для таких шаблонов, как это:

.XXX.
XX.XX
XX.XX
XX.XX
XXXXX
XX.XX
XX.XX
.....

{0x7E, 0x7F, 0x11, 0x7F, 0x7E}

или

XXXX.
XX.XX
XX.XX
XXXX.
XX.XX
XX.XX
XXXX.
.....

{0x7F, 0x7F, 0x49, 0x7F, 0x36}

Автоматическая генерация жирных символов

Можно автоматически сгенерировать шрифт (генератор символов) для жирных символов из обычного, если у вас достаточно фоновых пикселей между пикселями символов, сдвигая точки вправо на единицу и используя объединение исходных и сдвинутых значений спобитовое or.

Эта автоматическая генерация для символов фиксированной ширины может быть затруднена для символов с 3 вертикальными линиями, потому что вам потребуется 9 пикселей для этого, чтобы иметь 1 столбец для межсимвольного пространства.Простой алгоритм может очистить самый правый столбец, если вы хотите иметь ширину 8 пикселей, но ручная модификация может дать более хорошие результаты.

Пример M обычный

X.....X..
XX...XX..
X.X.X.X..
X..X..X..
X..X..X..
X..X..X..
X..X..X..

M смещен направая

.X.....X.
.XX...XX.
.X.X.X.X.
.X..X..X.
.X..X..X.
.X..X..X.
.X..X..X.

M по битам или

XX....XX.
XXX..XXX.
XXXXXXXX.
XX.XX.XX.
XX.XX.XX.
XX.XX.XX.
XX.XX.XX.
.........

M по битам или, последний очищенный столбец

XX....X.
XXX..XX.
XXXXXXX.
XX.XX.X.
XX.XX.X.
XX.XX.X.
XX.XX.X.
........

Ручная коррекция для 8x8 выглядит лучше

XX...XX.
XXX.XXX.
XXXXXXX.
XX.X.XX.
XX.X.XX.
XX.X.XX.
XX.X.XX.
........

Библиотека для LCD, вероятно, содержит таблицу шрифтов.Возможно, уже существуют библиотеки, которые поддерживают жирный шрифт.

Поиск по запросу "arduino lcd bold" привел к наилучшему результату: https://forum.arduino.cc/index.php?topic=458712.0

...