sterowanie sterowników wyświetlaczy graficznych 1.pdf

(271 KB) Pobierz
Programowanie sterowników wyświetlaczy graficznych, część 1
Programowanie sterowników wyświetlaczy graficznych
P R O J E K T Y
Programowanie
sterowników wyświetlaczy
graficznych, część 1
Wyświetlacz graficzny LCD
z kontrolerem T6963C
Artyku³ ten jest doúÊ
nietypowy - przynajmniej jak
na EP. Opisujemy w†nim
bowiem konstrukcjÍ
urz¹dzenia, ale tylko przy
okazji opisu sposobu
sterowania graficznych
wyúwietlaczy LCD.
Artyku³u tego nie moøna
przegapiÊ! Znajdziecie w†nim
bowiem komplet informacji
o†sposobach sterowania
graficznych wyúwietlaczy oraz
doskona³e narzÍdzie do
sterowania nimi.
Gdy budujemy jakiekolwiek
urz¹dzenie mikroprocesorowe pra-
wie zawsze zachodzi koniecznoúÊ
wyúwietlenia danych: wynikÛw
pomiaru, wprowadzonych para-
metrÛw, czasu, daty itp. W†wiÍk-
szoúci przypadkÛw wystarcza nam
wizualizacja znakowa. Jest ona
³atwo realizowalna (LED, LCD,
wyúwietlacze alfanumeryczne),
w†miarÍ tania, a†takøe wielokrot-
nie opisywana i†nie stwarzaj¹ca
wiÍkszych problemÛw programo-
wych.
Jednak czasem - chociaø raczej
rzadko w†domowych, amatorskich
aplikacjach - funkcje urz¹dzenia
wymagaj¹ wizualizacji graficznej.
Jest tak na przyk³ad w†razie ko-
niecznoúci przedstawiania prze-
biegÛw czasowych, zwiÍz³ego
i†skutecznego zobrazowania prze-
biegu procesu technologicznego
lub stanu urz¹dzeÒ itp. W†takich
przypadkach warto siÍgn¹Ê po
uniwersalne, graficzne wyúwietla-
cze LCD. S¹ one dostÍpne w†rÛø-
nych rozmiarach i†wykonaniach,
pocz¹wszy od ca³kiem niewiel-
kich (128x32 piksele), a†koÒcz¹c
na duøych ekranach uøywanych
w†laptopach.
W†naszym przyk³adzie wyko-
rzystania wyúwietlacza graficzne-
go uøyjemy modelu LM24014H
firmy Sharp o†wymiarach ekranu
240x64 piksele.
Budowa wyúwietlacza
Podobnie jak w†wyúwietlaczach
alfanumerycznych mamy do czy-
nienia ze zintegrowanym zespo³em
panelu LCD oraz elektroniki ste-
ruj¹cej, pozwalaj¹cej na stosunko-
wo proste sterowanie wyúwietla-
czem. Schemat blokowy urz¹dze-
nia jest przedstawiony na rys. 1 .
Ekran panelu LCD jest matry-
c¹ 240x64 sterowanych indywi-
dualnie pikseli. Jest wykonany
jako transfleksyjny, czyli moøe
pracowaÊ zarÛwno ze úwiat³em
zewnÍtrznym - odbitym, jak i†ze
úwiat³em przechodz¹cym, emito-
wanym przez podúwietlaj¹c¹ foliÍ
elektroluminescencyjn¹. Stanem
aktywnym (zapaleniem) piksela
jest jego zaciemnienie. Indywidu-
Elektronika Praktyczna 6/99
57
39512932.014.png
Programowanie sterowników wyświetlaczy graficznych
Przyk³ad rozwi¹zania uk³adowego
jest podany na schemacie inter-
fejsu steruj¹cego wyúwietlaczem
(przedstawimy go w†EP7/99). Po-
bÛr pr¹du dla poszczegÛlnych
napiÍÊ wynosi úrednio ok. 12mA
dla +5V i†ok. 1,5mA dla Vee=
-10V.
Rys. 1. Schemat blokowy wyświetlacza LM24014H.
Organizacja procesu
wyúwietlania
Wyúwietlacz dysponuje tryba-
mi graficznym i†tekstowym, ktÛre
mog¹ byÊ niezaleønie w³¹czane
i†wy³¹czane. W†trybie graficznym
ekran jest podzielony na 64 linie,
a†kaøda linia na 40 zespo³Ûw
(pattern) po 6 pikseli. Kaødy
pattern odpowiada jednemu baj-
towi pamiÍci, z†wykorzystanymi 6
m³odszymi bitami. Ustawienie bi-
tu (1) oznacza zapalenie (zaciem-
nienie) piksela. W†trybie teksto-
wym ekran dzieli siÍ na 8†linii
po 40 (font 6x8) lub 30 (font 8x8)
znakÛw. Znaki mog¹ byÊ pobie-
rane z†generatora wbudowanego
(CG-ROM) lub ³adowanego (CG-
RAM). Do dyspozycji mamy teø
programowo konfigurowany kur-
sor.
Tryby mog¹ ze sob¹ wspÛ³pra-
cowaÊ w†rÛønych stylach:
OR - sumowanie - znaki i†grafika
s¹ wyúwietlane niezaleønie od
siebie,
alne wysterowanie kaødego pik-
sela zapewnia zespÛ³ driverÛw
(U1 - wiersze, U2, U3, U4 -
kolumny) podaj¹cych w†odpo-
wiednie miejsca ekranu napiÍcie
przemienne miÍdzy elektrodami
wiersza i kolumny. Odpowiednie
napiÍcia s¹ formowane z†zewnÍt-
rznego zasilania przez pomocni-
czy uk³ad U7.
Wszelkimi operacjami logicz-
nymi oraz komunikacj¹ zajmuje
siÍ zespÛ³ steruj¹cy: kontroler U5
wspÛ³pracuj¹cy z†pamiÍci¹ SRAM
8kBx8 - U6, wspomagany deko-
derem U8 i†rezonatorem ceramicz-
nym XTAL. Jako kontroler pracuje
uk³ad Toshiby T6963C. Chociaø
w†wyúwietlaczach graficznych nie
ma tak uniwersalnego standardu
jaki stanowi na przyk³ad uk³ad
Hitachi HD44780 w†wyúwietla-
czach alfanumerycznych - to
T6963C jest spotykany dosyÊ czÍs-
to i†opisane dalej zasady jego
obs³ugi mog¹ siÍ przydaÊ takøe
dla innych typÛw wyúwietlaczy.
£¹cznoúÊ kontrolera z†otoczeniem
zapewnia 20-pinowe typowe z³¹-
cze (piny widziane od strony
panelu - nie od strony gniazda):
1- FGND - masa obudowy (me-
talowej ramki mocuj¹cej panel
LCD)
2- GND (inaczej Vss) - masa
3- Vdd - zasilanie uk³adÛw logiki
(+5V)
4- Vee - zasilanie panelu LCD
(regulacja kontrastu - ok. -10V)
5- WR - zapis (aktywny poziom
niski)
6- RD - odczyt (aktywny poziom
niski)
7- CE - wejúcie zezwalaj¹ce (ak-
tywny poziom niski)
8- C/D - prze³¹czanie: komendy/
dane (HI - komenda, LO - dana)
9- NC - nie pod³¹czone
10 - RESET - zerowanie (pozio-
mem niskim)
11 - 18 - D0..D7 - magistrala
danych
19 - FS - wybÛr szerokoúci fontu
(HI - 6x8, LO - 8x8) (dla trybu
tekstowego)
20 - NC - nie pod³¹czone
Operuj¹c odpowiednio po-
wyøszymi sygna³ami realizu-
jemy potrzebne sekwencje za-
pisu i†odczytu komend i†da-
nych. Zaleønoúci czasowe po-
miÍdzy sygna³ami zosta³y
przedstawione na rys. 2 .
Jak widaÊ, jest tu wiele
zbieønoúci ze sposobem ste-
rowania wyúwietlaczem alfa-
numerycznym, chociaø oczy-
wiúcie wystÍpuje o†wiele wiÍ-
cej komend, trybÛw pracy itp.
Kilka s³Ûw o†napiÍciach
zasilania. Uk³ady logiczne
maj¹ typowe, w³asne zasila-
nie +5V. NapiÍcie dla pane-
lu LCD jest natomiast formo-
wane z†napiÍÊ Vdd i†Vee.
Maksymalny zakres Vee to
-12V do -6V. Naleøy zapew-
niÊ regulacjÍ tego napiÍcia,
gdyø jego optymalna wartoúÊ
(decyduj¹ca o†kontraúcie) za-
leøy (w granicach ok. 1V) od
egzemplarza wyúwietlacza.
Rys. 2. Przebiegi czasowe charakteryzujące
interfejs wyświetlacza LM24014H.
58
Elektronika Praktyczna 6/99
39512932.015.png 39512932.016.png 39512932.017.png 39512932.001.png 39512932.002.png 39512932.003.png
Programowanie sterowników wyświetlaczy graficznych
Rys. 3. Format i znaczenie stanów sterujących.
STA 2 †- gotowoúÊ
do odczytu danej
w†trybie AUTO: 1†-
gotÛw, 0†- zajÍty
STA 3 †- gotowoúÊ
do zapisu danej
w†trybie AUTO: 1†-
gotÛw, 0†- zajÍty
STA 4 †- nieistotny
STA 5 †- wskaünik
stanu po zerowaniu
(przez ok. 2ms po
zerowaniu kontroler
stabilizuje zegar
i†nie wykonuje ope-
racji)
STA 6 †- wskaünik b³Ídu w†niektÛ-
rych operacjach dotycz¹cych ob-
szaru graficznego, b³¹d (1) jest
sygnalizowany przy prÛbie ope-
racji graficznej pod adresem
wykraczaj¹cym poza ustawiony
obszar graficzny pamiÍci
STA 7 †- wskaünik migania: 1†-
w³¹czony, 0†- wy³¹czony.
Status odczytujemy przy pozio-
mie wysokim na linii C/D (zestaw
sygna³Ûw przy poszczegÛlnych
operacjach jest przedstawiony na
rys. 3 ).
Komendy mog¹ byÊ bez argu-
mentÛw, z†argumentem 1-bajtowym
lub z†argumentem 2-bajtowym. Tro-
chÍ nietypowy jest spo-
sÛb wprowadzania argu-
mentÛw: wpisujemy je
w†pierwszej kolejnoúci
w†operacjach zapisu da-
nych, a†dopiero potem -
w†operacji zapisu ko-
mendy - wpisujemy kod
komendy informuj¹c
kontroler co ma zrobiÊ
z†juø przes³anymi argu-
mentami.
Dane moøemy wpro-
wadzaÊ pojedynczo (ko-
mendami zapisu jedne-
go bajtu), dla wiÍkszych
blokÛw danych naleøy
jednak uøywaÊ trybu
AUTO - kolejne wpisy-
wane bajty danych s¹
w†tym trybie przyjmo-
wane bez dodatkowej
komendy, z†jednoczesn¹
inkrementacj¹ adresu
w†pamiÍci RAM.
Przyk³adowe sek-
wencje operacji s¹
przedstawione na rys.
4 . Poniøej zamieszczono
dok³adne opisy po-
szczegÛlnych komend.
Konfiguracja pamiÍci . Argument
dwubajtowy D1, D2, kod
010000AA:
AA=00 - ustawienie adresu po-
cz¹tku obszaru tekstowego w†pa-
miÍci, w†D1 m³odszy bajt adre-
su, w†D2 starszy bajt adresu;
AA=01 - ustawienie szerokoúci
pola tekstowego (liczby znakÛw
w†linii), w†D1 liczba kolumn,
D2=0;
AA=10 - ustawienie adresu po-
cz¹tku obszaru graficznego w†pa-
miÍci, w†D1 m³odszy bajt adre-
su, w†D2 starszy bajt adresu;
AA=11 - ustawienie szerokoúci
ekranu graficznego (w 6-pikse-
lowych patternach ) w†D1 liczba
kolumn, D2=0.
AND - iloczyn - zapalone zostaj¹
tylko piksele, ktÛre s¹ aktywne
w†obu trybach,
EXOR - wy³¹cznoúÊ - zapalone
zostaj¹ tylko piksele rÛøni¹ce
siÍ w†obu trybach,
ATTR - tekst z†atrybutami (grafika
musi byÊ wy³¹czona - atrybuty
s¹ pobierane z†obszaru graficz-
nego pamiÍci). Wszystkie nie-
zbÍdne dane s¹ przechowywane
w†pamiÍci U6 w†wydzielonych
obszarach: grafiki, tekstu, gene-
ratora CG-RAM, atrybutÛw tek-
stu. Adresy tych obszarÛw s¹
wprowadzone do kontrolera
podczas konfiguracji. Kaøda
zmiana zawartoúci pamiÍci jest
samoczynnie przenoszona na ek-
ran. Poniewaø pamiÍÊ ma struk-
turÍ liniow¹ - dodatkowo wpi-
sujemy do kontrolera ø¹dan¹
szerokoúÊ pola tekstu lub obrazu
(w znakach tekstowych oraz
patternach graficznych), co po-
zwala podzieliÊ obszar pamiÍci
na poszczegÛlne wiersze. Loka-
lizacja poszczegÛlnych obszarÛw
jest dowolna.
Zapis do wewnÍtrznych rejest-
rÛw . Argument dwubajtowy D1,
D2, kod 00100AAA:
AAA=001 - ustawienie pozycji
kursora, w†D1 wspÛ³rzÍdna po-
zioma x†w†zakresie 0..127 (7
bitÛw), w†D2 wspÛ³rzÍdna pio-
nowa y†(od gÛry) w†zakresie
0..31 (5 bitÛw);
AAA=010 - ustawienie offsetu
³adowalnego generatora znakÛw
(CG-RAM), w†D1 offset w†zakre-
sie 0..31 (5 bitÛw), D2=0;
Sterowanie wyúwietlaczem
Do wyúwietlacza wysy³amy ko-
mendy konfiguracyjne i†steruj¹ce
oraz potrzebne dane. OdczytywaÊ
moøemy status, zawartoúÊ pamiÍci
oraz ekranu. W†praktyce najbar-
dziej potrzebny jest odczyt statu-
su, gdyø przed kaødym wpisem
danej lub komendy do kontrolera
musimy sprawdziÊ czy jest on
gotÛw na jej przyjÍcie, o†czym
úwiadczy ustawienie odpowied-
nich bitÛw w†s³owie statusu:
STA 0 †- gotowoúÊ do zapisu in-
strukcji: 1†- gotÛw, 0†- zajÍty
STA 1 †- gotowoúÊ do zapisu/
odczytu danej: 1†- gotÛw, 0†-
zajÍty
Rys. 4. Algorytmy sterowania wyświetlaczem
LM24014H.
Elektronika Praktyczna 6/99
59
39512932.004.png 39512932.005.png 39512932.006.png 39512932.007.png 39512932.008.png 39512932.009.png 39512932.010.png 39512932.011.png
 
Programowanie sterowników wyświetlaczy graficznych
komendy dotycz¹cej jednego baj-
tu. Schemat uøycia do zapisu
jest pokazany na rys. 4. Naleøy
pamiÍtaÊ, øe przy w³¹czonym
trybie AUTO gotowoúÊ kontro-
lera okreúlaj¹ oddzielne bity
s³owa statusu (STA2 dla odczy-
tu, STA3 dla zapisu).
AA=00 - w³¹czenie trybu AUTO
do zapisu,
AA=01 - w³¹czenie trybu AUTO
do odczytu,
AA=1* - wy³¹czenie trybu AUTO
(* - stan dowolny).
Bit 2 †- ekran tekstowy widoczny,
Bit 3 †- ekran graficzny widoczny.
Ustawianie stylu wyúwietlania .
Komenda bez argumentu, kod
1000AAAA.
Bity 0,1,2 stanowi¹ prze³¹cznik
stylu:
AAA=000 - OR (suma grafiki
i†tekstu),
AAA=001 - EXOR (wyúwietlanie
rÛønicowe grafiki i†tekstu),
AAA=011 - AND (iloczyn grafiki
i†tekstu),
AAA=100 - tekst z†atrybutami.
Bit 3†stanowi niezaleøn¹ flagÍ
wyboru generatora znakÛw: 1†-
³adowany CG-RAM, 0†- wbudowa-
ny CG-ROM. Przy w³¹czeniu atry-
butÛw tekstu naleøy kody atrybu-
tÛw ulokowaÊ w†obszarze graficz-
nym pamiÍci. Jednoczeúnie ozna-
cza to, øe tryb graficzny jest przy
uøyciu atrybutÛw nieaktywny.
Moøna albo prze³adowaÊ obszar
graficzny kodami atrybutÛw, albo
wydzieliÊ dla atrybutÛw oddzielny
blok pamiÍci i†odpowiednio prze-
stawiÊ adres obszaru graficznego.
Kody atrybutÛw wykorzystuj¹
4 najm³odsze bity:
0000 - znak normalny,
0011 - znak wygaszony,
1000 - znak migaj¹cy.
W†dokumentacji sterownika po-
dano takøe 0101 - inwersja, ale nie
wiedzieÊ czemu nie uda³o mi siÍ
tego uzyskaÊ. Generator CG-ROM
pomija znaki steruj¹ce - zaczyna siÍ
od spacji $20. Naleøy wiÍc odpo-
wiednio przeliczyÊ kody ASCII przy
³adowaniu tekstu. Jeúli chcemy uøy-
waÊ w³asnych znakÛw musimy nie-
stety za³adowaÊ wszystko - nie
moøna korzystaÊ czÍúciowo z†ROM
i†RAM. U³atwieniem jest zamiesz-
czony w†kodzie ürÛd³owym przyk³a-
dowy generator z†polskimi znakami.
Rys. 5. Okno programu testowego.
Ustawienie rozmiaru kursora .
Komenda bez argumentu, kod
10100AAA:
AAA+1 = wysokoúÊ kursora (np.
AAA=000 - jedna linia od do³u,
AAA=111 - kursor na ca³y obszar
znaku).
AAA=100 - ustawienie wskaüni-
ka adresowego, w†D1 m³odszy
bajt adresu, w†D2 starszy bajt
adresu - nastÍpnie wykonywa-
ne operacje zapisu lub odczytu
bÍd¹ dotyczyÊ tego adresu. Do-
datkowego wyjaúnienia wyma-
ga offset CG-RAM. Struktura
generatora znakÛw jest nastÍ-
puj¹ca:
Odczyt/zapis bajtu danych . Ko-
menda bez argumentu przy od-
czycie, natomiast z†argumentem
jednobajtowym D1 przy zapisie,
kod 11000AAA.
Mechanizm uøywania jest nastÍ-
puj¹cy: najpierw naleøy ustawiÊ
wskaünik adresu, przy zapisie -
wpisaÊ dan¹ D1 i†komendÍ z†ko-
dem do zapisu, kontroler ulokuje
D1 pod podanym adresem. Przy
odczycie - wpisaÊ komendÍ z†ko-
dem do odczytu (kontroler przy-
gotuje zawartoúÊ podanego wczeú-
niej adresu) i†odczytaÊ dan¹.
AAA=000 - zapis danej z†inkre-
mentacj¹ wskaünika adresowego,
AAA=001 - odczyt danej z†inkre-
mentacj¹ wskaünika adresowego,
AAA=010 - zapis danej z†dekre-
mentacj¹ wskaünika adresowego,
AAA=011 - odczyt danej z†dekre-
mentacj¹ wskaünika adresowego,
AAA=1*0 - zapis danej bez zmia-
ny wskaünika adresowego,
AAA=1*1 - odczyt danej bez
zmiany wskaünika adresowego
(* - stan dowolny).
opis kaødego znaku jest za-
warty w†8-bajtowym obszarze
pamiÍci (kolejne bajty opisuj¹
kolejne wiersze znaku),
kod znaku podany w†obszarze
tekstowym ekranu (0..$ff)
wskazuje na odpowiedni opis
znaku - do ulokowania pe³nej
tablicy znakÛw potrzebujemy
wiÍc 8x256=2048 bajtÛw (2kB),
ktÛrych zaadresowanie wyma-
ga 10 bitÛw.
Offset CG-RAM okreúla lokacjÍ
2†kB generatora w†8†kB pamiÍci -
inaczej mÛwi¹c jest najstarszymi,
pocz¹wszy od 11, bitami adresu.
Na przyk³ad offset=1 ustawia po-
cz¹tek obszaru generatora na $800
(rzecz jasna naleøy zadbaÊ, aby
generator mieúci³ siÍ w†granicach
obszaru pamiÍci!).
Ustawianie trybu wyúwietlania .
Komenda bez argumentu, kod
1001AAAA. W†tej komendzie bi-
ty 0..3 s¹ uøyte jako flagi, czyli
mog¹ byÊ ustawiane niezaleønie.
Ustawienie (1) oznacza w³¹cze-
nie przypisanego danej fladze
trybu.
Bit 0 †- miganie kursora,
Bit 1 †- kursor widoczny,
Tryb AUTO . Komenda bez ar-
gumentu, kod 101100AA.
Pozwala na za³adowanie lub
odczyt kolejno wiÍkszej liczby
bajtÛw danych bez kaødorazo-
wego wywo³ywania poprzedniej
Zapalanie indywidualnego bitu .
Komenda bez argumentu, kod
1111AAAA.
60
Elektronika Praktyczna 6/99
 
39512932.012.png
Programowanie sterowników wyświetlaczy graficznych
Bity 0,1,2 okreúlaj¹ pozycjÍ
bitu w†bajcie (wskazywanym
przez zawartoúÊ wskaünika ad-
resowego). Bit 3†oznacza: 1†-
zapalenie piksela, 0†- zgaszenie
piksela.
3. Wpisanie odpowiedniej liczby
danych.
4. Wy³¹czenie trybu AUTO.
Powyøszy opis nie obj¹³ mniej
przydatnych w†praktycznym wy-
korzystaniu wyúwietlacza funkcji
odczytywania zawartoúci ekranu,
kopiowania linii, czy teø uøywa-
nia okna przewijanego - pozosta-
wiam to Czytelnikom do ewentu-
alnych w³asnych eksperymentÛw.
Rzecz jasna, w†rzeczywistych
aplikacjach konieczne jest przygo-
towanie sobie szeregu - zaleønie
od potrzeb - funkcji graficznych,
np. rysuj¹cych linie, ramki, wykre-
sy itp. Bardzo efektownym przy-
k³adem takiej profesjonalnej biblio-
teki jest Window Server w†palm-
topach Psion. We w³asnych pro-
jektach jednakøe na ogÛ³ wystarcz¹
znacznie prostsze rozwi¹zania.
W†szczegÛlnoúci czÍsto moøemy
mieÊ do czynienia z†³adowaniem
pe³noekranowej grafiki (logo firmo-
we, t³o itd.). Do przygotowania
grafiki w†formacie zgodnym z†po-
trzebami wyúwietlacza s³uøy spe-
cjalnie napisany program. Pracuje
on w†úrodowisku Windows i†po-
zwala na przekodowanie typowych
plikÛw *.bmp. Dodatkowo moøna
z†jego pomoc¹ wygenerowaÊ goto-
wy tekstowy plik assemblerowy do
do³¹czenia do oprogramowania
mikrokontrolera steruj¹cego wy-
úwietlaczem. Wygl¹d okna progra-
mu przedstawia rys. 5 .
Jerzy Szczesiul,
jerzy.szczesiul @ ep.com.pl
Typowe operacje
Po zerowaniu lub w³¹czeniu
zasilania naleøy przeprowadziÊ
inicjalizacjÍ. Naleøy zw³aszcza
zwrÛciÊ uwagÍ na fakt, øe zero-
wanie nie zmienia rejestru stylu
wyúwietlania - brak jawnego usta-
wienia stylu powoduje zagadko-
wy brak startu wyúwietlacza. Sek-
wencja operacji wygl¹da np. na-
stÍpuj¹co:
1. Zerowanie i†ustawienie:
- stylu, np. OR + CG-RAM,
- adresu pola grafiki,
- szerokoúci ekranu graficznego,
- adresu pola tekstowego,
- szerokoúci ekranu tekstowego,
- offsetu CG-RAM,
2. Za³adowanie generatora zna-
kÛw.
3. Zerowanie pamiÍci tekstowej.
4. Za³adowanie pamiÍci graficz-
nej.
5. W³¹czenie trybu graficznego.
£adowanie bloku danych naj-
lepiej - jak juø wspomnia³em -
wykonaÊ z†uøyciem trybu AUTO
(patrz teø rys. 4):
1. Ustawienie wskaünika adreso-
wego na pocz¹tek ³adowanego
obszaru.
2. W³¹czenie trybu AUTO do
zapisu.
Elektronika Praktyczna 6/99
61
39512932.013.png
Zgłoś jeśli naruszono regulamin