基于ssd1306驅(qū)動(dòng)的12864oled屏介紹

最近在淘寶上找到了一款便宜的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<<1 0x7A = 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)看我的另外一篇博客(待完成:-)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容