СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №2/2016

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 49 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2016 emWin ( C:\Каталог установки Keil\ARM\ Segger\emWin\Tool\BmpCvt.exe ). Данная программа позволяет конвер- тировать любое графическое изобра- жение в различные цветовые форматы, а также сохранять его либо в форма- те BMP, либо в виде файла с расшире- нием *.c, содержащего массив, описы- вающий изображение в виде битово- го поля. На взгляд авторов, формат лучше все- го подходит для преобразования изо- бражений типа «256 градаций серого». В этом случае каждый пиксель изобра- жения описывается одним байтом мас- сива, что облегчает работу с ним. Для преобразования необходимо открыть исходный графический файл командой File->Open. В окне програм- мы откроется графический файл, а так- же будут выведены его параметры: раз- решение, цветовой формат и коэффи- циент увеличения программой – zoom (см. рис. 6). Преобразование цветовой гаммы осу- ществляется в меню, выпадающем по команде Image->Convert Into (см. рис. 7). После преобразования в режим «256 градаций серого» (Gray256) изображе- ние выглядит так, как это показано на рисунке 8. Сохранить преобразованное изобра- жение можно командой File->Save As. В выпадающем меню можно выбрать тип файла. В данном случае это будет «C» bitmap file. После нажатия на кноп- ку сохранения появится диалоговое окно выбора формата, в котором будет сохранён массив, описывающий изо- бражение. Здесь можно выбрать дру- гойформат, не соответствующий тому, в который было преобразовано изо- бражение (например, можно преобра- зовать исходное изображение в фор- мат с четырьмя градациями серого, но сохранить в формате «256 градаций серого»). После выбора формата и нажа- тия кнопки «OK» файл будет сохранён. Сохранённый файл содержит следу- ющие элементы: ● палитру – массив цветов static GUI_ CONST_STORAGE GUI_COLOR; ● структуру, описывающую параметры массива палитры static GUI_CONST_ STORAGE GUI_LOGPALETTE; ● массив битового поля static GUI_ CONST_STORAGE unsigned char; ● структуру, описывающую битовое поле GUI_CONST_STORAGE GUI_ BITMAP. Для демонстрационного проек- та будет достаточно массива битово- го поля. Однако структура, описыва- ющая битовое поле, имеет ряд полез- ных параметров, которые желательно также сохранить в тексте программы. Авторы поместили массив битово- го поля в заголовочный файл, изме- нив его тип на static unsigned char (воз- можно также указать тип const unsigned char). Размер изображения в пикселях функция вывода на дисплей битового поля получает в качестве параметров (см. табл. 4). В каждом байте массива находится значение, определяющее степень градации серого у описывае- мого пикселя. Значение 0x00 соответ- ствует «чёрному» пикселю, а значение 0xFF – «белому». Остальные значения описывают различные степени града- ции серого. Так как дисплей MT-12864J может воспроизводить только «белые» и «чёрные» пиксели, то в функции про- изводится сравнение значения элемен- та массива с числом 0x7F, на основа- нии результатов которого определяет- ся цвет пикселя. Если число в массиве больше 0x7F, то цвет пикселя «белый». В противном случае пиксель закра- шивается «чёрным» цветом. Фрагмент функции вывода на дисплей битового поля показан в листинге 4. Образец выведенного на дисплей преобразованного графического изо- бражения показан на рисунке 9. В определённых случаях оказыва- лось, что с «границей белого», равной 0x7F, качество изображения страдало (см. рис. 10), а само изображение полу- чалось более контрастным в режиме четырёх градаций серого (см. рис. 11). Последней функцией драйвера, используемой для работы с графиче- скими, а также текстовыми объекта- Листинг 4 for (i=0; i<lim_Y; i++) { for (j=0; j<lim_X; j++) { if (bitmap[i*w+j]>0x7F) //if (bitmap[i*w+j]==0x03) { Color[TXT_COLOR]=White; } else { Color[TXT_COLOR]=Black; } GLCD_PutPixel(x+j, y+i); } } ми, является функция вертикально- го скроллинга. В настоящем драйвере она реализована методом копирова- ния одной области экрана в другую с помощью массива. Блок-схема алго- ритма приведена на рисунке 12. Рис. 6. Изображение, открытое в программе Bitmap converter for emWin Рис. 7. Меню преобразования цветовой гаммы изображения Рис. 8. Изображение после преобразования

RkJQdWJsaXNoZXIy MTQ4NjUy