最近在淘寶上找到了一款便宜的12864 OLED屏,閱讀了相關(guān)的數(shù)據(jù)手冊后整理了一些關(guān)于這種屏的資料涡尘,方便大家寫驅(qū)動
硬件結(jié)構(gòu)
這款屏幕模塊尺寸約為0.96英寸忍弛,主要由裸屏和底板PCB組成,裸屏由SSD1306驅(qū)動悟衩,這也是一種較為廣泛使用的led驅(qū)動芯片剧罩。
基本信息 | 參數(shù) |
---|---|
驅(qū)動電壓 | 3.3~5V |
分辨率 | 128x64 |
驅(qū)動接口 | I2C |
I2C地址 | 0x3c(默認(rèn))\0x3d可選 |
關(guān)于這個(gè)模塊要注意的是:
- ssd1306本身支持多種總線驅(qū)動方式包括SPI以及并口等,通過芯片的相應(yīng)IO口拉低拉高來選擇哪一種接口座泳,本例中模塊通過電阻將相應(yīng)IO口配置固化使用了I2C接口方式惠昔,但可能你買到的同樣的驅(qū)動芯片的模塊會采用其他接口
- 使用I2C接口時(shí),SSD1306允許有最多兩個(gè)7位的I2C地址挑势,同樣通過相應(yīng)的IO口拉低拉高來切換镇防,一般默認(rèn)是0x3c,在屏幕模塊的背面潮饱,可以看到一個(gè)I2C地址切換提示来氧,需要改變模塊I2C地址時(shí),只需要把提示位置的電阻取下焊接到另外一端即可香拉。要注意的是板上的I2C地址是加上了第零位讀寫位后的數(shù)值啦扬,即
0x78 = 0x3c<<1
0x7A = 0x3d<<1
基本測試
了解基本驅(qū)動指令后便可以開始C驅(qū)動程序了,不過這里推薦使用arduino的一個(gè)屏幕驅(qū)動庫u8g2
來進(jìn)行測試凫碌,會非常方便扑毡,下面程序用于顯示“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);
}
顯示效果如圖
除了字符外盛险,也可以用于顯示動態(tài)圖形:
u8g2
是一個(gè)非常強(qiáng)大的8位屏幕顯示庫瞄摊,兼容性很強(qiáng),不僅支持?jǐn)?shù)十種驅(qū)動芯片苦掘,其強(qiáng)大之處還在于有豐富的字體可供選擇换帜,而且字體的大小間距都可以細(xì)致調(diào)節(jié),也可以實(shí)現(xiàn)比較復(fù)雜的圖形動態(tài)顯示鹤啡,關(guān)于它的安裝惯驼、使用說明請看我的另外一篇博客(待完成:-)