Mikrokontrolery Infineon XMC4500 w praktyce, część 5. Obsługa kolorowego wyświetlacza LCD TFT

Opis aplikacji

System w warstwie fizycznej składa się z płytki XMC4500 Relax Kit oraz modułu KAmodTFT2. Wyprowadzenia RESET, SCE, DIN oraz CLK wyświetlacza z modułu KAmodTFT2 zostały podłączone odpowiednio do wyprowadzeń P1.8, P1.9. P1.10 oraz P1.11 mikrokontrolera z płytki XMC4500 Relax Kit. Schemat elektryczny pokazano na rysunku 5. Rzeczywiste połączenie przedstawiono na fotografii 6.

 

Rys. 5. Schemat elektryczny komponentów wykorzystanych w aplikacji

Fot. 6. Zdjęcie połączonej płytki XMC4500 Relax Kit z modułem z KAmodTFT2

Aplikacja ma być prostym przykładem wykorzystania wyświetlacza, dlatego przewidziany scenariusz obejmuje wyświetlenie kolejno tekstu, figury geometrycznej oraz obrazka. Schemat blokowy programu przedstawiono na rysunku 7.

Rys. 7. Schemat blokowy działania aplikacji

Biblioteka obsługi wyświetlacza

Wyświetlacz od telefonu Nokia 6100/6610 cieszy się dużą popularnością wśród elektroników hobbystów, dzięki czemu powstało wiele dedykowanych dla tych wyświetlaczy bibliotek, które ich twórcy udostępniają bezpłatnie w Internecie. Tworząc aplikację warto skorzystać z takiej formy gotowego oprogramowania, zamiast pisać je od początku. W niniejszej aplikacji postąpiono właśnie w taki sposób. Użyta biblioteka pochodzi ze strony http://atomsoft.wordpress.com, którą prowadzi Jason Lopez. Kod biblioteki, który napisany został dla mikrokontrolera Microchip PIC18F248 można pobrać pod adresem. Biblioteka ta składa się z dwóch plików: źródłowego o nazwie lcd.c oraz nagłówkowego o nazwie lcd.h. Lista najważniejszych zaimplementowanych w nich funkcji wraz z krótkim opisem działania została przedstawiona w tabeli 1.

Tab. 1. Lista najważniejszych zaimplementowanych funkcji w bibliotece wyświetlacza wraz z krótkim opisem

Funkcja

Opis działania

LCDFill()

Wypełnienie ekranu zadanym kolorem

LCDInit()

Zainicjowanie wyświetlacza

LCDInit()

Wypełnienie wskazanego piksela zadanym kolorem

LCDSetLine()

Narysowanie linii o zadanym kolorze między wskazanymi punktami

LCDSetRect()

Narysowanie prostokąta o zadanym kolorze między wskazanymi punktami

LCDSetCircle()

Narysowanie okręgu o zadanym kolorze i promieniu i punkcie będącym środkiem okręgu

LCDPutChar()

Napisanie pojedynczego znaku o zadanym rozmiarze oraz kolorze tekstu i tła, w zadanym miejscu

LCDPutStr()

Napisanie łańcucha znaków o zadanym rozmiarze oraz kolorze tekstu i tła, w zadanym miejscu

LCDWriteBMP()

Narysowanie obrazka z pliku graficznego typu BMP

W bibliotece interfejs komunikacyjny do transmisji szeregowej zaimplementowany został programowo. Oznacza to, że wysyłanie danych do wyświetlacza odbywa się nie za pomocą sprzętowego interfejsu SPI, a przy użyciu portów wejścia/wyjścia.

Jako że biblioteka została napisana pod mikrokontroler Microchip PIC18F248, aby mogła ona być używana przez mikrokontroler z rodziny XMC4000 firmy Infineon konieczne jest dokonanie w niej pewnych zmian.

Zmiany w pliku lcd.h:

  • Usunięcie dwóch dyrektyw #include:
  • Usunięcie linii:
  • Usunięcie definicji do sterowania portami:
  • Usunięcie słowa ‘rom’ z: deklaracji funkcji LCDPutRomStr() i LCDWriteBMP()

Zmiany w pliku lcd.c:

  • Dodanie dyrektyw #include:
  • Usunięcie słowa ‘rom’ z: deklaracji funkcji LCDPutRomStr() i LCDWriteBMP(), tablic FONT6x8[],FONT8x8[] i FONT8x16[] oraz wskaźników *pFont i *pChar
  • Dodanie deklaracji i definicji funkcji do sterowania portami:
  • Zamiana definicji do sterowania portami i ich przypisań (LCD_RES = 1, LCD_RES = 0, LCD_DIO = 1, LCD_DIO = 0, LCD_SCK = 1, LCD_SCK = 0, LCD_CS = 1, LCD_CS = 0) na wywołanie funkcji (LCD_RES(1), LCD_RES(0), LCD_DIO(1), LCD_DIO(0), LCD_SCK(1), LCD_SCK(0), LCD_CS(1), LCD_CS(0))
  • Usunięcie wyrażeń ‘Nop()’
  • Usunięcie linii:
  • Zmiana ciała funkcji delay_ms() na:

Do pobrania

O autorze