I2C 12864OLED的工作機制


有許多不同規格的OLED顯示屏與Arduino兼容, 128x64是最常見的型號, 也很便宜, 淘寶上大概是12~14元一片.

OLED與Arduino的通信

首先, 使用I2C總線的設備, 都可以使用Wire這個library與其通信, 其設備地址可以從0x00至0xFF, 可以通過指定地址操作對應的設備.
其次, 在OLED顯示屏中, 每個寄存器地址對應某個功能, 例如反轉顏色, 或關閉顯示, 寄存器地址的范圍也是0x00到0xFF.
所以, 基本上你只需要3個參數就能讓OLED顯示屏執行某項命令, 方式如下:

Wire.beginTransmission(devAddr);
Wire.write(regAddr);
Wire.write(data);
Wire.endTransmission(); // stop transmitting

例如, 要關閉0x3C這個地址的設備的顯示, 我們修改寄存器地址0x40的值為0xAE

Wire.beginTransmission(0x3C); // might be different for your display
Wire.write(0x80);
Wire.write(0xAE);
Wire.endTransmission(); // stop transmitting

我們需要了解的寄存器地址主要有兩個: 一個是命令地址, 另一個是數據地址, 可以自行查閱datasheet


如何控制每個像素的顯示

這個屏幕的像素矩陣的划分是比較特殊的, 整個屏幕水平方向划分為8個page, 垂直方向則是按像素划分為128 column. 每個page-column包含8個像素, 通過一個十六進制數(其實就是一個字節, 8個bit)來控制, 每個bit控制一個像素
 

如果我們要在左上角顯示一個亮點, 需要發送0x01到數據地址, 例如

Wire.beginTransmission(0x3C); // might be different for your display
Wire.write(0x40);
Wire.write(0x01);
Wire.endTransmission(); // stop transmitting




如果需要改變下一column的顯示, 你只需要繼續給數據地址發送數據, 指針會自動走到下一個column. 如果已經到了最后一個column, 取決於當前的尋址模式, 如果是Page Addressing, 會返回到本page的第一個column, 如果是Horizontal Addressing, 會跳到下一個page的第一個column. 還有第三種尋址模式, Vertical addressing mode. 具體的地址增長方式如下

 

以上就是需要了解的OLED顯示機制

翻譯自: https://oscarliang.com/arduino-oled-display-library/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM