KAMAMI ZL31ARM: OLED w SmartSwitch’u i STM32F103
Zapis do pamięci obrazu sterownika wyświetlacza polega na wysłaniu danych przez interfejs SPI podczas gdy linia D/C ma stan wysoki. Ponieważ sterownik jest przystosowany do pracy również z większymi wyświetlaczami jego pamięć jest większa niż wymagana dla 3072 pikseli (64×48), umiejscowienie widocznego na wyświetlaczu obrazu w pamięci sterownika widać na rysunku 4.
Rys. 4. Obszar pamięci kontrolera OLED widoczny na wyświetlaczu
Zanim zaczniemy zapisywać do pamięci sterownika obraz musimy poinformować sterownik do jakiego okna mają trafić dane, służą do tego instrukcje:
- 0x15, następnie wysyłamy numery pierwszej i ostatniej kolumny okna
- 0x75, następnie wysyłamy numery pierwszego i ostatniego wiersza okna
Aby zapisać cały ekran przycisku ISC15ANP4 musimy wysłać sekwencje 0x15, 0x10, 0x4F i 0x75, 0x0, 0x2F. Ta operacja jest realizowana przez funkcję ISC15ANP4_SetRangeToFullScreen.
void ISC15ANP4_SetRangeToFullScreen()
{
DC_Low();
SS_Low();
SPI_Transmit(0x15); SPI_Transmit(0x10); SPI_Transmit(0x4F); // Set column range
SS_High();
SS_Low();
SPI_Transmit(0x75); SPI_Transmit(0x0); SPI_Transmit(0x2F); // Set row range
SS_High();
DC_High();
}
Rys. 5. Format zapisu koloru pojedynczego piksela
Po ustaleniu okna możemy przystąpić do wysłania obrazu do wyświetlenia. Kolor każdego piksela jest określony przez dwa bajty (format RGB 565 – rysunek 5). Przykładowa aplikacja wyświetla na zmianę dwie bitmapy zapisane w tablicach cortex i isc15anp4, zmiana wyświetlanego obrazu następuje po naciśnięciu przycisku, nowa bitmapa jest „wskrolowywana” na wyświetlacz od prawej strony, funkcja realizująca tę operację wygląda następująco:
void ISC15ANP4_Transition(char * from, char * to)
{
int x, y, step = 0;
DC_High();
for (step = 0; step < 64; step+=5)
{
for (y = 0; y < 48; y++)
{
for (x = 0; x <= step; x++)
{
SS_Low();
SPI_Transmit(to[2*(y * 64 + (63-step+x))]);
SS_High();
SS_Low();
SPI_Transmit(to[2*(y * 64 + (63-step+x))+1]);
SS_High();
}
for (x = step + 1; x < 64; x++)
{
SS_Low();
SPI_Transmit(from[2*(y*64 + x -step)]);
SPI_Transmit(from[2*(y*64 + x -step)+1]);
SS_High();
}
}
}
ISC15ANP4_DrawScreen(to);
}
void ISC15ANP4_DrawScreen(char * buffer)
{
int i;
DC_High();
for (i = 0; i < 64*48*2; i++)
{
SS_Low();
SPI_Transmit(buffer[i]);
SS_High();
}
}
Parametry from i to są wskaźnikami początków tablic z bitmapami odpowiednio: początkową i końcową. W tej funkcji ze względu na dobranie kroku przesunięcia o wartości 5 (czyli kolejna klatka animacji prezentuje bitmapy przesunięte o 5 pikseli w lewo w stosunku do poprzedniej) na końcu wywołujemy funkcję ISC15ANP4_DrawScreen, która rysuje bitmapę końcową (jest to konieczne, bo przy kroku o wartości 5 nie dojdziemy do wartości 63).





Hybrydowe architektury kosmiczne – projektowane z myślą o wydajności i pewności działania
Inżynierowie jutra nie projektują od zera. Jak narzędzia cyfrowe zmieniają pracę nad nowymi technologiami?
Automatyzacja magazynów w Polsce – Exotec i Skypod 


![https://www.youtube.com/watch?v=xeqdqGuy-Aw Michał Mitas, kierownik laboratorium Badań Urządzeń Radiowych w katowickim instytucie Łukasiewicz - AI, opowiada o badaniach urządzeń z interfejsem komunikacji bezprzewodowej, jak Wi-Fi, Bluetooth, LTE czy 5G, przeprowadzanych w komorze bezodbiciowej. Zapraszamy do obejrzenia filmu! [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/10/00.png)

![https://www.youtube.com/watch?v=QSnLO-KmBMY O wybranych projektach realizowanych w Laboratorium Zakładu Układów Mikrofalowych – ISE PW opowiadają: mgr inż. Michał Kalisiak, dr hab. inż. Arkadiusz Lewandowski, mgr inż. Andžej Šerlat oraz dr hab. inż. Krzysztof Czuba. Zapraszamy na firm [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/09/WEiTI-PW-czolowka.png)

