Ingo Electronics


                                 0.96" I2C  128X64 OLED LCD LED Display Module SSD1306 driver

Vienam iš vykdomų projektų, minimizacijai prisireikė nedidelio LCD displėjaus,
Tam buvo panaudotas  0.96"  128X64 GLCD displėjus, kuriame integruota SSD1306 – displėjaus valdymo mikroschema.
Šio displėjaus ekranėlio matmenys – 27,0x15,5 (mm)
Jo pajungimui prie mikrokontrolerio užtenka keturių laidų – du maitinimui, ir du valdymui.
Internete galima rasti įvairių bibliotekų skirtų šiam displėjui.
Šiame demo projekte yra panaudotos vos kelios paprastos ir nesudėtingos  displėjaus valdymo funkcijos vien tik tekstinių simbolių išvedimui.

Ši Demo programa skirta mikroC PRO for PIC kompiliatoriui.
I2C sąsajai naudotas “hardwarinis” I2C modulis. 
Vien tik demo programos kodas užima apie 4kb flash atminties. Reikia į tai atsižvelgti pasirenkant mikrokontrolerį.

Displėjaus pajungimas prie mikrokontrolerio - elementarus, prie I2C (SCL ir SDA) kontaktų, kaip parodyta žemiau esančiame pav.

OLED_pajungimas

Programoje yra naudojamas dviejų rūšių šriftas - kurių aukštis 8 ir 16 pikseliai.

Pograma yra pradedama nuo displėjaus inicializavimo:  ssd1306_init();

Rašant programos kodą, svarbu yra tiksliai nusistatyti nuo kurios vietos bus pradedamas rašyti tekstas.

Tai atlieka f-ja: ssd1306_setpos(unsigned char x_pixels, unsigned char row);

Šioje funkcijoje X kordinatė yra nustatoma pikseliais, ir šiuo atveju gali turėti reikšmes nuo 0 iki 128, Y kordinatė yra nustatoma eilutėmis.  6x8  šriftui eilutės gali turėti reikšmes nuo 0 iki 7, t.y su šiuom šriftu galima įrašyti 8 eilutes teksto.

Po pradinių koordinačių nustatymo, galima įvedinėti tekstą naudojant f-ją teksto išvedimui:
ssd1306_string_font6x8(char *s);  arba vienam simboliui -  ssd1306_char_font6x8(char ch);

Jeigu yra naudojamas šriftas 8x16, tai pradinės koordinatės yra nustatomos teksto išvedimo funkcijoje:
ssd1306_string_font8x16(unsigned char x_pixels, unsigned char row, const char ch[]); , tik šiuo atveju, šriftas užima dvi eilutes, eilučių skaičius row gali turėti reikšmes 0,2,4 arba 6 , t.y su šiuo šriftu galima rašyti 4 eilutes teksto.

Kuriant naują teksto puslapį, reikalinga ištrinti prieš tai buvusius įrašus, tam naudojama komandą ssd1306_fillscreen(0x00);

Kaip tai konkrečiai yra daroma:

Programos kodas atsisiuntimui