Obsługa wyświetlacza telefonu Nokia 6100 ze sterownikiem Epson S1D15G00: polecenia obsługiwane przez sterownik
Opis adresowania pamięci przez sterownik Epson S1D15G00 przedstawiono w pierwszej części artykułu. |
Opis sposobu sterowania wyświetlacza przez STM32Butterfly przedstawiono w trzeciej części artykułu. |
Wyświetlacz z Nokii 6100 zastosowano w module KAmodTFT2,
|
Sterowanie wyświetlaczem odbywa się przez zapisywanie do niego poleceń z parametrami. W tab. 1 pokazano zbiorcze zestawienie komend obsługiwanych przez S1D15G00.
Tab. 1. Polecenia obsługiwane przez sterownik S1D15G00
Polecenie | Opis | Kod (hex) | Parametr |
DISON | Włącz sterowanie wyświetlaczem | AF | Brak |
DISOFF | Wyłącz sterowanie wyświetlaczem | AE | Brak |
DISNOR | Sterowanie normalne | A6 | Brak |
DISINV | Inwersja wyświetlania | A7 | Brak |
COMSCN | Kierunek skanowania | BB | 1 bajt |
DISCTL | Sterowanie wyświetlaniem | CA | 3 bajty |
SLPIN | Włączenie uśpienia | 95 | Brak |
SLPOUT | Wyłączenie uśpienia | 94 | Brak |
PASET | Ustawienie adresu strony | 75 | 2 bajty |
CASET | Ustawienia dresu kolumny | 15 | 2 bajty |
DATCTL | Ustawienia sposobu zapisu danych | BC | 3 bajty |
RGBSET8 | Zapisanie tablicy konwersji kolorów | CE | 20 bajtów |
RAMWR | Zapisanie pamięci RAM | 5C | Dana |
RAMRD | Odczytanie pamięci RAM | 5D | Dana |
PTLIN | Włączenie trybu partial | A8 | 2 bajty |
PLTOUT | Wyłączenie trybu partial | A9 | Brak |
RMWIN | Start odczyt i zapis z modyfikacją | E0 | Brak |
RMWOUT | Koniec trybu odczyt i zapis z modyfikacją | EE | Brak |
ASCSET | Ustawienie obszaru skrolowania | AA | 4 bajty |
SCSTART | Start skrolowania | AB | 1 bajt |
OSCON | Start wewnętrznego generatora | D1 | Brak |
OSCOFF | Zatrzymanie wewnętrznego generatora | D2 | Brak |
PWCTRL | Sterowanie zasilaniem | 20 | 1 bajt |
VOLCTRL | Sterowanie napięciem przetwornicy | 81 | 2 bajty |
VOLUP | Zwiększenie sterowania przetwornicy o 1 | D6 | Brak |
VOLDOWN | Zmniejszenie sterowania przetwornicy o 1 | D7 | Brak |
TMPGRD | Współczynnik temperaturowy | 82 | 1 bajt |
EPCTIN | Sterowanie EEPROM | CD | 1 bajt |
EPCOUT | Koniec sterowania EEPROM | CC | Brak |
EPMWR | Zapis do EEPROM | FC | Brak |
EPMRD | Odczyt z EEPROM | FD | Brak |
EPSRRD1 | Odczyt rejestru 1 | 7C | Brak |
EPSRRD2 | Odczyt rejestru 2 | 7D | Brak |
NOP | NOP | 25 | Brak |
STREAD | Odczytanie rejestru statusowego | – | – |
Funkcja niektórych poleceń obsługiwanych przez sterownik jest oczywista i nie będziemy ich szczegółowo opisywać. Zostaną natomiast opisane komendy bardziej skomplikowane i wymagające szerszego wyjaśnienia.
Adresowanie pamięci obrazu jest powiązane ze sposobem wyświetlania informacji na ekranie. Sterownik może sterować wyświetlaczem z matrycą mającą 168 linii i 132 kolumn. Pamięć obrazu sterownika można traktować jako obszar o organizacji 168×132 słów 12-bitowych. Pozycja danej w pamięci jest określana przez 2 liczniki: licznik kolumn zmieniający swoją wartość od 0 do 131 i licznik wierszy (stron pamięci) zmieniający swoją wartość od 0 do 167. Z modyfikacją liczników adresowych są związane komendy PASET i CASET. Obie komendy mają po 2 argumenty określające początek zakresu zmiany i koniec zakresu zmiany liczników. Poniżej pokazano budowę poleceń PASET oraz CASET.
Kod | 75 |
Parametr 1 | Adres strony początkowej |
Parametr 2 | Adres strony końcowej |
PASET – polecenie umożliwia ustawienie zakresu numerów stron
Kod | 15 |
Parametr 1 | Adres kolumny początkowej |
Parametr 2 | Adres kolumny końcowej |
CASET – polecenie umożliwia ustawienie zakresu numerów kolumn
Używając tych komend programuje się zakres adresów w obszarze których będą się zmieniały liczniki stron i kolumn po każdym zapisaniu danej do pamięci obrazu.
Rys. 3. Ustawianie zakresów adresów poleceniami CASET i PASET
Żeby pokazać mechanizm działania komend modyfikacji adresów zdefiniujemy obszar w kształcie kwadratu 8×8 pikseli. Do tego celu wykorzystamy komendy: PASET z argumentem 4 (początek) i 11 (koniec) i CASET z argumentem 2 (początek) i 9 (koniec) – rys. 3.
Po wysłaniu tych komend wyświetlanie rozpocznie się od pozycji określonej przez argumenty adresu początku obu poleceń (4, 2). Każde wpisanie danej do sterownika będzie powodowało zwiększanie licznika kolumn od wartości początkowej określonej przez pierwszy argument komendy CASET do wartości końcowej kreślonej przez drugi argument tej komendy (rys. 4). Po osiągnięciu wartości końcowej zwiększany jest licznik stron (wierszy), a licznik kolumn jest zerowany. W ten sposób kolejne zapisanie 64 danych tworzy obraz z 64 pikseli (kwadrat 8×8).
Dalsze wpisywanie danych będzie zapełniało kwadrat na nowo od początku. Jest to bardzo użyteczny mechanizm pozwalający w prosty sposób wyświetlać znaki alfanumeryczne o dowolnej wielkości jak i większe i mniejsze bitmapy. Można również zdefiniować wyświetlanie pojedynczego piksela przez wpisanie do komendy takiego samego adresu początku i końca.
Rys. 4. Zapisywanie zdefiniowanego obszaru
Powiązanie pomiędzy danymi zapisywanymi do pamięci wyświetlacza danymi, a informacją wyświetlana na ekranie określają parametry komendy DATCTL (poniżej).
Kod polecenia DATCTL BC | |||||||||
Parametr 1 | * | * | * | * | * | * | P12 | P11 | P10 |
Parametr 2 | * | * | * | * | * | * | P22 | P21 | P20 |
Parametr 3 | * | * | * | * | * | * | P32 | P31 | P30 |
Pierwszy parametr określa sposób modyfikacji liczników adresowych w zdefiniowanym komendami PASET i CASET obszarze. Na rys. 4 pokazano modyfikację liczników w trybie normalnym, to znaczy po każdym wpisie do pamięci zawartość liczników jest inkrementowana.
Kierunek zmiany licznika stron (wierszy) określa bit P10 pierwszego parametru komendy DATCTL. Dla P10=0 licznik stron jest inkrementowany, a dla P10 jest dekrementowany. Dokładnie tak samo za pomocą bitu P11 programuje się kierunek modyfikacji licznika kolumn.
Bit P12 określa czy po zapisaniu danej zmienia się licznik kolumn, czy licznik stron. W przykładzie po zapisaniu danej inkrementowany jest licznik kolumn. Tak się dzieje kiedy P12=0, gdy P12=1 to po wpisaniu danej inkrementowany jest licznik wierszy, a po osiągnięciu wartości granicznej dopiero jest modyfikowany licznik kolumn. W takim przypadku na rys. 4 czerwone strzałki byłyby zwrócone pionowo poczynając od punktu początkowego.
Parametr 3 definiuje głębię kolorów 8-bitową lub 12-bitową. Dla P32=0, P31=0 i P30=1 do sterownika wpisuje się dane 8-bitowe. Dla P32=0, P31=1 i P30=0 do sterownika wpisuje się dane 16-bitowe mając na uwadze położenie 12 bitów składowych koloru w 16-bitowym słowie.
Komenda COMSCAN umożliwia na odwrócenie wyświetlanej informacji o 180 stopni bez konieczności zmiany mocowania wyświetlacza. Kierunek skanowania linii określa 1-bajtowy parametr komendy (poniżej).
Kod polecenia COMSCAN BB | ||||||||
Parametr | * | * | * | * | * | P12 | P11 | P10 |
P12 P11 P10 | Kierunek skanowania | |
COM1 COM80 | COM81 COM160 | |
0 0 0 0 0 1 0 1 0 0 1 1 |
1 -> 80 1 -> 80 80 <- 1 80 <- 1 |
81 -> 160 160 -> 81 81 -> 160 160 <- 81 |
Trójargumentowa komenda DISCTL jest używana do ustawiania funkcji związanych z zależnościami czasowymi sygnałów sterujących segmentami wyświetlacza.
Kod polecenia DISCTL CA | |||||||||
Parametr 1 | * | * | * | * | * | * | P12 | P11 | P10 |
Parametr 2 | * | * | * | * | * | * | P22 | P21 | P20 |
Parametr 3 | * | * | * | * | * | * | P32 | P31 | P30 |
Pierwszy parametr określa zależności czasowe sygnałów sterujących CL, F1 i F2 dostępnych na wyprowadzeniach sterownika (znaczenie bitów pierwszego argumentu komendy DISCTL opisano poniżej).
P13 | P12 | Współczynnik podziału sygnału CL |
0 0 1 1 |
0 1 0 1 |
2 4 8 1 |
P13 | P12 | Okres przełączania F1, F2 |
0 0 1 1 |
0 1 0 1 |
8H 4H 16H pole |
Drugi parametr określa zależności pomiędzy współczynnikiem multipleksowania a liczbą linii wyświetlacza. Trzeci parametr określa liczbę linii wyświetlanych inwersyjnie (od 2 do 16). Inwersyjne wyświetlanie jest wyłączone po wyzerowaniu tego parametru (wartość domyślna).
Rozbudowana komenda ACSET (poniżej) pozwala na elastyczne ustawienie obszaru i rodzaju skrolowania
Kod polecenia ASCSET AA | ||||||||||
Parametr 1 | * | * | * | P15 | P14 | P13 | P12 | P11 | P10 | Adres górnego bloku |
Parametr 2 | * | * | * | P25 | P24 | P23 | P22 | P21 | P20 | Adres dolnego bloku |
Parametr 3 | * | * | * | P35 | P34 | P33 | P32 | P31 | P30 | Liczba bloków |
Parametr 4 | * | * | * | * | * | * | * | P41 | P40 | Tryb skrolowania |
Dostępne są 4 tryby skrolowania ustawiane bitami P41 i P40 czwartego parametru komendy (poniżej).
P41 | P40 | Opis (rys. 5) |
0 | 0 | Skrolowanie centralnej części ekranu |
0 | 1 | Skrolowanie górnej części ekranu |
1 | 0 | Skrolowanie dolnej części ekranu |
1 | 1 | Skrolowanie całego ekranu |
Rys. 5. Tryby skrolowania ekranu
Dla współczynnika multipleksowania 1/132 zdefiniowany w sterowniku S1D15G00 blok ma szerokość 4 linii. Dla ekranu o wysokości 132 linii mamy do dyspozycji 32 bloki. Parametry komendy ASCSET definiują adres górnego bloku, adres dolnego bloku oraz liczbę bloków skrolowanego obszaru. Żeby operację przesuwania można było wykonać, to obszar pamięci musi być większy niż pamięć obrazu. Dla tego celu definiuje się dodatkowy obszar nazywany background area o rozmiarze 10 bloków, tak ze cały obszar ma w sumie 42 bloki.
Na przykład przyjmijmy, że będzie skrolowana centralna część ekranu. Obszar skrolowany ma 112 linii czyli 28bloków. Od góry zarezerwujemy na nie skrolowany obszar 8 linii czyli 2 bloki i od dołu 8 linii czyli również 2 bloki. Komenda ASCSET musi mieć parametry:
- P1 (adres górnego bloku) =2,
- P2 (Adres dolnego bloku) =39 Ta wartość wynika z dodania wielkości background area (10 bloków) i adresu 29. Adres 29, to 2 bloki górnego obszaru nie skrolowanego i 28 bloków obszaru skrolowanego z zastrzeżeniem że adresy są liczone od 0,
- liczba bloków 28.
Działanie tak zdefiniowanego przesuwania pokazano na rys. 6.
Rys. 6. Działanie mechanizmu skrolowania
Uruchomienie tak zaprogramowanego przesuwania następuje po wysłaniu komendy SCSTART. Jej parametrem jest adres bloku od którego rozpoczyna się skrolowanie.
Komenda RMWIN działa w połączeniu z komendami CASET i PASET. Używa się jej do wprowadzenia w sterowniku mechanizmu: odczytaj – modyfikuj- zapisz. W pierwszym kroku odczytywana jest dana z lokacji określonej przez bieżącą zawartość licznika kolumn i licznika strony. Odczytanie nie powoduje modyfikacji liczników adresowych. Dopiero po zmodyfikowaniu danej i jej zapisaniu modyfikowane są liczniki adresowe. Działanie trybu odczytaj- modyfikuj- zapisz kończy komenda RMWOUT.
Rozpoczęcie zapisywania danych jest wykonywane po wysłaniu komendy RMWIN. Wykonanie kodu komendy zawsze powoduje ustawienie liczników adresowych na wartości początkowe ustawione komendami PASET i CASET. Dane są wysyłane do sterownika do momentu wysłania dowolnej komendy.
Wyświetlacze LCD ze sterownikiem S1D15G00 są przeznaczone do pracy w urządzeniach przenośnych zasilanych bateryjnie. Matryce LCD wymagają do prawidłowej pracy napięć wyższych niż napięcie baterii zasilające sterownik (3,3…3,6V). Dlatego w sterownik wbudowano przetwornicę pojemnościową podwyższająca napięcie i programowany układ regulacji napięcia zasilania driverów matrycy. Każdy z układów przetwornicy może być programowo włączany lub wyłączany za pomocą polecenia PWRCTR.
Kod polecenia PWCTR 20 | ||||||||
Parametr | * | * | * | * | P13 | P12 | P11 | P10 |
P10 – sterowanie układem generowania napięcia referencyjnego
P10 = 1 załączony P10=0 wyłączony
P11 – sterowanie układem regulatora napięcia wyjściowego
P11 = 1 załączony P11=0 wyłączony
P12 – sterowanie drugim stopniem boostera
P12 = 1 załączony P12=0 wyłączony
P13 – sterowanie pierwszym stopniem boostera
P13 = 1 załączony P13=0 wyłączony
Napięcie wyjściowe zależy od napięcia podawanego na nieodwracające wejście wzmacniacza, dzielnika rezystorów Rb i Ra oraz programowanego współczynnika a. Obie te wartości są programowane za pomocą polecenia VOLCTR (poniżej).
Kod polecenia VOLCTR 81 | |||||||||
Parametr1 | * | * | P15 | P14 | P13 | P12 | P11 | P10 | a |
Parametr2 | * | * | * | * | * | P22 | P21 | P20 | 1+Rb/Ra |
Parametr | 1+Rb/Ra | Napięcie | ||
P22 | P21 | P20 | ||
0 | 0 | 0 | 3.95 | Małe
Duże |
0 | 0 | 1 | 4.27 | |
0 | 1 | 0 | 4.60 | |
0 | 1 | 1 | 4.93 | |
1 | 0 | 0 | 4.26 | |
1 | 0 | 1 | 5.59 | |
1 | 1 | 0 | 5.92 | |
1 | 1 | 1 | 6.25 |
Parametr 1 komendy VOLCTR można modyfikować przez wysyłanie komendy VOULP (inkrementacja) i komendy VOLDN (dekrementacja). Modyfikacja odbywa się modulo 256.
Korekcja napięcia zasilania driverów matrycy w funkcji temperatury otoczenia jest programowana komendą TMPGRD (poniżej).
Kod polecenia TMPGRD 82 | ||||||||
Parametr | * | * | * | * | * | * | P11 | P10 |
P11 | P10 | Współczynnik korekcji [%/oC] |
0 | 0 | -0,05 |
0 | 1 | -0,1 |
1 | 0 | -0,15 |
1 | 1 | -0,2 |