Jste zde

DisplayKit - práce s grafickými LCD displeji hrou

V předchozím článku o Image Converteru byla popsána jednoduchá utilita pro převod obrázků ve

formátu BMP do programového kódu v ASM, C, Pascal či Basic. Nyní se podíváme na to, jak jej lze prakticky použít a

ukážeme si, k čemu může být vhodný ladící přípravek DisplayKit.

Grafické displeje poskytují jedinečné možnosti zobrazení textů a zejména obrázků. Výborné zobrazovací možnosti grafických displejů jsou ovšem vykoupeny složitostí vytváření kódu obrazců a paměťovými nároky pro jejich uložení. Zobrazovací plocha grafických displejů je tvořena oblastí bodů (pixelů), které jsou adresovány prostřednictvím řadičů displejů. Vysoké množství adresovaných bodů klade na řídící mikroprocesor vysoké paměťové nároky např. při rozměru obrázku 128 x 64 je zapotřebí 1024 Byte programové paměti. Pro obrázky s pravidelném tvarem nebo s převahou prázdných ploch je možné zavést kompresi, která výrazně snižuje paměťové nároky u řídícího mikroprocesoru.

 
Ladící přípravek DisplayKit v provozu

Objednat DisplayKit v HW Shopu => 1.800 Kč bez DPH

Transformaci obrázků do kódu mikroprocesoru lze usnadnit použitím aplikace pro automatickou konverzi a kompresi obrázků z formátu *.BMP do programového kódu, jakou je například námi již dříve popisovaný Image Converter.


Obr. 1 – Schéma průběhu komprese obrázků
 

Aplikace Image Convertor umožňuje překlad obrázků o formátu 1x1 až 320x240 pixelů do třech kompresních typů None, Zero a Full a do čtyřech programovacích jazyků ASM, Pascal, Basic a C).Výsledný kód je ukládán ve formátu přímo použitelném pro zvolený řadič displeje KS107, ST7920, T6963C.

Formát uložení kódu je závislý zejména na způsobu adresace zobrazovacích bodů z jednoho Byte. Adresaci bodů je možné snadno rozdělit na svislou a vodorovnou. Svislá adresace bodů je charakteristická pro řadič SAMSUNG KS107, který je nejčastěji vyráběn v rozměrech 128x64 (EL12864 nebo PG 2864).


Obr. 2 – Mapování paměti displeje EL 12864 s řadičem KS107
 

Displej 128x64 je rozdělen na dvě poloviny z nichž každá je řízena jedním z řadiče KS107. Vznikají tím dvě samostatné oblasti vybírané signály CS0 a CS1. Každá z těchto oblastí je dále rozdělena na 8 stránek po 64 bytech viz obr.2.

Vodorovná adresace bodů je charakteristická pro řadič TOSHIBA T6963C, který je nejčastěji vyráběn v rozměrech od 128 x 64 bodů do 240 x 128 bodů.


Obr. 3 – Mapování paměti displeje EL128128 s řadičem T6963C

 

Vysvětlení konverze

Pro vysvětlení činnosti konverze použijeme jednoduchý obrázek tvořený ze čtyř černých a bílých čtverců. Každý čtverec má rozměr 8x8 pixelů. Tento obrázek je možné konvertovat do třech kompresních typů (None, Zero a Full).

Ve všech typech konverzí znamenají v konvertovaném kódu první tři Byte výšku (řádky), šířku (pixely) a typ komprese (None = 0x00, Zero = 0x01 a Full = 0x02).

Obrázek je konvertován po jednotlivých řádcích o výšce 8x pixelů.

None (0x00)

Konvertovaná data plně odpovídají obrázku (beze změn). Tento typ konverze je výhodný pro nepravidelné obrázky.

Zero (0x01)

Data jsou uložena v jednoduchém typu komprese. Při výskytu Byte s hodnotou nula vždy další Byte za touto nulou znamená počet výskytů těchto nul. Konverze je výhodná pro obrázky s převahou bílých (prázdných) ploch.

Full (0x02)

V tomto typu konverze za každým Byte následuje informace o počtu výskytů tohoto Byte. Konverze je vhodná pro pravidelné obrázky.

Příklad převodu obrázku

Konveze None

0x02,0x10,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

Konveze Zero

0x02,0x10,0x01,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x10,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF

Konveze Full

0x02,0x10,0x02,
0xFF,0x08,0x00,0x10,0xFF,0x08

Obr. 3 - Příkladný obrázek ke konverze 16 x 16 pixelů

Postup konverze a zobrazení

  1. Otevřete obrázek (*.BMP).
  2. Nastavte mez pro černou a bílou (pouze pro barevné obrázky).
  3. Zvolte kompresní typ a programovací jazyk.
  4. Proveďte konverzi stiskem tlačítka Convert.
  5. Zkopírujte vytvořenou tabulku do vašeho programového kódu mikroprocesoru.
  6. Zavolejte rutinu DISP_ICON s odkazem na tabulku a pozici zobrazení obrázku.

Příklad implementace v jazyce C

#include #include #include "ks107.h" // Knihovní podpora #include "Image.h" // Knihovna s obsahem konvertovaného obrázku void main(void) { PAUSE(5); DISP_INIT(); // Inicializace displeje for(;;) { DISP_ICON(Head,0,0); // 1. Zobrazení obrázku (obrázek, pozice řádek,sloupec) PAUSE(20); DISP_TEXT("Hello",5,0,56,45); // 2. Zobrazení textu //(text,délka,výška,pozice řádek,sloupec)
PAUSE(20); DISP_TEXT("Hello",5,1,48,35); // 3. Zobrazení textu (text,délka,výška, //pozice řádek,sloupec)
PAUSE(20); } }

1. Zobrazení obrázku

2. Zobrazení obrázku


3. Zobrazení obrázku

 

Ladící přípravek DisplayKit

Stručná charakteristika

V praxi před samotným projektováním vlastního výrobku je vhodné ověřit samostatnou činnost jednotlivých komponentů. Pro rychlé ověření správnosti programového vybavení slouží ladící přípravek DisplayKit. Přípravek umožuje řízení veškerých typů displejů napájených 5V i 3,3V, nastavení kontrastu, spínání podsvětlení a rychlé programování mikroprocesoru přímo v zapojení.

Programování umožňuje Bootloader integrováný v mikroprocesoru spolu s aplikací FLIP, kterou je možné zdarma stáhnout ze stránek www.atmel.com. Uvedení procesoru do stavu programování je uzemnění signálu PSEN jumper propojkou (Program) nebo automaticky stavem bitu BLJB a s následným stiskem tlačítka Reset. Připojení přípravku DisplayKit k PC se provádí sériovým prodlužovacím kabelem nebo prostřednictvím převodníku USB-RS232.

  • Napájecí napětí : 5,5 až 30V, (nom. 12V)
  • Pracovní napětí : 3,3V/5V (Jumper propojka)
  • V/V rozhraní : P0.0-P0.7, P2.0-P2.7 (Pull up 10k)
  • Spínání podsvětlení : P1.0 - tranzistor (Imax=1A)
  • Nastavení kontrastu : POT A, POT B, POT X, (Rpot = 10k)
  • Signalizační LED (červená, zelená) : P3.6 (zelená), P3.7 (červená)
  • Programování : RS232 (Jumper propojka a reset)

Objednat DisplayKit v HW Shopu => 1.800 Kč bez DPH

Aplikace Flip

Programování mikroprocesorů přímo v zapojení je velmi výhodné z několika důvodů: není nutné vyjímat mikroprocesor ze zapojení a zejména není zapotřebí drahých programátorů.

Aplikace Flip umožňuje mnoho nastavení, které je vhodné předem zapsat do tzv. konfiguračního souboru *.cfg. V případě použití konfiguračního souboru je po jeho otevření otestováno spojení s mikroprocesorem a zobrazeny identifikační údaje. Následovně pouhým stiskem tlačítka RUN dojde k naprogramování mikroprocesoru. Po naprogramování je spuštěn program červeným tlačítkem Start Application nebo Resetem. Nesmí být uzemněn signál PSEN a nesmí být aktivován bit BLJB jinak bude mikroprocesor uveden znovu do stavu programování.

 


Příklad konfiguračního souboru

selectDevice T89C51CC01 // Typ obvodu set port COM1 // Zvolený port set baud 38400 // Přenosová rychlost programování (v proc. Autobaude) initProtocol RS232Standard connectRS232 Standard parseHexFile "C:/Dokumenty/DisplayKit/Main.hex" // Cesta k souboru setupBlankCheckDevice set gui(blankCheckMin) 0000 set gui(blankCheckMax) 7FFF setupFullEraseDevice // Mazání obvodu setupProgramDevice // Programování obvodu setupVerifyDevice // Verifikace obvodu setupBljbFuse 1 // Automatický skok do programovacího modu po resetu setupX2Fuse 1 // Přepínání dělícího poměru krystalu setupSecurityLevel 0 // Úroveň zabezpečení 0,1,2
 

Připojení displejů k přípravku DisplayKit

Schémata připojení displejů s řadiči KS107, ST7920 a T6963C odpovídá HW konfiguraci podporovaného software dodaného v jazyce C.

 


Více informací o DisplayKitu naleznete v uživatelském manuálu. Přístě se na práci s DisplayKitem podíváme blíže

Ing. David Romanek
david.romanek@ imfsoft.com

DOWNLOAD & Odkazy

Hodnocení článku: