Zpět

Rozšíření knihovny pro grafický displej a aplikace dotykové fólie

Martin Tajč

Obsah

Úvod

Cílem této části je rozšíření knihovny od autora Fabian Maximilian Thiele pro grafický displej s řadičem KS0108 a implementace dotykové fólie k tomuto displeji. Tato fólie je umístěna na displeji a slouží jako ovládací prvek. Všechny vytvořené funkce jsou v souborech TM.c a TM.h a vzorová aplikace v V1_1.c. Celý projekt je zaměřen na mikrokontrolér ATmega32.

Obsah doplněných funkcí

Připojení displeje a dotykové fólie k mikrokontroléru ATmega32 ukazuje Obr. 1.

Schéma zapojení
Obr.1 :Připojení displeje a dotykové fólie k mikrokontroléru ATmega32

Grafické prvky

V ukázkové aplikaci jsou vytvořené některé ikony, které jsou nutné pro demonstraci vytvořených funkcí a které lze i využít v některých aplikacích. Většina těchto ikon má velikost 32x32 bodů. Jedná se například o ikony pro kalibraci, zobrazení numerické klávesnice, nastavení, vypnutí apod. Dále lze nalézt ve vzorové aplikaci ikonu kolébkového spínače a páčkového spínače. Páčkový spínač má velikost 16x32 bodů, čili lze na displeji umístit osm takových ikon ve vodorovném směru. Tyto ikony jsou nakresleny v malování a posléze převedeny v programu LCDAssistant do použitelného pole pro řadič KS0108. Tento program lze stáhnout na internetových stránkách [2].

Mezi první doplněné funkce knihovny patří dva způsoby zobrazení bitmapy. V prvním případě se jedná o postupné odkrývání bitmapy. Druhá funkce postupně zobrazuje bitmapu od začátku levého okraje až ke konci displeje. Tyto funkce se nazývají right_run1 a right_run2. Obě funkce mají jako vstupní parametr ukazatel na bitmapu.

Pro zobrazení ikon nutných k ovládání aplikací je vytvořena funkce show_icon. Vstupními parametry této funkce jsou: ukazatel na ikonu, která se má zobrazit, pozice x a y na displeji a velikost rastru zobrazení ikony. Po korektním výběru ikony je výběr indikován jejím invertováním pomocí funkce show_icon_invert, která má stejné vstupní parametry.

Poslední vytvořenou grafickou funkcí je jednoduchý spořič obrazovky. Princip tohoto spořiče je v zobrazení textu, který se odráží od hran displeje. Zobrazení je prováděno do doby, než je detekován dotyk na fólii. Tato funkce lze nalézt pod názvem screen_save. Vstupním parametrem této funkce je ukazatel na text, který se má zobrazovat.

Funkce pro ovládání pomocí dotykové fólie

Základní funkcí nutné pro ovládání pomocí dotykové fólie je získání souřadnic dotyku pomocí A/D převodu. Získání hodnoty souřadnice x a y je zajišťovna funkcemi axis_AD_x a axis_AD_y. Těmito funkcemi se povolí A/D převod a podle nastavení registrů se zajistí snímaní námi požadované hodnoty.

Po získání hodnot je nutné zjistit, jestli se jedná o stisk fólie nebo pouze o hodnotu bez stisku fólie. Toto je prováděno funkcí touch_scan, která bere v potaz osm posledních měřených hodnot a pokud jsou čtyři po sobě jdoucí stejné, tak je proveden stisk a funkce vrátí hodnotu informující o správnosti stisku.

Jelikož dotyková fólie je větší než displej, tak není celá využita a je nutné provést vždy kalibraci na daný displej. K tomu lze použít funkci calibrate. Po výběru této funkce se postupně zobrazují v každém rohu body, které jsou nutné pro měření polohy. Vždy je nutné držet stisknutí bodu až do doby, než se zobrazí bod druhý. Po ukončení kalibrace se uloží hodnoty do paměti EEPROM, z které se vždy po každém zapnutí aplikace načítají. Tím je zajištěna vždy korektní kalibrace displeje.

Poslední funkcí využívající dotykovou fólii je zobrazení numerické klávesnice. Tato funkce je nazvána show_numpad. Vstupními parametry této funkce jsou: bitmapa, která zobrazuje klávesnici a heslo pro porovnání. Maximální velikost tohoto hesla je šest znaků. Po potvrzení zadané kombinace čísel se provádí porovnání se zadaným heslem. Pokud je zadaná kombinace shodná vypíše se nápis o shodě, ukončí se funkce a je vrácena hodnota zadaní kombinace. Pokud ovšem zadaná kombinace není shodná, tak se vynulují zadané čísla a celé zadání probíhá znova. Ukončit zobrazení klávesnice lze také křížkem umístěným v pravém dolním rohu.

Demonstrace

Krátké video s ukázkou vytvořených funkcí

Literatura

[1] Controlling graphical 128×64 LCD based on KS0108[online]. [cit. 1. května], ScienceProg. Dostupné na www: http://www.scienceprog.com/controlling-graphical-128x64-lcd-based-on-ks0108/
[2] LCD Assistant [online]. [cit. 1. května], en.radzio.dxp.pl. Dostupné na www: http://en.radzio.dxp.pl/bitmap_converter/

Download

Zdrojové soubory