wtorek, 29 maja 2018

Wyświetlacz OLED 1.3" na sterowniku SH1106 - biblioteka dla PIC32MM

Ponieważ tak się złożyło, że jeden z czytelników mojego bloga, który chce poznać w praktyce PIC32MM, zwrócił się do mnie z prośbą o pomoc w pozyskaniu biblioteki do obsługi wyświetlacza OLED 1.3 opartego na sterowniku SH1106. Biblioteka taka powstała na bazie biblioteki zamieszczonej w zasobach LibStock.
Ja tylko zrobiłem pełną konwersję tej biblioteki do współpracy z 32-bitowym mikrokontrolerem PIC32MM firmy Microchip.
Co ciekawe działanie biblioteki sprawdzane było po stronie czytelnika bo ja takiego wyświetlacza akurat nie posiadałem :) Dzięki temu zadaniu poznałem potęgę GitHuba i jego superancką implementację w MPLABX-IDE. Upewniło mnie to w przekonaniu , że środowisko Microchipa jest bardzo wygodne i przyjemnie się w nim programuje.  Wyświetlacz jak wyświetlacz jest OLED-owy i jest chiński ,co nie gwarantuje , że w kolejnych partiach rzucanych na rynek nie zmieni się np. ilość pinów czy ich funkcjonalność. Nie mniej podstawową zaletą jest tutaj cena i jak na razie łatwa dostępność.

Na początek garść podstawowych informacji  :

Specyfikacja

Sterownik SH1106
Sterowanie 3-wire SPI, 4-wire SPI, I2C
Rozdzielczość 128*64
Wymiar wyświetlacza 1.3"
Kolor pixeli niebieski
Kąt widzenia >160°
Temp. pracy (℃) -30~70
Temp. przechowywania (℃) -30~80
Napięcie pracy 3.3V / 5V


Opis wyprowadzeń

PIN NO.SYMBOLDESCRIPTION
1 VCC Napięcie zasilania (3.3~5V power input)
2 GND Masa
3 NC Nie podłączony
4 DIN wejście danych
5 CLK wejście sygnału zegarowego
6 CS Chip select, aktywny - stan niski
7 D/C sygnał: komenda\dane, low level for command, high level for data
8 RES Reset, aktywny - stan niski


Ustawienie interfejsu komunikacyjnego

Mode/InterfaceBS0/BS1DINSCK
3-wire SPI 1/0 MOSI SCLK
4-wire SPI 0/0
I2C 0/1 SDA SCL

Sposobem komunikacji jaki został wybrany to SPI 4-wire. Aby uzyskać taki sposób komunikacji należy dokonać na spodzie wyświetlacza odpowiednich krosowań zgodnie z namalowaną tabelką:






Po stronie MCU nie będziemy korzystać ze sprzętowego SPI tylko z jego prostej programowej symulacji. 
Piny jakie wykorzystałem do sterowania wyświetlaczem to :

D_C -->   RA15        
DIN -->   RB10       
CS   -->   RB11
CLK -->   RB13
RST -->   RC9



Jeśli chcemy zmienić w bibliotece pinologię musimy zmiany uwzględnić w pliku sh1106.h i pin_manager.c
W bibliotece mamy zaimplementowane czcionki więc nie musimy się trudzić aby je dziergać samemu. Poniżej efekt działania biblioteki u czytelnika na PIC32MM :






W zasadzie nie ma co tutaj więcej się rozczulać , jeśli ktoś natknie się na ten wyświetlacz i tę randkę  połączy z PIC32MM to zapraszam do korzystania z biblioteki.

Na GitHub załączyłem w linku poniżej gotowy projekt do MPLABX-IDE z biblioteką i prostym przykładem jej użycia. Ten projekt można ściągnąć z GitHub-a do MPLABX-IDE za pomocą prostej operacji Team --> Git --> Clone

Pozdrawiam
picmajster.blog@gmail.com



Linki :
Oryginalna biblioteka - autor: Nigel Mercier
Biblioteka po mojej przeróbce dla PIC32MM
Dokumentacja producenta
Elektronika Praktyczna - projekt z wykorzystaniem OLED 1.3
Elektronika Praktyczna - artykuł o OLED 1.3 na SH1106

1 komentarz: