2018年1月15日 星期一

DIY - ESP8266:SSD1306 0.96吋 OLED 顯示屏模塊顯示圖案資料(五十九)

DIY - ESP8266:SSD1306 0.96吋 OLED 顯示屏模塊顯示圖案資料(五十九):

筆者製作了 ESP8266 的 ESCORT 3146A 萬用電錶數據記錄儀(DMM Data Logger),對 ESP8266 和 SSD1306 OLED 顯示屏提昇了興趣。因為這片小巧的 OLED 顯示屏,雖然顯示範圍祇有 21.74mm × 10.86mm,但顯示出來的字體和顏色都很亮麗,希望將來的小型製作都會用上這款 OLED 顯示屏。其實 OLED 顯示屏不是單純顯示文字,還可以顯示圖案,但須要進一步加深了解這片 SSD1306 OLED 顯示屏規格,才可以發揮 SSD1306 OLED 顯示屏的功能。

ESP8266 的 ESCORT 3146A 萬用電錶數據記錄儀(DMM Data Logger)
SSD1306 0.96吋 OLED 顯示屏模塊
SSD1306 是支援多種匯流排驅動蕊片,包括 SPI 串列外設介面(SPI:Serial Peripheral Interface)、積體電路匯流排(I²C / I2C:Inter-Integrated Circuit)和並口(Parallel:8 bit 6800 / 8000)方式,但這種 0.96吋 OLED 顯示屏模塊的介面,一般的供應是祇有3-Wire SPI、4-Wire SPI 和 I2C 選擇。由於 ESP8266 的 I/O 比較少,筆者會偏向選擇 I2C 介面,但I2C 介面是不可以讀取 SSD1306 內的 GD_DDRRAM,如果要做圖案顯示,便需要在程式內提供 RAM(容量 1024 Bytes)作顯示屏記憶作 Bit Mapping。

Solomon Systech (晶門)SSD1306 驅動晶片方塊圖
使用 I2C 介面時,SSD1306 允許有最多兩個 7位的 I2C 位址,同樣通過相應的 IO 口拉低拉高來切換,一般默認是 0x3C,在螢幕模組的背面,可以看到一個I2C 位址切換提示,需要改變模組I2C位址時,只需要把提示位置的電阻取下焊接到另外一端即可。要注意的是版上的I2C 地址是加上了第零位讀寫位後的數值,即 0x78 = 0x3C << 1 0x7A = 0x3D << 1。

OLED 屏模塊是由 128×64 點陣(X=128點、Y=64點)組成,在坐標系中,左上角是原點,向右是 X軸(X=0 ~ 127),向下是 Y軸(Y=0 ~ 63)。因為 GD_DDRRAM 是 8bits, SSD1306 的 GD_DDRRAM 容量是 1024 Bytes(X×Y = 128點×64點/8Bits = 1024Bytes)。 Y 軸是64點(Y=0 ~ 63),Y 軸是共分 8 頁(Y=Page 0 ~ Page 7)。

GDDRAM Page Structure of SSD1306(Y軸:Y=Page 0 ~ Page 7)
X的點陣是從 LSB0 ~ MSB7 (D0 ~ D7)開始,最低有效位 Bit 0 (LSB:Least Significant Bit)是在頂部,最高有效位 Bit 7(MSB:Most Significant Bit)是在底部,所以要小心處理 OLED 屏模塊和 GDDRRAM 的相對位置。

SSD1306 Enlargement of GDDRAM Structure
SSD1306 Address Pointer Movement of Page addressing mode
在正常的顯示屏的數據 RAM 讀取或寫入和頁面尋址模式下,需要執行以下步驟: 定義起始RAM訪問指針位置:
•通過命令 B0h 至 B7h 設置目標顯示位置的起始頁地址(Page)。
•用 00h〜0Fh 命令設置指針的低位起始地址(Lower Start Column)。
•通過命令 10h〜1Fh 設置指針的起始列起始地址(Upper Start Column)。

例如:如果頁面地址設置為 B2h(Page 0xB2-0xB0 = Page 2),低位地址為 03h,高位地址為 10h, 那麼這意味著起始欄是 Page 2 的 SEG3。 RAM 訪問指針的位置如下圖所示。 輸入數據字節將被寫入第 3列的 RAM 位置。

SSD1306 顯示屏的數據 RAM 讀取或寫入和頁面尋址模式
以上是 SSD1306 0.96吋 OLED 顯示屏模塊顯示基本圖案資料,其實 SSD1306 還有很多功能是有待發掘!

相關網址:
※ DIY - PIC24:SSD1306 0.96吋 OLED 屏模塊(六十)
※ DIY - PIC24:Solomon 晶門 SSD1306 驅動控制晶片(六十一)
※ DIY - PIC24:PIC24FJ64GA008 SSD1306 0.96吋 OLED 屏模塊 I/O 電路(六十二)
※ DIY - ESP8266:SSD1306 0.96吋 I2C OLED 屏模塊(十七)
※ DIY - ESP8266:Solomon 晶門 SSD1306 驅動控制晶片 - I2C(十八)
※ DIY - ESP8266:ESP8266 SSD1306 0.96吋 I2C OLED 屏模塊 I/O 電路(十九)
※ DIY - ESP8266:ESP8266 SSD1306 0.96吋 I2C OLED 屏模塊 I/O 電路 2(二十)
※ DIY - ESP8266:SSD1306 0.96吋 SPI OLED 屏電路(二十三)
※ DIY - ESP8266:ESP-12F SSD1306 I2C OLED 屏模塊(四十三)

2018年 1月 15日 天氣報告
氣溫:16.0@ 20:10
相對濕度:百分之 80%
天氣:天色良好

沒有留言:

張貼留言