Inteligentní LCD displeje a jejich řízení
Pro komunikaci mezi zařízením s mikropočítačem a člověkem jsou dnes nejvíce používány inteligentní displeje s označením LCD (Liquid Crystal Display). Jejich výhodou je nízká spotřeba a velký počet znaků, které mohou zobrazovat. Vybrat si můžeme displeje obvykle od velikosti 16x1 znaků (1 řádek po 16 sloupcích), až po 40x4 znaků v mnoha variantách barev a s podsvícení nebo bez. V našich pokusech budeme používat LCD displej LM16X212 (2 řádky, 16 znaků). Komunikaci s displejem a jeho řízení usnadňuje zabudovaný řadič, obvykle HD44780. Jeden znak je tvořen maticí 5x8 bodů, ale ve skutečnosti se používá 5x7 bodů a osmý řádek je ponechán pro kurzor. Řadič umožňuje zobrazit některý z 96 definovaných znaků (včetně mezer), nebo si vytvořit 8 znaků vlastních, např. písmena s diakritikou. Data (zobrazované znaky) mohou být přenášena buď po 4 nebo po 8 datových vodičích. V případě čtyřbitové komunikace probíhá zápis do LCD nadvakrát, nejdříve horní a potom dolní polovina bytu po vodičích označených DB7 až DB4. Komunikaci mezi mikropočítačem a LCD řídí signály RS (příkaz-0 nebo data-1), R/W (čtení-1 nebo zápis dat-0) a E (vstup povolení). Vstup CONTR slouží k nastavení kontrastu displeje, u některých typů stačí zapojit na GND.
Propojení LCD displeje s mikropočítačem při čtyřbitové komunikaci (je výhodnější, protože uspoříme 4 výstupy z mikropočítače) a ošetření ostatních vývodů je patrné ze schématu.
Při programování LCD displeje v jazyku Bascom můžeme volbu propojení provést pomocí knihovny lcd4.lbx, nebo volbou v nastavení Options→Compiler→LCD, nebo vypsáním instrukcí pro konfiguraci LCD (kam je na mikropočítač připojen datový nebo signálový vodič z LCD) ve zdrojovém kódu. Poslední varianta je uvedena ve vzorovém příkladu.
Obr. 1: Schéma zapojení úlohy
Obr. 2: Realizace úlohy
‘-----------------------------------------------------------------------------------------
’ PROGRAM LCD-1a.bas
’ Program, kterým posíláme na dvouřádkový LCD displej text
’ a podle stisku tlačítka jej zobrazujeme.
’-----------------------------------------------------------------------------------------
$regfile = “m8def.dat” ‘soubor s deklaracemi
$crystal = 12000000 ‘kmitočet vnějšího oscilátoru v Hz
Config Lcd = 16 * 2 ‘nadefinování LCD - připojení jednotlivých pinů displeje
Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portd.7 , Db5 = Portd.6 , Db4 = Portd.5 , E = Portb.1 , Rs = Portb.2
Config Pind.0 = Input
‘aliasing ‘přezdívky
Tl1 Alias Pind.0 ‘nadefinování přezdívky pro tlačítko
’-------------------------- HLAVNI PROGRAM ------------------------------------
Do ‘nekonečná smyčka
If Tl1 = 0 Then ‘kontrola tlačítka Tl1
Lcd “VOS-SPS Sumperk” ‘text na LCD
Locate 2 , 1 ‘určení kde text zobrazím - druhý řádek, první znak
Lcd “ krouzek E1 “ ‘text na druhém řádku
Wait 2 ‘zobrazuj text po dobu 2 sekund
Else
Cls ‘když není stisknuto tlačítko, tak vymaž displej
End If
Loop
’--------------------------- KONEC HLAVNIHO PROGRAMU -----------------------
End
‘Popis programu:
‘Připojený LCD displej používá 4-bitovou komunikaci s mikropočítačem,
‘pomocí bitů Db7 až Db4, ostatní bity jsou připojeny na GND.
‘Řízení je prováděno přes vstupy E a RS, nepoužitý vstup R/W se připojí na GND.
‘Pokud se nepoužije řízení kontrastu pomocí trimru, stačí připojit vstup KONTRAST na GND.
‘V hlavním programu je zobrazován 2 sekundy text, když bylo stlačeno tlačítko Tl1.
Pokud provedeme nastavení komunikace LCD displeje v překladači, můžeme vynechat příkazy Config Lcd a Config Lcdpin.
Obr. 3: Nastavení komunikace s displejem v menu Options
Některé LCD displeje jsou vybaveny podsvícením a jsou tak dobře čitelné i při nízké hladině okolního světla nebo za tmy. Podsvícení – zapnutí a vypnutí LED diody je možné programově ovládat. Pokud takový LCD displej máte, můžete si vyzkoušet.