STM32F4. Урок 8 - Бібліотека шрифтів для дисплея ST7783
Дана бібліотека використовується для виводу тексту на LCD-дисплей.
Для її роботи необхідна бібліотека для роботи з дисплеєм "STM32_UB_LCD_ST7783" та один або більше файлів шрифтів, які мають бути включені в проект.
У цю бібліотеку включено кілька шрифтів. За допомогою написаної автором програми "PixelFontGenerator" будь-які комп'ютерні шрифти можуть бути перетворені у потрібний формат.
Починаючи з версії 1.4 з'явилася підтримка шрифтів до 32 пікселів в ширину.
Починаючи з версії 1.5 з'явилася підтримка пропорційних шрифтів (шрифти з буквами різної ширини); для генерації таких шрифтів потрібна програма версії 1.6 і вище!
Приклад шрифтів:
Вимоги:
Підключувані модулі CooCox-IDE: відсутні.
Підтримувані бібліотеки: STM32_UB_LCD_ST7783.
Функції:
// Шрифти однакової ширини void UB_Font_DrawChar(uint16_t x, uint16_t y, uint8_t ascii, UB_Font *font, uint16_t vg, uint16_t bg); // Намалювати символ (максимальний розмір 16 пікселів) void UB_Font_DrawString(uint16_t x, uint16_t y,char *ptr, UB_Font *font, uint16_t vg, uint16_t bg); // Намалювати текст (максимальний розмір 16 пікселів) void UB_Font_DrawChar32(uint16_t x, uint16_t y, uint8_t ascii, UB_Font32 *font, uint16_t vg, uint16_t bg); // Намалювати символ (максимальний розмір 32 пікселя) void UB_Font_DrawString32(uint16_t x, uint16_t y,char *ptr, UB_Font32 *font, uint16_t vg, uint16_t bg); // Намалювати текст (максимальний розмір 32 пікселя) // Пропорційні шрифти uint16_t UB_Font_DrawPChar(uint16_t x, uint16_t y, uint8_t ascii, UB_pFont *font, uint16_t vg, uint16_t bg); // Намалювати символ (максимальний розмір 16 пікселів) void UB_Font_DrawPString(uint16_t x, uint16_t y,char *ptr, UB_pFont *font, uint16_t vg, uint16_t bg); // Намалювати текст (максимальний розмір 16 пікселів) uint16_t UB_Font_DrawPChar32(uint16_t x, uint16_t y, uint8_t ascii, UB_pFont32 *font, uint16_t vg, uint16_t bg); // Намалювати символ (максимальний розмір 32 пікселя) void UB_Font_DrawPString32(uint16_t x, uint16_t y,char *ptr, UB_pFont32 *font, uint16_t vg, uint16_t bg); // Намалювати текст (максимальний розмір 32 пікселя)
Приклад використання:
//-------------------------------------------------------------- // Файл : main.c // Дата : 24.07.2014 // Версія : 1.2 // Автор : UB // EMail : mc-4u(@)t-online.de // Веб : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.0 // Модуль : CMSIS_BOOT, M4_CMSIS_CORE // Функція : Демонстрація Font-Library // Зауваження: Ці два файли мають бути на 8MHz // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_lcd_st7783.h" #include "stm32_ub_font.h" int main(void) { SystemInit(); // Ініціалізація налаштувань кварца UB_LCD_Init(); // Ініціалізація LCD // Колір екрану - синій UB_LCD_FillScreen(RGB_COL_BLUE); // Чорний текст на білому фоні, малювання різними шрифтами UB_Font_DrawString(10,10,"Arial-7x10",&Arial_7x10,RGB_COL_BLACK,RGB_COL_WHITE); UB_Font_DrawString(10,30,"Arial-8x13",&Arial_8x13,RGB_COL_BLACK,RGB_COL_WHITE); UB_Font_DrawString(10,50,"Arial-10x15",&Arial_10x15,RGB_COL_BLACK,RGB_COL_WHITE); UB_Font_DrawString(10,70,"Arial-11x18",&Arial_11x18,RGB_COL_BLACK,RGB_COL_WHITE); UB_Font_DrawString(10,100,"Arial-13x19",&Arial_13x19,RGB_COL_BLACK,RGB_COL_WHITE); UB_Font_DrawString(10,130,"Arial-14x22",&Arial_14x22,RGB_COL_BLACK,RGB_COL_WHITE); UB_Font_DrawString(10,160,"Arial-16x25",&Arial_16x25,RGB_COL_BLACK,RGB_COL_WHITE); // 32 бітний шрифт UB_Font_DrawString32(10,190,"Arial-18x27",&Arial_18x27,RGB_COL_BLACK,RGB_COL_WHITE); // пропорційний шрифт UB_Font_DrawPString(10,220,"Times 15 (proportional)",&pTimes_15,RGB_COL_BLACK,RGB_COL_WHITE); // 32 бітний пропорційний шрифт UB_Font_DrawPString32(10,240,"Times 18 (proportional)",&pTimes_18,RGB_COL_BLACK,RGB_COL_WHITE); while(1) { } }
У додатку проект CooCox та окрема бібліотека для використання в інших проектах, а також програма для конвертування шрифтів. Автор оригіналу статті просить задавати питання на його сайті німецькою або англійською мовами.
Прикріплені файли:
- ImageGenerator_UB_v103.zip (237 Кб)
- Demo_08_LCD3_rus.rar (292 Кб)
- ub_stm32f4_lcd_font_v105_rus.rar (47 Кб)