Produkty Novinky Články Návody Kontakty

SAM9260 a znakový LCD - 2. ovládání

V minulém díle jsme LCD displej připojili k modulu SAM9260. Než se však vrhneme na programování ovladače displeje pod Linuxem, ”dopřejeme” si velmi stručný úvod do řízení znakových LCD displejů s řadičem HD44780. Přeci jenom je dobré vědět jak ”to” řídit.
Displej se skládá z řadiče a zobrazovacího elementu. Komunikaci a ukládání zobrazovaných znaků zajišťuje řadič, zobrazování pak samotný LCD element. Samotná strategie řízení displeje je jednoduchá. Displej se konfiguruje pomocí 8bitové instrukce/příkazu. Instrukcemi lze i ovlivnit chování displeje za běhu - můžeme zapnout/vypnout blikání kurzoru, nastavit novou pozici pro zobrazování znaků apod. Dokonce lze za běhu změnit i znakovou sadu!
Znaky zobrazované displejem posíláme jako 8bitová data. Co znak to jeden byte zapsaný do interní DDRAM paměti řadiče displeje. Jedna adresa v interní DDRAM paměti řadiče odpovídá jedné pozici na LCD elementu. Takže, co zapíšeme do řadiče, to se zobrazí na odpovídající pozici na LCD elementu. Můžete si zapnout i automatický posun kurzoru, znaků... Prosté a a elegantní. Až na jeden háček - paměť řadiče je dimezována na displeje 4x40 znaků. Jenže řadiči displeje nelze říct, že LCD element má jen 2x16. Automatický posun kurzoru proto posune 17. znak na 17. pozici, ale ta se už nezobrazí, protože nemá kde. Toto chování musíme ošetřovat v ovladači a vždy, před zápisem 17. znaku, do displeje poslat instrukci, která přesune kurzor na začátek druhého řádku. Podobně musíme ohlídat i zápis 33. znaku, tj. první znak za koncem druhého řádku. Buď 33. znak nezobrazíme vůbec nebo nastavíme kurzor zpět na začátek displeje - první znak na prvním řádku - a zde zapíšeme 33. znak.
Pár slov si musíme říct i ke komunikačnímu protokolu, který budeme implementovat v ovladači. Displej je připojen k I/O bráně PIOB modulu SAM9260. Jako datová sběrnice slouží posledních osm I/O pinů brány PIOB: piny PB24 - PB31. Řídící signály RS a E jsou přivedeny na piny PB23 a PB22. Komunikace s displejem je 8bitová a jednosměrná - do displeje můžeme pouze zapisovat. Rozdíl mezi přenosem instrukce a znaku spočívá pouze v logické úrovni signálu RS, zbytek protokolu je shodný. Komunikaci zahajujeme nastavením signálu RS do příslušné logické úrovně, log. 0 pro zápis instrukce a log. 1 pro zápis znaku. Pak nastavíme signál E na log. 1, vystavíme data (instrukci/kód znaku) a následně potvrdíme platnost dat změnou úrovně signálu E na log. 0. Před další komunikací musíme počkat minimální definovanou dobu. Seznam instrukcí, minimálních prodlev mezi nimi a další podrobnější informace naleznete na stránkách s popisem LCD. Teorii zakončíme motivačním obrázkem, kde je vidět připojený a fungující LCD displej.
Fungující ovladač

Seznam dílů