最近在淘寶上找到了一款便宜的12864 OLED屏,閱讀了相關(guān)的數(shù)據(jù)手冊(cè)后整理了一些關(guān)于這種屏的資料,方便大家寫驅(qū)動(dòng)

屏幕模塊圖片
硬件結(jié)構(gòu)
這款屏幕模塊尺寸約為0.96英寸,主要由裸屏和底板PCB組成,裸屏由SSD1306驅(qū)動(dòng),這也是一種較為廣泛使用的led驅(qū)動(dòng)芯片。
| 基本信息 | 參數(shù) |
|---|---|
| 驅(qū)動(dòng)電壓 | 3.3~5V |
| 分辨率 | 128x64 |
| 驅(qū)動(dòng)接口 | I2C |
| I2C地址 | 0x3c(默認(rèn))\0x3d可選 |
關(guān)于這個(gè)模塊要注意的是:
- ssd1306本身支持多種總線驅(qū)動(dòng)方式包括SPI以及并口等,通過芯片的相應(yīng)IO口拉低拉高來選擇哪一種接口,本例中模塊通過電阻將相應(yīng)IO口配置固化使用了I2C接口方式,但可能你買到的同樣的驅(qū)動(dòng)芯片的模塊會(huì)采用其他接口
- 使用I2C接口時(shí),SSD1306允許有最多兩個(gè)7位的I2C地址,同樣通過相應(yīng)的IO口拉低拉高來切換,一般默認(rèn)是0x3c,在屏幕模塊的背面,可以看到一個(gè)I2C地址切換提示,需要改變模塊I2C地址時(shí),只需要把提示位置的電阻取下焊接到另外一端即可。要注意的是板上的I2C地址是加上了第零位讀寫位后的數(shù)值,即
0x78 = 0x3c<<10x7A = 0x3d<<1
I2C地址切換
基本測(cè)試
了解基本驅(qū)動(dòng)指令后便可以開始C驅(qū)動(dòng)程序了,不過這里推薦使用arduino的一個(gè)屏幕驅(qū)動(dòng)庫u8g2來進(jìn)行測(cè)試,會(huì)非常方便,下面程序用于顯示“hello world”。
//"hello world" test
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
void setup(void) {
u8g2.begin();
}
void loop(void) {
u8g2.clearBuffer(); // clear the internal memory
u8g2.setFont(u8g2_font_ncenB14_tr); // choose a suitable font
u8g2.drawStr(0,20,"Hello World!"); // write something to the internal memory
u8g2.sendBuffer(); // transfer internal memory to the display
delay(1000);
}
顯示效果如圖

hello world 顯示
除了字符外,也可以用于顯示動(dòng)態(tài)圖形:

圓形顯示
u8g2是一個(gè)非常強(qiáng)大的8位屏幕顯示庫,兼容性很強(qiáng),不僅支持?jǐn)?shù)十種驅(qū)動(dòng)芯片,其強(qiáng)大之處還在于有豐富的字體可供選擇,而且字體的大小間距都可以細(xì)致調(diào)節(jié),也可以實(shí)現(xiàn)比較復(fù)雜的圖形動(dòng)態(tài)顯示,關(guān)于它的安裝、使用說明請(qǐng)看我的另外一篇博客(待完成:-)
