Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2017:fontx-glcd

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2017:fontx-glcd [2018/01/10 10:10]
Petr Skryja
2017:fontx-glcd [2018/01/10 12:47] (aktuální)
Petr Skryja
Řádek 1: Řádek 1:
-(In progress) 
 ======== Fonty FONTX pro grafické displeje ======== ======== Fonty FONTX pro grafické displeje ========
  
Řádek 6: Řádek 5:
 ---- ----
 ====== Úvod ====== ====== Úvod ======
-FONTX je bitmapový formát ​písma. Struktura souboru FONTX je naznačena v následující tabulce. Soubor se skládá z hlavičky, která obsahuje ''​Podpis souboru''​ o velikosti 6 B, kde jsou uloženy znaky „FONTX2“,​ ''​Název fontu'',​ ''​Šířku fontu'',​ ''​Výšku fontu''​ a ''​Kódový příznak'',​ který slouží k rozlišení mezi Single Byte a Double Byte formátem. V tomto projektu je řešen pouze Single Byte format. Po hlavičce následují už jen data všech znaků, která jsou řazena za sebou po bytech. Editor pro tento formát je dostupný [[http://​elm-chan.org/​fsw/​fontxedit.zip | zde]].+FONTX je bitmapový formát ​sloužící k vykreslování znaků, jehož struktura ​je naznačena v následující tabulce. Soubor se skládá z hlavičky, která obsahuje ''​Podpis souboru''​ o velikosti 6 B, kde jsou uloženy znaky „FONTX2“,​ ''​Název fontu'',​ ''​Šířku fontu'',​ ''​Výšku fontu''​ a ''​Kódový příznak'',​ který slouží k rozlišení mezi Single Byte a Double Byte formátem. V tomto projektu je řešen pouze Single Byte format. Po hlavičce následují už jen data všech znaků, která jsou řazena za sebou po bytech. Editor pro tento formát je dostupný [[http://​elm-chan.org/​fsw/​fontxedit.zip | zde]].
 ^ Offset ^ Velikost [B] ^ Popis^ ^ Offset ^ Velikost [B] ^ Popis^
 | 0    | 6| Podpis souboru „FONTX2“ ​       | | 0    | 6| Podpis souboru „FONTX2“ ​       |
Řádek 32: Řádek 31:
  
 Pro sériové řízení displeje byl napsán ovladač [[https://​gitlab.com/​skryja.petr/​ST7920-Serial-Driver | ST7920-Serial-Driver]]. Protože sériová komunikace neumožňuje čtení z displeje, je v tomto ovladači vytvořeno pole ST7920_LCD_bit_array[][],​ které kopíruje celou zobrazovací část displeje. Toto pole potom umožňuje vykreslovat pixely tak, že nedojde k přemazání okolních objektů. Zároveň lze provádět při vykreslování pixelů například logickou operaci XOR. Pro sériové řízení displeje byl napsán ovladač [[https://​gitlab.com/​skryja.petr/​ST7920-Serial-Driver | ST7920-Serial-Driver]]. Protože sériová komunikace neumožňuje čtení z displeje, je v tomto ovladači vytvořeno pole ST7920_LCD_bit_array[][],​ které kopíruje celou zobrazovací část displeje. Toto pole potom umožňuje vykreslovat pixely tak, že nedojde k přemazání okolních objektů. Zároveň lze provádět při vykreslování pixelů například logickou operaci XOR.
-Pomocí funkce ''​ST7920_draw_pixel''​ lze vykreslit jeden pixel kdekoliv na displeji (adresace x <​0-127>,​ y <​0-63>​). Vzhledem k tomu, že sériová komunikace je poměrně pomalá a vykreslování objektu po jednom pixelu zabere hodně času, byla napsaná ještě funkce ''​ST7920_serial_draw_8pixels''​ pro vykreslení osmice pixelů (jednoho bytu), kde jsou pixely vykresleny v ose X za sebou (adresace x <​0-119>,​ y <​0-63>​) pomocí dvou nebo jednoho zápisu do řadiče (záleží na adrese). Tato funkce umožňuje vykreslit osmici pixelů 4x – 8x rychleji, než funkce vykreslující osmici pixelů po jednom. Funkce umožňují rozsvítit/​zhasnout/​přepsat pixely nebo nad nimi provést logickou operaci xor.+Pomocí funkce ''​ST7920_draw_pixel''​ lze vykreslit jeden pixel kdekoliv na displeji (adresace x <​0-127>,​ y <​0-63>​). Vzhledem k tomu, že sériová komunikace je poměrně pomalá a vykreslování objektu po jednom pixelu zabere hodně času, byla napsaná ještě funkce ''​ST7920_serial_draw_8pixels''​ pro vykreslení osmice pixelů (jednoho bytu), kde jsou pixely vykresleny v ose X za sebou (adresace x <​0-119>,​ y <​0-63>​). Tato funkce umožňuje vykreslit osmici pixelů 4x – 8x rychleji ​(záleží na adrese), než funkce vykreslující osmici pixelů po jednom. Funkce umožňují rozsvítit/​zhasnout/​přepsat pixely nebo nad nimi provést logickou operaci xor.
  
  
Řádek 158: Řádek 157:
 FONTX_puts(56u,​ 25u, &​Fontx8x13B,​ "​ěščřžýáíé"​);​ FONTX_puts(56u,​ 25u, &​Fontx8x13B,​ "​ěščřžýáíé"​);​
  
-FONTX_puts(55u, 38u, &​Fontx8x13B,​ "​ěščřžýáíé"​);​ +FONTX_puts_8x13(55u, 38u, &​Fontx8x13B,​ "​ěščřžýáíé"​);​ 
-FONTX_puts(56u, 51u, &​Fontx8x13B,​ "​ěščřžýáíé"​);​+FONTX_puts_8x13(56u, 51u, &​Fontx8x13B,​ "​ěščřžýáíé"​);​
 </​code>​ </​code>​
  
Řádek 170: Řádek 169:
 ---- ----
 ====== Závěr ====== ====== Závěr ======
-K realizaci tohoto projektu byl využit vývojový editor EmBitz společně s STM32CubeMX. Byl napsán ovladač pro displej s rozlišením 128x64 a řadičem ST7920, který využívá sériovou komunikaci. Dále byl vytvořen ovladač pro vykreslování znaků ve formátu FontX, který je možno napojit na jakýkoliv displej, který má funkci pro vykreslení jednoho pixelu na displej. Nakonec byla vytvořena pomocí FontX editoru sada znaků pro kódování ISO-8859-2. Nutno podotknou, že ke správné funkci ​bylo třeba nastavit vývojový editor na kódování ​znaků ​ve formátu ​pro kódování ​ISO-8859-2 (viz {{2017:​fontx-glcd:​fontx-glcd_editor_setting.png?​linkonly | zde}}). Pokračování ve vylepšování FontX ovladače by bylo například možnost rotace znaků či celého řetězce.+K realizaci tohoto projektu byl využit vývojový editor EmBitz společně s STM32CubeMX. Byl napsán ovladač pro displej s rozlišením 128x64 a řadičem ST7920, který využívá sériovou komunikaci. Dále byl vytvořen ovladač pro vykreslování znaků ve formátu FontX, který je možno napojit na jakýkoliv displej, který má funkci pro vykreslení jednoho pixelu ​na displej. Ovladač obsahuje funkce, které umožňují vykreslit jeden znak jakékoliv velikosti či jednořádkový řetězec těchto znaků na jakoukoliv adresu. Funkce byly "​zdvojeny"​ pro vykreslování znaků o velikosti 8x13 pixelů, které využívají funkci knihovny ST7920 k rychlejšímu vykreslení osmice pixelů ​na displej. Nakonec byla vytvořena pomocí FontX editoru sada znaků pro kódování ISO-8859-2. Nutno podotknou, že ke správnému vykreslování znaků na displej ​bylo třeba nastavit vývojový editor na kódování ve formátu ISO-8859-2 (viz {{2017:​fontx-glcd:​fontx-glcd_editor_setting.png?​linkonly | zde}}). Pokračování ve vylepšování FontX ovladače by bylo například možnost rotace znaků či celého řetězce.
 \\ \\
 \\ \\
2017/fontx-glcd.1515575433.txt.gz · Poslední úprava: 2018/01/10 10:10 autor: Petr Skryja