Jste zde

Image Converter - práce s grafickými LCD displeji hrou

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.

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.







Image Converter v1.1

Aplikace Image Converter umožňuje velmi snadnou a rychlou konverzi vašich obrázků do tabulky pro LCD grafický display (grafický modul) připojený k mikroprocesoru. Image Converter umožňuje konverzi obrázků do tří typů kompresních formátů (None, Zero a Full) a do čtyř programovacích jazyků (ASM, Pascal, Basic a C). Ke své činnosti vyžaduje operační systém Windows 9x / Me, Windows NT / 2000 / XP.
 

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

Parametry

  • Rychlá a snadná konverze obrázků (*.BMP) formát 1x1 až 320x240 pixelů
  • Tři typy konverzí (None, Zero and Full)
  • Čtyři typy programovacích jazyků (ASM, Pascal, Basic a C)
  • Nastavení meze pro převod barevných obrázků na obrázky černobílé
  • Knihovny v jazyce ASM51 a C pro práci s obrázky a textem (32 to 128 ASCII)

Použitelné pro LCD s řadičem S6B0107 a S6B0108 (KS107 a KS108) - EL6464, PG12856, PG12864, EL12864, EL24064

Aplikace Image Converter umožňuje překlad obrázků o formátu 1x1 až 320x240 pixelů do tří kompresních typů None, Zero a Full a do čtyř programovacích jazyků (ASM, Pascal, Basic a C).

Displej 128x64 je rozdělen na dvě poloviny, z nichž každá je řízena jedním z řadičů 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. 


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

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 "Disp.h"                           //  Knihovní podpora
#include "Image.h"                        //  Knihovna s obsahem konvertovaného obrázku
void main(void)
{
PAUSE(5);
DISP_INIT();
for(;;)
{
DISP_ICON(Head,0,0);               // 1. Zobrazení obrázku (obrázek, pozice 

řádek,sloupec)
PAUSE(20);
DISP_TEXT("Hello",5,0,7,45);   // 2. Zobrazení textu (text,délka,výška,pozice 

řádek,sloupec)
PAUSE(20);
DISP_TEXT("Hello",5,1,6,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

Schéma zapojení LCD displeje EL12864A a procesoru AT89C51

Připojení grafického displeje k mikroprocesoru se provádí pomocí osmi datových linek DB0 až DB7 a čtyř řídící vodičů E, D/I, CS0 a CS1. Při připojení datových linek k portu P0 mikroprocesoru je vhodné připojit k těmto linkám zvedací odpory RN1 = 10kΩ .

Závěr

Aplikace Image Converter výrazně usnadňuje převod obrazových formátů pro zobrazení na grafických LCD. Vzhledem k neustále klesajícím cenám těchto displejů přichází Image Converter právě včas.

Ing.Radek Taraba
radek.taraba@ post.cz

DOWNLOAD & Odkazy

Hodnocení článku: