LCD displej



Konstrukce
Modul LED diod
Bipolární krokový motor
7.segmentový displej
Maticový displej
Maticová klávesnice

Inteligentní řádkové LCD displeje

Prakticky všechny řádkové LCD displeje jsou řízeny obvodem HD44780 od firmy HITACHI (případně kompatibilním řadičem), takže ovládání a většinou i zapojení vývodů je stejné.

Řízení těchto displejů může probíhat 8bitově nebo 4bitově, což je výhodné, protože při 4bitové komunikaci postačí pro řízení pouze 1 port.

Zapojení vývodů pro displej 16 x 2 znaků:

Číslo vývodu Označení Funkce
1
2
3
4
5
6
7
8
9
10
11
12
13
14

GND
Ucc
Uo
RS
R/W
E
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7

Zem ( 0V )
Napájecí napětí ( 4,75 - 5,25V )
Nastavení kontrastu displeje ( max. kontrast Uo=0V )
Příkaz ( log0 ), data ( log1 )
Čtení ( log1 ), zápis ( log0 ) dat nebo příkazu
Vstup povolení
Data / příkaz ( dolní bit )






Data / příkaz ( horní bit )

V případě, že chceme s řadičem komunikovat 4bitově, se používají pro přenos dat vývody DB4 až DB7. Komunikaci řídí vývody RS ( určuje jestli hodnota na vývodech DB určuje příkaz nebo data ), R/W (určuje směr přenosu dat ) a E ( určuje, kdy jsou na vývodech DB platná data - potvrzení probíhá přechodem z log1 na log0 ).
pozn.: my budeme používat pouze zápis do řadiče, takže vývod R/W bude připojen na log0.

Zápis do řadiče probíhá takto ( 4bitová komunikace ):

Nejprve nastavíme signál RS podle toho, jestli chceme přenášet data nebo příkaz, a signál E na log1. Poté na vodiče DB4 - DB7 přivedeme horní 4 bity dat a potvrdíme vynulováním signálu E. Poté opět nastavíme E na log1 a přivedeme na DB4 - DB7 dolní 4 bity dat a opět potvrdíme vynulováním signálu E. Potom počkáme dobu určenou na provedení dané instrukce.

Displej obsahuje dva typy pamětí, do kterých můžeme zapisovat:

DDRAM - obsahuje znaky, které se zobrazují na displeji. Rozvržení:

Číslo znaku 0 1 2 3 ... 15
Řádka 1 00h 01h 02h 03h ... 0Fh
Řádka 2 40h 41h 42h 43h ... 4Fh

CGRAM - obsahuje uživatelem definované znaky. Kódy těchto znaků jsou 00h - 07h. Každý znak je definován osmi po sobě jdoucími buňkami, v kterých je znak definován dolními 5 bity. Takže adresy pro jednotlivé znaky jsou: znak 0: 0h - 07h, znak 1: 08h - 0Fh atd.

Seznam příkazů:

Příkaz/data RS DATA Čas provedení
7 6 5 4 3 2 1 0
Vymaž displej 0 0 0 0 0 0 0 0 1 1,64ms
Návrat na začátek 0 0 0 0 0 0 0 1 x 1,64ms
Volba režimu 0 0 0 0 0 0 1 I/D S 40us
Zapni/vypni displej 0 0 0 0 0 1 D C B 40us
Nastavení kurzoru 0 0 0 0 1 S/C R/L x x 40us
Nastavení komunikace 0 0 0 1 DL N 0 x x 40us
Nast. adresy CGRAM 0 0 1 adresa CGRAM 40us
Nast. adresy DDRAM 0 1 adresa DDRAM 40us
Zápis do CGRAM/DDRAM 1 data pro CGRAM/DDRAM 40us

Legenda: x - libovolná hodnota
I/D - směr pohybu kurzoru ( log1 - vpravo, log0 - vlevo )
S - režim displeje
D - zapnutí ( log1 ), vypnutí (log0 ) displeje
C - zobrazování kurzoru ( log0 - vypnuto, log1 - zapnuto )
B - blikání kurzoru ( log0 - vypnuto, log1 - zapnuto )
S/C - posun displeje po zápisu dat ( log1 ), posun kurzoru po zápisu dat ( log0 )
R/L - posun doleva ( log0 ), doprava ( log1 )
DL - 8 bitová komunikace ( log1 ), 4 bitová komunikace ( log0 )
N - 2 řádkový displej ( log1 ), 1 řádkový displej ( log0 )

Čas provedení je doba, kterou musíme počkat po zadání dat, na provedení daného příkazu.

Aby se s displejem dalo komunikovat musíme nejprve provést inicializační sekvenci, v které nastavíme požadované chování displeje.

Inicializační sekvence je popsána v programu pro zobrazení textu ´AHOJ´ do středu 1. řádku.

Mapa znaků:





;*************************************************
;******************LCD na P1**********************
;*zobrazeni napisu 'AHOJ' na 1. radek a 7.sloupec*
;***autor: miloslav siroky, vytvoreno 27.02.2006**
;*************************************************



start:



;*****zobrazeni












;*****nastaveni
nastav:



























;*****zobrazeni
zobraz:
;---------------









;---------------








;********vystup
prikaz:
;---------------








;---------------







;*****zpozdovaci
del15ms:
sm15ms:



del1ms:
sm1ms:




del40us:



del1s:
sm1s:





org
call
mov
call

napisu****

mov
call
mov
call
mov
call
mov
call

jmp

displeje***
mov
call
mov
call

mov
clr
call

mov
call

mov

call

mov
call
call
call

mov
call
call
call

ret

znaku*****

zapis hornich
push
swap
anl
setb
setb
mov
clr
call
pop
zapis dolnich
anl
setb
setb
mov
clr
call
ret

prikazu*****

zapis hornich
push
swap
anl
setb
mov
clr
call
pop
zapis dolnich
anl
setb
mov
clr
call
ret

smycky*****
mov
call
djnz
ret

mov
mov
djnz
djnz
ret

mov
djnz
ret

mov
call
djnz
ret

end

00h
nastav
a,#10000110b
prikaz



a,#'A'
zobraz
a,#'h'
zobraz
a,#'o'
zobraz
a,#'j'
zobraz

$


p1,#10000000b
del1s
p1,#00000000b
del15ms

p1,#00010010b
p1.4
del40us

a,#00101000b
prikaz

a,#00001100b

prikaz

a,#00000001b
prikaz
del1ms
del1ms

a,#00000010b
prikaz
del1ms
del1ms





ctyr bitu---
acc
a
a,#00001111b
acc.5
acc.4
p1,a
p1.4
del40us
acc
ctyr bitu---
a,#00001111b
acc.5
acc.4
p1,a
p1.4
del40us




ctyr bitu---
acc
a
a,#00001111b
acc.4
p1,a
p1.4
del40us
acc
ctyr bitu---
a,#00001111b
acc.4
p1,a
p1.4
del40us



r7,#15
del1ms
r7,sm15ms


r5,#5
r6,#250
r6,$
r5,sm1ms


r5,#40
r5,$


r4,#65
del15ms
r4,sm1s






;nastaveni potrebnych parametru displeje
;nastaveni pozice dalsiho zapisovaneho znaku
;na 1.radek, 7.sloupec












;nekonecna smycka





;cekani po zapnuti displeje

;nastaveni 4-bitoveho rezimu+nastaveni bitu E
;potvrzeni hodnoty nulovanim E
;cas na provedeni prikazu

;nastaveni:dvouradkovy displej, znak 5x7bodu
;provedeni prikazu

;zapnuti displeje,nastaveni:
;vypnuti kurzoru, vypnuti blikani kurzoru
;provedeni prikazu

;smazani displeje
;provedeni prikazu
;doba na provedeni prikazu


;kurzor na zacatek,vynulovani posunu displeje
;provedeni prikazu
;doba na provedeni prikazu







;ulozeni akumulatoru do zasobniku
;prohozeni horni a dolni ctverice bitu
;vynulovani hornich ctyr bitu
;nastaveni RS na log1
;nastaveni E na log1
;odesleni hodnoty na P1
;potvrzeni hodnoty stazenim E na log0
;pauza na prijem hodnoty
;nacteni akumulatoru ze zasobniku