SSD1306 128x64 OLED 【二】 Datasheet


一 介紹

SSD1306是帶控制器的CMOS OLED/PLED驅動器,適用於OLED點陣圖形顯示系統,

它支援128個segment(列)及64個common(行)

此IC是為共陰極的OLED面板設計

SSD1306內置對比度控制、顯示RAM和振盪器,減少了外部元件的數量和功耗,256階的亮度控制

MCU可透過 6800/8000並列埠,I2C bus或SPI來發送 像素資料/指令


二 功能

  • 解析度:128 x 64 像素
  • 電源:IC VDD = 1.65V 到 3.3V,Panel 7V 到 15V驅動
  • 點矩陣驅動:OLED驅動最大電壓 15V,Segment最大供應電流 100uA,Common最大匯集電流 10mA
    • 256階的亮度控制
  • 內建 128 x 64 bit SRAM顯示儲存
  • 可選擇的MCU接口
    • 8-bit 6800/8080-series parallel interface
    • 3 /4 wire Serial Peripheral Interface
    • I2C Interface
  • 水平及垂直方向的持續性滾動功能
  • RAM寫入同步訊號
  • 可設置的Frame Rate 和 Multiplexing Ratio
  • 行/列 的映射定義
  • 內置振盪器
  • 支持COG及COF的包裝
  • -40°C to 85°C 的工作溫度範圍

八 功能描述


8.1.5.1 I2C bus 資料寫入

I2C bus可以寫入 指令/資料,Slave Address 0x3C/0x3D(7bits)後接的第二個Control byte,

Control byte的bit 6(D/C)可用以區分之後的data是 0:指令(Command)1:顯示像素(pixel)

ex:寫入指令 0x3C 0x00 0xAF (顯示開啟)

ex:寫入像素 0x3C 0x40 0xFF (GDDRAM填入0xFF像素資料)


8.7 Graphic Display Data RAM (GDDRAM)

GDDRAM是固定的位元映射RAM,保存要顯示的位元圖形

RAM的大小為128x64 bits,分為8個page (PAGE0 到 PAGE7)

對應到 單色128x64的點矩陣顯示


寫入 1 byte資料到GDDRAM,當前column列定址位置被填滿 8 bits,資料位元寫入由上往下bit0到bit7

Figure 8-14 : Enlargement of GDDRAM (無重新定義映射)

為了實現機械靈活性,可以透過軟體選擇段輸出和公共輸出的重新映射,如圖 8-13 所示

對於顯示的垂直移位,可以設定儲存顯示起始行的內部暫存器來控制 RAM 資料的一部分被對應到顯示器(指令 D3h)


九 指令表

9.1 功能指令

1. Fundamental Command Table
D/C# Hex D7 D6 D5 D4 D3 D2 D1 D0 Command Description
0
0
81
A[7:0]
1
A7
0
A6
0
A5
0
A4
0
A3
0
A2
0
A1
1
A0
Set Contrast Control 256階對比,對比度隨數值增加
(預設 7Fh)
0 A4/A5 1 0 1 0 0 1 0 X0 Entire Display ON A4:依GDDRAM內容顯示 (預設)
A5:Pixel像素全點亮
0 A6/A7 1 0 1 0 0 1 1 X0 Set Normal/Inverse
Display
A6:正常顯示 (0暗1亮) (預設)
A7:反向顯示 (0亮1暗)
0 AE/AF 1 0 1 0 1 1 1 X0 Set Display ON/OFF AE:顯示關閉 (預設)
AF:顯示開啟


9.2 滾動指令

2. Scrolling Command Table
D/C# Hex D7 D6 D5 D4 D3 D2 D1 D0 Command Description
0 26/27
A[7:0]
B[2:0]
C[2:0]
D[2:0]
E[7:0]
F[7:0]
0
0
*
*
*
0
1
0
0
*
*
*
0
1
1
0
*
*
*
0
1
0
0
*
*
*
0
1
0
0
*
*
*
0
1
1
0
B2
C2
D2
0
1
1
0
B1
C1
D1
0
1
X0
0
B0
C0
D0
0
1
Continuous
Horizontal Scroll
Setup
連續水平滾動
26h:向右滾動
27h:向左滾動
(每次水平滾動1列)

B[2:0]:開始的Page

C[2:0]:每次滾動的frame數
000b - 5 frames 100b - 3 frames
001b - 64 frames 101b - 4 frames
010b - 128 frames 110b - 25 frames
011b - 256 frames 111b - 2 frames

D[2:0]:結束的Page (D[2:0]須大于等于B[2:0])
0 29/2A
A[2:0]
B[2:0]
C[2:0]
D[2:0]
E[5:0]
0
0
*
*
*
*
0
0
*
*
*
*
1
0
*
*
*
E5
1
0
*
*
*
E4
1
0
*
*
*
E3
0
0
B2
C2
D2
E2
X1
0
B1
C1
D1
E1
X0
0
B0
C0
D0
E0
Continuous
Vertical and
Horizontal Scroll
Setup
連續水平和垂直滾動
29h:垂直和水平右滾動
2Ah:垂直和水平左滾動
(每次水平滾動1列)

B[2:0]:開始的Page

C[2:0]:每次滾動的frame數
000b - 5 frames 100b - 3 frames
001b - 64 frames 101b - 4 frames
010b - 128 frames 110b - 25 frames
011b - 256 frames 111b - 2 frames

D[2:0]:結束的Page (D[2:0]須大于等于B[2:0])

E[5:0]:垂直滾動徧移量
1到63行 (0為不滾動)
0 2E 0 0 1 0 1 1 1 0 Deactivate scroll
停止滾動
(停止滾動後,GDDRAM的資料須要重新寫入)
0 2F 0 0 1 0 1 1 1 1 Activate scroll
啟動滾動
啟動指令2Fh緊接在指令26h/27h/29h/2Ah後
0 A3
A[5:0]
B[6:0]
1
*
*
0
*
B6
1
A5
B5
0
A4
B4
0
A3
B3
0
A2
B2
1
A1
B1
1
A0
B0
Set Vertical Scroll Area
設置垂直滾動區域
A[5:0]:頂部固定區塊 (預設0)
B[6:0]:可垂直滾動的行數 (預設64)
Note:
1. A[5:0]+B[6:0] <= MUX ratio2. B[6:0] <= MUX ratio
3. Vertical scrolling offset (E[5:0] in 29h/2Ah) < B[6:0]    Set Display Start Line (X5X4X3X2X1X0 of 40h~7Fh) < B[6:0]
4. The last row of the scroll area shifts to the first row of the scroll area
5. For 64d MUX display
A[5:0] = 0, B[6:0]=64 : whole area scrolls
A[5:0]= 0, B[6:0] < 64 : top area scrollsA[5:0] + B[6:0] < 64 : central area scrolls
A[5:0] + B[6:0] = 64 : bottom area scrolls


9.3 定址設定指令

3. Addressing Setting Command Table
D/C# Hex D7 D6 D5 D4 D3 D2 D1 D0 Command Description
0 00~0F 0 0 0 0 X3 X2 X1 X0 Set Lower Column
Start Address for
Page Addressing
Mode
Page尋址模式的列低位位址
(預設0)
0 10~1F 0 0 0 1 X3 X2 X1 X0 Set Higher Column
Start Address for
Page Addressing
Mode
Page尋址模式的列高位位址
(預設0)
0 20
A[1:0]
0
*
0
*
1
*
0
*
0
*
0
*
0
A1
0
A0
Set Memory
Addressing Mode
A[1:0] = 00b,Horizontal水平尋址模式
A[1:0] = 01b,Vertical垂直尋址模式
A[1:0] = 10b,Page頁尋址模式(預設)
0 21
A[6:0]
B[6:0]
0
*
*
0
A6
B6
1
A5
B5
0
A4
B4
0
A3
B3
0
A2
B2
0
A1
B1
1
A0
B0
Set Column Address A[6:0] : Column start address, range : 0-127d,
(預設0b)
B[6:0]: Column end address, range : 0-127d,
(預設127b)

Note:
只在20h為水平或垂直尋址模式有效
0 22
A[2:0]
B[2:0]
0
*
*
0
*
*
1
*
*
0
*
*
0
*
*
0
A2
B2
1
A1
B1
0
A0
B0
Set Page Address Setup page start and end address
A[2:0] : Page start Address, range : 0-7d,(預設0d)
B[2:0] : Page end Address, range : 0-7d,(預設7d)

Note:
This command is only for horizontal or vertical
addressing mode.
0 B0~B7 1 0 1 1 0 X2 X1 X0 Set Page Start
Address for Page
Addressing Mode
Page尋址模式時的起始page
Set GDDRAM Page Start Address
(PAGE0~PAGE7) for Page Addressing Mode
using X[2:0].
Note:
(1) This command is only for page addressing mode


9.4 硬體設置指令

4. Hardware Configuration (Panel resolution & layout related) Command Table
D/C# Hex D7 D6 D5 D4 D3 D2 D1 D0 Command Description
0 40~7F 0 1 X5 X4 X3 X2 X1 X0 Set Display Start Line Set display RAM display start line register from
設置GDDRAM映射到OLED的起始行

(預設0b)
0 A0/A1 1 0 1 0 0 0 0 X0 Set Segment Re-map A0h,GDDRAM的Column 0映射到Seg 0
A1h,GDDRAM的Column 127映射到Seg 0
0 A8
A[5:0]
1
*
0
*
1
A5
0
A4
1
A3
0
A2
0
A1
0
A0
Set Multiplex Ratio Set MUX ratio to N+1 MUX
N=A[5:0] : from 16MUX to 64MUX, RESET=
111111b (i.e. 63d, 64MUX)
A[5:0] from 0 to 14 are invalid entry.
0 C0/C8 1 1 0 0 X3 0 0 0 Set COM Output
Scan Direction
C0h, X[3]=0b: normal mode (RESET) Scan from
COM0 to COM[N –1]
C8h, X[3]=1b: remapped mode. Scan from
COM[N-1] to COM0
Where N is the Multiplex ratio.
0 D3
A[5:0]
1
*
1
*
0
A5
1
A4
0
A3
0
A2
1
A1
1
A0
Set Display Offset Set vertical shift by COM from 0d~63d
(預設0d)
0 DA
A[5:4]
1
0
1
0
0
A5
1
A4
1
0
0
0
1
1
0
0
Set COM Pins
Hardware
Configuration
A4 = 0b,序列COM pin設置
A4 = 1b,備用COM pin設置(預設)
A5 = 0b,禁止COM左右互換(預設)
A5 = 1b,啟動COM左右互換


9.5 時序及驅動設定指令

5. Timing & Driving Scheme Setting Command Table
D/C# Hex D7 D6 D5 D4 D3 D2 D1 D0 Command Description
0 D5
A[7:0]
1
A7
1
A6
0
A5
1
A4
0
A3
1
A2
0
A1
1
A0
Set Display Clock
Divide
Ratio/Oscillator
Frequency
A[3:0] : Define the divide ratio (D) of the
display clocks (DCLK): Divide ratio= A[3:0] + 1,
時脈分頻數
(預設0000b (divide ratio = 1))

A[7:4] : Set the Oscillator Frequency, FOSC.
Oscillator Frequency increases with
the value of A[7:4] and vice versa.
振盪頻率
(預設1000b)
0 D9
A[7:0]
1
A7
1
A6
0
A5
1
A4
1
A3
0
A2
0
A1
1
A0
Set Pre-charge Period
預充電週期
A[3:0] : Phase 1 period of up to 15 DCLK
clocks 0 is invalid entry
(RESET=2h)
A[7:4] : Phase 2 period of up to 15 DCLK
clocks 0 is invalid entry
(RESET=2h )
0 DB
A[6:4]
1
0
1
A6
0
A5
1
A4
1
0
0
0
1
0
1
0
Set VCOMH Deselect
Level
000b:0.65 x Vcc
010b:0.77 x Vcc (預設)
011b:0.83 x Vcc
0 E3 1 1 1 0 0 0 1 1 NOP Command for no operation


十 指令功能描述

10.1.3 尋址模式設定(20h)

SSD1306支援 Page頁/horizontal水平/vertical垂直 3種尋址方式,


Page addressing mode (A[1:0]=10xb)頁尋址模式

在Page addressing mode每次對GDDRAM讀/寫1毎byte後,column列定址會順序加1,

直到column定址到COL127結束後,point會重新回到同個Page, column列的起始位置


在page addressing mode及normal display(A6)對GDDRAM讀/寫時,

須要先執行下列步驟來定址point在GDDRAM的起始位置

  • Set Page Start Address for Page Addressing Mode使用指令(B0h~B7h)
  • Set Lower Column Start Address for Page Addressing Mode 使用指令(00h~0Fh)
  • Set Higher Column Start Address for Page Addressing Mode (10h~1Fh)


Horizontal addressing mode (A[1:0]=00b)水平尋址模式

每次對GDDRAM讀/寫1毎byte後,column列定址會順序加1,直到column定址到COL127結束後,

point會回到column的起始位置,page順序加1,page到結束頁後會再回到起始頁


Vertical addressing mode (A[1:0]=01b)垂直尋址模式

每次對GDDRAM讀/寫1毎byte後,Page位置加1,

Page到結束頁後再重置回到起始頁,column位置+1


補充

0.3 軟體設定

這是datasheet最後補充的軟體初始化設定流程


實際使用過只要下列幾行指令就可以在OLED上顯示

  • 1. 0x3C 0x00 0x8D 0x14 啟動Charge Bump
  • 2. 0x3C 0x00 0xAF 開啟顯示
  • 3. 0x3C 0x00 0x22 0x00 0x07 設置Page起始/結束的Address
  • 4. 0x3C 0x00 0x21 0x00 0x7F 設置Column起始/結束的Address
  • 5. 0x3C 0x40 0xFF 寫入8個high bit像素顯示



(1) SSD1306 128x64 OLED 【一】I2C版本
(3) SSD1306 128x64 OLED 【三】不使用Adafruit Library

留言