Zastosowany w zestawie STM32L0538-DISCO wyświetlacz GDE021A1 wyświetla obrazy o rozdzielczości 172×72 pikseli w monochromatycznej skali barw. Aby wyświetlić dowolny piksel na wyświetlaczu, możemy stworzyć następującą funkcję w bibliotece stm32l0538_discovery_epd.c:
void BSP_EPD_Pixel(uint16_t Xpos, uint16_t Ypos, uint8_t HEX) { epd_drv->SetDisplayWindow(Xpos, Ypos, Xpos, Ypos); epd_drv->WritePixel(HEX); }
Parametr Xpos odpowiada za rząd w którym zostanie wyświetlony piksel na dłuższym boku wyświetlacza. Może przybierać wartości od 0 do 171 (zgodnie z długością wyświetlacza, czyli 172 piksele).
Parametr Ypos odpowiada za rząd w którym zostanie wyświetlony piksel na krótszym boku wyświetlacza. Wartości wysyłane wyświetlacza są ośmiobitowe: cztery bity dla rejestru odpowiadającego za rząd X i 4 bity dla rzędu Y. Parametr Ypos może przybierać wartości od 0 do 17. Każda wartość odpowiada 4 pikselom, więc Ypos = 0 odpowiada za piksele 0…3, Ypos = 1 odpowiada za piksele 4…7 itd. Całkowita szerokość wyświetlacza to 18 pomnożone przez 4, czyli 72 piksele.
Parametr HEX pozwala na włączenie dowolnej kombinacji 4 pikseli, których dane są przesyłane w zapisie ośmiobitowym. Parametr HEX przybiera wartości w zapisie heksadecymalnym, od 0x00 do 0xFF. Pierwsza liczba (po lewej) wskazuje na dwa pierwsze piksele z czterech, po dwa bity na każdy piksel. Jeżeli chociaż jeden z dwóch bitów będzie miał wartość 0, piksel zostanie włączony, jeżeli oba będą mieć wartość 1, piksel będzie wyłączony. Liczba 0xFF oznacza wszystkie 4 piksele wyłączone, liczba 0x00 wszystkie włączone.
W funkcji main() deklarujemy użycie wyświetlacza za pomocą funkcji BSP_EPD_Init(); a następnie używamy następujących funkcji aby wyświetlić obraz na wyświetlaczu:
BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_Pixel(uint16_t Xpos, uint16_t Ypos, uint8_t HEX); BSP_EPD_RefreshDisplay();
Funkcja BSP_EPD_Clear(EPD_COLOR_WHITE); zmienia wszystkie piksele wyświetlacza na białe pozwalając na wyświetlenie nowego obrazu.
Funkcja BSP_EPD_RefreshDisplay(); odświeża wyświetlacz i wyświetla piksele po załadowaniu ich danych do pamięci RAM mikrokontrolera.
Przykłady:
BSP_EPD_Pixel(0, 0, 0xFE); – włączenie piksela w punkcie 1×1
BSP_EPD_Pixel(0, 0, 0xFD); – włączenie piksela w punkcie 1×1, inny sposób
BSP_EPD_Pixel(99, 5, 0xFE); – włączenie piksela w punkcie 100×20
BSP_EPD_Pixel(99, 5, 0x80); – włączenie piksela w punkcie 100×23
BSP_EPD_Pixel(99, 5, 0x88); – włączenie pikseli w punktach 100×21 i 100×23
BSP_EPD_Pixel(99, 10, 0xFF); – włączenie pikseli w punktach 100×41, 100×42, 100×43 i 100×44
Jakub Górnicki