一 介紹
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
- 內建 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 的工作溫度範圍
-
256階的亮度控制
八 功能描述
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