Wyświetlacz graficzny LCD ze sterownikiem KS0107/KS0108 –
sterowanie w języku C od podstaw.
W najróżniejszych urządzeniach zbudowanych w oparciu o mikrokontrolery
jako urządzenie wyjściowe wykorzystywane są wyświetlacze LCD.
Najczęściej są to wyświetlacze alfanumeryczne ze sterownikiem HD44780 ze
względu na stosunkowo niską cenę oraz proste sterowanie. Jednak ich
możliwości są niewielkie w porównaniu do wyświetlaczy graficznych.
Najtańsze wyświetlacze graficzne zbudowane są w oparciu o sterownik
KS0107/KS0108 (HD61202/HD61203) nie posiadający generatora znaków. Cena wyświetlacza
o rozdzielczości 128x64 punktów jest zbliżona do trzykrotności ceny zwykłego wyświetlacza
alfanumerycznego 16x2, przy wiele większych możliwościach prezentacji
danych.
Wyświetlacz ten pozwala na wyświetlenie ośmiu linii po 21 znaków
(typowa czcionka 5x7) co daje łączną liczbę 168 znaków. Brak wbudowanego
generatora znaków wydaje się być poważną wadą wyświetlacza, jednak w
prosty sposób można tą wadę wyeliminować poprzez programową generację
znaków realizowaną przez docelowy mikrokontroler. Wszystkie niezbędne
funkcje realizujące wyświetlanie tekstu wraz z tablicą znaków zapisaną w
pamięci programu zajmują około 1KB pamięci.
Wyświetlacz JM12864A
Wszystkie prezentowane tutaj procedury zostały napisane dla wyświetlacza
JM12864A, jednak powinny działać z innymi wyświetlaczami o
rozdzielczości 128x64 piksele zawierającymi sterownik KS0108.
Funkcje poszczególnych wyprowadzeń wyświetlacza JM12864A przedstawia
poniższy rysunek :
![ks0108](wyprowadzenia_jm12864a.png)
Do sterowania wyświetlaczem wymagane jest 13 wyprowadzeń
mikrokontrolera. Nie jest możliwa transmisja 4-bitowa, jak w przypadku
wyświetlaczy alfanumerycznych ze sterownikiem HD44780.
Organizacja pamięci wyświetlacza JM12864A
Wyświetlacz posiada 1KB pamięci RAM (8192 bity). Organizacja pamięci i
jej odwzorowanie na ekranie wyświetlacza przedstawia rysunek
Poszczególne adresy pamięci wyświetlacza nie odpowiadają typowym
współrzędnym ekranu. Adres Y odpowiada współrzędnej x ekranu (oś
pozioma) natomiast adres X określa numer strony (czyli jest podzieloną
przez 8 współrzędną y ekranu). Adres Z określa, która linia pamięci
będzie odwzorowana w najwyższej linii wyświetlacza. Zapis danych do
pamięci odbywa się po 8 bitów, najmłodszy bit odpowiada pikselowi
położonemu w linii najwyższej w obrębie danej strony a najstarszy bit
odpowiada pikselowi położonemu w linii najniższej.
Przykładowa bitmapa wyświetlona na wyświetlaczu JM12864A (sterownik
KS0108)
![atmel ks0108 lcd](atmel.jpg)
|