Obsługa kolorowego wyświetlacza LCD-TFT 320×240 za pomocą mikrokontrolera STM32

Ważnym elementem graficznego interfejsu użytkownika jest wyświetlanie informacji tekstowych. Jak wiemy sterownik zastosowany w module LCD nie zapewnia żadnego wsparcia poza możliwością zapalenia/zgaszenia pojedynczego pikseli o zadanym kolorze. Dlatego wyświetlanie znaków alfanumerycznych trzeba wykonać całkowicie programowo. Zaczniemy od generatora znaków. Tablicę z wzorcami znaków można sobie samemu zdefiniować, ale jest to żmudne zajęcie. Ja wykorzystałem gotową tablicę wykonaną przez James’a P. Lyncha dla wyświetlacza telefonu Nokia 6100. Tablica zawiera wzorce znaków o 3 wielkościach: 6 x 8 pikseli (SMALL), 8x8pikseli (MEDIUM) i 8x16pikseli (LARGE). W praktyce najbardziej przydatne okazały się największe znaki, ale pozostałe tez są używalne. Nic nie stoi na przeszkodzie by sobie zdefiniować jeszcze większe znaki. Pierwsze 3 bajty w tablicy generatora dla każdej z wielkości znaków zawierają informację o ilości kolumn, wierszy i bajtów na znak. Na tej podstawie jedna uniwersalna procedura potrafi wyświetlić znaki o różnych wielkościach.

Procedura potrafiąca wyświetlić jeden znak jest pokazana na listingu 9.

 

List. 9. Procedura wyświetlania jednego znaku

 

Argumentami procedury są : kod ASCII wyświetlanego znaku, położenie na ekranie (współrzędne x i y ),rozmiar, kolor znaku i kolor tła. W zmiennej pFont jest umieszczany wskaźnik na początek tablicy generatora znaków. Do zmiennych nCols, nRows i nBytes są zapisywane pierwsze 3 bajty z tablicy generatora znaków. Ponieważ wzorce znaków nie są umieszczane w tablicy zgodnie z kodami ASCII, to trzeba kod ASCII wyświetlanego znaku przekształcić na pozycję w tablicy generatora. Po przekształceniu wskaźnik pChar wskazuje na ostatni bajt wzorca znaku w tablicy generatora. Program pobiera kolejne bajty z tablicy (od ostatniego do pierwszego). Każdy bit tego bajtu jest analizowany. Jeżeli jest ustawiony, to bit jest wyświetlany w kolorze znaku określonym argumentem fColor. Kiedy bit jest wyzerowany, to jest wyświetlany w kolorze określonym argumentem bColor. W ten sposób można wyświetlać znaki w dowolnym kolorze na tle w dowolnym kolorze o głębi 8-bitowej. Tryb tekstowy uzupełnimy procedurą wyświetlania tekstu w jednym z trzech rozmiarów(argument size). Pozycja początku ciągu znaków jest ustalana argumentami x, y, a kolor znaków i tła argumentami fColor i bColor.

Wynik działania tej procedury został pokazany na fotografii 5.

 

 Fot. 5. Przykładowy efekt działania procedury z listingu 10

Fot. 5. Przykładowy efekt działania procedury z listingu 10

 

List. 10. Procedura wyświetlania tekstu

Do pobrania

O autorze