LCDModul 2*16 s LED podsvětlením

Liquid Crystal Display Module

M 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.

 

 

Chceš-li si prohlédnout tabulku až potom, klikni zde a budeš na začátku rychlokurzu LCDM. Vše půjde!!!

 

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 SC

Smě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 bity ( 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.

 

RYCHLOKURZ LCDM

Ovládání pomocí uP je až dál.

 

 

/ ovládání pomocí μPC AT89C2051 bude uvedeno pozdμji, to je bohužel 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:

Microsoft Qbasic ( ten je součástí MS DOS do Win95, 98 jej postrádá ) - pokud jej nemáš, vem si jej tu (286kB)

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ý.

Přesně takhle to udělej a bude to správně.

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.bas

Ovlá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.

Signály kolem 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.

Trochu složité, co?

 

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

*** 00001

0000*000

000 001

*** 00010

0000*000

000 010

*** 01110

0000*000

000 011

*** 00001

0000*000

000 100

*** 01111

0000*000

000 101

*** 10001

0000*000

000 110

*** 01111

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í znaku

Adresa 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é.

Ješ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.

Microsoft Qbasic ( ten je součástí MS DOS do Win95, 98 jej postrádá ) - pokud jej nemáš, vem si jej tu (286kB)

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šť ( :-( )