Jak ovládat TFT LCD Displej
"Odešel" mi starý notebook (PII DELL233MHz), který jsem používal doma na programování atmelů a v práci na nastavování ústředen elektronického zabezpečení. Bylo mi ho líto vyhodit, tak jsem ho rozebral, pár věcí použil jinak a jinde a nakonec mi zbyl displej. Tak jsem ho taky vymontoval abych se pokusil, ovládat ho mikrokontrolérem Atmel. Předem tohoto článku bych chtěl poznamenat, že v oblasti elektroniky jsem pouhý amatér a samouk. Právě proto je tento článek více osobní než odborný.
Na zadní straně jsem objevil štítek výrobce, kde byl napsán typ a výrobní číslo. Jedná se o displej firmy SHARP LQ12S56, který má velikost 12,1“ , a rozlišení 800x600 pixelů. Na internetu jsem našel datasheet k tomuto displeji (viz obrázek 1 a 2) a díky tomu jsem získal nejen zapojení konektoru, ale i časování vstupních signálů a tabulku napájecích a ovládacích napětí včetně absolutních hodnot.
Obr. 1 - Zapojení konektorů SHARP LQ12S56
Obr. 2 - Časování signálů SHARP LQ12S56
Konektor LCD displeje je opravdu hodně malý pro amatérské podmínky, přesto se mi podařilo na tento konktor napájet 40žilový kabel (používaný např. k HDD). Na druhý konec jsem osadil 40pinový samořezný konektor. Jeden pin GND jsem vynechal. Kabel jsem na straně pájení zalil lepidlem, abych už nikdy nemusel absolvovat ono pájení – byla to fakt piplačka. Tím byl připravený ovládací konektor.
Obr. 3 - Připojovací "konektor"
Z datasheetu jsem zjistil, že displej má ovládání barevných vstupů R,G,B přímo digitálně tj. 6 bitů na jednu barvu tedy 18bitové rozlišení jednoho pixelu. Toto je výhoda, neboť některé hlavně novější displeje používají propojovací technologii LVDS, čímž se vše stává složitějším. Druhý konektor na LCD displeji je pro podsvícení.Jedná se v podstatě měnič na vysoké napětí, které je použito pro rozsvícení zářivky. Na tento měnič jsem žádný datasheet nenašel, tak jsem musel trochu laborovat. Objevil jsem na měniči dva integrované obvody:
- DS1803 dvojitý digitální potenciometr
- UC3872DW řízení měniče pro zářivku
Obr. 4 - Zapojení konektoru podsvícení SHARP LQ12S56
Připojil jsem GND na piny 1 - 3, dále +5V na pin 7 a +12V na piny 8,9,10 a zářivka podsvícení se rozzářila na plný výkon. To mi pro mé pokusy stačilo, nechtěl jsem se zdržovat bastlením něčeho čím bych ovládal obvod DS1803 po linkách SDA a SCL (I2C) a snižoval tak digitálně jas podsvícení displeje. Konečně jsem se mohl věnovat samotnému ovládání. Ale ouha!! Z datasheetu jsem vyčetl, že hodinový kmitočet displeje je 40MHz a můj oblíbený atmel AT89C52 má maximální frekvenci 24MHz a jeho interní kmitočet je ještě navíc dělen dvanácti. Začal jsem tedy pátrat po rychlejších mikroprocesorech např. AVR apod. Bohužel všechny ač inovované (bez dělení interního kmitočtu – nové typy atmelů apod.) byly pořád pomalé. A tak jsem pátral dál. Nejvýhodnější by bylo hradlové pole např. XILINX, dokonce jsem si stáhnul program XILINX ISE 6 a spoustu literatury a datasheetů, ale přiznám se, že asi po týdnu usilovného čtení a učení jsem hradlová pole vzdal. Předsudky tedy nelhaly. Naštěstí jsem našel na internetu http://www.volny.cz/ekrakonos/vga1/cz_vga1.htm podobné zapojení, což pro mě byl impulz jak sestavit ovládání pro displej z jednotlivých integrovaných obvodů. Pro napájení displeje +3,3V jsem použil dva paralelně zapojené stabilizátory napětí LE33 v katalogovém zapojení.
Obr. 5 - Typické zapojení LE33
Obr. 6 - Rozložení vývodů LE33
Moc jsem se těšil jak to všechno zapojím a odzkouším na nepájivém kontaktním poli a tak jsem z unáhlenosti nakoupil příslušné integrované CMOS řady 4000-4500. Zapojil jsem vše podle schématu a připojil napájecí napětí a nic. Přepojil jsem tedy obvody čítačů do kaskády na vstup použil krystalový oscilátor v pouzdru DIL8 40MHz a na jeden s posledních výstupů kaskády zapojil LED diodu, která místo cca 1Hz blikání stále svítila. Takže chyba byla v čítání. Ale kde. Znovu jsem prohledal datasheety pro řadu CMOS 4000 a zjistil jsem, že nejvyšší rychlost hradla této řady je 6MHz. AHA!!!. Takže jsem nakoupil stejné obvody, ale řady 74HCT, vše zapojil podle schématu na obrázku č.7, připojil napájecí napětí a nic.
Obr. 7 - Schéma zapojení testovacího přípravku
Byl jsem tak natěšenej, že jsem zapoměl zapojit vstupy barev R,G,B. Použil jsem tedy nejvyšší bit R5, G5, B5 a připojil je na GND. Všechny pixely na dispeji zčernaly. Zkusil jsem bit R5 přepojit na +V a všechny pixely na displeji zčervenaly.
Obr. 8 - Po připojení bitu R5 displej SHARP LQ12S56 zčervenal
Paráda, měl jsem fakt radost. Dál jsem zkusil zapojit barvové vstupy RGB do horizontálního časování a to tak , že:
- Bit R5 na výstup čítače IC8A pin 11 – QA
- Bit G5 na výstup čítače IC8A pin 10 – QB
- Bit B5 na výstup čítače IC8A pin 9 – QC
Obr. 9 - Na displeji se zobrazilo několik barevných a svislých pruhů po osmi barvách
Pak jsem zkusil to samé, ale s vertikálním časováním a pruhy se zobrazily stejné, ale vodorovné. :
Obr. 10 -Vodorovné pruhy na displeji SHARP LQ12S56
Pro pořádek dodávám, že měnič pro záživku produkuje rušení okolo 40kHz a ruší tak obraz displeje v horizontální synchronizaci, proje je dobré plechový rámeček okolo displeje připojit na GND. No a teď už zbývá jen připojit pamět SRAM a EPROM pro generátor znaků a mám displej k mému oblíbenému Atmelu. Ale to už je námět na další článek.