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