Описывается программа, которая позволяет преобразовывать любые изображения в HEX-символы для графических LCD и использовать эти данные для микроконтроллеров.

Однажды свалился проект под названием «Termostat». Не вдаваясь в суть: основа Atmega16, графический LCD типа PG12032LRU. LCD не популярный, но не в этом дело. Имея 32 пикселя по Y, надо было создать меню, где полноценные четыре строчки текста помещались бы. Фонт, который на тот момент был под рукой, имел высоту знакоместа в 8 пикселей, и поэтому строчки были без зазора и выглядели неважно. Все попытки в инете найти фонт с высотой в 7 пикселей не увенчались успехом. Речь идет конечно о русском фонте.

Время идёт, фонта нет. Попытки вручную создать на бумажке запись, которая представляет из себя набор HEX символов ввёл меня в нирвану очень нервного толка…

Так появилась программа на Delphi7, которая преобразует BMP картинку в набор HEX символов. Далее было проще. Рисуем русскую букву в графическом редакторе, загружаем файл буквы в программу IT.EXE, нажимаем кнопку «Trans Image» и получаем строку HEX символов. Весь русский кусок фонта занял у меня пару часов.

Программа создания фонтов

С помощью этого способа можно создавать не только фонт, но и любые графические иконки, заставки и т.д.

Поддержка уже на уровне «С» кода выглядит следующим образом:

Фонт
Символ двойной высоты
  • lcdtermo.с, lcdtermo.h – модули, которые ориентированы на указанный LCD
  • font5x7.h – фонт с русской группой символов, который вызывается процедурой glcdputtextxy
  • fontgr.h – набор каких-то графических примитивов, которые вызываются процедурой glcdwriteimage
  • it.zip – содержит исходники программы на Delphi7
  • fonts.zip – содержит фонты и примеры использования.

Опция "Add Count bytes" вставляет в начале строки количество символов, это важно для процедуры вывода. Структура представления данных стандартная для многих LCD дисплеев. В программе представлен пример символа двойной высоты. Вывод такого символа занимает 2 строки HEX-кода. Вывод производится процедурой glcdwriteimage. В начале выводится верхняя половина символа, затем нижняя. На рисунке представлено соответствие HEX - кода, полученного программой и пространственное расположение этого кода. Для фонта font5x7.h эта процедура проще, так как символ занимает по высоте 1 байт, поэтому строка HEX-а будет одна. Черные пиксели на картинке символа соответствуют логической единице на битовой плоскости.

Обновлено (24.12.2010 23:49)