STM32Butterfly2: obsługa LCD z telefonu Nokia 6100/6610
Każdy tworzony projekt wymaga interfejsu, który przedstawia aktualny stan urządzenia użytkownikowi. W niektórych urządzeniach do tego celu wystarczą diody LED lub wyświetlacze LED, natomiast w bardziej wymagających aplikacjach stosowane są różnego rodzaju wyświetlacze, które umożliwiają prezentację dużej liczby informacji. Do niedawna w aplikacjach tworzonych w domowym zaciszu przeważały głównie alfanumeryczne wyświetlacze LCD oraz czasem występujące monochromatyczne wyświetlacze graficzne. Sytuacja ta jednak się zmieniła, aktualnie prym wiodą różnego rodzaju rozbudowane wyświetlacze kolorowe. Szczególną uwagę należy zwrócić na wyświetlacze pochodzące z telefonów komórkowych, które są bardzo popularne. Swoją popularność zawdzięczają głównie bardzo niskiej cenie oraz prostej obsłudze.
Fot. 1. Wygląd modułu KAmodTFT
Poniższy projekt przedstawia obsługę właśnie takiego wyświetlacza, jest nim kolorowy wyświetlacz pochodzący z telefonu Nokia 6100 lub 6610. Wyświetlacz jest sterowany przez układ PCF8833 (lub zgodny) firmy NXP. Wyświetlacz dostępny jest w postaci modułu KAmodTFT2 (fotografia 1), którego schemat elektryczny pokazano na rysunku 2.
Rys. 2. Schemat elektryczny modułu KAmodTFT
Połączenie modułu z zestawem ewaluacyjnym przedstawiono na rysunku 3. Należy pamiętać o ustawieniu zworki PWR modułu wyświetlacza do pracy z napięciem zasilania 3,3V.
Rys. 3. Schemat połączeń modułu KAmodTFT z zestawem STM32Butterfly2
Aplikacja została przygotowana dla zestawu STM32Butterfly2 oraz STM32Butterfly, ze względu na pewne różnice w liniach podciągniętych do joysticka obu płytek wymagana jest oddzielna kompilacja. W przypadku stosowania STM32Butterfly należy plik Makefile wywołać z atrybutem Board=1, spowoduje to ustawienie odpowiednich wartości przez koprocesor, które określają używane linie.
Działanie aplikacji polega na przesuwaniu dwóch kolorowych linii: poziomej i pionowej, które wyświetlane są na ekranie. Operacja ta realizowana jest przy użyciu joysticka, ustawienie go w pozycji lewej lub prawej powoduje przesunięcie linii pionowej w odpowiednim kierunku, natomiast ustawienie joysticka w pozycji góra bądź dół spowoduje przesunięcie linii poziomej w zadanym kierunku.
Przed samym programem głównym mamy definicję czterech wartości. Pierwsza z nich określa opóźnienie pomiędzy odczytami stanu joysticka. Trzy pozostałe są bardziej ciekawe, definiują one kolor następujących elementów: tło, linia pozioma, linia pionowa. Poniżej przedstawiono omawiane definicje.
//KBD Debounce timef
#define KBD_DEBOUNCE_TIME 10
//Vertical line color
#define VLINE_COLOR 0x00f
//Horizontal line color
#define HLINE_COLOR 0xf00
//Background color
#define BACKGROUND_COLOR 0