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 |