2020-02-20

Arduino 控制 MAX7219 1088AS 八乘八點陣顯示器

逛鴨寮街時到電子零件舖查看時發現這塊 MAX7219模組
價錢為20元,便購買回來了解運作原理
這篇文章是 隨意而寫


外觀

MAX7219晶片
見下文
見下文
MAX7219晶片 正面

見下文
MAX7219晶片 背面


引腳
使用 雙列直插封裝 (Dual In-line Package (DIP))MAX7219 共有 24支引腳
242322212019181716151413
用途SDOA4A0A5A3VCCSETA7A2A6A1SCK
SDIK0K4GNDK6K2K3K7GNDK5K1CS
123456789101112

編號引腳方向用途
1SDI輸入序列資料輸入
2K0輸出第0陰極
3K4輸出第4陰極
4GND接地
5K6輸出第6陰極
6K2輸出第2陰極
7K3輸出第3陰極
8K7輸出第7陰極
9GND接地
10K5輸出第5陰極
11K1輸出第1陰極
12CS輸入晶片選擇
13SCK輸入序列時脈
14A1輸出第1陽極
15A6輸出第6陽極
16A2輸出第2陽極
17A7輸出第7陽極
18SET輸入啟動
19VCC電源 (接受 4.0V 至 5.5V)
20A3輸出第3陽極
21A5輸出第5陽極
22A7輸出第0陽極
23A4輸出第4陽極
24SDO輸出序列資料輸出

訊號
MAX7219 是使用 最高有效位 (Most Significant Bit (MSB)) 次序發送訊號
引腳初始化開始資料 週期結束
第1元位組第0元位組
第7至第0位元 (資料)
第15至第12位元 (無效)第11至第8位元 (地址)
延遲4微秒
CS
SCL
SDI高/低
SDO高/低

訊號波紋時序圖
CS SCL SDI SDO

MAX7219 都是使用 序列周邊介面 (Serial Peripheral Interface (SPI)) ,只是由 1組8位元資料 增加至 2組8位元資料
將之前製作的 SPI 函式庫稍作修改便可以使用

暫存器
MAX7219 有一些特定用途的 指示暫存器資料暫存器 來 控制 MAX7219 及讓 MAX7219 控制其他電子工具
雖然 1位元組 共有 8位元 ,但 第1位元組 只需要使用 D11 至 D8 為地址; D15 至 D12 並沒有作用,可以是任意資料
第1位元組用途
無效地址
D15D14D13D12D11D10D9D8
****0001D0 暫存位元組
****0010D1 暫存位元組
****0011D2 暫存位元組
****0100D3 暫存位元組
****0101D4 暫存位元組
****0110D5 暫存位元組
****0111D6 暫存位元組
****1000D7 暫存位元組
****1001解碼模式
****1010強度設定
****1011掃瞄範圍
****1100關機狀態
****1111顯示測試

D* 暫存位元組
MAX7219 共有 8個資料暫存器,每個資料暫存器可以保存 1位元組資料 ,即是 8位元資料
第0位元組用途
資料
D7D6D5D4D3D2D1D0
********8位元資料

解碼模式
B編碼 是一種專針對 七段顯示器 的編碼
七段顯示器
顯示圖案
B編碼資料等價於第n陽極狀態
無效地址
D7D6D5D4D3D2D1D001234567
0****0000
1****0001
2****0010
3****0011
4****0100
5****0101
6****0110
7****0111
8****1000
9****1001
-****1010
E****1011
H****1100
L****1101
P****1110
#空白#****1111
B編碼 只支援 數字 0 至 9連接符 (Hyphen)英文字母 E, H, L, P空白 (Space) 共 16種圖案
從圖案設計保存的 數字、連接符、空白 可以用作顯示電話號碼,英文字母 排列正確便是 HELP 估計是 求救用途
第0位元組用途
資料
D7D6D5D4D3D2D1D0
00000000第 7 至 0 位元,正常編碼
00000001第 7 至 1 位元,正常編碼
第 0 位元, B編碼
00001111第 7 至 4 位元,正常編碼
第 3 至 0 位元, B編碼
11111111第 7 至 0 位元, B編碼

強度設定
調整 MAX7219 的電壓
第0位元組用途
無效資料
D7D6D5D4D3D2D1D0
********0 至 15 ,數值越大越光

掃瞄範圍
開放 資料暫存器 的數量
第0位元組用途
無效資料
D7D6D5D4D3D2D1D0
********0 至 7 ,使用位元數量

關機狀態
啟用功能時所有 陽極引腳 發出 低電壓,所有 陰極引腳 發出 高電壓
關機狀態 會被 顯示模式 覆蓋
第0位元組用途
無效資料
D7D6D5D4D3D2D1D0
********0 或 1 : 0 為 確認關機 ; 1 為 取消關機

顯示測試
啟用功能時所有 陽極引腳 發出 高電壓,所有 陰極引腳 發出 低電壓
顯示模式 能覆蓋 關機狀態
第0位元組用途
無效資料
D7D6D5D4D3D2D1D0
********0 或 1 : 0 為 正常顯示 ; 1 為 測試顯示

1088AS八乘八點陣顯示器
見下文
1088AS八乘八點陣顯示器 正面
正面除了印下型號,還有一粒點,方便辨認

見下文
在下之前都一塊 八乘八點陣顯示器
之前的是 1088BS ,這次的是 1088AS
(型號印刷的顏料非常容易褪色,編寫完這篇文章後 1088AS 都已經褪色)

見下文
同樣印有編碼的方向為正面

MAX7219模組
見下文
見下文
MAX7219模組 正面
有一些 曲引腳、晶片座、引腳座 等電子零件

見下文
見下文
MAX7219模組 背面

MAX7219模組 有 輸入 及 輸出 方向
輸入方向
見下文
編號引腳方向用途
1VCC電源 (接受 4.0V 至 5.5V)
2GND接地
3DIN輸入資料輸入
資料以 最高有效位 送出
總共要送出 12位元資料 ,每次操作需要發送 2次8位元資料
第15至12位元資料為無效位元,但仍必須發送
4CS輸入晶片選擇
低電壓選擇
高電壓不選擇
5CLK輸入時脈
低電壓接收資料
高電壓送出資料
輸出方向
見下文
編號引腳方向用途
1VCC與 輸入 VCC 相同
2GND與 輸入 GND 相同
3DOUT輸出資料輸出
每次輸入1位元資料,會輸出1位元資料
4CS輸入與 輸入 CS 相同
5CLK輸入與 輸入 CLK 相同

見下文
一粒 10KΩ 電阻

見下文
一粒 104陶瓷電容
104 意思是 10 * 104 = 100000pF = 100nF = 0.1uF

見下文
一粒 25V 10uF 電容

見下文
見下文
將 MAX7219 及 八乘八點陣顯示器 安裝到 模組上

見下文
安裝 MAX7219 時要 面向輸入方向

見下文
安裝 八乘八點陣顯示器 時要 當正面面向自己時輸入方向在左側

線路接駁

見下文
在下的線路原型,非常簡單
接駁電源及接地,再使用其中3支引腳接駁 MAX7219模組

見下文
見下文
正式接駁時,在下再懶一點,直接駁 MAX7219模組連接到麵包板上,使用 Arduino 其中 2支引腳 作為 電源 及 接地

見下文
但在下測試時,發現控制第4行、第8行時出現問題,而且網上翻查不到原因
因此在下將 MAX7219 及 八乘八點陣顯示器 卸除來測試

在下為了方便測試亦設計了一塊 八乘八點陣顯示器轉接器 的 印刷電腦板

見下文
八乘八點陣顯示器轉接器設計 正面

見下文
八乘八點陣顯示器轉接器設計 背面

見下文
見下文
八乘八點陣顯示器轉接器原型 正面

見下文
見下文
八乘八點陣顯示器轉接器原型 背面

見下文
見下文
見下文
見下文
焊接 電阻 及 引腳座 到 印刷電路板

見下文
設計原型

見下文
見下文
如在下所料,線路又多又亂

見下文
八乘八點陣顯示器連接器

見下文
使用 Arduino Nano

見下文
見下文
見下文
MAX7219 被大量跳線包圍

見下文
著亮 所有LED 只有第4及第8行 光度正常,其他非常暗
因為在下改為每行只需要著亮 1粒LED,以波紋方式顯示,方便在下跟進
最後依然只有 第4及第8行 光度正常,其他雖然暗,但勉強能看到
但最少證明在下的線路正確,MAX7219 及 八乘八點陣顯示器 都正常
(光度不平均應該是沒有正確安裝 電容 及 電阻)

見下文
最後在下仔細檢查 MAX7219模組 的背後,發現晶片座有 2支引腳 焊接不良
(最初的相片是已經處理焊接問題)

見下文
使用放大器可見到有 2支引腳 被 錫絲 連著
而這 2支引腳 就是用作控制 八乘八點陣顯示器 第4行及第8行

見下文
因此在下將 2支引腳 之間的錫絲焊掉

見下文
重新安裝到 MAX7219模組 測試,終於能正常顯示

總結

使用 MAX7219 前都不懂如何區分 共陽 及 共陰 的零件,每次都要用 萬用表 或 接駁電源及接地測試
在下發現原來購買的 LED顯示器 共陽 會以 **B* 命名, 共陰 會以 **A* 命名,但這只是一種快速檢查方法,並非所有零件都會這樣命名
購買 MAX7219模組 本來以為接駁線路後便可以使用,但竟然出現問題,網上完全沒有相關問題 (或在下不懂如何尋找)
唯有將 MAX7219 及 1088AS 與 MAX7219模組 分拆出來測試,又發現線路正常,因此在下認為是 MAX7219模組 有問題
再仔細觀察才知道是引腳問題 (瑕疵品) ,但幸好這種小問題在下仍有能力解決,否則在下不知從何入手

電器有時都會有些小問題,其實損壞程度不算太嚴重,都可以嘗試了解問題的成因,只要有合適的工具便可以自行修理
又可以學習知識,又可以慳錢,又可以避免浪費

參考資料

沒有留言 :

張貼留言