P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
E
LEKTRONIKA DLA WSZYSTKICH 11/97
24
Chyba każdy z Was zgodzi się, że bez−
powrotnie minęły czasy, kiedy to zdoby−
cie popularnego układu ICL7106 wraz
z niezbędnym 3,5−cyfrowym wyświetla−
czem LCD graniczyło z cudem. Sam pa−
miętam czasy, kiedy to postanowiłem sa−
modzielnie zbudować swój pierwszy
multimetr, po pierwsze dlatego że moja
stara UM−ka znudziła mi się, drugim po−
wodem była ogromna chęć posiadania
przyrządu, może nie o wysokich paramet−
rach technicznych, lecz o nowoczesnym
prawdziwie „cyfrowym” wyglądzie.
Z łezką w oku wspominam te chwile, kie−
dy po zdobyciu na giełdzie upragnionego
wyświetlacza, zresztą w wersji bez koń−
cówek lutowniczych, rozebrałem na
części pierwsze swój poczciwy kalkula−
tor, aby pozyskać tzw. „przewodzące
gumki”, niezbędne do prawidłowego
podłączenia elementu do płytki drukowa−
nej. Jednak mój trud i długie kazanie ro−
dziców (na temat zdezelowanego kalkula−
tora) opłacało się, bowiem po kilku dni−
ach mogłem wpatrywać się godzinami
w pierwszy w moim domowym laborato−
rium przyrząd z wymarzonym wyświetla−
czem LCD.
To już historia, dziś na rynku elektro−
nicznym aż roi się od różnorodnych, mo−
nochromatycznych a nawet kolorowych
wyświetlaczy LCD. Producenci prześci−
gają się w parametrach technicznych,
oraz wersjach, wyposażając wyświetla−
cze w dodatkowe elementy podwyższa−
jące ich funkcjonalność: np. elektrolumi−
nescencyjne podświetlanie.
Nie wpadając jednak w zbytni zachwyt
nad możliwościami współczesnej tech−
nologii warto przypomnieć sobie kilka
podstawowych, nadal obowiązujących
prawd:
– po pierwsze: wyświetlacze LCD są naj−
bardziej ekonomicznymi, pod wzglę−
dem zużycia energii, elementami
wskaźnikowymi, ma to szczególne od−
zwierciedlenie w przenośnych przyrzą−
dach zasilanych bateryjnie, gdzie są
bezkonkurencyjne;
– po drugie: często nie zajmują więcej
miejsca niż tradycyjne wyświetlacze
siedmiosegmentowe LED
– po trzecie: koszt zakupu wielopozycyj−
nego wyświetlacza LCD jest kilkukrot−
nie niższy od takiego samego modułu
w wersji LED, nie mówiąc o wyświet−
laczach zdolnych wyświetlać tekst.
W przypadku tych ostatnich stosunek
ceny do ilości wyświetlanych znaków
jest nieporównywalnie niższy od po−
dobnych konstrukcji opartych o matry−
ce LED.
Wyświetlacze LCD mają też swoje
wady. Zakres temperatur użytkowania
jest znacznie węższy, niż w przypadku
wyświetlaczy LED. Bez odpowiedniego
podświetlenia, informacja na nich w złych
warunkach oświetleniowych jest prak−
tycznie nieczytelna. Wreszcie, ze wzglę−
du na dość „kruchą” swoją budowę, wy−
świetlacze LCD są mało odporne na
wstrząsy i ewentualne uszkodzenia spo−
wodowane np. upadkiem z wysokości.
Nie umniejsza to jednak ich funkcjo−
nalności, bowiem w wielu zastosowa−
niach są one często niezastąpione.
Charakterystyka ogólna
Od pewnego czasu coraz częściej spo−
tyka się w handlu i na różnych wyprzeda−
żach inteligentne wyświetlacze LCD po−
trafiące oprócz pokazywania podstawo−
wych cyfr z zakresu 0...9, wyświetlać pe−
łen zestaw liter alfabetu łacińskiego, cyfr
oraz dodatkowych znaków tak interpunk−
cyjnych jak i semigraficznych. W więk−
szości są to tzw. w
wy
yś
św
wiie
ettlla
ac
czze
e tte
ek
ks
stto
ow
we
e,
co odróżnia je od bliźniaczych i podobnie
wyglądających, w
wy
yś
św
wiie
ettlla
ac
czzy
y g
grra
affiic
czzn
ny
yc
ch
h
LCD. Te pierwsze charakteryzują się tym
że ich pole odczytowe składa się kilku−
nastu do kilkudziesięciu jednakowych
pól, złożonych z matryc punktów. Za po−
Inteligentne wyświetlacze alfanumeryczne LCD są elementem coraz częściej spotyka−
nym w sprzęcie powszechnego użytku: od urządzeń gospodarstwa domowego, poprzez
systemy alarmowe, na medycznym sprzęcie profesjonalnym skończywszy. Dla wielu elektroników
amatorów, chcących wykorzystać te efektowne elementy we własnych konstrukcjach są one
często tylko marzeniem. W wielu przypadkach powodem takiego stanu rzeczy nie jest bynajmniej
ich cena, lecz brak wiedzy o praktycznych sposobach na zmuszenie tego elementu do wyświetla−
nia „tego co akurat w danej chwili chcemy...”
W niniejszym artykule autor w przystępny sposób stara się zapoznać Czytelników z tymi elemen−
tami budzącymi często podziw i westchnienie niejednego początkującego konstruktora.
Alfanumeryczne
wyświetlacze LCD
część I
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
25
E
LEKTRONIKA DLA WSZYSTKICH 11/97
mocą każdej takiej matrycy (przeważnie:
5 na 8 punktów) możliwe jest wyświetle−
nie dowolnego znaku, jak pokazano na
przykładzie z rry
ys
su
un
nk
ku
u 1
1. Poszczególne
matryce w wyświetlaczach tekstowych
są oddzielone przerwą tak między sobą
(w kolumnie) jak i w rzędzie, w przypadku
wyświetlaczy składających się z kilku lini−
i. W praktyce w omawianych dalej w ar−
tykule modułach matryca znaku składa
się z 5 x 7pól, natomiast „dolny”, ósmy
rząd pięciu punktów jest wykorzystywa−
ny do wyświetlania generowanego auto−
matycznie znaku kursora.
Tak więc w informacji wyświetlonej na
displeju tekstowym wszystkie litery są fi−
zycznie oddzielone małą przerwą, dzięki
której poszczególne znaki nie zlewają się
ze sobą, tworząc w ten sposób czytelny
tekst. Niestety przez tą właściwość nie
jest możliwe np. płynne (punkt po punk−
cie) przesuwanie napisu, jak to ma miejs−
ce np. we wszystkim znanych reklamach
typu „płynące napisy”. Taka możliwość
istnieje w graficznych wyświetlaczach
LCD, ale to temat na zupełnie inny arty−
kuł. Jak się okazuje w praktyce, na typo−
wych wyświetlaczach tekstowych możli−
wa jest w miarę czytelna realizacja prze−
suwania tekstów informacyjnych, może
w nieco mniej efektownej formie, lecz
w czytelny, a zarazem efektowny spo−
sób. W końcu nie tylko o „bajery” nam
przecież chodzi, lecz o czystą funkcjonal−
ność zastosowanego elementu.
Istnieje wiele wersji tekstowych wy−
świetlaczy LCD, główną cechą odróżnia−
jąca je od siebie jest liczba lini−
i oraz liczba znaków w 1 linii.
I tak jeżeli mówimy że wy−
świetlacz jest typu 2x16,
oznacza to że może on wy−
świetlić maksymalnie 2 linie
tekstu po 16 znaków w każ−
dej. Na rynku spotykane są
także inne wersje, mające od
1 do 8−miu linii tekstu, w każ−
dej z nich może być wypisa−
nych od 8−miu znaków aż do
40−tu, co w prawdziwych
„gigantach” tej klasy daje
możliwość wyświetlenia sporej wielkości
tekstu o 320 znakach. W praktyce jednak
spotykane są ograniczone wersje pozwa−
lające na wyświetlenie połowy lub jednej
czwartej tej ilości, co w większości zasto−
sowań w zupełności wystarcza.
Inną cecha, która odróżnia poszczegól−
ne modele wyświetlaczy tekstowych to
sposób sterowania nimi. Zanim jednak
o niej powiem chcę Ci coś uświadomić.
Jak pewnie wiesz drogi Czytelniku,
w przypadku prostych wyświetlaczy np.
7−segmentowych LCD każdy z segmen−
tów danej cyfry jest sterowany, (czyli ga−
szony i zapalany) oddzielnie. Najczęściej
taki sposób sterowania wymusza wypro−
wadzenie poszczególnych segmentów
wszystkich cyfr na zewnątrz, co zwięk−
sza liczbę końcówek do np. 32 w przy−
padku wyświetlacza 4 cyfry (4 x 7seg−
mentów = 28 + 4 kropki dziesiętne
= 32). A teraz popatrz na wyświetlacz
tekstowy LCD, aby np. w taki sposób
wyświetlić 4 znaki, wyświetlacz musiał−
by mieć aż ... 140 wyprowadzeń! (140
= 4 matryce po 35 punktów, każda mat−
ryca ma 5 x 7punktów), nie licząc elek−
trody wspólnej, to zbyt dużo jak na moż−
liwości przeciętnego układu elektronicz−
nego. Dlatego producenci inteligentnych
tekstowych wyświetlaczy LCD musieli
uprościć sterowanie takim elementem,
tworząc nie tylko sam wyświetlacz LCD
(pole odczytowe) ale cały moduł
sterujący. W skład takiego modułu wcho−
dzi zazwyczaj także specjalizowany układ
scalony nazywany kontrolerem sterują−
cym wyświetlacza. Układ taki montowa−
ny jest fizycznie technologią montażu po−
wierzchniowego na cienkiej płytce dru−
kowanej, która jednocześnie stanowi
„podstawę”, do której za pomocą meta−
lowej klamry przymocowane jest szklane
pole odczytowe. Często oprócz wspo−
mnianego sterownika, na płytce znajdują
się dodatkowe układy, których zadaniem
jest przechowywanie znaków wpisanych
przez użytkownika. Całość stanowi bar−
dzo zwartą konstrukcję, jak widać na fo−
tografii na początku artykułu i co najcie−
kawsze mimo dość dużej złożoności, po−
biera zazwyczaj mniej niż 2 miliampery
prądu przy zasilaniu 5V!. Oczywiście cały
moduł jest zmontowany fabrycznie, to−
też nie trzeba przy nim dodatkowo
„dłubać”, a nabyć go można w sklepach
ze specjalistycznymi artykułami elektro−
nicznymi, firmach wysyłkowych (np. og−
łaszających się w pismach AVT) lub na
giełdach elektronicznych, np. na war−
szawskim Wolumenie.
Tak więc zastosowany w module tek−
stowym LCD specjalizowany układ scalo−
ny jest jakby „pomostem” pomiędzy
użytkownikiem a matrycą punktów wy−
świetlacza. Redukuje on liczbę potrzeb−
nych do sterowania końcówek, do kilku,
zazwyczaj do 11−tu, wprowadzając za to
specjalny protokół (sposób) porozumie−
wania się całego modułu wyświetlacza
ze światem zewnętrznym.
Za pomocą tych kilku sygnałów możli−
we jest nie tylko wypisywanie tekstów
ale także wykonywanie najprzeróżniej−
szych operacji np. „czyszczenia” wy−
świetlacza, przesuwania tekstu w lewo
lub prawo, pokazywania „kursora”,
wreszcie definiowania własnych znaków
Rys. 1. Pole odczytowe typowego wyświetlacza tekstowego i wersji graficznej LCD
użytkownika, co w przypadku naszego al−
fabetu ma szczególne znaczenie.
I tu powraca temat drugiej cechy jaka
odróżnia między sobą poszczególne wer−
sje inteligentnych wyświetlaczy LCD,
chodzi mianowicie o wspomniany spo−
sób sterowania czyli protokół transmisji
między wyświetlaczem a światem ze−
wnętrznym.
Istnieje bowiem na rynku wielu produ−
centów takich modułów, a wśród nich kil−
ka standardów określających „język poro−
zumiewania” się wyświetlaczy. Najbar−
dziej jednak rozpowszechnionym jest
standard opracowany przed laty przez ja−
pońską firmę Hitachi, a wdrożony w posta−
ci mikrosterownika o nazwie HD44780.
Układ ten jest właśnie wspomnianym
„pomostem” i fizycznie znajduje się na
każdym module z tego standardu. Skoro
padło słowo „standard” to znaczy że spo−
sób komunikacji wyświetlacza jest taki
sam niezależnie ile ma on znaków w lini−
i czy samych linii w polu odczytowym.
Różne są tylko możliwości wyświetlania
co do długości danego tekstu.
Jest to prawda, a jak realizuje się to
dokładnie w przypadku opisywanych mo−
dułów zapoznasz się za chwilę.
Na rry
ys
su
un
nk
ku
u 2
2 pokazano schemat bu−
dowy typowego modułu wyświetlacza
tekstowego opartego o wspomniany
kontroler HD44780. Zasadnicze pole od−
czytowe LCD jest sterowane za pomocą
trzech grup sygnałów. Dwie pierwsze ge−
nerowane są przez sam kontroler, trzecia
pochodzi od dodatkowych układów zna−
jdujących się na płytce modułu zwanych
drajwerami. Jeden drajwer może obsłu−
żyć maksymalnie do 16−tu matryc znako−
wych (16−tu znaków). Dlatego w zależ−
ności od ilości wyświetlanych znaków
w danym module drajwerów może być
więcej. Należy przy tym wspomnieć że
sam kontroler HD44780 potrafi samo−
dzielnie obsłużyć 16 znaków. Dlatego np.
dla wyświetlacza LCD 2x40 znaków na
płytce oprócz kontrolera HD44780 (pier−
wsze 16 znaków) znajdą się dodatkowe
cztery układy drajwerów (2x40=80 zna−
ków minus 16 znaków na HD44780 = 64
: 16 = 4 układy drajwerów). Przedstawio−
ny przykład widoczny jest także na zdję−
ciu, na którym widać odwrotną stronę
modułu wyświetlacza, czyli płytkę druko−
waną ze wspomnianymi układami steru−
jącymi.
Jak dotąd opis modułu może wyda−
wać się nieco skomplikowany, nie należy
się tym jednak przejmować. Z punktu wi−
dzenia użytkownika do praktycznego za−
stosowania wyświetlacza nie jest po−
trzebna znajomość jego struktury we−
wnętrznej.
Cały moduł porozumiewa się z otocze−
niem za pomocą widocznych na rysun−
ku 2 jedenastu linii sterujących. Do tego
dochodzą
także
dwa przewody za−
silania VDD i VSS
oraz jeden do re−
gulacji kontrastu
Vo. O ile z reguły
moduły można za−
silać stabilizowa−
nym
napięciem
+5V
(VDD=5V,
VSS =GND), o tyle
sprawa się nieco
komplikuje w przy−
padku napięcia Vo.
Otóż istnieją dwa
przypadki, kiedy to
napięcie to leży
w zakresie napięć
zasilających, czyli
0...+5V, i drugi przypadek, kiedy to do
prawidłowego wyświetlenia informacji
potrzebne jest ujemne napięcie polaruzy−
jące wejście Vo zazwyczaj z zakresu −
5V...0V. Wtedy to niezbędne staje się za−
stosowanie przetwornicy odwracającej
polaryzację napięcia. Oczywiście istnieją
moduły nie wymagające
ujemnego zasilania, jednak
przy zakupie często nie−
określonego typu warto
przewidzieć te pierwszą
możliwość. Z reguły modu−
ły w wersji z pojedynczym
napięciem zasilającym są
droższe od wersji wymaga−
jących podwójnego zasila−
nia (+5V, −5V), tak że zdarza
się że koszt modułu w tań−
szej wersji plus koszt prze−
twornicy jest mniejszy od
ceny zakupu modułu z pojedynczym zasi−
laniem. Nie jest to jednak regułą w zależ−
ności od źródła pochodzenia wyświetla−
cza. Regulacja kontrastu w praktyce jest
realizowana za pomocą pojedynczego po−
tencjometru montażowego umieszczo−
nego poza modułem LCD w układzie ste−
rującym użytkownika. Spotykane są tez
wersje modułów posiadające swój włas−
ny „peerek” przymocowany do płytki
drukowanej modułu tuż obok sterownika
HD44780.
Jeżeli taki element znajduje się w mo−
dule, oznacza to, że zewnętrzny poten−
cjometr nie jest potrzebny, oraz że koń−
cówka Vo nie jest wykorzystana przez
moduł i nie powinna być podłączana. Zda−
rzają się jednak przypadki, kiedy pomimo
istnienia peerka na płytce modułu, nie−
zbędne jest dołączenia (zazwyczaj ujem−
nego) napięcia Vo polaryzującego pole
odczytowe LCD.
Na rry
ys
su
un
nk
ku
u 3
3 pokazano praktyczny
sposób
uniezależnienia
się
od
„kaprysów” tekstowych wyświetlaczy
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
E
LEKTRONIKA DLA WSZYSTKICH 11/97
26
Rys. 2. Typowa budowa wewnętrzna modułu LCD
Rys. 3. Praktyczny sposób regulacji kontrastu wyświetlacza
poprzez przykładowy układ przetwornicy +5V / −5V
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
27
E
LEKTRONIKA DLA WSZYSTKICH 11/97
LCD w przypadku niewiado−
mego źródła pochodzenia. Po−
kazany schemat prostej prze−
twornicy +5V / −5V składa się
tylko z jednego niewielkiego
układu scalonego oraz 3 kon−
densatorów elektrolitycznych.
Ponieważ
sam
scalak
ICL7660 jest dość tani i do−
datkowo umieszczony w obu−
dowie DIP−8 nie powinien
sprawić dużego kłopotu kon−
struktorowi, którym jesteś
przecież Ty. Przetwornicę
można zrealizować także in−
nym sposobem stosując wy−
próbowane układy „pom−
pujące” oparte zazwyczaj na
inwerterach CMOS np. serii
74HC04 lub podobnych. Przy−
kładowy projekt takiego roz−
wiązania ukazał się w nume−
rze: 7/96 EdW na str. 43. Po−
bór prądu z ujemnego źródła
zasilania w przypadku modu−
łów wyświetlaczy tekstowych
nie przekracza 1 mA, dzięki
temu wymogi prądowe zasto−
sowanej przetwornicy są mi−
nimalne.
Tyle jeżeli chodzi o sprawy
zasilania modułów. Na koniec
ogólnego przedstawienia mo−
dułów informacja dotycząca
generowanych przez moduł
znaków. Otóż aby wyświetlić
jakiś znak np. literę „K” nie
trzeba „mówić” modułowi,
które kropki na matrycy (5x7)
ma zapalić, wystarczy poin−
formować go tylko o chęci
wyświetlenia akurat tego zna−
ku – litery. Jak zapewne
wiesz wszystkie znaki alfabe−
tu łacińskiego , cyfry, oraz do−
datkowe znaki specjalne są
ponumerowane i noszą tzw.
kody (kody ASCII, czytaj:
aski), czyli każdemu znakowi
odpowiada liczba, akurat
w tym przypadku z zakresu
0...255. Jak pewnie zauważy−
łeś jest to liczba 8−bitowa
(2
8
– 1 = 255). Stąd nasuwa
Ci się zapewne słuszna myśl
że wyświetlacz potrafi poka−
zać 256 znaków, co w przy−
bliżeniu jest prawdą. Dlatego aby wy−
świetlić podaną w przykładzie literę, wy−
starczy podać na linie sygnałowe D0...D7
(tzw. linie danych) kombinację „zer”
i „jedynek” odpowiadającą binarnie ko−
dowi litery „K” czyli liczbie 75 (dziesięt−
nie) lub 01001011 (binarnie). Jeszcze na−
leży w odpowiedni sposób ustawić pozo−
stałe (widoczne na rysunku 2) sygnały
RW, RS i E, aby upragniona literka poka−
zała się na wyświetlaczu. Prawda że
proste! Dokładny przepis na „te ciasto”
podam za chwilę. Istotne jest abyś wie−
dział że oprócz elementów wchodzących
w skład modułu a opisanych wcześniej,
wchodzi także tzw. generator znaków,
fachowo zwany „CG ROM” (ang. „Cha−
racter Generator ROM”). Fizycznie jest
to wbudowana w strukturę sterownika
HD44780 pamięć typu ROM z umiesz−
czonymi kombinacjami zgaszonych i za−
palonych „kropek” w matrycy danego
znaku. Dlatego podając tylko kod danej li−
tery lub symbolu, wybierasz z CG ROM
konkretny układ matrycy odpowiadający
interesującej Cię literze, który następnie
służy jako wzorzec do wyświetlenia zna−
Rys. 4. Zawartość generatora znaków CG ROM (matryca znaku 5×7)
0000
0010
0011
0100
0101
0110
0111
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Starszy
Młodszy
C
CG
G
R
RA
AM
M
(1)
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
E
LEKTRONIKA DLA WSZYSTKICH 11/97
28
ku na wyświetlaczu. Pojemność genera−
tora znaków CG ROM jest określona
w danych technicznych przedstawionych
poniżej. Dodatkowo zwykle CG ROM za−
wiera dwa zestawy znaków: jeden to
znaki w matrycy 5 x 7punktów, drugi to
znaki 5 x 10 punktów. W praktyce tych
drugich używa się rzadko, ze względu na
to że znane nam litery ze znanego Ci al−
fabetu łacińskiego i tak korzystają jedy−
nie z pierwszych 35 punktów (5x7). Do−
datkowe 15 punktów jest wykorzystane
przez znaki o
kodach z
zakresu
128...255, gdzie producent układu
HD44780 umieścił niektóre znaki i sym−
bole ze swego ojczystego języka – praw−
dopodobnie japońskiego.
Oczywiście wybór jednego z przed−
stawionych zestawów znaków (5x7 czy
5x10) zależy od użytkownika, warto jed−
nak wiedzieć że nie wszystkie moduły
pozwalają na wyświetlanie znaków
w matrycy 5x10 punktów, co zresztą
w praktyce nie ma dla nas znaczenia,
bowiem matryca 5x7 w zupełności wy−
starcza na czytelne pokazanie wszyst−
kich liter alfabetu w tym także polskich
znaków „ąęćłóśźżĄĘĆŁÓŚŹŻ, cyfr oraz
dodatkowych znaków interpunkcyj−
nych.
W tabeli z rry
ys
su
un
nk
ku
u 4
4 pokazany jest ca−
ły zestaw matryc wzorcowych znaków
zawartych w CG ROM modułu. Sposób
„czytania” tabeli jest bardzo prosty. Otóż
znaki ponumerowane są za pomocą
dwóch półbajtów każdy. Starszy półbajt
określony jest przez numer kolumny
w której jest dany znak, podobnie młod−
szy określa wiersz. Po złożeniu półbajt
otrzymujemy kod znaku, czyli kombinację
linii D7...D0 która powoduje wyświetle−
nie takiego znaku na wyświetlaczu. I tak
np. weźmy literę „m”: kolumna: „0110”,
wiersz: „1101”, po złożeniu powstaje
kod: 01101101, czyli dziesiętnie 109,
a więc kod naszej literki „m”.
Pierwsze 16 znaków o kodach 0...15
jest pustych. Kody te są przeznaczone na
znaki własne wymyślone przez użytkow−
nika. Znaki takie są definiowane przez te−
go ostatniego programowo, poprzez od−
powiednie ustawianie linii sterujących
modułu (D0...D7, RW,RS, E). Sposób ge−
nerowania jest dość złożony dlatego zo−
stanie omówiony w drugiej części artyku−
łu. Na razie warto wiedzieć, że użytkow−
nik w procesie definiowania znaku musi
poinformować sterownik modułu o uło−
żeniu wszystkich punktów w danej mat−
rycy znaku. Nie wystarczy więc podać tyl−
ko kod znaku, trzeba punkt po punkcie (w
praktyce wiersz po wierszu) podać kolej−
ność tych zapalonych i zgaszonych. Infor−
macja o tak utworzonym znaku użytkow−
nika jest przechowywana w dodatkowej
pamięci (także zawartej w strukturze
HD44780) zwanej pamięcią generatora
znaków użytkownika w skrócie „CG
RAM” (ang. Character Generator RAM).
CG RAM ze względu na określoną swoją
pojemność może pomieścić informację
maksymalnie o 8−miu znakach. O ile pa−
mięć CG ROM to pamięć typu ROM, czy−
li po wyłączeniu zasilania modułu infor−
macja pozostaje przechowana na stałe,
o tyle zawartość pamięci CG RAM jest
w takim przypadku tracona. Dlatego
w układach wykorzystujących moduły
tekstowe oraz dodatkowe definiowane
znaki użytkownika, należy przewidzieć
możliwość każdorazowego, automatycz−
nego wpisywania swoich znaków po włą−
czeniu zasilania, lub w innym stosownym
do tego momencie.
I choć z tabeli na rysunku 4 wydawać
by się mogło że można zdefiniować aż
16 znaków (kody: 0...15), to w praktyce
ze względu na rozmiar pamięci CG RAM,
kody wzięte parami: 0 z 8, 1 z 9, 2 z 10
itd. dają w efekcie na wyświetlaczu ten
sam zdefiniowany znak. W efekcie moż−
liwe jest zdefiniowanie tylko 8 znaków
użytkownika. W przypadku polskich liter
załatwia to sprawę tylko dla połowy na−
szych rodzimych znaków, a co z dru−
gą? Otóż w praktyce problem ten rozwią−
zuje się poprzez definiowanie potrzebne−
go znaku lub kilku na bieżąco. Rzadko bo−
wiem zdarza się sytuacji aby jednocześ−
nie na maksymalnie 80 znakowym wy−
świetlaczu trzeba było wyświetlić więcej
niż 8 dodatkowych znaków specjalnych.
Dlatego jeżeli określony znak specjalny
jest potrzebny, wpisuje się go na miejs−
ce tego który akurat w danej informacji
jest zbędny – czyli nie występuje.
Na koniec wstępu jeszcze jedna istot−
na informacja. Otóż jak się za chwilę
przekonasz „wpisanie” dowolnego zna−
ku do modułu celem jego wyświetlenia
nie jest często równoznaczne z jedno−
czesnym wyświetleniem go. Otóż opera−
cja wpisania znaku polega jedynie na
umieszczeniu go we wbudowanej
w układ sterownika HD44780 tzw. pa−
mięci wyświetlania, w skrócie „DD
RAM” (ang. „Display Data RAM”). Nie−
zależnie od rodzaju wyświetlacza, a w za−
sadzie od jego wielkości, czyli de facto
ilości znaków w wierszu i ilości linii, po−
jemność DD RAM jest zawsze taka sa−
ma i wynosi 80 znaków (80 bajtów). Dla−
tego maksymalnie jednocześnie można
zapisać do modułu wyświetlacza 80 zna−
kową informację. W przypadku wyświet−
lacza LCD 2x40 znaków całość będzie
oczywiście pokazana na displeju, jednak
w przypadku mniejszego pola odczyto−
wego np. 2x16 znaków widoczna będzie
tylko pierwsza część wpisanego tekstu.
Obrazowo można by opisać zależność
tego co znajduje się aktualnie w DD
RAM a tego co jest wyświetlane, używa−
jąc określenia „okna wyświetlania”. Sy−
tuację tę obrazuje rry
ys
su
un
ne
ek
k 5
5.
Jak widać, aby wyświetlić niewidocz−
ną część tekstu, należałoby przesunąć
w lewo zawartość całej pamięci DD
RAM, do pozycji która nas akurat intere−
suje. W ten sposób można by pokazać
schowaną, a interesującą nas jego
część. W praktyce do tego celu służą in−
strukcje przesuwania zawartości bufora
DD RAM w lewo lub prawo. Przy przesu−
nięciu np. lewo o 1 całego bufora,
wszystkie kody znaków, (niczym w bajto−
wym rejestrze przesuwnym) zostają
przesunięte o jeden adres w lewo. Znak
który znajdował się na pierwszej pozycji
trafia na ostatnią, toteż żadna informacja
nie zostaje w ten sposób tracona. Zawar−
tość przy cyklicznym przesuwaniu krąży
jakby „w pętli”.
Sposób oraz opis instrukcji przesuwa−
nia oraz wielu innych znajdzie się
w drugiej części artykułu.
Ciąg dalszy w następnym numerze.
S
Słła
aw
wo
om
miirr S
Su
urro
ow
wiiń
ńs
sk
kii
Rys. 5. Bufor znakowy DD RAM a rzeczywiście wyświetlany tekst
Jak wspomniałem wcześniej wszyst−
ko to i dużo więcej można uzyskać przy
pomocy 11 linii sterujących. Zanim jed−
nak zapoznasz się szczegółowo ze zna−
czeniem poszczególnych sygnałów, przy−
jrzyj się „maksymalnym” możliwościom
modułu opartego o wspomniany stan−
dard oparty o sterownik HD44780.
Nazwy angielskie podaję nie bez po−
wodu, bowiem będziemy się nimi czasa−
mi dla wygody posługiwać podczas oma−
wiania poszczególnych funkcji oferowa−
nych przez wyświetlacz.
Jak sterować modułem
Przypatrzmy się teraz dokładniej
wspominanym wcześniej w artykule syg−
nałom sterującym. Zanim omówię ich
znaczenie powinieneś wiedzieć że układ
sterowany jest napięciami czyli TTL,
czyli poziomy logiczne sygnałów niskiego
i wysokiego wynoszą odpowiednio:
0...0,8V oraz 2,4...5V, czyli odpowiadają
w przybliżeniu poziomom w typowych
układach CMOS przy zasilaniu napięciem
+5V.
Oto skrótowe znaczenie poszczegól−
nych sygnałów sterujących modułem:
– D0...D7 : osiem sygnałów przekazywa−
nia danych pomiędzy modułem LCD
a światem zewnętrznym, czyli np. ze−
wnętrznym układem sterującym. Fa−
chowo sygnały te nazywa się „szyną
danych”. Informacja może być przeka−
zywana w obie strony, tak w stronę
wyświetlacza LCD, kiedy to np. układ
zewnętrzny chce wyświetlić jakiś znak,
lub w drugą stronę. Ten przypadek wy−
maga dłuższego wyjaśnienia dlatego
omówię go w dalszej części artykułu;
Numeracja poszczególnych linii jest
zgodna oczywiście ze standardem,
czyli najmłodszy bit informacji to D0,
najstarszy – D7.
– Sygnał R/W : podanie niskiego pozio−
mu na to wejście powoduje ustawienie
modułu LCD w trybie odbioru informa−
cji z układu sterującego (poprzez linie
D0...D7), tryb ten nazywa się „trybem
zapisu” – ang. „Write”. Stan wysoki na
tym wejściu ustawia moduł w tryb wy−
słania informacji do zewnętrznego
urządzenia sterującego jego pracą.
Dzięki temu ustalany jest kierunek ko−
munikacji z wyświetlaczem LCD.
– Sygnał RS : podanie stanu wysokiego
na to wejście, przez zewnętrzny układ
sterujący, informuje moduł LCD o chę−
ci przesłania danej do wyświetlenia (a
ściślej do umieszczenia znaku w pa−
mięci DD RAM wyświetlacza), lub od−
czyt tej pamięci z modułu do układu
sterującego celem np. weryfikacji zapi−
sanego wcześniej tekstu. Stan niski
zaś informuje moduł o tym że układ
sterujący chce przesłać instrukcję,
dzięki której możliwe jest wywoływa−
nie wcześniej wspomnianych funkcji
dodatkowych modułu takich jak: czysz−
czenie wyświetlacza, ustawianie kur−
sora, itp. Tak dzieje się jeżeli przy tym
sygnał R/W=0, czyli żądamy zapisu in−
strukcji do modułu. W przypadku gdy
RS=0, i RW=1 możliwe jest sprawdze−
nie „stanu zajętości” modułu, poprzez
odczyt stanu na linii D7. Jeżeli po tym
sygnał D7 ma poziom wysoki, znaczy
to że moduł wykonuje wewnętrzną
operację i nie jest gotowy do odebrania
kolejnej instrukcji z układu sterującego.
W przypadku gdy przy odczycie linia
D7 jest w stanie niskim oznacza to że
moduł może odebrać kolejne polecenie
od użytkownika. Znaczenie tego typu
operacji wyjaśnię za chwilę.
– Sygnał E (ang. „enable”− zezwolenie):
podanie dodatniego impulsu na to we−
jście powoduje odebranie przez znajdu−
jący się w module mikrosterownik
HD44780, informacji z linii D0...D7 oraz
RS i RW. W przypadku gdy sygnał
RW=1 (odczyt informacji z wyświetla−
cza LCD) podczas trwania tego impul−
su na liniach D0...D7 pojawia się żąda−
na informacja, dzięki czemu może być
odczytana przez zewnętrzny układ ste−
rujący. Zapis danej do wyświetlenia lub
instrukcji (RW=0) następuje przy opa−
dającym zboczu sygnału E.
Zbierzmy razem przytoczone tu infor−
macje na temat sygnałów sterujących
w tta
ab
be
ellii 1
1.
W zależności od kombinacji sygnałów
RS i RW możliwe są przedstawione
w niej operacje. Pamiętajmy przy tym że
sygnał E jest tylko „zezwoleniem” dla
modułu na odczyty stanów tych wyjść
i podjęcie odpowiedniej operacji zgodnej
z tabelą 1.
Jak zatem fizycznie sterować sygnała−
mi RS, RW i E tak aby informacje podane
na szynę D0...D7 zostały prawidłowo za−
akceptowane przez moduł. Na rry
ys
su
un
nk
ku
u 6
6
przedstawiono przybliżone zależności
czasowe przy generacji tych sygnałów,
tak przy operacji odczytu informacji z mo−
dułu LCD jak przy zapisie.
Wyjaśnijmy sobie dokładniej to co po−
kazano na rysunku. Aby uprościć analizę
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
29
E
LEKTRONIKA DLA WSZYSTKICH 11/97
R
RS
S
R
RW
W
D
Dzziia
ałła
an
niie
e m
mo
od
du
ułłu
u
0
0
zapis instrukcji (rozkazu) do modułu przez zewnętrzny układ
sterujący. Kod instrukcji podawany jest na linie D0...D7, lista
instrukcji znajduje się w tabeli 2.
1
0
zapis danej do pamięci DD RAM (lub do CG RAM), jeżeli
wskaźnik adresu w DD RAM znajduje się w obszarze „okna
wyświetlania” następuje wyświetlenie znaku na displeju LCD.
Kod znaku podawany jest na linie D0...D7, zgodnie z tabelą na
rysunku 4. Zapis do CG RAM używany jest w przypadku
definiowania własnego znaku przez użytkownika.
0
1
odczyt tzw.”flagi zajętości” modułu – bit D7, oraz bieżącej pozycji
wskaźnika adresu w DD RAM (lub w CG RAM) – bity D6...D0
1
1
odczyt danej z DD RAM (lub z CG RAM) z pozycji którą wskazuje
bieżąca zawartość wspomnianego wskaźnika adresu.
Tabela 1
D
Da
an
ne
e tte
ec
ch
hn
niic
czzn
ne
e ::
a) wielkość bufora znaków (DD RAM): 80 znaków (80 bajtów)
b) możliwość sterowania (czyli podawania kodów znaków) za pomocą interfejsu
8 lub 4−bitowego (czyli za pomocą 8 lub tylko 4 linii)
c) zawartość generatora znaków CG ROM:
znaki 5 x 7punktów: 160 znaków
znaki 5 x 10 punktów: 32 znaki
d) możliwość odczytu wpisanych wcześniej znaków do DD RAM oraz CG RAM
e) szeroka gama instrukcji pomocniczych:
– czyszczenie wyświetlacza, (ang. „Clear Display”)
– ustawienie kursora w pozycji początkowej (DD RAM = 0) (ang. „Cursor Home”)
– włączenie / wyłączenie wyświetlacza (chodzi o samo pole odczytowe) (ang. Dis−
play ON/OFF”)
– włączeni lub wyłączeni kursora (ang. „Cursor ON/OFF”)
– możliwość zdefiniowania znaku lub kursora „migającego” (ang. „Cursor Blink”)
– przesunięcie kursora: w lewo lub w prawo (ang. „Cursor Shift”)
– przesunięcie całego tekstu: w lewo lub w prawo (ang. „Display Shift”)
f) wbudowany układ automatycznego resetowania modułu po włączeniu napięcia
zasilającego (ang. „Internal reset circuit”).
zaznaczyłem trzy hipotetyczne
„etapy”, oznaczone jako et.1,
et.2 i et.3. Odpowiadają one
trzeb operacjom jakie powinien
przewidzieć konstruktor układu
w którym wykorzystywany jest
moduł LCD. Rozpocznijmy od
zapisu instrukcji lub danej, wy−
kres zapisu odnosi się do obu
tych przypadków, z ta różnica że
sygnał RS przyjmuje raz wartość
„0” , raz „1”, zgodnie z tabelą
1.
et.1 : na początku należy
ustawić odpowiedni poziom na
linii RS, a na linii RW powinno
być ustawiony oczywiście ”0”,
bo dokonujemy operacji zapisu
do modułu. Należy także podać
na linie D0...D7 kod danej (gdy
RS=0) lub instrukcji (gdy RS=1)
zgodnie z tabelą 2 (w II cz.
artykułu). Linia E
powinna
w tym czasie pozostawać w sta−
nie „0”. Najlepiej jest to wyko−
nać w momencie oznaczonym
na wykresie jako „Z”, czyli przy
okazji ustawiania sygnałów RS
i RW. W katalogach producenta
modułów Hitachi ustalenie się
szyny danych D0...D7 może być
opóźnione i nastąpić dopiero
w momencie kiedy sygnał E ma
już poziom wysoki (punkt „X”),
jednak ja radzę zrobić to wcześniej zgod−
nie z rysunkiem.
et.2 : następnie należy podać impuls
o czasie trwania minimum t
EN
, podczas
opadającego zbocza tego impulsu dane
z szyny D0...D7 zostają „fizycznie” ode−
brane przez moduł LCD. Po tym zboczu,
które kończy cykl właściwego zapisu do
modułu, powinno się odczekać czas
t
H
, podtrzymując dane na liniach D0...D7.
et3. : sygnał E przyjmuje ponownie
stan „0”, mija czas podtrzymania. Stan li−
ni RS, RW oraz szyny danych jest wtedy
nieistotny. Zapis został zakończony. Mo−
duł wykonuje teraz wewnętrzną operację
przez czas zależny od rodzaju wpisanej
instrukcji lub danej, a jego wartości poda−
ne są w tabeli 2. Następny cykl zapisu
(odczytu) może się rozpocząć po odcze−
kaniu tego czasu, lub sprawdzeniu stanu
„flagi zajętości” poprzez odczyt informa−
cji z modułu LCD.
Przebieg odczytu przedstawia druga
połowa rysunku 6.
W tym przypadku postępujemy po−
dobnie jak przy zapisie, czyli na początku
ustalamy poziom sygnału na lini−
i RS, linia RW powinna się znaleźć w sta−
nie wysokim (RW=1: odczyt). Następnie
zmieniamy stan linii E na wysoki. Po cza−
sie t
A
dane z modułu pojawiają się na li−
niach D0...D7, wtedy mogą być odczyta−
ne przez zewnętrzny układ sterujący użyt−
kownika. Po odczytaniu należy zakończyć
procedurę odczytu podając na linie E po−
ziom niski. Kończy to cykl, po tym pozio−
my na liniach RS i RW są nieistotne. Ko−
lejny cykl może się zacząć po czasie 1µs
(zgodnie z tabelą 2).
Minimalne czasy trwania przedstawio−
ne na rysunku 6 oraz ich znaczenie jest
następujące:
– t
AS
: czas od ustawienia sygnałów RS
i RW do uaktywnienia sygnału E, min.:
140ns;
– t
EN
: czas trwania impulsu E, min.
450ns;
– t
H
: czas podtrzymania sygnałów RS,
RW oraz danej po opadającym zboczu
sygnału E, min. 20ns;
– t
A
: przy odczycie: czas od momentu
uaktywnienia sygnału E do pojawienia
się informacji na szynie danych, maks.
320ns.
Jak widać poszczególne czasy są bar−
dzo krótkie, warto jednak o nich pamiętać
przy budowaniu układu sterującego pracą
modułu LCD.
Warto też zwrócić uwagę
(rysunek 6) że zapis informacji
do modułu następuje fizycznie
podczas opadającego zbocza
sygnału E, natomiast odczyt
jest możliwy podczas trwania
wysokiego stanu sygnału E.
Zapis i odczyt informacji
z modułu może odbywać się
dzięki tym samym liniom da−
nych D0...D7 dzięki temu, że są
one liniami „trójstanowymi”.
Czyli w przypadku zapisu linie te
działają jako wejścia informacji
(wewnętrzne wyjścia są w sta−
nie
wysokiej
impedancji),
a w przypadku odczytu, po po−
daniu poziomu „1” na linię
E trójstanowe wyjścia zostają
odblokowane i dzięki temu mo−
duł LCD może przekazać infor−
mację na końcówki D0...D7.
I choć tekstowe moduły LCD
przeznaczone są głównie do
współpracy w układach wyko−
rzystujących mikroprocesory, to
można je także stosować
w
prostych
sterownikach
„niemikroprocesorowych”.
Przykład takiego rozwiązania
z wykorzystanie zwyczajnej pa−
mięci EPROM to opublikowany
w poprzednim numerze EdW
„najprostszy sterownik wy−
świetlacza LCD” kit AVT−2251 – zapra−
szam do lektury. Najczęściej w takich
prostych układach sterujących modułami
LCD nie jest wykorzystywany tryb odczy−
tu danych czyli: „flagi zajętości” oraz ad−
resu w DD RAM lub CG RAM. Ponieważ
moduł LCD wykonuje każdą wewnętrzną
operację przez określony (tabela 2) mak−
symalny czas, nie jest w zasadzie po−
trzebne sprawdzanie tej flagi. Wystarczy
przecież odczekać z małym zapasem
czas podany w tabeli 2, co gwarantuje że
następny rozkaz z układu sterującego pra−
cą modułu LCD zostanie przezeń prawid−
łowo odebrany. Dlatego w wielu aplika−
cjach wyświetlaczy LCD, także mikropro−
cesorowych końcówka RW modułu jest
na stałe zwarta do masy. Układ nadrzęd−
ny zajmuje się jedynie sterowaniem syg−
nałów RS i E oraz oczywiście podawa−
niem informacji na szynę danych D0...D7.
W efekcie upraszcza to znacznie obsługę
wyświetlacza, nie ujmując mu jego funk−
cjonalności.
W prawdziwych „rasowych” zastoso−
waniach wykorzystujących mikrokontro−
lery funkcja odczytu danych ma jednak
zastosowanie – jest po prosty w pew−
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
E
LEKTRONIKA DLA WSZYSTKICH 11/97
30
Rys. 6. Przebiegi charakterystyczne sygnałów
sterujących modułem LCD przy zapisie i odczycie
nych względów praktyczna w takim ukła−
dzie pracy.
W tej części artykułu to tyle. Poznałeś
podstawowe zagadnienia związane z mo−
dułami tekstowymi: ich budowę oraz ter−
minologię z nią związaną. W następnym
odcinku opiszę dokładnie wszystkie roz−
kazy sterownika oraz podam kilka prak−
tycznych przykładów na ujarzmienie tego
arcyciekawego podzespołu elektronicz−
nego.
S
Słła
aw
wo
om
miirr S
Su
urro
ow
wiiń
ńs
sk
kii
————————————————
——————————————————
——————————————————
——————−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
31
E
LEKTRONIKA DLA WSZYSTKICH 11/97
FUNKCJE KONTROLNE WYŚWIET−
LACZA
Ponieważ podałem wcześniej na
rysunku 4 zestaw kodów odpowiadają−
cych wyświetlanym przez moduł znaków
pora zapoznać się z listą i znaczeniem po−
szczególnych instrukcji sterowania wy−
świetlaczem. W tabeli 2 ujęto wszystkie
polecenia wyświetlacza, te służące zaró−
wno do odczytu jak i do zapisu. Jeżeli ze−
chcesz w przyszłości wykorzystać teksto−
we moduły LCD tabelka ta okaże się nie−
zbędnym kompendium wiedzy na ten te−
mat.
W pierwszej kolumnie podałem orygi−
nalne nazwy angielskie instrukcji, nie bez
powodu, bowiem w przyszłości jeżeli za−
znajomisz się i wykorzystasz opisywane
tu moduły w praktyce, napotykając jakiś
nietypowy jego rodzaj, będzie mógł łatwo
znaleźć analogie instrukcji w często an−
gielskojęzycznej dokumentacji dołączanej
przez sprzedawcę lub producenta do ofe−
rowanego typu wyświetlacza. Jeżeli nie
znasz angielskiego lub go nie lubisz, nie
przejmuj się, w przedostatniej kolumnie
znajduje się krótki opis danej instrukcji.
W kolumnach RS, RW D7...D0 podane są
kombinacje poszczególnych sygnałów
sterujących i szyny danych , które powin−
ny być ustawione przez uaktywnieniem
sygnału E , jak opisałem wcześniej.
W niektórych kratkach tabeli występują li−
terki np. :
dla instrukcji: „Display
ON/OFF” są to : D, C, i B. Oznacza to że
że w zależności od efektu jaki chcemy
uzyskać na wyświetlaczu, należy te bity
(pozycje) wyzerować lub ustawić zgodnie
z opisem znajdującym się pod koniec ta−
beli. Wyjaśnione są tam wszystkie sym−
bole występujące w tabelce. I tak np. je−
żeli chcesz: włączyć wyświetlacz i poka−
zać niemigający kursor powinieneś pod−
stawić następujące wartości:
D=1, C=1, B=0, czyli w efekcie infor−
macja podana na szynę danych przez za−
pisem instrukcji (RW=0, RS=0) powinna
mieć postać: 00001110 binarnie, prawda
że proste.
Tabela 2
Poniżej przedstawię krótki opis po−
szczególnych instrukcji i efekt ich wyko−
nania.
(1) „Clear display” – czyszczenie wy−
świetlacza
RS
R/W
D7..D0
0
0
0
0
0
0
0
0
0
1
Całą pamięć DD RAM zostaje wypeł−
niona spacjami (20h), wskaźnik (kursor)
adresu DD RAM zostaje wyzerowany.
(=0). Jeżeli wyświetlacz był „przesunię−
ty”, wraca na swoje miejsce. Rozkazu
ustawia bit I/D w słowie „Entry Mode”.
Bit „S” w tym słowie nie zmienia się.
(2) „Return home” – ustawienie kur−
sora na poz. początkowej
RS
R/W
D7..D0
0
0
0
0
0
0
0
0
1
*
Zeruje wskaźnik adresu DD RAM, kur−
sor zostaje przesunięty do pozycji 0.
Przesunięty tekst powraca na swoje
miejsce, zawartość pamięci DD RAM nie
ulega zmianie.
(3) „Entry mode set” – sposób stero−
wania wyświetlaczem
RS
R/W
D7..D0
0
0
0
0
0
0
0
1
I/D
S
I/D: inkrementuje (I/D=1) lub dekre−
mentuje (I/D=0) wskaźnik adresu DD
RAM o 1 po każdorazowym zapisie znaku
do tej pamięci. Kursor zostaje przesunię−
ty w prawo gdy I/D=1, lub w lewo gdy
I/D=0. To samo dotyczy pamięci CG RAM
przy zapisie matrycy znaku użytkownika.
S: powoduje przesuwanie całej zawar−
tości DD RAM (napisu) w lewo lub prawo
w zależności od bitu I/D. W praktyce wy−
gląda to tak jakby kursor stał w miejscu,
a cały napis przesuwał się. Zapis do CG
RAM przy S=1 nie powoduje przesuwa−
nia się napisu.
(4) „Display ON/OFF” – włączanie wy−
świetlacza i kursora
RS
R/W
D7..D0
0
0
0
0
0
0
1
D
C
B
D: włącza wyświetlacz gdy D=1, i gasi
gdy D=0. Zmiana tego bitu nie powoduje
zmiany zawartości DD RAM (wprowa−
dzonego tekstu)
C: pokazuje kursor gdy C=1 i chowa
gdy C=0. Nawet gdy kursor zostanie
ukryty, jest nadal aktywny i podąża wraz
ze wskaźnikiem pamięci DD RAM pod−
czas operacji zapisu.
B: po ustawieniu tego bitu (B=1) kur−
sor zajmuje całą matrycę znaku, dodatko−
wo migocząc na przemian ze znajdują−
cym się „za nim”, wyświetlanym zna−
kiem.
Na rysunku 7 pokazałem możliwe
kształty kursora oraz sposó wyświetlania
migoczącego znaku.
Rys.7 Kształt kursora w zależności od
ustawień bitów „C” i „B” w instrukcji
„Display ON/OFF”.
(5) „Cursor & display shift” – kontrola
kursora i przesuwania tekstu
RS
R/W
D7..D0
0
0
0
0
0
1
S/C
R/L
*
*
Przesuwa kursor lub napis w prawo
lub lewo bez zmiany zawartości pamięci
DD RAM. W 2−liniowym trybie pracy kur−
sor
przechodzi
do
drugiej
lini−
i w momencie minięcia 40 pozycji w pier−
wszej linii. W tym trybie przy przesuwa−
niu napisu, obie linie są przesuwane jed−
nocześnie, tzn. że np. ostatni znak w 1 li−
n
i
−
i trafia na miejsce pierwsze w tej same li−
nii,
a
nie
przechodzi
do
lini−
i drugiej. To samo dotyczy lini−
i nr 2. W praktyce wygląda to jak przesu−
wanie poziome dwóch niezależnych napi−
sów w 2 liniach. W tabeli 3 zestawiono
działanie kombinacji bitów S/C i R/L.
Tabela 3
S/C
R/L
Efekt
0
0
Przesuwa kursor w le−
wo, wskaźnik adresu zostaje zmniejszo−
ny o 1
0
1
Przesuwa kursor w pr−
awo, wskaźnik adresu zostaje zwiększo−
ny o 1
1
0
Przesuwa cały napis
w lewo, kursor podąża za przesuwanym
tekstem
1
1
Przesuwa cały napis
w prawo, kursor podąża za przesuwanym
tekstem
(6) „Function Set” – ustawienie funk−
cji dodatkowych
RS
R/W
D7..D0
0
0
0
0
1
DL
N
F
*
*
DL: ustala szerokość magistrali da−
nych. Gdy DL=1 dane przesyłane są
w postaci 8−bitowej linia D0..D7. Kiedy
DL=0, transmisja jest 4−bitowa: linie
D4..D7. Gdy wybrany jest interfejs 4−bito−
wy każda dana lub rozkaz musi być prze−
słana w 2 cyklach, najpierw starsza cześć
bajtu potem młodsza. Po każdej operacji
należy sprawdzić „Busy Flag” lub odcze−
kać czas określony w tabeli 1.
N: ustala tryb pracy 1−liniowy (N=0),
lub 2−liniowy (N=1). Gdy aktywny jest
tryb 1−liniowy, a niektóre z modułów ma−
ją fizycznie (SW1) ustawiony adres dru−
giej linii, pozostają nieużywane.
F: ustala rozmiar matrycy znaku; F=0
matryca ma 5 x 7punktów, F=1 matryca
5 x 10. Nie wszystkie moduły LCD wyko−
rzystują tę drugą możliwość, jej dość nik−
łe znaczenie opisywałem wcześniej w ar−
tykule.
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
E
LEKTRONIKA DLA WSZYSTKICH 11/97
32
Uwaga: w przypadku kiedy F=1 (5x10)
oraz N=1 (tryb pracy 2−liniowy) nie jest
możliwe wyświetlenie tekstu w dwóch li−
niach, w przypadku wyświetlaczy wieloli−
niowych, a jedynie w jednej.
(7) „Set CG RAM Address” – ustawie−
nie adresu pamięci znaków użytkownika
RS
R/W
D7..D0
0
0
0
1
A
A
A
A
A
A
Ustala adres aktualnego zapisu do pa−
mięci matrycy znaku użytkownika CG
RAM.
Dozwolony adres: 00h..3Fh jak poda−
no w tabeli 3. Po tej operacji dane będą
umieszczane od ustawionego adresu
w CG RAM. (AAAAAA – 6 bitowy adres,
zakres: 0...63)
(8) „Set DD RAM Address” – ustawie−
nie adresu pamięci tekstu (wskaźnika)
RS
R/W
D7..D0
0
0
1
A
A
A
A
A
A
A
Ustala adres aktualnego zapisu do pa−
mięci tekstu DD RAM. Po tej operacji da−
ne są umieszczane od ustawionego adre−
su w DD RAM. (AAAAAAA−7−bitowy ad−
res)
Gdy N=0 (tryb 1−liniowy) dozwolony
zakres adresu: 00h..27h, gdy N=1 (tryb 2−
liniowy) adresy 1 linii: 00h..27h, 2 linii:
40h..67h
(9) ”Read busy flag” and AC address –
odczyt flagi zajętości
RS
R/W
D7..D0
0
1
BF
A
A
A
A
A
A
A
Odczytanie stanu flagi zajętości „Busy
Flag” oraz bieżącego adresu w CG lub
DD RAM. Gdy po odczycie BF=1 znaczy
to że moduł wykonuje wewnętrzną ope−
rację i nie przyjmie danej ani instrukcji.
Następne dane powinny być przesyłane
do wyświetlacza gdy BF=0.
AAAAAAA to 7−bitowy adres bieżącej
pozycji w CG lub DD RAM, uwagi co do
zakresów liczbowych adresu zgodne
z punktem poprzednim.
(10) „Write data to CG or DD RAM” –
zapis danej do CG RAM lub DD RAM
RS
R/W
D7..D0
1
0
D
D
D
D
D
D
D
D
Wpisuje 8−bitową daną DDDDDDDD
do pamięci tekstu DD RAM lub generato−
ra znaków użytkownika CG RAM. To do
jakiej pamięci zostaje zapisana dana zale−
ży od tego, do jakiej pamięci odnosiło się
ostatnie ustawienie adresu, patrz instruk−
cje „Set CG RAM address” i „Set DD
RAM address”. Po zapisie do pamięci
DD RAM lub CG RAM wskaźnik adresu
zostaje automatycznie inkrementowany
lub dekrementowany o 1 w zależności od
ustawienia polecenia „Entry Mode”.
Przykładowa kolejność instrukcji w ce−
lu zapisania 7−znakowego tekstu np.:
„DISPLEJ” pokazany jest w tabeli 4.
(11) „Read data from CG or DD RAM”
– odczyt danej z CG RAM lub DD RAM
RS
R/W
D7..D0
1
1
D
D
D
D
D
D
D
D
Odczytuje 8−bitową daną DDDDDDDD
z modułu, zapisaną pod aktualnym adre−
sem który wskazuje licznik adresu (od−
czytywany w sposób podany w pkt.9).
Tabela 4.
uwaga: gwiazdkami oznaczono bity
nieistotne
No
Instrukcja, RS, R/W
D7..D0
Wyświetlacz
Ope−
racja
1
włączenie zasilania (inicjalizacja
obwodów wewnętrznych)
w y −
świetlacz wygaszony
2
“Function set”, 0,0
001100**
U s t a w i e n i e
interfejsu 8−bit, tryb 1−linia
3
“Display ON/OFF”, 0,0
00001110
_
W ł ą c z e n i e
wyświetlacza i zapalenie kursora
4
“Entry mode set”, 0,0
00000110
_
Tryb
inkre−
mentacji wskaźnika adresu, bez przesu−
wania całego tekstu
5
“Write data to CG/DD RAM”,
1,0
01000100
D_
wpisanie zna−
ku „D”
6
“Write data ...”, 1,0
01001001
D I _
wpisanie zna−
ku „I”
7“Write data...”,1,0
01010011
D I S_
wpisanie zna−
ku „S”
8
“Write data...”,1,0
01010000
D I SP_ wpisanie zna−
ku „P”
9
“Write data...”,1,0
01001100
D I SPL_ wpisanie zna−
ku „L”
10
“Write data...”,1,0
01000101
D I SPLE_
w p i −
sanie znaku „E”
11
“Write data...”,1,0
01001010
D I SPLEJ_
w p i −
sanie znaku „J”
12
“Return home”,0,0
00000010
D I SPLEJ
p o −
wrót kursora na pozycję początkową, ad−
res „0”
PRACA ZE STEROWANIEM 4−BITO−
WYM
Jak już wiesz do komunikacji z modu−
łem
oprócz
sygnałów
sterujących
(RW,RS,E)
służy
osiem
lini−
i danych: D0...D7. Jednak każdy wy−
świetlacz tekstowy ze sterownikiem
HD44780 może także pracować będąc
sterowanym tylko za pomocą 4 lini−
i danych – D7...D4. W takim przypadku li−
nie D3...D0 są ignorowane i mogą
w związku z tym pozostać niepodłączo−
ne. W tabeli 2 pokazana jest zresztą in−
strukcja „Function Set” w której bit D4
odpowiada za ustalenie jaki rodzaj komu−
nikacji wybierze użytkownik po włączeniu
zasilania modułu. Jeżeli bit ten ustawimy,
moduł komunikować się poprzez 8−bito−
wą szynę danych, jeżeli zaś wyzerujemy
go, komunikacja będzie 4−bitowa. W tym
ostatnim przypadku aby przesłać kom−
pletną instrukcję lub daną do wyświetla−
cza (a także ją odczytać), należy wykonać
to w dwóch etapach. W pierwszym nale−
ży przesłać starszy półbajt instrukcji lub
danej, a następnie młodszy. Tak wiec np.
aby
wyświetlić
literę
„S”
(kod:
01010011) należy najpierw podać na linie
D7...D4 kombinację pierwszych czterech
bitów czyli: „0101”, a następnie wysłać
drugą połowę: „0011”. Oczywiście przed
każdą połówką należy odpowiednio usta−
wić sygnały RS i RW oraz uaktywnić
transmisję sygnałem E (także za każdym
razem). Różnica polega tylko na tym, że
po przesłaniu pierwszego półbajtu nie
jest potrzebne sprawdzanie flagi zajętoś−
ci, lub czekanie przez, podany w tabeli 2,
czas w którym moduł wykonuje wewnęt−
rzną operację. Dzięki temu ogólny czas
obsługi interfejsu 4−bitowego szczególnie
w układach mikroprocesorowych nie jest
o wiele dłuższy niż przy pełnym 8−bito−
wym interfejsie.
Pod koniec opisu modułów LCD poka−
żę przykładowy sposób podłączenia wy−
świetlacza poprzez interfejs zarówno
8 jak i 4−bitowy.
INICJALIZACJA – CZYLI CO SIĘ DZIE−
JE PO WŁĄCZENIU ZASILANIA
Jak każde inteligentne urządzenie mo−
duły LCD, po dołączeniu do nich zasilania,
przez jakiś określony czas wykonują auto−
matyczną procedurę inicjalizacji swych
„wnętrzności”.
W przypadku modułów z HD44780
czas ten wynosi z reguły 10 ms. Moduł
realizuje funkcję „zerowania” dzięki wbu−
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
33
E
LEKTRONIKA DLA WSZYSTKICH 11/97
dowanemu w moduł układowi „reset”.
Podczas tego okresu wyświetlacz nie
przyjmuje żadnych rozkazów, toteż
w układach sterujących warto przewi−
dzieć możliwość opóźnienia o wspomnia−
ny czas (najlepiej z zapasem: 20ms) po
ustabilizowaniu się napięcia zasilania na
poziomie 4,5V lub więcej. W przypadku
kiedy po włączeniu zasilania czas narasta−
nia napięcia spełnia wymogi modułu, czy−
li zawiera się w granicach 0,1ms...10ms
przy wzroście od 0,2V do 4,5V, układ re−
setu pracuje poprawnie zapewniając pra−
widłową inicjalizację wyświetlacza. W ta−
kim przypadku wartości początkowe re−
jestrów wewnętrznych są następujące:
− panel LCD wygaszony (“display cle−
ar”)
− nastawy „Function Set”:
DL=1 : 8−bitowa szyna danych,
N=0 : wyświetlanie w trybie 1 li−
niowym,
F=0 : matryca znaku 5x7 punk−
tów;
− nastawy „Display ON/OFF”:
D=0 : wyświetlacz wygaszony,
C=0: kursor wygaszony,
B=0 wyłączona funkcja migania
kursora lub znaku
− nastawy: „Entry Mode Set”:
I/D=1 : +1 (zwiększanie adresu),
S=0: bez przesuwania
− pamięć wyświetlania DD RAM jest
wypełniona spacjami, zaś pamięć CG
RAM jest wypełniona przypadkowymi da−
nymi.
Rozpoczęcie pracy w takim przypadku
może się odbyć w sposób normalny czy−
li np. jak podano w przykładzie z tabeli 4.
Jeżeli zaś czas narastania napięcia po
włączenia zasilania modułu nie mieści się
w podanych wcześniej granicach, nie−
zbędne jest wykonanie procedury inicju−
jącej przez układ sterujący użytkownika.
Kolejne kroki takiej operacji dla interfejsu
4 i 8−bitowego podane są na rysunku 8
i 9.
Rys.8 Programowa inicjalizacja modu−
łu z interfejsem 8−bitowym
Rys.9 Programowa inicjalizacja modu−
łu z interfejsem 4−bitowym
W praktyce przypadek kiedy zasilanie
nie spełnia wymogów umożliwiających
prawidłową inicjalizację modułu jest bar−
dzo rzadki, szczególnie kiedy w zasilaczu
pracuje monolityczny stabilizator napięcia
np. 7805, a kondensator filtrujący zasila−
nie po stronie wtórnej stabilizatora nie
jest zbyt duży (47uF...220uF). W każdym
razie w przypadku kiedy moduł odmówi
„posłuszeństwa” po załączeniu zasilania,
pomimo wprowadzania komend i instruk−
cji w celu wyświetlenia czegoś na disple−
ju LCD, należy zastosować programową
procedurę inicjalizacyjną, taką jak omówi−
łem wcześniej.
STRUKTURA WEWNĘTRZNYCH PA−
MIĘCI MODUŁU
Jak wspomniałem wcześniej moduł
posiada trzy rodzaje wewnętrznej pamię−
ci, powtórzmy je sobie:
− CG ROM : pamięć generatora zna−
ków, jest to pamięć stała (ROM) z zapisa−
nymi danymi na podstawie których wy−
świetlany jest jeden ze 160 znaków. Za−
wartość CG ROM podałem wcześniej
w tabeli na rysunku 4.
− DD RAM : pamięć typu RAM o po−
jemności 80 znaków (bajtów) przechowu−
jąca kody znaków do wyświetlenia na pa−
nelu LCD. pamięć ta może być zapisywa−
ne lub odczytywana przez zewnętrzny
układ sterujący.
− CG RAM : pamięć typu RAM o po−
jemności 64 bajtów przeznaczona na de−
finiowanie znaków przez użytkownika.
Poniżej zapoznam Cię dokładnie ze
strukturą tych pamięci i ich znaczeniem
dla pracy modułu.
Pamięć CG ROM. Znaczenie tej pa−
mięci zostało już wyjaśnione, a struktura
została przedstawiona na rysunku 4.
W artykule nie podano wyglądu znaków
kiedy moduł pracuje w trybie 5x10 punk−
tów. Po pierwsze dlatego że, nie wszyst−
kie moduły mogą pracować w tym trybie,
po drugie: różnica w wyglądzie znaków
z matrycy 5x7 i 5x10 jest niewielka, różni
się tylko ostatnie 16 znaków o kodach:
240...255. Znaki te nie wchodzą w skład
alfabetu łacińskiego, a są symbolami z in−
nych zbirów znaków. Jeżeli kogoś intere−
suje zawartość i wygląd tych znaków, po−
winien sprawdzić to w praktyce, kupując
wyświetlacz, ewentualnie przestudiować
literaturę [1]. Pamięć CG ROM jest adre−
sowana (tak właściwie to jest adresowa−
ny cały blok bajtów opisujący konkretny
znak) poprzez wpisanie kodu znaku do
wyświetlenia przy RS=1 i RW=0. Nie jest
możliwa ingerencja i modyfikacja tej pa−
mięci ani nie jest możliwe dołączenie np.
zewnętrznej pamięci tego typu.
Na rynku elektronicznym istnieją wer−
sje wyświetlaczy tekstowych LCD zgod−
nych programowo z opisywanym tu stan−
dardem, lecz zawartość pamięci CG
ROM poszczególnych modeli w zakresie
kodów: 128...255 może się nieco różnić.
Są to jednak znaki spoza naszego alfabe−
tu, toteż nie stanowi to dużego problemu
dla użytkownika, szczególnie że może on
zawsze zdefiniować swój nietypowy
znak korzystając z pamięci CG RAM.
pamięć DD RAM. Pamięć ta służy do
przechowywania kodów znaków do wy−
świetlenia, jej pojemność dla każdego
modułu opartego o sterownik HD44780
wynosi 80 bajtów (znaków). Jak już wiesz
w przypadku kiedy panel LCD wyświetla−
cza ma mniejsza „długość” , wyświetla−
na jest tylko część tekstu, zawartego
w DD RAM. Pozostała część pamięci mo−
że być wykorzystana przez programistę
jako pamięć RAM dowolnego wykorzys−
tania. W praktyce jednak zapisuje się do
niej maksymalnie dużo komunikatów
(które mają być wyświetlone), by potem
w razie potrzeby poprzez zwykłe przesu−
nięcie tekstu (poprzez komendy przesu−
wające) pokażą żądany tekst. Innym spo−
sobem, szczególnie przydatnym dla po−
czątkujących w dziedzinie obsługi wy−
świetlaczy tego typu, jest zapis do pa−
mięci DD RAM tylko tej części tekstu,
która może być wyświetlona. Jeżeli po−
trzeba pokazać coś innego, wystarczy po−
leceniem „clear display” wyczyścić pa−
mięć DD RAM a potem zapisać nowy żą−
dany tekst.
Kolejne komórki DD RAM są oczywiś−
cie ponumerowane, w tym przypadku bę−
dzie to zakres 0...79 (80 znaków), w zapi−
sie szesnastkowym: 00h...4Fh. Takim za−
pisem będziemy się posługiwać w dal−
szej części opisu pamięci wyświetlacza.
Dla trybu jednoliniowego, kiedy w in−
strukcji „Function Set” (patrz tabela 2) bit
N=0 organizacja pamięci DD RAM jest
następująca:
1
2
3
4
5
7
9
80
<— poozycja na displeju
00
01
02
03
04
. . . . . . . . . .
4E
4F
< —
addres w DD RAM
W przypadku, gdy wyświetlacz posia−
da panel LCD o mniejszej (<80) liczbie
pozycji, wyświetlana jest tylko część tek−
stu, np. dla panelu 1x8 mamy:
1
2
3
4
5
6
78
<— poozycja
na displeju
00
01
02
03
04
05
06
07<—
addres
w DD RAM
Podczas wykonania operacji przesu−
wania tekstu adres podąża jak pokazano
poniżej:
01
02
03
04
05
06
0708
<—
przee−
suw w lewo
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
E
LEKTRONIKA DLA WSZYSTKICH 11/97
34
4F
00
01
02
03
04
05
06
<—
przee−
suw w prawo
Dla przykładu struktura pamięci 16−
znakowego wyświetlacza (1x16) ma po−
stać:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<— poozycja na displeju
00
01
02
03
04
05
06
0708
09
0A
0B
0C
0D
0E
0F
<— addres w DD RAM
Przy przesuwaniu zawartość pamięci
wygląda następująco:
01
02
03
04
05
06
0708
09
0A
0B
0C
0D
0E
0F
10
<— przeesuw w lewo
4F
00
01
02
03
04
05
06
0708
09
0A
0B
0C
0D
0E
<— przeesuw w prawo
W trybie dwuliniowym, kiedy w in−
strukcji „Function Set” (patrz tabela 2) bit
N=1 organizacja pamięci DD RAM jest
nieco inna.
1
2
3
4
5
39
40
<— poozycja na displeju
1 linia 00
01
02
03
04
. . . . . . . . . .
26
27
<— addres w DD RAM
2 linia 40
41
42
43
44
66
67< —
addres w DD RAM
Jak widać w tym przypadku pamięć
DD RAM jest podzielona na dwie części
po 40 bajtów pojemności każda. Pierw−
sza część (linia) zawiera adresy 00...27h
(0...39), druga zaś adresy: 40h...67h
(64...103).
Kiedy wyświetlacz ma mniej (np. 2x8)
znaków
w
lini−
i niż 40, adresy są oczywiście ułożone
w następujący sposób:
1
2
3
4
5
6
7
8
< —
poozycja na displeju
1 linia 00
01
02
03
04
05
06
07< —
addres w DD RAM
2 linia 40
41
42
43
44
45
46
47< —
addres w DD RAM
W przypadku przesuwania zawartości
DD RAM w trybie 2−liniowym adresy w li−
niach 1 i 2 wyglądają następująco:
przesuw w lewo
1 linia 01
02
03
04
05
06
0708
2 linia 41
42
43
44
45
46
4748
przesuw w prawo
1 linia 2700
01
02
03
04
05
06
2 linia 6740
41
42
43
44
45
46
Dla przykładu w najbardziej popular−
nym wyświetlaczu LCD 2x16 znaków
struktura „widocznej” DD RAM jest na−
stępująca:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<— poozycja na disple−
ju
1 linia 00
01
02
03
04
05
06
0708
09
0A
0B
0C
0D
0E
0F
<— addres w DD RAM
2 linia 40
41
42
43
44
45
46
4748
49
4A
4B
4C
4D
4E
4F
<— addres w DD RAM
Kiedy realizowane jest przesuwanie,
struktura DD RAM przyjmuje postać:
przesuw w lewo
1 linia
01
02
03
04
05
06
0708
09
0A
0B
0C
0D
0E
0F
10
2 linia 41
42
43
44
45
46
4748
49
4A
4B
4C
4D
4E
4F
50
przesuw w lewo
1 linia
01
02
03
04
05
06
0708
09
0A
0B
0C
0D
0E
0F
10
2 linia 41
42
43
44
45
46
4748
49
4A
4B
4C
4D
4E
4F
50
Jak widzisz, w trybie 2−liniowym przy
przesuwaniu tekst przesuwany jest w ob−
rębie
każdej
lini−
i osobno, można powiedzieć że „zapętla”
się w obszarze jednej linii. Ta właściwość
jest bardzo przydatna szczególnie przy
demonstracyjnym przesuwaniu komuni−
katów wieloliniowych.
Istnieją modele wyświetlaczy 1x16
znaków np. Hitachi typ LM020, w którym
pomimo
1
lini−
i wyświetlającej 16 znaków przyporząd−
kowanie poszczególnych matryc na pa−
nelu LCD do adresów w DD RAM jest
nieco inne:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<— poozycja na displeju
00
01
02
03
04
05
06
0740
41
42
43
44
45
46
47<— addres w DD RAM
Dla tego modelu LCD podczas inicjali−
zacji powinna być wpisana instrukcja
„Function set” z bitem N=1, czyli praca
w trybie 2−liniowym, inaczej aktywna bę−
dzie tylko połowa (8 znaków) wyświetla−
cza.
Dla większych modułów, wielolinio−
wych modułów LCD układ adresów w za−
leżności od pozycji znaku i
lini−
i jest następujący:
Moduł 2 x 40 (2 linie po 40 znaków),
np. LM107, LM018, LM092
1 linia A
B
2 linia C
D
Moduł 4 x 20 (4 linie po 20 znaków),
np. LM044
1 linia A
2 linia C
1 linia B
2 linia D
gdzie: oznaczenia A,B,C,D to następu−
jące kolejne adresy:
A : 00h...13h
B : 40h...53h
C : 14h...27h
D : 54h...67h
Ważną informacją jest że każdorazowe
wpisanie danej do pamięci CG RAM po−
woduje automatyczną inkrementację licz−
nika adresu. Dzięki temu nie jest koniecz−
ne ustawianie go za każdym razem przed
wpisanie kolejnej litery tekstu.
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
35
E
LEKTRONIKA DLA WSZYSTKICH 11/97
Po tej sporej ilości przykładów warto
poeksperymentować z nawet najtań−
szym zakupionym modułem tekstowym
LCD. Zapewniam Cię, że każdy zgodny
z omawianym standardem, tak czy ina−
czej, da się „opanować” nawet przez
mało doświadczonego w tej materi−
i elektronika.
Pamięć CG RAM. Przyszła wreszcie
pora na przedstawienie zasad wprowa−
dzania zdefiniowanych przez użytkowni−
ka znaków. Do tego celu służy właśnie
CG RAM. Jak już wiesz jej pojemność to
64 bajty, co pozwala na zdefiniowanie
8 znaków , każdy opisany jest przez 8 baj−
tów, a każdy z tych bajtów opisuje 1 wier−
sz matrycy pojedynczego znaku. Skoro
powiedziałem wcześniej że matryca zna−
ku ma postać w tym wypadku 5x7, to po
co ten 8−my bajt, a no po nic. Jest on po
prosty „marnowany”. Tak samo jest z bi−
tami w danym bajcie opisującym wiersz,
istotne jest tylko 5 najmłodszych bitów,
bo przecież matryca ma 5 kolumn. Jeżeli
dwa ostatnie zdania nie są dla Ciebie zbyt
jasne , pomoże Ci z pewnością rysunek
10.
Rys.10 Matryca definiowanego zna−
ku, a bajty ją opisujące
Teraz już chyba powinieneś wiedzieć
dlaczego powiedziałem wcześniej że
część bitów jest „marnowana”. Jest to
jednak tylko pozorne marnotrawstwo,
bowiem , dzięki takiemu ułożeniu infor−
macji w pamięci CG RAM możliwe jest
logiczne i kolejne adresowanie definio−
wanych komórek. W tabeli 5 pokazano
strukturę pamięci CG RAM.
Tabela 5.
Kod znaku (tab.1)
bity:
7 6 5 4 3 2 1 0
Adres w CG
RAM
bity:
5 4 3
2 1 0
Matryca zna−
ku
bity:
7 6 5
4 3 2 1 0
0 0 0 0 * 0 0 0
kod: 00h lub 08h
0 0 0 0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * * 0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
0 0 0 0 0
0 0 0 0 * 0 0 1
kod: 01h lub 09h
0 0 1 0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * * 0 0 0 0 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
itd.... aż do kodu
07h
0 0 0 0 * 1 1 1
kod: 07h lub 0Fh
1 1 1 0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * * 1 1 1 1 1
0 0 0 0 0
1 1 1 1 1
0 0 0 0 0
1 1 1 1 1
0 0 0 0 0
1 1 1 1 1
0 0 0 0 0
Dla przykładu jako pierwszy znak
(kod=00h) zdefiniowano „szachownicę”,
pod kodem 02h znak „karo”, ostatnim
zdefiniowanym znakiem są cztery pozio−
me linie. Bity oznaczone gwiazdką nie
mają znaczenia przy definiowaniu matry−
cy znaku.
Ósmy wprowadzany kolejno bajt
(wiersz) matrycy znaku nie jest istotny, ze
względu na zastosowane matryce LED:
5x7, zwykle należy wpisać 00h.
Tak więc aby zdefiniować np. 4 nowe
znaki należy najpierw wykonać instrukcję
ustawienia adresu w CG RAM na pozycję
0 (patrz tabela 2): „Set CG RAM Ad−
dress”
RS
RW
D7...D0
0
0
01000000
Następnie należy kolejno wpisywać
wszystkie bajty po kolei od pierwszego,
opisującego pierwszy (górny) wiersz mat−
rycy pierwszego znaku aż do ostatniego
31−ego (32−gi jest i tak równy „0” więc
nie ma potrzeby go wpisywać) bajtu, opi−
sującego ostatni wiersz 4−tej matrycy de−
finiowanego znaku.
Tak samo jak w przypadku pamięci DD
RAM po każdym wpisie danej do tej pa−
mięci licznik adresu jest automatycznie
inkrementowany, toteż nie jest potrzeb−
ne ustawianie adresu za każdym razem
za pomocą instrukcji „Set CG RAM Ad−
dress”.
Poniżej w tabeli 6 przedstawiam
2 komplety danych (po 64 bajty) umożli−
wiających zdefiniowanie 16 polskich zna−
ków, w pierwszym przypadku są to litery
małe: „ąćęłńóśż”, w drugim duże:
„ĄĆĘŁŃÓŚŻ”.
Dzięki tym danym nie będziesz musiał
samodzielnie męczyć się z rysowaniem
„kropka po kropce” każdej polskiej litery.
polski znak:
seria 8 kolejnych baj−
tów
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
E
LEKTRONIKA DLA WSZYSTKICH 11/97
36
(w zapisie szesnastkowym)
polski znak:
seria 8 kolejnych baj−
tów
(w zapisie szesnastkowym)
ą
Ą
ć
Ć
ę
Ę
ł
Ł
ń
Ń
ó
Ó
ś
Ś
ż
Ż
Oczywiście po zdefiniowaniu wszyst−
kich 8−miu znaków ich kolejne kody będą
zgodne z tabelą na rysunku 4, czyli np.
znak „ą” będzie miał kod 00h, znak „ć”
kod 01, itd. aż do kodu 07.
PRZYKŁADY ZASTOSOWANIA
Dopisane będzie przeze mnie:
1. schemat z wyłącznikami
2. schemat dołączenia do PC centro−
nics
3. profesjonalny schemat do dołącze−
nia do systemu uP np. z 8051.
4. schemat i listing przykładowy inicja−
cji i wypisania tekstu „Hello world”
PRAKTYCZNE WSKAZÓWKI
a) dotyczące zakupu – oznaczenia han−
dlowe, itp.
b) przykładowe ceny i
miejsca
„wskazanego” zakupu
Sławomir Surowiński, AVT
P
Po
od
dr
rę
ęc
cz
zn
ny
y p
po
or
ra
ad
dn
niik
k e
elle
ek
kt
tr
ro
on
niik
ka
a
37
E
LEKTRONIKA DLA WSZYSTKICH 11/97