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 :
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 :
Hier der komplette CooCox-Projektordner zum Download :
Hier der Link zu dem PC-Programm :
excellent library. thank you so much. works well with all languages (Russian, Ukrainian).
прекрасная библиотека. огромное спасибо. хорошо работает со всеми языками (русский, украинский. прототипный шрифт)
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?
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.
Thank you for help again. It worked perfectly!
Tell me please, how do you know which library nuzhnі from stm407vg and which by stm429-disco?
Thanks
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
Konnte das Problem mittlerweile selbst lösen, indem ich die Größe der Buchstaben im Generator angepasst hab!