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 та окрема бібліотека для використання в інших проектах, а також програма для конвертування шрифтів. Автор оригіналу статті просить задавати питання на його сайті німецькою або англійською мовами.

Оригінал статті

Прикріплені файли:

Top