08-LCD_Font-Library (STM32F429)

diese Library dient zum zeichnen von Texten auf dem LC-Display.

sie benötigt dazu die LCD-Library “STM32_UB_LCD_ILI9341
und einen oder mehrere Font-Files die zusätzlich eingebunden werden müssen.

in diesem Library sind mehrere Fonts dabei. Mit dem von mir geschriebenen PC-Programm “PixelFontGenerator” , können Windows-Fonts in das benötigte Format umgewandelt werden.

Die breite vom Font kann max 32 Pixel sein und es sind monospaced und proportionale Fonts benutzbar.

Beispielbild :

prop_font

Funktionen :

1
2
3
4
5
6
7
8
9
10
// fuer Monospaced-Fonts
void UB_Font_DrawChar(uint16_t x, uint16_t y, uint8_t ascii, UB_Font *font, uint16_t vg, uint16_t bg);     // zum zeichnen eines Zeichens (max 16pixel breite)
void UB_Font_DrawString(uint16_t x, uint16_t y,char *ptr, UB_Font *font, uint16_t vg, uint16_t bg);        // zum zeichnen eines Textes (max 16pixel breite)
void UB_Font_DrawChar32(uint16_t x, uint16_t y, uint8_t ascii, UB_Font32 *font, uint16_t vg, uint16_t bg); // zum zeichnen eines Zeichens (max 32pixel breite)
void UB_Font_DrawString32(uint16_t x, uint16_t y,char *ptr, UB_Font32 *font, uint16_t vg, uint16_t bg);    // zum zeichnen eines Textes (max 32pixel breite)
// fuer Proportional-Fonts
uint16_t UB_Font_DrawPChar(uint16_t x, uint16_t y, uint8_t ascii, UB_pFont *font, uint16_t vg, uint16_t bg);      // zum zeichnen eines Zeichens (max 16pixel breite)
void UB_Font_DrawPString(uint16_t x, uint16_t y,char *ptr, UB_pFont *font, uint16_t vg, uint16_t bg);             // zum zeichnen eines Textes (max 16pixel breite)
uint16_t UB_Font_DrawPChar32(uint16_t x, uint16_t y, uint8_t ascii, UB_pFont32 *font, uint16_t vg, uint16_t bg);  // zum zeichnen eines Zeichens (max 32pixel breite)
void UB_Font_DrawPString32(uint16_t x, uint16_t y,char *ptr, UB_pFont32 *font, uint16_t vg, uint16_t bg);         // zum zeichnen eines Textes (max 32pixel breite)

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//--------------------------------------------------------------
// File     : main.c
// Datum    : 26.07.2014
// Version  : 1.2
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F429
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der Font-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
// In Configuration diese Define hinzufügen :
// "STM32F429_439xx" , "__ASSEMBLY__" , "USE_STDPERIPH_DRIVER"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_lcd_ili9341.h"
#include "stm32_ub_font.h"
 
int main(void)
{
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // Init vom LCD
  UB_LCD_Init();
  // Init der Layer
  UB_LCD_LayerInit_Fullscreen();
  // auf Hintergrund schalten
  UB_LCD_SetLayer_1();
  // Hintergrund komplett mit einer Farbe füllen
  UB_LCD_FillLayer(RGB_COL_WHITE);
  // auf Vordergrund schalten
  UB_LCD_SetLayer_2();
  // Vordergrund komplett mit einer Farbe füllen
  UB_LCD_FillLayer(RGB_COL_GREEN);
 
  // schwarzen Text auf weisem Grund zeichnen mit verschiedenen Fonts
  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 Bit Font
  UB_Font_DrawString32(10,190,"Arial-18x27",&Arial_18x27,RGB_COL_BLACK,RGB_COL_WHITE);
  // Proportional Font
  UB_Font_DrawPString(10,220,"Times 15 (proportional)",&pTimes_15,RGB_COL_BLACK,RGB_COL_WHITE);
  // 32 Bit Proportional
  UB_Font_DrawPString32(10,240,"Times 18 (proportional)",&pTimes_18,RGB_COL_BLACK,RGB_COL_WHITE);
 
  while(1)
  {
 
  }
}

Hier die Library zum Download :

lcd_font_f429_v101

Hier der komplette CooCox-Projektordner zum Download :

Demo_F429_08

Hier der Link zu dem PC-Programm :

PC-Programme


7 Antworten auf 08-LCD_Font-Library (STM32F429)

  1. Leo sagt:

    excellent library. thank you so much. works well with all languages ​​(Russian, Ukrainian).
    прекрасная библиотека. огромное спасибо. хорошо работает со всеми языками (русский, украинский. прототипный шрифт)

  2. Ryan sagt:

    Hello UB, I would like to use special characters such as: “Á”, “é”, “ô”….
    I tried using \220 \202 … but does not work, how I could show them on my LCD?

    • admin_ub sagt:

      the simplest way is to generate a font with ascii 32 – 255 . so you have a “template” with all characters. To do this you must check “extended ascii” and set the “last character” to 255. Then choose a font press autoset and generate the font last. Now the font should have implemented the “special chars”.
      Here you can check which ascii-nr you needed to draw these characters.

      • Ryan sagt:

        Thank you for help again. It worked perfectly!

  3. Alexandr sagt:

    Tell me please, how do you know which library nuzhnі from stm407vg and which by stm429-disco?
    Thanks

  4. Armin sagt:

    Hallo!

    Ich verwende die Font-Library für mein STM32F7 und es funktioniert wirklich hervorragend!

    Leider brauch ich größere Buchstaben als die Arial 18×27. Ich konnte mit dem Font-Generator auch schon eine Arial-Schriftart in Größe 36 erstellen und einbinden – leider auch zu klein. Seltsamerweise funktioniert es mit Größe 48 nicht mehr (Erzeugen des Strings funktioniert nicht mehr auf dem Display, es wird kein Buchstabe angezeigt).
    Liegt das an der 32pxl Beschränkung? Was müsste ich denn abändern, damit ich Schriftgröße 48 und mehr verwenden kann?

    Viele Grüße!
    Armin

    • Armin sagt:

      Konnte das Problem mittlerweile selbst lösen, indem ich die Größe der Buchstaben im Generator angepasst hab!


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert