Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
2017:fontx-glcd [2018/01/10 10:14] 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é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. | + | 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. |
\\ | \\ | ||
\\ | \\ |