oled螢幕模組

2022-03-01 01:21:54 字數 3139 閱讀 7092

oled螢幕模組似乎是廠家提供的

也許可以根據螢幕驅動晶元去寫

根據現在了解的晶元一般有兩個:sh1106和ssd1306

不過這次我們用的是ssd1306晶元驅動的螢幕

下面是從裸屏到模組的pcb:

有上面的圖可以看出,雖然是雙色,但是只是底子不同罷了,其實還是單色的.

下面是51微控制器的程式:

下面是初始化程式:初始化函式裡面都是一些傳送指令和資料的.

傳送指令和資料的函式如下:

傳送指令和資料的函式:

void oled_wrcmd(uchar8 uccmd)    //

傳送指令

else

oled_scl = 1

; _nop_();

oled_scl = 0

;

uccmd

<<= 1

;

} return

;}

初始化:

void

oled_init()

oled_rst = 1

; setdisplayonoff(

0x00); //

display off (0x00/0x01)

setdisplayclock(0x80); //

set clock as 100 frames/sec

setmultiplexratio(0x3f); //

1/64 duty (0x0f~0x3f)

setdisplayoffset(0x00); //

setstartline(0x00); //

setchargepump(0x04); //

enable embedded dc/dc converter (0x00/0x04)

setaddressingmode(0x02); //

set page addressing mode (0x00/0x01/0x02)

setsegmentremap(0x01); //

setcommonremap(0x08); //

set com/row scan direction 0x00上下反置 0x08正常

setcommonconfig(0x10); //

set sequential configuration (0x00/0x10)

setcontrastcontrol(0xcf); //

set seg output current

setprechargeperiod(0xf1); //

set pre-charge as 15 clocks & discharge as 1 clock

setvcomh(0x40); //

set vcom deselect level

setentiredisplay(0x00); //

disable entire display on (0x00/0x01)

setinversedisplay(0x00); //

disable inverse display on (0x00/0x01)

setdisplayonoff(0x01); //

display on (0x00/0x01)

oled_fill(0x00); //

初始清屏

//這句話還是可以理解,但是上面的一堆又是什麼呢

oled_setpos(0,0

);

return

;}

初始化裡面的子函式如下所示:

void

setdisplayonoff(uchar8 ucdata)

void

setdisplayclock(uchar8 ucdata)

void

setmultiplexratio(uchar8 ucdata)

void

setdisplayoffset(uchar8 ucdata)

void

setstartline(uchar8 ucdata)

void

setchargepump(uchar8 ucdata)

void

setaddressingmode(uchar8 ucdata)

void

setsegmentremap(uchar8 ucdata)

void

setcommonremap(uchar8 ucdata)

void

setcommonconfig(uchar8 ucdata)

void

setcontrastcontrol(uchar8 ucdata)

void

setprechargeperiod(uchar8 ucdata)

void

setvcomh(uchar8 ucdata)

void

setentiredisplay(uchar8 ucdata)

void

setinversedisplay(uchar8 ucdata)

void

setdisplayonoff(uchar8 ucdata)

void

oled_fill(uchar8 ucdata)

}} void oled_setpos(uchar8 ucidxx, uchar8 ucidxy) //

座標指定.

然後:讓螢幕顯示,年月日的程式:

//

oled顯示日期函式

void

day_oled_display()

cherry專案學習 OLED螢幕

關於oled螢幕的設計,我是第一次接觸,完全由零開始。在 找到的模組有i2c通訊和spi通訊的,但所給的資料太少,i2c和spi我也是第一次接觸 路慢慢長 所以在找合適的型號上花了不少時間。128 64的屏大部分由30個引腳,二有用上的不過一半,由spi和i2c方式的所用的更少。以下做說明 不知道什...

鴻蒙系統 OLED螢幕驅動

hi3861 oled驅動 hispark wifi開發套件又提供乙個oled螢幕,但是鴻蒙原始碼中沒有這個螢幕的驅動,我們需要自己去移植。2 設定i2c引腳復用 確定i2c引腳,檢視原理圖,可以看到oled螢幕使用到的是i2c0,引腳是gpio13 gpio14 i2c io復用也可以選擇3 4 ...

OLED模組學習指南

oled模組是一種通用型外設,可以被各種型號的微控制晶元操控。在此編者以ti公司生產的tms320f28027晶元為例,根據自己使用該模組的經驗,自定義了一系列使用方便的操作函式,並對整個模組的關鍵部分進行了講解分析,希望能夠對初學者起到一定的幫助。這不是我原創,我也不知道在哪翻到的乙個pdf,網上...