L
iquid Crystal Display ModuleM o d u l d i s p l e j e z t e k u t ý c h k r y s t a l ů
Maticové lcd displeje jsou všude kolem nás - v kalkulačkách, v automatech na jízdenky, v telefonních automatech ( jak originální úvod :-)),...a poslední dobou ( co poslední dobou, už od roku 1998 !!!) taky v amatérských konstrukcích. Otevřete Kátééčko, najdete dekódovač morseovky s lcdm, otevřete Praktickou elektroniku, hle, RF analyzátor s lcdm.
Pryč jsou časy, kdy nás okolí obdivovalo se směšně znějícími multivibrátory, sirénkami a FM vysílači. 50 Kč, tři čtyři hodinky a bylo hotovo. To bylo radosti! Bohužel, takových skvělých zapojení není nevyčerpatelno. Teď je čas pokročit zas o kousek dál, třeba k oňem lcdm ( tak jsem to udělal já ).
Maticové lcdm mají všechny díky dohodě stejné ovládání ( to dohodou je společný řadič HD 44780 ). Zde je několik tabulek opsaných z běžně dostupné literatury, které Ti hodně pomohou.
OSAZENÍ KONEKTORU LCDM:
|
PIN konektoru |
Signál |
Funkce pinu |
Povídání |
|
1 |
Vss |
Uzemnění |
0V |
|
2 |
Vdd |
Napájení |
+5V (4,5-5,5V) |
|
3 |
V0 |
Řízení kontrastu |
0V...+5V - max. při 0V |
|
4 |
RS |
Register select |
Výběr registru instrukcí/dat (0/1) |
|
5 |
RW |
Read/Write |
Nastavení čtení/zápis (1/0) |
|
6 |
E |
Enable |
Signál povolení přenosu (sestup. hrana) |
|
7 |
DB1 |
Datová sběrnice-bit1 |
Data |
|
8 |
DB2 |
Datová sběrnice-bit2 |
Data |
|
9 |
DB3 |
Datová sběrnice-bit3 |
Data |
|
10 |
DB4 |
Datová sběrnice-bit4 |
Data |
|
11 |
DB5 |
Datová sběrnice-bit5 |
Data |
|
12 |
DB6 |
Datová sběrnice-bit6 |
Data |
|
13 |
DB7 |
Datová sběrnice-bit7 |
Data |
|
14 |
DB8 |
Datová sběrnice-bit8 |
Data |
|
15 |
LED+ |
Podsvětlení |
+4,5...+5,5V |
|
16 |
LED- |
Podsvětlení |
0V |
INSTRUKCE LCDM:
|
Instrukce |
Data IN RS RW 7 6 5 4 3 2 1 0 |
Povídání |
|
Vymaž displej |
0 0 0 0 0 0 0 0 0 1 |
Vymaže celý displej, nastaví adresu DD RAM na 0 |
|
Návrat |
0 0 0 0 0 0 0 0 1 * |
Nastaví adresu DD RAM na 0, obsah beze změny, posune displej do původní pozice |
|
Nastavení mödu vstupu dat |
0 0 0 0 0 0 0 1 ID S |
Nastavení pohybu kurzoru bit ID Nastavení pohybu displeje bit S |
|
Nastavení módu displeje |
0 0 0 0 0 0 1 D C B |
Zapnutí/vypnutí displeje bit D Zapnutí/vypnutí kurzoru bit C Blikání znaku na kurzoru bit B |
|
Posuv kurzoru nebo displeje |
0 0 0 0 0 1 SC RL * * |
Posun kurzoru či displeje bit SCSměr posuvu bit RL |
|
Funkce displeje |
0 0 0 0 1 DL H F * * |
Nastavení 4/8 bit. Sběrnice bit DL Nastavení počtu řádek bit H Nastavení fontu znaků bit F |
|
Nastavení adresy CG RAM |
0 0 0 1 A A A A A A |
Nastavení adresy CG RAM (6 bitů) |
|
Nastavení adresy DD RAM |
0 0 1 A A A A A A A |
Nastavení adresy DD RAM (7 bitů) |
|
Čtení adresy a bitu BF |
0 1 BF A A A A A A A |
BF=1 indikuje probíhající instrukci ( BF a 7 bitů adresy ) |
|
Zápis dat do CG či DD RAM |
1 0 D D D D D D D D |
Zápis dat ze sběrnice do CG RAM nebo DD RAM |
|
Čtení dat z CG či DD RAM |
1 1 D D D D D D D D |
Čtení dat z paměti CG RAM nebo DD RAM |
A teď co to všechno znamená...
CG RAM...paměť znakového generátoru ( tj. jaká adresa, takový znak /ascii/: 64 - @; 65 - A;...;0-7-vlastní znaky )
DD RAM...paměť displeje ( určí, na jakou pozici na displeji se bude psát: 0...1. Pozice, 1...2. Pozice, ...,od 64 začíná druhý řádek )
ID = 1...po zápisu znaku na displej posune na další pozici o jednu vyšší ( inkrementuje DD RAM, příp. i CG RAM ) - píše se normálně
ID = 0...po zápisu znaku na displej posune na další pozici o jednu nižší ( inkrementuje DD RAM, příp. i CG RAM ) - jako v Arábii
S = 1...nastaví posun celého displeje po zapsání ( směr ID )
S = 0... nastaví posun kurzoru po zapsání ( směr ID )
SC = 1...posunutí displeje bez zápisu
SC = 0...poisunutí kurzoru bez zápisu
RL = 1...nastavení směru posuvu doprava
RL = 0...nastavení směru posuvu doleva
DL = 1...nastavení datové sběrnice na 8 bitů ( DB7 - DB0 )
DL = 0...nastavení datové sběrnice na 4 bit
y ( DB7 - DB4 )F = 1...nastavení znaků z fontu 5*10 bodů
F = 0...nastavení znaků z fontu 5*7 bodů ( většinou )
H = 1...nastavení počtu řádek na 2 nebo 4
H = 0...nastavení počtu řádek na 1 ( výchozí po resetu ), některé 1 řádkové typy je nutno nastavit na 2 řádkové ( 8 + 8 )
FB = 1...příznak probíhajícího provádění vnitřní instrukce, NELZE posílat data
FB = 0...možnost poslání dalších dat
*...0 nebo 1, to je úplně fuk
Frekvence vnitřního oscilátoru je nastavena na 250 kHz, první a druhá instrukce z tabulky
trvají 1,64ms, ostatní 40us.Tabulka pro zadávání vlastních znaků bude uvedena dále.
/ ovládání pomocí
μPC AT89C2051 bude uvedeno pozdμji, to je bohuel složitější a zatím se na tom pracuje - 70% /Bod 1, co budeš potřebovat
Součástky:
Byl zvolen
LCD Displej 16 * 2 znaků, může být libovolný TN, STN,..., s podsvícením, bez,...Konektor k paralelní
mu portu s vícežilovým kabelem (min 14 žil)Plus trimr nebo potenciometr na kontrast, není nutný, lze propojit V0 s GND.
Software:
Balík programů pro řízení LCDM (moje produkce a produkce Jana Šístka)
A to je vše.
Bod 2, zápis znaku/ů na displej
Na obrázku 1 je uvedeno zapojení propojení počítače PC s modulem LCD. I když lze takto lze LCDM plně ovládat, nejvíce se toto zapojení uplatní při zkoušení funkčnosti LCDM. Celé zapojení je ( zvláště po přečtení předchozího ) velmi průhledné. Trimr pro nastavení kontrastu může být téměř libovolný - od 1 kΩ
do 500kΩ i vνce. Jako lcdm doporuθuji "1602SYL", kterύ svνtν po pψipojenν napájení sám. Spotřebu tohoto zapojení nejvíce ovlivňuje právě ono podsvícení, případně trimr. Jinak je odběr lcdm zanedbatelný.
Pokud je vše propojeno, je načase přistoupit k oživení. Připojíme Unap a kabel Cannon ( Centronics ) zapojíme do konektoru pro tiskárnu LPT. Spustíme
Qbasic. Otevřeme program LCD. bas a spustíme tento proram. Na displeji LCD se zobrazí směs po sobě jdoucích písmen či znaků na obou řádcích.Neumím ovládat Qbasic, chci další informace o ovládání Qbasicu.
Pokud si absolvoval vý
še uvedené, displej funguje a ty jej nechceš jen vyzkoušet, ale i ovládat, nastává nejdůležitější část - porozumění ovládání a programu LCD.basOvládání LCDM
Tady je graf popisující průběhy signálů - raději skenuju, protože to není zas tak průhledné...Přidávám ještě vnitřní zapojení LCDM.
Tak tento obrázek mě dost dlouho odrazoval od zakoupení a vůbec pochopení LCDM. Naštěstí se objevil na elektroklubu vedoucí,
který se nenechal odradit, vymyslel LCD.BAS a pomohl mi s pochopením tohoto obrázku z KTE. Více viz dále.
Tento obrázek nevypadá o nic líp. Přesto je dobré se podívat, co je uvnitř. Pak lze odvodit, jak to asi funguje.
Jak funguje LCDM ( odborný popis si najdi třeba v KTE 7/98, já to podávám "lidsky") .
K ovládání LCDM máme k dispozici 3 řídící vývody a 8 datových ( napájení a kontrast teď nejsou tak důležité ). Vezměme to tedy popořadě, od řídících. Máme tady nějaký (velice sympatický) signál
Read Write. Ten slouží k přepínání módů - čtení toho, co je na displeji napsáno (RW=1) ę to my, amatéři ( za to se nemusíme stydět, pochází to od slova amāre - milovat) vģtšinou nepotřebujeme, takže se o tom nebudu zmiňovat, a slouží také k zápisu na displej (RW=0) ę Pokud tedy nepotřebujeme data číst, nastavíme RW na 0 ( uzemníme ) a RW je spokojen, vyřízen. Pak je tady neméně sympatický signál Register Select. Ten slouží k přepínání registru instrukcí ( tj. zadáváme-li LCDM instrukce ) a registru dat ( nebo zadáváme data ). V programu LCD.bas ( viz dále popis ) je signál RS přidružen k datovým vývodům ( to je ostatně enable taky ). A pak je tady signál Enable, se kterým je to složitější. Vypadá to s ním asi takto: Enable je rovno 0, LCDM nereaguje, na datových vstupech si můžeš dělat, co chceš. Pak se rozhodneš, že už je kombinace jedniček a nul na vstupech ta pravá a přivedeš logickou 1 na signál Enable. Stále ještě můžeš změnit kombinaci, ale pak přijde chvíle, kdy to bude 100%. Až ta chvíle přijde, musíš ještě počkat minimálně 195 ns (asi kvůli ustálení, bude tam pravděpodobně nějaká kapacita), a pak změnit hodnotu na vstupu Enable na logickou nulu. V tom momentě se data přečtou. Proces se opakuje, na vstupech si můžeš dělat co chceš atd. Ještě jedna věc. Data, která jsi vložil, se samozřejmě zpracovávají ( např. tak, že se vybere instrukce a ta se provede, nebo se vybere adresa na displeji, která se v příštím vložení dat, které bude obsahovat kód znaku v ASCII, obsadí atp. ). A to je právě ten důvod, proč jsem označil na začátku Enable růžově. Od tohoto Enable do dalšího Enable rovno 0 musí uplynout minimálně 1000 ns. I když ty časy vypadají směšně ( "ňáký nanosekundy mě přece nevzruší..."), je nutné je zohlednit, jelikož ovládáme LCDM z PC, které koná instrukce běžně za nanosekundu ( třeba 750Mhz, jestli se nemýlím ) - a jeden cyklus mu může trvat, vzhledem k asi deseti instrukcím v LCD.BAS, maximálně 500 ns ! To je samozřejmě v LCD.bas zohledněno. Dost bylo Enable, přistupme k datovým vývodům (DB0-DB7). Ty pro nás mají jednu jednoduchou, ale neméně důležitou funkci - zadáváme jimi data : kódy instrukcí, adresy,...Tak to by bylo obecně. A teď, jak zobrazit znak. Každý LCDM má
znakový generátor. Ten má dvě části - ROM o velikosti 7200 bitů obsahuje napevno nastavené znaky : velká a malá písmena latinské abecedy (a,b,c,d,...,A,B,C,D,...),japonská abeceda (ﻀﻂﻆﺣﻖﻖ,...), čísla, !,?,@,#,$,%,^,&,*,(,) a další - viz OBRÁZKY ZNAKŮ - a má také paměť RAM o velikosti 512 bitů, do které lze vložit vlastní znaky - 8 ks, viz níže. Znaky ze znakového generátoru se dostávají na displej takto : Nejdřív do LCDM vyšleme informace o tom, na jakou pozici na displeji se má budoucí znak zobrazit (dle tabulky na začátku a "o lcd.bas"). Po vybrání místa se musí určit, jaký znak se má na tomto místě zobrazit - dle mapy znakového generátoru (dle tabulky na začátku a "o lcd.bas").Vlastní znaky
Vlastních znaků v soustavě 5*8 lze naprogramovat maximlně 8. A teď se dozvíš jak.
|
Kód znaku při zápisu Bit 7 6 5 4 3 2 1 0 |
Adresa znaku Bit 7 5 4 3 2 1 0 |
Data v CG RAM Bit 7 6 5 4 3 2 1 0 |
|
0000*000 |
000 000 |
*** 0000 1 |
|
0000*000 |
000 001 |
*** 000 10 |
|
0000*000 |
000 010 |
*** 0 1110 |
|
0000*000 |
000 011 |
*** 0000 1 |
|
0000*000 |
000 100 |
*** 0 1111 |
|
0000*000 |
000 101 |
*** 10001 |
|
0000*000 |
000 110 |
*** 0 1111 |
|
0000*000 |
000 111 |
*** 00000 |
Tato tabulka plně vysvětluje definování vlastních znaků. Takto je definováno písmeno á.
V tabulce nalezneme tyto sloupce:
Kód znaku…-
tj. adresa, kterou budeme zadávat při vyvolávání znakuAdresa znaku
-tj. adresa skládající se z posledních tří bitů kódu znaku a z tří bitů určujících číslo řádku ve znaku (celkem 7 řádků + 1 pro kursor)Data v CG RAM
-tj. data, která určují, zda budou v řádku černé nebo bílé bílé body.
Tímto skončila první část kurzu o LCDM. Doufám, že je to alespoň trochu jasné.
J
eště jednou Ti nabízím software pro řízení LCDM. Pokud máš jakýkoli LCDM, určitě ho s ním rozchodíš. Pokud máš nějaké otázky, můžeš se na mne obrátit na adrese: marekzprahy@seznam.cz.Balík programů pro řízení LCDM (moje produkce a produkce Jana Šístka)
Druhý díl
se zdrží, protože se mi podařilo při oživování poslat LCDM do věčných lovišť ( :-( )