2020年6月11日 星期四

128 X 64 I2C介面OLED顯示器實習

四.10 128 X 64 I2C介面OLED顯示器實習

所謂的OLED有機發光二極體(Organic Light-Emitting Diode)顯示器的簡稱這種顯示器和一般常見的LCD顯示器最大不同就是它本身就會發光所以不需要背光光源因此可以做到非常的薄而且因為很薄所以幾乎是全視角不像傳統的LCD顯示器如果脖子歪一點看就會看不到螢幕的畫面再加上不需要背光所以背光的電源也就省下來整個顯示器可以做到輕薄短小又省電的要求只是由於製程比較複雜且良率沒有LCD顯示器那麼高再加上是新的產品所以成本與售價上就比一般的LCD顯示器高了


上圖是目前市面上常見用在Arduino周邊系列產品使用I2C介面匯流排的OLED顯示器雖然只有0.96”大可是卻擁有128X64(8k Pixels)的像素解析度它使用的是SSD1306這顆控制晶片在這顆晶片的內部建有1Kbytes的顯示用緩衝RAM (GDDRAMGraphic Display Data RAM)上述的128X64(8k Pixels)像素畫面內容會先存放在1K bytes的GDDRAM上然後再載入真正的OLED顯示面板上。此1K bytes的GDDRAM結構如下圖所示它先被分割成8個頁面page(編號為page0~page7)所以每頁面的長度是1k/8=128個block(編號為block0~block127)而每一個block其實是由一個byte所組成這個byte中的8個bits就代表了8個像素所以我們可以得知一個螢幕的顯示頁面結構為


8(page) X 128(block) X 8(bit) = 128(H) X 64(V) = 8192(bit/pixel) = 1024 bytes


也就是螢幕的寬度是128個pixel,而高度則是8X8=64個pixel,總共有8K個pixels。由於一個像素僅由一個bit所構成,因此只能顯示亮或不亮,也就是只能顯示單一種顏色;雖然如此,可是因為螢幕顯示塗佈材料的不同,因此目前市面上可看到不同顏色螢幕的OLED顯示器


圖420 SSD1306控制晶片內部GDDRAM結構

(本圖與下面部分圖片引用自”lastminuteengineers.com”這個網站僅此致謝)


目前市面上這種由SSD1306控制晶片所驅動的0.96’’的OLED顯示器提供了SPI與I2C兩種匯流排介面,為了方便接線與減少接腳的使用,在此我們使用的是I2C介面的產品。目前在Arduino IDE中已經有不少個經過官方認可的SSD1306 OLED顯示器函式庫可以使用,不過為了考慮通用性與功能的完整性在後面的幾個實習中先以知名的Arduino模組與周邊及感測器第三方供應商adadfruit內建的範例程式來示範它們的函式庫可以做到那些動作與功能然後再分別以各式的文字顯示繪圖功能乃至圖像或照片的顯示作為完結。

在做過前面這幾個實習之後各位可自行改用其他高手的函式庫和內建範例測試一下比較看看各家程式庫的好壞良窳如何﹖不一定要獨沽一味。


四.10-1 Adafruit OLED內建範例顯示實習





1 則留言: