Данная библиотека используется для рисования точек, линий и окружностей на LCD-дсплее. Все что рисуется на экране сохраняется в флешь памяти. Для работы с этой библиотекой необходима библиотека «STM32_UB_LCD_ST7783«.
На данный момент поддерживаются три формата изображений:
Для формата №1 была написана программа «ImageGenerator«, которая превращает любые файлы BMP в формат RGB565 и генерирует C-файл, который может быть интегрирован в CooCox IDE. Для 2-х других форматов (2 и 3) была написана программа «FileConverter«, которая читает любой шестнадцатеричный файл (например, файл JPG) и генерирует C-файл, который также может быть интегрирован в CooCox IDE.
Обратите внимание на функцию прозрачности:
Может быть задан цвет, который не будет нарисована на дисплее, делая прозрачный данные регионы. Изображение должно быть предварительно обработаны таким образом, что бы место, которое должно быть прозрачным действительно имело этот цвет.
Скорость прорисовки:
- Изображение с разрешением 240×320 пикселей (16 бит) прорисовка около 18мс.
- BMP изображение с разрешением 240×320 пикселей (24pbb) прорисовка около 42мс.
- JPG изображения с разрешением 240×320 пикселей прорисовка около 566ms.
Использование памяти:
- Изображение с разрешением 240 × 320 пикселей — 153600 байт.
- BMP изображение с разрешением 240 × 320 пикселей — 230454 байт.
- JPG изображения с разрешением 240 × 320 пикселей — 15323 байт.
Пример изображения (используется графическая библиотека):
Требования:
Подключаемые модули CooCox-IDE : отсутствуют.
Поддерживаемые библиотеки: STM32_UB_LCD_ST7783.
Перечисления:
typedef enum {
GRAPHIC_OK =0,
GRAPHIC_FILE_ERR,
GRAPHIC_SIZE_ERR,
GRAPHIC_ID_ERR,
GRAPHIC_HEAD_ERR,
GRAPHIC_WIDTH_ERR,
GRAPHIC_HEIGHT_ERR,
GRAPHIC_BPP_ERR,
GRAPHIC_COMPR_ERR
}GRAPHIC_ERR_t;
Функции:
void UB_Graphic_DrawPixel(int16_t xpos, int16_t ypos, uint16_t color); // Рисование пикселя
void UB_Graphic_DrawLine(int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); // Рисование линии между двумя точками
void UB_Graphic_DrawCircle(int16_t x0, int16_t y0, int16_t radius, uint16_t color); // Рисование круга с центром x,y радиусом r и цветом color
GRAPHIC_ERR_t UB_Graphic_DrawImage(UB_Image *img, int16_t xpos, int16_t ypos); // Рисование изображения из флешь памяти
GRAPHIC_ERR_t UB_Graphic_DrawImageTransparent(UB_Image *img, int16_t xpos, int16_t ypos, uint16_t color); // Рисование изображения с прозрачностью
GRAPHIC_ERR_t UB_Graphic_DrawBmp(UB_Picture *bmp, uint16_t xpos, uint16_t ypos); // Рисование BMP-файла из флешь памяти
GRAPHIC_ERR_t UB_Graphic_DrawJpg(UB_Picture *jpg, uint16_t xpos, uint16_t ypos); // Рисование JPG-файла из флешь памяти
Пример использования:
//—————————————————————
// File : main.c
// Datum : 18.03.2013
// Version : 1.3
// Autor : UB
// EMail : mc-4u(@)t-online.de
// Web : www.mikrocontroller-4u.de
// CPU : STM32F4
// IDE : CooCox CoIDE 1.7.0
// Module : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der LCD-Graphic-Library
// Hinweis : Diese zwei Files muessen auf 8MHz stehen
// «cmsis_boot/stm32f4xx.h»
// «cmsis_boot/system_stm32f4xx.c»
//—————————————————————
#include «main.h»
#include «stm32_ub_graphic.h»
int main(void)
{
SystemInit(); // Инициализация настроек кварца
UB_LCD_Init(); // Инициализация LCD
// Залить дисплей синим
UB_LCD_FillScreen(RGB_COL_BLUE);
// Построение изображения
UB_Graphic_DrawImage(&Emo1_Image,0,0);
// Построение изображения BMP файла
UB_Graphic_DrawBmp(&Emo2_Bmp,25,80);
// Нарисовать красную линию
UB_Graphic_DrawLine(10,20,100,150,RGB_COL_RED);
// Нарисовать черный круг
UB_Graphic_DrawCircle(70,75,50,RGB_COL_BLACK);
while(1)
{
}
}
В приложении проект CooCox и отдельная библиотека для использования в других проектах, а также программы для конвертирования графических файлов. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- Demo_07_LCD2_rus.rar (994 Кб)
- ub_stm32f4_lcd_graphic_v105_rus.rar (205 Кб)
- FileConverter_UB_v103.zip (232 Кб)
- ImageGenerator_UB_v103.zip (237 Кб)