LIBRERIA per PIC:

OLED 0,98 inc

Aggiornamento:

PIC12F683

Aggiunto scritta a doppia altezza.

IIC software (libreria nel pacchetto).

ATTENZIONE: Se usate la libreria IIC software del pacchetto, è necessario interporre un resistenza da 220-470 ohms tra il pin SDA del LCD e il pin del PIC.



I display OLED sono carattererizzati da pixel autoilluminati e, in questo caso, monocromatici. In commercio si possono trovare di diversi colori e principalmente di due tipi di pilotaggio: seriale SPI e seriale IIC. Sono stati testati tutti e due i modelli, in questa pagina trovate i file.zip distinti tra SPI e I2C.

ATTENZIONE: ho riscontrato un funzionameto incerto testando il modello I2C. A volte si blocca anche dopo diversi aggiornamenti. A questo punto è necessario togliere e ridare l'alimentazione per ripristinare il funzionamento del display. Funziona solo con la libreria MikroC, ho provato il funzionamento con la mia libreria "soft I2C", ma non c'è verso di farlo funzionare!

Libreria seriale SPI 4 fili e 2 fili I2C

La libreria a 4 e a 2 fili è piuttosto parca di memoria: sono sufficienti 1680 Word (PIC16) per scrivere sul display scritte con grandezza a singola pagina (8 pixel) e numeri, con virgola, a doppia pagina (16 Byte). Se abbiamo bisogno di disegnare linee servono 2070 Word. Ogni figura da visualizzare ha bisogno di 1024 Byte.

Il controller è il SSD1306 e ha una risoluzione di 128 x 64 pixel e misura 0,96 pollici. Ogni pixel, essendo monocromatico, ha bisogno di un solo bit, il bit = 1 accende il pixel (una specie di LED), bit = 0 lo spegne. Ciò significa che volendo visualizzare una figura a pieno schermo sono sufficienti 8192 bit, ovvero 1024 Byte. Ovviamente essendo un prodotto piccolo, sono indispensabili gli occhiali per vedere lo schermo anche se sono estremamente leggibili a causa dell'elevato contrasto. La sua nitidezza è davvero ecezzionale.

Il display ha un contrasto portentoso e la luminosità è controllabile a piacere. Lavora a 3,3 V, con un consumo piuttosto basso: meno di 30mA.

Mappatura modulo OLED tenendo il display di fronte e connettore in alto:
colonna 0: prima da Sx (X)
colonna 127: ultima a Dx
pagina 0: in alto (Y) (pixel 0)
pagina 7: in basso (pixel 63)

 

Write_Double_String (const char *string, char Page, char column, char comma_pos);

Scritta a doppia altezza. Se visualizzate caratteri numerici, è possibile inserire una virgola sulla posizione desiderata.

Es.: Write_Double_String ("1234567", 2, 10, 4);

Il valore"1234,56" viene visualizzato alla pagina 2 e 3 con inizio dalla colonna 10. La virgola è posizionata tra il quarto e il quinto carattere.

OLED_M_Init ();

La funzione principale, da dichiarare una sola volta dopo l'inizializzazione del PIC.

Oled_Fill (unsigned char fill);

Pulisce tutto il display. Se "fill = 0" Spegne tutto il dispèlay, se "fill = 0" lo accente completamente.

contrast_control (unsigned char temp);

Luminosità del display: 1 = minore luminosità, 255 = massima luminosità.

Put_Str (const char *s, unsigned char colonna, unsigned char page);

Scrive una stringa gia impostata. P.e. possiamo impostare alcune scritte e richiamarle a piacere:

const char str[] = "JUMBO elettronica";

Put_Str (str, 10, 3);

la scritta "JUMBO elettronica" viene scritta alla pagina 3 e inizia dalla colonna 10. Il vantaggio della scritta "const char" è il risparmio di memoria RAM.

Write_String (char string[], unsigned char colonna, unsigned char Page);

Questo tipo di istruzione inserisce come argomento la stringa da visualizzare:

Write_String("JUMBO elettronica", 10, 3);

abbiamo la stessa possibilita di visualizzare la stessa scritta, in questo caso richiede sia la memoria FLASH per ogni caratere della stringa (+1) che quella della RAM.

Put_Char_16x10(char character, unsigned char colonna, unsigned char Page);

Inserisce un carattere per volta a doppia altezza (16 pixel). Ricorda di inserire un carattere per volta distanziati da 12 pixel. Se devi visualizzare un numero con la virgola, devi distanziare il carattere successivo alla virgola di 7 pixel.

Oled_Line (unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2);

Disegna una linea che parte dal punto iniziale x1, y1, fino al punto finale x2, y2.

Oled_Pixel (unsigned short x, unsigned short y);

Stampa un pixel per volta.

Display_Picture(unsigned char pic[]);

Come scritto sopra, sono sufficienti 1024 Byte per visualizzare una figura. Il PIC16 utilizza 1024 Word, il PIC18 1024 Byte.

OLED_M_command(SSD1306_INVERTDISPLAY);

E' possibile invertire ciascun pixel della figura.

OLED_M_command(SSD1306_NORMALDISPLAY);

Con il presente comando, la figura riaccende il pixel giusto.

 


SCARICA LA LIBRERIA PER MIKROC PRO PIC16 OLED Seriale SPI 4 fili.

SCARICA LA LIBRERIA PER MIKROC PRO PIC16 OLED I2C 2 fili.

LIBRERIA e esempi per microC e PIC12F683 IIC soft OLED I2C 2 fili.

RITORNA ALLA MAIN PAGE