Zobrazovací jednotky jsou nejdůležitější výstupní zařízení ve vestavěných projektech a elektronických výrobcích. 16x2 LCD je jednou z nejpoužívanějších zobrazovacích jednotek. 16x2 LCD znamená, že existují dva řádky, ve kterých lze zobrazit 16 znaků na řádek, a každý znak zabírá 5x7 maticový prostor na LCD. V tomto tutoriálu se chystáme připojit 16X2 LCD modul k mikrokontroléru 8051 (AT89S52). Propojení LCD s mikrokontrolérem 8051 by pro nováčky mohlo vypadat docela složitě, ale po pochopení konceptu by to vypadalo velmi jednoduše a snadno. I když to může trvat dlouho, protože musíte pochopit a připojit 16 pinů LCD k mikrokontroléru. Nejprve tedy pochopíme 16 pinů LCD modulu.
Můžeme to rozdělit do pěti kategorií, Power Pins, kontrastní pin, Control Pins, Data piny a Backlight piny.
Kategorie |
Pin NO. |
Název PIN |
Funkce |
Napájecí piny |
1 |
VSS |
Uzemňovací kolík, připojený k uzemnění |
2 |
VDD nebo Vcc |
Napěťový kolík + 5V |
|
Kontrast Pin |
3 |
V0 nebo VEE |
Nastavení kontrastu, připojené k Vcc přes proměnný rezistor. |
Kontrolní kolíky |
4 |
RS |
Registrovat Vyberte Pin, RS = 0 Příkazový režim, RS = 1 Datový režim |
5 |
RW |
Pin pro čtení / zápis, RW = 0 režim zápisu, RW = 1 režim čtení |
|
6 |
E |
Povolit, je třeba povolit vysoký až nízký pulz LCD |
|
Datové piny |
7-14 |
D0-D7 |
Datové kolíky, Ukládá data, která se mají zobrazit na LCD nebo pokyny k příkazu |
Kolíky podsvícení |
15 |
LED + nebo A |
Pro napájení podsvícení + 5V |
16 |
LED nebo K. |
Podsvícení země |
Všechny piny jsou jasně srozumitelné podle názvu a funkcí, s výjimkou ovládacích piny, takže jsou vysvětleny níže:
RS: RS je pin pro výběr registru. Musíme poslat na 1, pokud posíláme nějaká data, která se mají zobrazit na LCD. A nastavíme jej na 0, pokud posíláme nějaké příkazové příkazy, jako je vymazání obrazovky (hexadecimální kód 01).
RW: Toto je PIN pro čtení / zápis, nastavíme jej na 0, pokud budeme psát některá data na LCD. A nastavíme na 1, pokud čteme z LCD modulu. Obecně je toto nastaveno na 0, protože nemusíme číst data z LCD. Někdy je potřeba přečíst pouze jednu instrukci „Získat stav LCD“.
E: Tento pin se používá k povolení modulu, když je mu dán vysoký až nízký impuls. Měl by být vydán impuls 450 ns. Díky přechodu z VYSOKÉ na NÍZKOU je modul POVOLEN.
Na LCD jsou některé přednastavené příkazové pokyny, které jsme použili v našem programu níže k přípravě LCD (ve funkci lcd_init ()). Níže jsou uvedeny některé důležité pokyny pro příkazy:
Hex kód |
Příkaz do instrukčního registru LCD |
0F |
LCD ON, kurzor ON |
01 |
Jasná obrazovka |
02 |
Vrátit se domů |
04 |
Zmenšit kurzor (posunout kurzor doleva) |
06 |
Zvýšit kurzor (posunout kurzor doprava) |
05 |
Posun displeje vpravo |
07 |
Posun displeje doleva |
0E |
Displej ZAPNUTÝ, kurzor bliká |
80 |
Vynutit kurzor na začátek prvního řádku |
C0 |
Vynutí kurzor na začátek druhého řádku |
38 |
2 řádky a matice 5 × 7 |
83 |
Poloha kurzoru 1, pozice 3 |
3C |
Aktivujte druhý řádek |
08 |
Displej vypnut, kurzor vypnut |
C1 |
Přejít na druhý řádek, pozice 1 |
OC |
Displej zapnut, kurzor vypnut |
C1 |
Přejít na druhý řádek, pozice 1 |
C2 |
Přejít na druhý řádek, pozice 2 |
Schéma zapojení a vysvětlení
Schéma zapojení pro LCD rozhraní s mikrokontrolérem 8051 je zobrazeno na obrázku výše. Pokud máte základní znalosti o 8051, musíte vědět o EA (PIN 31), XTAL1 a XTAL2, RST pin (PIN 9), Vcc a Ground Pin mikrokontroléru 8051. Použil jsem tyto piny ve výše uvedeném obvodu. Pokud o tom nemáte žádnou představu, doporučuji vám přečíst si tento článek Rozhraní LED s mikrokontrolérem 8051, než projdete rozhraním LCD.
Kromě těchto výše uvedených pinů jsme tedy připojili datové piny (D0-D7) LCD k mikrokontroléru Port 2 (P2_0 - P2_7). A kontrolní piny RS, RW a E na pin 12,13,14 (pin 2,3,4 na portu 3) mikrokontroléru.
PIN 2 (VDD) a PIN 15 (podsvícení) LCD jsou připojeny k napětí (5v) a PIN 1 (VSS) a PIN 16 (podsvícení) jsou připojeny k zemi.
Pin 3 (V0) je připojen k napětí (Vcc) prostřednictvím proměnného rezistoru 10k pro nastavení kontrastu LCD. Střední rameno variabilního rezistoru je připojeno k PIN 3 a další dvě ramena jsou připojeny k napájecímu napětí a uzemnění.
Vysvětlení kódu
Pokusil jsem se vysvětlit kód pomocí komentářů (v samotném kódu).
Jak jsem již dříve vysvětlil o příkazovém režimu a datovém režimu, můžete vidět, že při odesílání příkazu (funkce lcd_cmd) jsme nastavili RS = 0, RW = 0 a impulz HIGH to LOW je dán E tím, že je 1, pak 0 Také při odesílání dat (funkce lcd_data) na LCD jsme nastavili RS = 1, RW = 0 a impulz HIGH to LOW je dán E tím, že je 1 až 0. Byla vytvořena funkce msdelay () pro vytvoření zpoždění v milisekundách. a v programu je často volána, je volána tak, aby LCD modul měl dostatek času na provedení interní operace a příkazů.
Pro tisk řetězce byla vytvořena smyčka while, která pokaždé volá funkci lcd_data, aby vytiskla znak až do posledního znaku (null terminator- '\ 0').
K přípravě LCD jsme použili funkci lcd_init () pomocí přednastavených pokynů k příkazu (vysvětleno výše).