如下圖所示 Max7219 IC,為一 10MHz 的 SPI 串列介面驅動 IC,可以驅動一個共陰極 8×8 矩陣型 LED 顯示器,或是八個共陰極七段顯示器。 市面上已有將 Max7219 與共陰極 8×8 矩陣型 LED 包裝成品可以使用。 MAX7219 具有獨立 LED 段驅動,150 μA 低功率關閉模式、顯示亮度控制、數位 BCD 解碼選擇等功能,接腳功能說明如下表所示:

MAX7219 接腳功能說明

接腳 名稱 功能說明
1 DIN MAX7219 串列資料輸入腳,在 CLK 脈波的正緣載入至 MAX7219 內部的 16 位元暫存器。
2,3,5 ~ 8,10,11 DIG0~DIG7 8 位驅動輸出腳,動作時輸出低電位,每支腳可以輸出 320 mA,關閉時輸出高電位。
4,9 GND 接地腳,4 腳與 9 腳必須同時接地。
12 LOAD 致能腳,資料在 LOAD 信號的正緣被鎖定。
13 CLK 脈波輸入腳。 最大速率 10MHz,在脈波的正緣,資料由 DIN 移入 MAX7219 內部暫存器,在脈波的負緣,資料由 MAX7219 移出 DOUT。
14~17,20~23 SEG A~SEG G,SEG P 7 段與小數點驅動輸出腳,動作時輸出高電位,每支腳可輸出 40 mA,關閉時輸出低電位。
18 ISET 段驅動電流設定腳,ISET 腳連接一電阻 R 至 V+ 腳,選擇電阻 R 值來決定段驅動電流大小。
19 V+ + 5V 電源腳
24 DOUT MAX7219 串列資料輸出腳,DIN 的輸入資料經過 16.5 個 CLK 脈波後由 DOUT 輸出。 主要用來擴展多個 MAX7219 使用。

 

如下表所示為 MAX7219 的 16 位元串列資料格式,串列資料由 MSB 位元開始移入 DIN,並由 DOUT 移出。 其中 D15~D12 不使用,D11~D8 設定暫存器位址。

MAX7219 的16位元串列資料格式

D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
× × × × 位址 ( ADDRESS ) 資料 ( DATA )

 

下表所示為 MAX7219 內部 14 個暫存器位址對映,包含 Digit 0~Digit 7 等 8 個資料暫存器可以個別存取內部 8×8 SRAM 記憶體,以及解碼模式 ( Decode Mode )、亮度控制 ( Intensity )、掃描限制 ( Scan Limit )、關閉模式 ( Shutdown ) 及顯示測試 ( Display Test ) 等 5 個控制暫存器。

暫存器 位址 ( ADDRESS ) 16 進碼
REGISTER D15-D12 D11 D10 D9 D8 HEX_Code
No-Op × 0 0 0 0 0x00
Digit 0 × 0 0 0 1 0x01
Digit 1 × 0 0 1 0 0x02
Digit 2 × 0 0 1 1 0x03
Digit 3 × 0 1 0 0 0x04
Digit 4 × 0 1 0 1 0x05
Digit 5 × 0 1 1 0 0x06
Digit 6 × 0 1 1 1 0x07
Digit 7 × 1 0 0 0 0x08
Decode Mode × 1 0 0 1 0x09
Intensity × 1 0 1 0 0x0A
Scan Limit × 1 0 1 1 0x0B
Shutdown × 1 1 0 0 0x0C
Display Test × 1 1 1 1 0x0F

 

☛ 不工作 ( No-Op )

不工作 ( No-Op ) 暫存器位址為 0x00,當有多個 MAX 7219 串接使用時,可以將所有 MAX 7219 的 LOAD 腳連接在一起,再將相鄰的 DOUT 與 DIN 連接在一起。 例如四個 MAX7219 串接使用時,如果要傳送資料至第四個 MAX7219,可以先傳送一位元組資料,後面緊接著傳送三組 No-Op 代碼,此時只有第四個 MAX7219 可以收到資料,其它三個 MAX7219 接收到 No-Op 代碼,所以不工作。

☛ 解碼模式 ( Decode mode )

解碼模式控制暫存器位址為 0x09,設定方式如下表所示,是用來設定每個數位資料使用如下表所示 B 型 BCD 解碼或是不解碼。 通常驅動七段顯示器時可以選擇 BCD 解碼,而驅動 8×8 矩陣型 LED 顯示器可以選擇不解碼。

解碼模式 ( Decode Mode ) 暫存器:位址 0x09=9

模式 暫存器資料 16 進位
MODE D7 D6 D5 D4 D3 D2 D1 D0 HEX
不解碼 0 0 0 0 0 0 0 0 0x00
解碼 Digit 0 0 0 0 0 0 0 0 1 0x01
解碼 Digit 0~3 0 0 0 0 1 1 1 1 0x0F
解碼 Digit 0~7 1 1 1 1 1 1 1 1 0xFF

 

B 型 BCD 解碼字形表

7-SEGMENT REGISTER DATA ON SEGMENT = 1
CHARACTER D7* D6-D4 D3 D2 D1 D0 DP* A B C D E F G
0   × 0 0 0 0   1 1 1 1 1 1 0
1   × 0 0 0 1   0 1 1 0 0 0 0
2   × 0 0 1 0   1 1 0 1 1 0 1
3   × 0 0 1 1   1 1 1 1 0 0 1
4   × 0 1 0 0   0 1 1 0 0 1 1
5   × 0 1 0 1   1 0 1 1 0 1 1
6   × 0 1 1 0   1 0 1 1 1 1 1
7   × 0 1 1 1   1 1 1 0 0 0 0
8   × 1 0 0 0   1 1 1 1 1 1 1
9   × 1 0 0 1   1 1 1 1 0 1 1
  × 1 0 1 0   0 0 0 0 0 0 1
E   × 1 0 1 1   1 0 0 1 1 1 1
H   × 1 1 0 0   0 1 1 0 1 1 1
L   × 1 1 0 1   0 0 0 1 1 1 0
P   × 1 1 1 0   1 1 0 0 1 1 1
blank   × 1 1 1 1   0 0 0 0 0 0 0

 

☛ 亮度控制 ( Intensity )

MAX7219 利用連接於 V+ 及 ISET 間的電阻 RSET 來控制亮度顯示,電阻最小值為 9.53KΩ ( 一般使用 10KΩ ),所設定的最大段電流為 ISEG = 40mA。 如下表所示亮度控制暫存器,位址為 0x0A,利用其 D3~D0 四個位元來設定電流工作週期來改變電流值由 ( 1/16 ) ISEG ~ ( 15/16 ) ISEG,即可改變顯示器的亮度。

亮度控制暫存器 ( Intensity ) 暫存器:位址 0x0A = 10

DUTY CYCLE D7 D6 D5 D4 D3 D2 D1 D0 HEX CODE
MAX7219 MAX7221
1/32 (min on ) 1/16 ( min on ) × × × × 0 0 0 0 x0
3/32 2/16 × × × × 0 0 0 1 x1
5/32 3/16 × × × × 0 0 1 0 x2
7/32 4/16 × × × × 0 0 1 1 x3
9/32 5/16 × × × × 0 1 0 0 x4
11/32 6/16 × × × × 0 1 0 1 x5
13/32 7/16 × × × × 0 1 1 0 x6
15/32 8/16 × × × × 0 1 1 1 x7
17/32 9/16 × × × × 1 0 0 0 x8
19/32 10/16 × × × × 1 0 0 1 x9
21/32 11/16 × × × × 1 0 1 0 xA
23/32 12/16 × × × × 1 0 1 1 xB
25/32 13/16 × × × × 1 1 0 0 xC
27/32 14/16 × × × × 1 1 0 1 xD
29/32 15/16 × × × × 1 1 1 0 xE
31/32 15/16 ( max on ) × × × × 1 1 1 1 xF

 

☛ 關閉模式 ( Shutdown )

如下表所示關閉模式控制暫存,位址為 0x0C,在關閉模式下的所有段輸出接地,所有數位驅動輸出接 +5V,所有顯示器不亮。

關閉模式 ( Shutdown ) 暫存器:位址 0x0C = 12

模式 暫存器資料 16 進位
MODE D7 D6 D5 D4 D3 D2 D1 D0 HEX
關閉模式 × × × × × × × 0 0x00
正常模式 × × × × × × × 1 0x01

 

☛ 掃描控制 ( Scan Limit )

如下表所示掃描控制暫存器,位址為 0x0B,是用來設定掃描顯示器的個數,從1個至8個。 以 8×fosc/N 的掃描速率來掃描,其中 fosc = 800Hz,而 N 為顯示器的個數,掃描個數將會影響顯示亮度,所以不能將掃描暫存器設定為空掃描。 掃描暫存器的設定格式如下:

掃描控制 ( Scan Limit ) 暫存器:位址 0x0B = 11

Scan Limit D7 D6 D5 D4 D3 D2 D1 D0 HEX
顯示 Digit 0 × × × × × 0 0 0 0x00
顯示 Digit 0,1 × × × × × 0 0 1 0x01
顯示 Digit 0,1,2 × × × × × 0 1 0 0x02
顯示 Digit 0,1,2,3 × × × × × 0 1 1 0x03
顯示 Digit 0,1,2,3,4 × × × × × 1 0 0 0x04
顯示 Digit 0,1,2,3,4,5 × × × × × 1 0 1 0x05
顯示 Digit 0,1,2,3,4,5,6 × × × × × 1 1 0 0x06
顯示 Digit 0,1,2,3,4,5,6,7 × × × × × 1 1 1 0x07

 

☛ 顯示測試 ( Display Test )

如下表所示顯示測試 ( Display Test ) 暫存器,位址為 0x0F,是用來測試所有顯示器是否正常。 在顯示測試模式下,所有段輸出為高電位,所有數位驅動輸出為低電位且驅動電流最大。

模式 暫存器資料 16 進位
MODE D7 D6 D5 D4 D3 D2 D1 D0 HEX
正常模式 × × × × × × × 0 0x00
顯示測試模式 × × × × × × × 1 0x01