Biblioteka do obsługi wyświetlacza graficznego ze sterownikiem SPLC501C przez mikrokontroler STM32
Prezentowany projekt bazuje na dostępnej o kilku lat bibliotece autorstwa Radosława Kwietnia, a autor niniejszego artykułu rozszerzył ją o funkcje potrzebne do obsługi wyświetlacza przez mikrokontrolery z rodziny STM32. Dodatkowe funkcje te znajdują się w pliku SPLC501C-STM32.c. Połączenie zestawu testowego ZL31ARM z modułem wyświetlacza LCD-AG-132064A-DIW wygląda następująco:
SPLC1001C | ZL32ARM |
RD > | PA0 |
WR > | PA1 |
A0 > | PA2 |
RES > | PA3 |
CS1 > | PA9 |
D0 > | PC8 |
… > | … |
D7 > | PC15 |
Aby uprościć konfigurację biblioteki poczyniono dwa założenia:
- linie sterujące (RD, WR itp.) są liniami jednego portu
- linie danych (D0, D1..D7) są kolejnymi liniami jednego portu, musi to być pierwsze osiem (0..7) lub drugie osiem linii (8..15)
//konfiguracja linii sterujacych #define SPLC_CONTROL_PORT GPIOA //wybor portu A #define SPLC501C_RD (1 << 0) //linia RD dolaczona do PA0 #define SPLC501C_WR (1 << 1) //linia WR dolaczona do PA1 #define SPLC501C_A0 (1 << 2) //… #define SPLC501C_RES (1 << 3) //… #define SPLC501C_CS1 (1 << 9) //… //konfiguracja linii danych #define SPLC_DATA_PORT GPIOC //wybor portu C #define SPLC_DATA_PORT_CR GPIOC->CRH //rejestr konfiguracyjny portu danych #define SPLC501C_D0 8 //numer pierwszej linii danych, w tym przypadku PC8
Biblioteka zawiera zaledwie kilka funkcji, ale powinny one w zupełności wystarczyć do większości zadań:
void GLCD_GoTo(unsigned char x, unsigned char y) – ustawia kursor na ekranie w miejscu o podanych współrzędnych.
void GLCD_WriteString(char * s) – wyświetla ciąg znaków podany jako parametr.
void GLCD_Initialize(void) – inicjalizuje wyświetlacz.
void GLCD_ClearScreen(void) – czyści ekran.
void GLCD_Bitmap(char *b, unsigned char x, unsigned char y, unsigned char w, unsigned char h) – wyświetla na ekranie bitmapę zawartą w tablicy b poczynając od punktu (x, y) o szerokości w i wysokości h. Bitmapę można przetworzyć na tablicę w języku c przy użyciu programu LCDAssistant (do pobrania razem z biblioteką).
Dodatkowo autor rozszerzył możliwości biblioteki o rysowanie podstawowych figur geometrycznych (funkcje zawarte są w pliku graphic.c):
void GLCD_Rectangle(unsigned char x, unsigned char y, unsigned char b, unsigned char a); void GLCD_Circle(unsigned char cx, unsigned char cy ,unsigned char radius); void GLCD_Line(int X1, int Y1,int X2,int Y2);