23 01

background image

P

Po

od

dr

ę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

ś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

ś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

background image

P

Po

od

dr

ę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

background image

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

ę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

background image

P

Po

od

dr

ę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)

background image

P

Po

od

dr

ę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

background image

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

ę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”).

background image

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

ę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

background image

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

ę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

background image

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

ę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

background image

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

ę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

background image

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

ę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

background image

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

ę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

background image

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

ę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

background image

(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

ę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


Wyszukiwarka

Podobne podstrony:
Podstawy rekreacji ćwiczenia 23 01 10x
brzuch i miednica 2003 2004 23 01
2543 2007 2 17 23 01 07
Ćwiczenia 8 (23 01 15)
Finanse publiczne i prawo finansowe – dr J. Stankiewicz 23-01-05r, Finanse publiczne i prawo finanso
SKRYPT- matematyka finansowa, Szpital Miejski Gdańsk - Zaspa Gdańsk, 23.01.1996
Wyniki sprawdzianu ze statystyki matematycznej i teorii estymacji z dn 23.01.13
Nauka czytania w klasie I prezentacja 23 01
ściąga na kolokwium 23.01, Socjologia, metody badań socjologicznych
handlowe-prominska, 23.01.2008r., Wykład z dnia 23
Psychologia rozwojowa i kliniczna-zaliczenie 23.01.2007, psychologia, psychologia społeczna
2015 08 20 07 42 23 01
BADANIA OPERACYJNE 23 01 2010
23 01 12r
turystyka na obszarach chronionych wyklad 4 23.01.11, turystyka na obszarach chronionych
2015 08 20 08 03 23 01
Podstawy prawoznawstwa skrypt[1] 23.01.2010(2), Szkoła, Uczelnia
16-23.01.07, WYKŁAD 13

więcej podobnych podstron