Kurs AVR6, Elektronika i programowanie
[ Pobierz całość w formacie PDF ]Kurs AVR-GCC Wyświetlacz LCD od Nokii_3310
Artykuł jest dodatkiem poszerzającym tematykę publikowanego na tej stronie .
Jak mówią, jeden obraz wart jest tysiąca słów, dlatego warto zainteresować się wyświetlaczami graficznymi. W tym artykule zajmiemy się wykorzystaniem wyświetlaczy LCD od popularnych niegdyś telefonów komórkowych Nokia 3310/3410. Pewnie niektórzy czytelnicy zastanawiają się, czemu nie wybrałem dużego, kolorowego wyświetlacza o rozdzielczości QVGA. Przede wszystkim ze względu na cenę, szkoda montować w każdym urządzeniu modułu LCD kosztujący ponad 100zł, zaś wyświetlacze od starych komórek praktycznie nic nie kosztują i też są fajne:) Wyświetlacz od nokii 3310 można kupić na allegro za około 7zł, najlepiej zamówić dwa trzy egzemplarze, na wypadek uszkodzenia - oczywiście u sprzedawcy bez negatywnych komentarzy.
Wyświetlacz LCD od telefonu Nokia 3310 posiada monochromatyczny ekran o rozdzielczość 84x48 (wymiary czynnego pola ekranu 30x20mm). Wyposażony jest w sterownik PCD8544(lub podobny) z szeregowym interfejsem SPI. Dostępny jest wyłącznie tryb graficzny, ale można łatwo programowo zaaranżować tryb tekstowy; przykładowo można pokazać 6 linii tekstu, każda po 14 znaków wielkości 6x8 pikseli.
Wyświetlacz od telefonu nokia 3310 wraz z oryginalną ramką. Identycznie wygląda wyświetlacz od noki 3410.
Wyświetlacz od telefonu nokia 3310 wydobyty z ramki.
Wyświetlacz od Nokii3410 wygląda identycznie jak wyświetlacz od Nokii3310, ten sam układ wyprowadzeń złącza, ale ma nieco większą rozdzielczość: 96x65 (można pokazać 8 linii tekstu, każda po 16 znaków 6x8). Wyświetlacz od Nokii3410 wyposażony jest w kontroler "Philips OM6206", który programuje się prawie w ten sam sposób jak kontroler PCD8544 z Nokii3310. Do obsługi obu typów wyświetlaczy będziemy wykorzystywać te same funkcje napisane w języku C.
LCD Nokia 3310
LCD Nokia 3410
Rozdzielczość
84x48
96x65
kontroler
PCD8544
OM6206
Wyświetlacze LCD od telefonów Nokia 3310/3410
Podłączenie wyświetlacza do mikrokontrolera AVR
Wyświetlacz jest delikatnym elementem, dlatego lepiej jest pozostawić go w jego oryginalnej ramce. Ramkę można odpowiednio przyciąć i wraz z wyświetlaczem przykręcić wkrętami do jakieś płytki, albo przykleić.
Na tylnej stronie ramki wyświetlacza dostępne jest złącze; w telefonie miedziane styki złącza przylegają do ścieżek na płytce drukowanej.
Złącze na tylnej stronie wyświetlacza.
Nr styku
Sygnał
kierunek
Opis
1
VDD
zasilanie
Zasilanie 2.7 .. 3.3 V
2
SCLK
wejście
Serial clock. Sygnał zegarowy taktujący dane na linii SDIN
3
SDIN
wejście
Wejście danych synchronizowane sygnałem SCLK
4
D/C
wejście
Wejście wyboru rodzaju danych wprowadzanych do sterownika (wyświetlane-1,sterujące -0)
5
SCE
wejście
Wejście aktywujące interfejs szeregowy(aktywny stan niski)
6
GND
zasilanie
Masa zasilania
7
VOUT
zasilanie
Ouptut voltage. Kondensator elektrolityczny 1-10 uF między VOUT i GND.
8
/RES
input
Reset LCD (aktywny stan niski)
Opis wyprowadzeń w złączu wyświetlacza od noki 3310/3410
Najprostszym sposobem przyłączenia wyświetlacza jest przylutować przewody bezpośrednio do miedzianych styków złącza, bez rozbierania ramki. Ale trzeba lutować szybko i zdecydowanie, inaczej plastykowa listwa, na której osadzone są miedziane styki złącza może się pod wpływem ciepła roztopić i odkształcić.
Najprostszym sposobem przyłączenia wyświetlacza jest przylutować przewody do miedzianych styków złącza, bez wyciągania wyświetlacza z oryginalnej ramki.
Wyświetlacz z przewodami przystosowanymi do podłączenia do płytki stykowej.
Wyświetlacz wymaga napięcia zasilania 2.7-3.3 VDC, zatem najprościej jest zasilać całość: mikrokontroler i wyświetlacz napięciem 3.3V. W takim przypadku wejścia sygnałowe wyświetlacza można podłączyć bezpośrednio do wyprowadzeń portów we/wy mikrokontrolera. Na schematach wejścia sygnałowe wyświetlacza połączone są do wyprowadzeń mikrokontrolera skojarzonych ze sprzętowym interfejsem SPI AVRa atmega. W przykładowych programach, które będziemy dalej uruchamiać, można wybrać sprzętowe lub programowe SPI; w przypadku wyboru programowego SPI, sygnały sterujące wyświetlaczem można przyłączyć do dowolnych porów we/wy AVRa.
Schemat 1 Sposób przyłączenia wyświetlacza od nokii3310/3410 do interfejsu SPI mikrokontrolera atmega8(88) zasilanego napięciem 3.3V.
Nie wszystkie wersje AVR mogą być zasilane napięciem 3.3V, schemat nr 2 pokazuje, jak można podłączyć wyświetlacz zasilany napięciem 3.3V do mikrokontrolera zasilanego napięciem 5V. Wyświetlacz od Nokii 3310 zużywa minimalne ilości prądu, napięcie 3.3V do jego zasilania można uzyskać stosując dzielnik napięcia: rezystor i dioda zenera 3.3V. Na schemacie wejścia sterujące wyświetlacza połączono z portami we/wy AVRa poprzez bufor 74ls07. Scalony układ 74LS07 zawiera sześć cyfrowych buforów z wyjściami typu otwarty kolektor, wyjścia te zostały podciągnięte rezystorami 330 do napięcia 3.3V.
Schemat 2 Sposób przyłączenia wyświetlacza od nokii3310/3410 zasilanego napięciem 3.3V do mikrokontrolera zasilanego napięciem 5V.
Komunikacja z wyświetlaczemWyświetlacz od Nokii 3310 wyposażony jest kontroler PCD8544 z szeregowym interfejsem SPI(Serial Peripheral Interface). Interfejs posiada cztery wejścia:
· SDIN - szeregowe wejście danych,
· SCLK - sygnał zegarowy taktujący dane na linii, SDIN
· /SCE - wejście aktywujące interfejs szeregowy,
· D/C - wejście wyboru rodzaju danych (wyświetlane lub sterujące).
Komunikacja przebiega tylko w jednym kierunku, od mikrokontrolera do wyświetlacza. Zależnie od stanu linii D/C, bajty danych wysyłane do wyświetlacza, mogą być interpretowane przez kontroler jako komendy do wykonania albo dane zapisywane do pamięci RAM obrazu; stan wysoki na linii D/C sygnalizuje daną, stan niski komendę.
Rys.1 pokazuje przebieg transmisji jednego bajtu danych od mikrokntrolera do wyświetlacza Komunikację rozpoczyna się od ustawienia linii /SCE w stan niski, co aktywuje interfejs SPI. Jeśli wysyłany bajt jest komendą, linię D/C ustawia się w stan niski, a jeśli zwykłą daną - w stan wysoki Następnie, linią SDIN, szeregowo(bit po bicie) przesyła się 8 bitów danej, zaczynając od bitu najbardziej znaczącego. Transmisja szeregowa jednego bitu przebiega w następujący sposób: Wpierw na linii danych SDIN ustawia się stan niski lub wysoki, zależnie od wartości przesyłanego bitu; następnie na linii SCLK podaje się impuls: 0-1-0 - kontroler odczytuje kolejne bity danych przy rosnącym zboczu sygnału SCLK. Zmiana na linii /SCE stanu niskiego na wysoki sygnalizuje zakończenie transmisji.
Rys.1 Przesłanie jednego bajtu do wyświetlacza przez SPI.
A oto funkcja "lcd_write_byte" realizująca w sposób programowy przesłanie jednego bajtu z mikrokontrolera do wyświetlacza:
void lcd_write_byte(unsigned char c_d, unsigned char data )
{
unsigned char m;
LCD_CE_CLR;
if(c_d)
LCD_DC_SET;
else
LCD_DC_CLR;
for(char m=0x80; m; m>>=1)
{
if(data & m)
LCD_DATA_SET;
else
LCD_DATA_CLR;
LCD_CLK_SET;
LCD_NOP;
LCD_CLK_CLR;
...
[ Pobierz całość w formacie PDF ]