Sie sind auf Seite 1von 7

KATEDRA INFORMATYKI

Wydzia EAIiE AGH

Technika Mikroprocesorowa

wiczenie 7
Obsuga graficznego wywietlacza LCD
1. Wstp

1.1. Cel wiczenia


wiczenie polega na utworzeniu kilku prostych elementw interfejsu uytkownika
wywietlanych na kolorowym wywietlaczu LCD telefonu komrkowego. wiczenie skada si
bdzie z 2 etapw:
1. Napisanie funkcji wywietlajcej tekst.
2. Implementacja rysowania wybranego ksztatu lub elementu interfejsu uytkownika na
wywietlaczu.
Bardziej szczegowy opis zada do wykonania znajduje si w punkcie 3 instrukcji.
wiczenie umoliwia zaznajomienie si ze sposobami niskopoziomowej implementacji prostych
elementw graficznego interfejsu uytkownika. Umiejtnoci te mog si okaza przydatne przy
tworzeniu oprogramowania dla urzdze mikroprocesorowych wyposaonych w mikrokontrolery o
maej i redniej mocy obliczeniowej.

1.2. Wymagane umiejtnoci


Podstawy tworzenia oprogramowania dla mikrokontrolerw ARM
Dobra znajomo jzyka C
Podstawy posugiwania si kompilatorem GCC dla ARM
Zalenoci czasowe na magistrali SPI

1.3. Wykorzystywany sprzt


Pytka testowa z mikrokontrolerem AT91SAM9260 z rdzeniem ARM926EJ-S
Komputer PC z kompilatorem GCC dla Windows, skonfigurowanym edytorem tekstowym i
programem terminalowym
Programowanie mikrokontrolera oraz debugowanie kodu mona przeprowadzi przy pomocy
programu HyperTerminal. Szczegowe instrukcje programowania wewntrznej pamici
mikrokontrolera znajduj si w dalszej czci instrukcji.

2. Wywietlacz LCD

2.1. Ukad scalony sterownika wywietlacza LCD


Wywietlacz graficzny do telefonw Nokia 6610 ma rozdzielczo 132 na 132 piksele i jest
wyposaony w specjalny ukad scalony sterownika matrycy LCD. Sterownik taki ma wbudowan
pami RAM przechowujc wywietlany obraz, odpowiada on take za wysterowanie rzdw i
kolumn matrycy oraz za odbieranie danych z mikrokontrolera, do ktrego jest podczony. Dziki
sterownikowi w wywietlaczu LCD, programista nie musi si troszczy o generowanie
analogowych sygnaw sterujcych rzdy i kolumny matrycy LCD, a moe skoncentrowa si
wycznie na wygenerowaniu odpowiednich sygnaw cyfrowych.
W wywietlaczach do telefonw Nokia 6610 moe znajdowa si jeden z dwch typw
sterownikw: S1D15G00 firmy Epson lub PCF8833 firmy Philips. O tym, ktry sterownik znajdzie
si w danym egzemplarzu wywietlacza, decyduje przypadek (rdo, z ktrego pochodzi
wywietlacz i partia, z ktrej kupiony by dany egzemplarz). Niezalenie jednak od typu
sterownika, interfejs elektryczny wywietlacza pozostaje jednakowy. Sterowniki wywietlaczy do
telefonw komrkowych najczciej montowane s bezporednio na szkle stanowicym nonik
matrycy LCD. W omawianym wywietlaczu pytka krzemowa sterownika jest widoczna z przodu
wywietlacza i jest zalana dookoa mas silikonow.
Rozwizania z pamici RAM wbudowan w sterownik spotykane s gwnie w wywietlaczach o
niszej rozdzielczoci takich jak omawiany w niniejszej instrukcji. Wywietlacze LCD o wysokich
rozdzielczociach (np. spotykane w laptopach lub monitorach) nie posiadaj wasnej pamici RAM,
przez co dane z obrazem musz by bardzo szybko wpisywane od nowa (mwimy, e obraz musi
by odwieany). Typowe czstotliwoci odwieania wynosz kilkadziesit Hz, czyli cay obraz
musi by wpisywany do takiej matrycy kilkadziesit razy na sekund.

2.2. Interfejs elektryczny wywietlacza


Sterowniki wywietlaczy do telefonw nokia 6610 s wyposaone w interfejs SPI (Serial
Peripheral Interface). Dane w takim przypadku przesyane s szeregowo i synchronicznie. Oznacza
to, e kady bit transmitowany jest do wywietlacza osobno, a o czasie trwania kadego bitu
decyduje sygna zegarowy taktujcy transmisj. W najprostszych implementacjach komunikacji z
omawianym wywietlaczem LCD wystarcza przesyanie danych w jedn stron, tylko w kierunku
od mikrokontrolera do wywietlacza. Wywietlacze do telefonw Nokia 6610 maj moliwo
komunikacji w obie strony, lecz w wikszoci zastosowa nie jest to wykorzystywane.
Przykadowe przebiegi podczas transmisji danych do wywietlacza przedstawione zostay na
rysunku poniej. Wida na nim przesyanie do wywietlacza dwch 9-bitowych ramek. Pierwszy bit
(DC od Data/Command) suy do rozrnienia, czy transmitowane jest polecenie (komenda) dla
sterownika, czy dane. Pozostae 8 bitw stanowi albo komend albo dane.

Dane przesyane s szeregowo pojedyncz lini SDIN (od Serial Data In patrzc od strony
wywietlacza). Sygna zegarowy taktujcy transmisj nosi tutaj nazw SCLK (od Serial Clock).
Sygna ~SCE suy do uaktywniania sterownika wywietlacza jako ukadu podrzdnego magistrali
SPI. Stan niski na tym sygnale oznacza, e wywietlacz ma odbiera nadchodzce od
mikrokontrolera dane. Na rysunku powyej nie zaznaczono sygnau ~RES (Reset). Stan niski na tej
linii oznacza zerowanie wywietlacza i do normalnej pracy wywietlacza, ma on by cay czas
utrzymywany w stanie wysokim.
Interfejs SPI mona zaimplementowa w praktycznie wszystkich mikrokontrolerach programowo,
generujc potrzebne sygnay przy pomocy kontrolerw linii uniwersalnego wejcia-wycia (PIO).
Mona take skorzysta z dedykowanych ukadw peryferyjnych mikrokontrolera oferujcych
sprztowe wspomaganie SPI.
Podczenie wyprowadze wywietlacza do mikrokontrolera AT91SAM9260 w omawianym
wiczeniu jest nastpujce:
AT91SAM9260 LCD
PB0 ~RES
PB3 ~SCE
PB1 SDIN
PB2 SCLK
2.3. Obsuga wywietlacza LCD
Najbardziej podstawowe procedury obsugi wywietlaczy LCD to:
inicjalizacja sterownika wywietlacza,
wpisywanie danych do wywietlacza.
Najczciej wywietlacze LCD po podczeniu zasilania s w stanie upienia (ograniczonego
poboru prdu) i wikszo ich funkcjonalnoci jest wyczona (w tym oczywicie wywietlanie
obrazu). Inicjalizacja wywietlacza potrzebna jest przede wszystkim aby:
uaktywni wszystkie potrzebne moduy sterownika wywietlacza (przetwornice
podwyszajce napicie, sterowniki wierszy i kolumn matrycy itp.)
ustawi parametry pracy wywietlacza, poniewa bardzo czsto jeden typ sterownika moe
obsugiwa rne matryce LCD, np. o rnych rozdzielczociach.
Dla uatwienia pracy, funkcja inicjalizujca oraz funkcja wpisujca dane do wywietlacza zostay
dostarczone razem z pustym projektem, od ktrego mona rozpocz wykonywanie wiczenia.
Definicje tych funkcji znajduj si w pliku lcd.c projektu startowego. Funkcja inicjalizujca nosi
nazw lcdInit i wystarczy j wywoa bez adnych parametrw. Natomiast funkcja wpisujca dane
graficzne do wywietlacza nosi nazw lcdIOUpdate. Naley j wywoa podajc wskanik do
pocztku tablicy typu uint16_t zawierajcej odwzorowanie obrazu do wywietlenia. Kolejne
elementy tej tablicy reprezentuj piksele na wywietlaczu rozpoczynajc od strony lewej do prawej,
a nastpnie wierszami od grnej krawdzi wywietlacza do dolnej tak jak na poniszym rysunku.
x=131
x=0

x=1

x=2

x=3

y=0 0 1 2 3 ... 130 131


y=1 132 133 134

...

powierzchnia wywietlacza

y=131

Kady 16-bitowy element tablicy odpowiada jednemu pikselowi. Na rysunku poniej


przedstawiono rozmieszczenie bitw odpowiadajcych danym skadowym kolorystycznym piksela.
Dodatkowo przedstawiono na nim przykadowe liczby, ktre naley wpisa do wybranych
elementw tablicy z obrazem w celu uzyskania podstawowych kolorw.
nr bitu 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 hex

kolor R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B1 B1 B0 B1 B0
czerwony 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 F800
zielony 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 07E0
niebieski 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 001F
czarny 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000
biay 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 FFFF

2.4. Korzystanie z funkcji obsugi wywietlacza LCD


Korzystajc z dostarczonych gotowych funkcji obsugi wywietlacza, wywietlanie obrazu jest
bardzo prost czynnoci. W swoim programie naley:
na pocztku wywoa funkcj lcdInit w celu wczenia i zainicjalizowania wywietlacza,
utworzy jedno lub dwuwymiarow tablic elementw typu uint16_t o rozmiarach
odpowiadajcych rozdzielczoci wywietlacza,
ustawi wartoci wybranych elementw tablicy tak, aby reprezentoway odpowiedni kolor,
wywoa funkcj lcdIOUpdate podajc w jej jedynym argumencie wskanik do pocztku
utworzonej tablicy z obrazem.
Funkcj lcdIOUpdate naley wywoywa za kadym razem, gdy chcemy, by obraz zosta
odwieony, czyli przepisany z pamici mikrokontrolera do pamici sterownika wywietlacza. W
pliku lcd.h znajduje si kilka makrodefinicji, ktre mog by przydatne przy tworzeniu kodu
generujcego grafik. M.in. mona tam znale makrodefinicje okrelajce rozmiar wywietlacza:
#define LCD_X_SIZE 132
#define LCD_Y_SIZE 132
oraz przykadowe kolory:
#define LCD_COLOR_RED 0xF800
#define LCD_COLOR_GREEN 0x07E0
#define LCD_COLOR_BLUE 0x001F
#define LCD_COLOR_BLACK 0x0000
#define LCD_COLOR_WHITE 0xFFFF
Kolory zdefiniowane tutaj mona w prosty sposb miesza przy pomocy operacji sumy logicznej.

2.5. Kompilacja i programowanie pamici mikrokontrolera


Do pisania kodu najwygodniej jest skorzysta ze skonfigurowanego edytora Programmer's
Notepad 2 (plik wykonywalny pn.exe z katalogu C:\WinARM\portable-pn20101010).
Kompilacja napisanego kodu odbywa si przez wcinicie przycisku F7. W efekcie poprawnie
wykonanej kompilacji wygenerowany zostanie plik wynikowy main.bin.
W celu wykonania pliku wynikowego na mikrokontrolerze, naley go umieci w pamici SDRAM
doczonej do AT91SAM9260. Kopiowanie pliku wynikowego do pamici SDRAM odbywa si
przy pomocy specjalnego programu bootloadera, ktry uruchamia si po wciniciu przycisku RST
(Reset) na pytce testowej (zaznaczony na rysunku poniej).

Program bootloadera wymaga wysania pliku wynikowego protokoem Xmodem. Protok ten jest
obsugiwany np. przez program HyperTerminal.
W celu nawizania komunikacji pomidzy programem terminalowym a bootloaderem, naley
otworzy poczenie przez port szeregowy z nastpujcymi parametrami transmisji: 115200 baud, 8
bitw danych, 1 bit stopu, brak bitu parzystoci, wyczona sprztowa kontrola przepywu.
Gotowo bootloadera sygnalizowana jest komunikatem:
SDRAM Bootloader. Send file to SDRAM
a nastpnie znakami "C" pojawiajcymi si na ekranie terminala. Mona wtedy wysa do pamici
mikrokontrolera plik main.bin uywajc polecenia "Wylij plik" z menu gwnego "Transfer".W
oknie dialogowym, ktre si pojawi, naley wybra plik do wysania i rodzaju protokou Xmodem.

3. Zadania do wykonania
Ponisza instrukcja zawiera jedynie przykadowe zadania, ktre mona wykona w ramach
laboratorium. Konkretne zadania zostan indywidualnie ustalone z prowadzcym.

3.1. Funkcja tworzca tekst


Korzystajc z dostarczonego pliku z tablicami staych zawierajcych czcionki i szerokoci
poszczeglnych znakw, naley napisa funkcj pobierajc jako argumenty:
wskanik do acucha znakowego typu char,
wsprzdne x i y, na ktrych ma zaczyna si tekst,
kod koloru.
Funkcja po wywoaniu ma wywietli tekst przekazany przez wskanik do jej pierwszego
argumentu na zdanych wsprzdnych i o wybranym kolorze. Dodatkowo mona zaimplementowa
zabezpieczenia przed przekroczeniem granic wywietlacza. Plik z czcionkami nosi nazw
font_lib.c i znajduje si w katalogu projektu startowego (mona take zastosowa wasny plik z
czcionkami). Plik jest doczony do listy listy moduw kompilowanych w projekcie startowym,
wic nie trzeba go docza po raz kolejny.
3.2. Rysowanie zadanego ksztatu lub wykresu
Naley ustali z prowadzcym, jak funkcj naley napisa. Przykadowe tematy wypisane s
poniej.
1. Funkcja rysujca odcinek zaczynajcy si i koczcy na wsprzdnych przekazanych w
argumentach oraz w kolorze, ktrego kod zostanie przekazany w argumencie.
2. Funkcja rysujca koo lub okrg o parametrach przekazanych w argumentach do niej.
3. Funkcja rysujca wykres, ktrego niektre parametry mona modyfikowa podajc
rne argumenty do niej, np. skal X i Y, przesunicie na Y
4. Funkcja rysujca pasek postpu w kolorach zalenych od wypenienia paska i
wywietlajca go na wsprzdnych przekazanych w argumentach.

4. Literatura
[1] James P. Lynch, Nokia 6100 LCD Display Driver, Rev. 1,
http://www.sparkfun.com/tutorial/Nokia%206100%20LCD%20Display%20Driver.pdf
[2] ARM, ARM Architecture Reference Manual
[3] Atmel, nota katalogowa mikrokontrolera AT91SAM9260
[4] Schemat pytki testowej AT91SAM9260 produkcji Olimex.

Das könnte Ihnen auch gefallen