Cílem tohoto článku je ukázat začínajícím elektronikům, že na první pohled nedostupné konstrukce ve skutečnosti nejsou nějak zvlášť složité a že mají možnost si je vyzkoušet s minimálními finančními prostředky. V článku si jako příklad popíšeme ovládání barevného displeje s rozlišením 320×240 pixelů v barevné hloubce 65 536 barev a s úhlopříčkou 3,2". Vstupní periférií bude rezistivní dotyková plocha, která je součástí displeje. Tato kombinace nám umožní jak vstup dat, tak jejich případnou vizualizaci.
Možným použitím takové konstrukce by mohl být např. digitální osciloskop. Pokud displej připojíme k běžně používaným procesorům typu AVR, AVR32, PIC a podobně, tak je to celkem snadné. Jelikož tyto procesory většinou obsahují A/D převodníky, je možné navzorkovat data a provést jejich vizualizaci. Tím samozřejmě nelze dosáhnout vlastností profesionálních osciloskopů, ale pro amatérskou praxi mnohdy takovéto řešení vyhovuje, zejména když takový osciloskop jsme schopni zkonstruovat v ceně zhruba do 1 000 Kč. Doplněním tohoto displeje o procesor a sériový GSM modul by bylo možné i snadno sestavit zařízení pro psaní a odesílaní SMS zpráv.
Nedá mi to, abych se u tohoto tématu na chvíli nezastavil. Já tyto displeje kupuji přes eBay. Po objednání a zaplacení asi 400 Kč displej dorazí po 15 dnech poštou, přičemž poštovné je již zahrnuto v ceně. Za tuto cenu dostanete kompletně sestavený plošný spoj s displejem, řadiči a dotykovým panelem tak, jak je zobrazeno na obrázku. Displej vždy dorazil v pořádku a byl plně funkční. Na webové stránce prodejce lze stáhnout katalogový list displeje a zdrojové kódy pro ovládání displeje. Zdrojové kódy jsou sice určeny pro připojení displeje k procesoru s architekturou 8051, ale je možné je použít i pro inspiraci a navíc v nich nalezneme hodnoty pro nastavení řadiče displeje. Pokud tedy srovnáme cenu tohoto displeje a cenu černobílého grafického displeje bez dotykové vrstvy u našich prodejců součástek, můžeme být nemile překvapeni. V českém obchodě je cena černobílého displeje s menším rozlišením často i 2× vyšší, přičemž ani není na místě mluvit o jeho kvalitě. Předpokládám, že oba typy displejů pochází ze stejné továrny.
Konstrukce je dobře vidět na následujícím obrázku (obr. 1), a proto si uvedeme jen krátký popis. Displej s dotykovou vrstvou je pevně přichycen na desce plošného spoje pod ním. Nad horní i spodní stranou displeje jsou standardní 34pinové konektory, stejné jako na starých disketových mechanikách, které jsou ale běžně dostupné. Oba dva konektory mají stejné signály, jenom jsou zrcadlově zapojené. Protikus konektoru s plochým kabelem lze tedy přivést z vrchní nebo spodní strany displeje.
Obr. 1 Sestava displeje
Na desce plošných spojů je také osazen řadič dotykové vrstvy (ADS 7843) s SPI výstupem a spínací obvody pro LCD podsvícení. Samotný TFT displej obsahuje řadič SSD 1289. Součástí řadiče je paměť obrazu a všechny signály pro ovládání displeje.
Celkem snadno. Displej se nám v systému jeví jako 16bitová paměť o velikosti 2 slova. Vyvedena je datová sběrnice o šířce 16 bitů a adresová sběrnice 1 bit. Dále je zde vyveden signál pro čtení a zápis a signál pro výběr obvodu a nezbytný reset. Dotykový panel se připojí přes 4 signály standardního SPI. Jeden PWM vstupní signál je určen pro nastavení intenzity podsvícení displeje, kdy střídou tohoto signálu ovlivníme intenzitu podsvícení. Vyvedeny jsou také vstupy napájecího napětí 5 V pro podsvícení a 3,3 V pro vstupně výstupní obvody.
Pro připojení displeje tedy potřebujeme 16bitovou datovou sběrnici a příslušné obvody. Tento způsob připojení umožňuje velmi rychlou komunikaci s displejem i velmi rychlé překreslení obsahu. Displej lze samozřejmě připojit i k branám osmibitových mikroprocesorů, ale rychlost překreslování se samozřejmě sníží. Pro každý zápis musíme nastavit několik bran mikroprocesoru. U osmibitového procesoru určitě nestihneme zobrazit plynulé video, ale pro uživatelské rozhraní je tato rychlost dostatečná.
Samozřejmě a docela jednoduše. Displej se nám jeví jako RAM paměť o velikosti dvě 16bitová slova. Zápisem do adresy 0 se zapisuje příkaz a zápisem do adresy 1 vlastní data. První a nutnou věcí je řadič displeje inicializovat. Ze zdrojového textu (na stránce dodavatele) vyčteme posloupnost příkazů. Potom zapíšeme příkaz a následně data. Displej nastavíme do konfigurace 320×240 pixelů a 65 536 barev, kdy každý zápis do paměti představuje 1 pixel. Pro snadnější ovládání displeje obsahuje řadič ukazatel (X a Y). Zde je potřeba říci, že displej má autoinkrementaci adresy.
Pokud chceme zobrazit 50 pixelů dlouhou vodorovnou čáru o určité barvě a na určitých souřadnicích, postupujeme následovně:
Pokud chceme vymazat celý displej, lze to provést např. takto: nastavíme (X a Y) na 0 a následně zapíšeme 76 800× (320×240) hodnotu barvy, kterou chceme displej vymazat.
V tomto nastavení je ovládání displeje nejjednodušší. Každý zápis je nastavení jednoho bodu. Kdyby zápis obsahoval nastavení více bodů, tak by situace byla složitější, protože bychom byli nuceni data z displeje i vyčítat a provádět maskování, abychom si nastavením jednoho bodu nesmazali body sousední.
Další práce je už jenom obvyklá rutina, kdy všechno ostatní musíme naprogramovat. Pro zobrazení písmen, čar a dalších je potřeba zobrazit správné body. Protože displej obsahuje řadič i paměť obrazu, nemusíme se o další generování signálu starat. Důležitým údajem je přístupová doba. Do paměti displeje lze zapisovat data rychlostí cca 10 milionu pixelů za sekundu. Pokud bychom touto rychlostí zapisovali celý displej, tak lze zobrazit video o frekvenci 130 Hz.
Na tu samozřejmě nezapomeneme. Displej obsahuje rezistivní panel a příslušný SPI řadič rezistivního panelu (typ AD7843), který je kompatibilní. Tady asi není nutno příliš mnoho zabíhat do teorie. Řadič je vlastně 12bitový A/D převodník. Do řadiče pošleme po SPI kód pro získání hodnoty souřadnice (X a Y) a řadič nám vrátí příslušnou hodnotu napětí. Pokud displej zmáčkneme v levém horním rohu, dostaneme hodnoty asi (250,250) a hodnoty asi (1850,1850) pro pravý dolní roh. Příslušné hodnoty lineárně přepočítáme na pixely v displeji. V praxi se mi osvědčilo jednotlivé hodnoty přečíst několikrát rychle po sobě a udělat průměr a zajistit tímto opakovatelnost. Protože převodník řadiče je schopný vzorkovat velmi rychle, tak časová prodleva není znát. Celkem snadno jsem dosáhnul přesného kreslení perem po displeji. Samozřejmě, že lze také provést kalibraci, ale pro dotyk a volbu dotykem na tlačítka vykreslená na displeji není nutná.
Cílem tohoto článku bylo ukázat, co si lze vyzkoušet i ve velmi jednoduchých podmínkách. Jelikož má displej standardní konektor s roztečí 2,5 mm, je následná konstrukce snadná. Do displeje zapájíme konektor, na jeden konec plochého kabelu nacvakneme samořezný protikus konektoru displeje a na druhý konec samořezný DIL konektor použitelný do kontaktního pole (vše je snadno dostupné u našich prodejců součástek). Pokud zakoupíme nějaký DIL mikroprocesor, tak lze vše vyzkoušet i bez výroby plošného spoje. Každý máme samozřejmě jiné preference, ale na tomto nenáročném zapojení lze začít s elektronikou na slušné úrovni a navíc levně. Máme vlastně vyřešeno současně zobrazení i vstup hodnot, přičemž barevně zobrazený text se nedá srovnat s barevně blikajícími led diodami v jiných konstrukcích. Tuto konstrukci vyrobenou na plošném spoji si dovedu představit jako velmi levnou výukovou pomůcku pro programování.