2020-02-13

Arduino 控制 SN74HC595 8位元移位暫存器晶片

最近終於有時間整理從朋友回收回來的電子零件,整理完便測試零件能否使用

LED 這些只需要給予正確電壓再接通正負極,便可以測試
但 晶片 需要接通每支引腳 再給予正確的電訊才能完成測試

外觀

見下文
見下文
SN74HC595 正面,共有 16支引腳

見下文
SN74HC595 背面,印著 2F9中斷啟動暫存器 (Interrupt Enable Register (IER)) 的地址

引腳編排及用途

引腳16引腳15引腳14引腳13引腳12引腳11引腳10引腳9
引腳1引腳2引腳3引腳4引腳5引腳6引腳7引腳8
用途
(缺口在左邊)
VCCD7SDIENLCKSCKCLRSDO
D6D5D4D3D2D1D0GND

編號描述方向用途
1D6輸入第6位元資料
2D5輸入第5位元資料
3D4輸入第4位元資料
4D3輸入第3位元資料
5D2輸入第2位元資料
6D1輸入第1位元資料
7D0輸入第0位元資料
8GND接地
9SDO輸出序列資料輸出
10CLR輸入清除資料
低電壓 為 執行清除
高電壓 為 不執行清除
可以保持 低電壓 來保持 不執行清除狀態
11SCK輸入序列時脈
低電壓 為 開始接收 SDI訊號
高電壓 為 保存 SDI訊號
12LCK輸入閉鎖時脈
低電壓 為 開始接收 8位元資料
高電壓 為 送出並清除 8位元資料
13EN輸入啟動
低電壓 為 執行啟動
高電壓 為 停止啟動
可以保持 高電壓 來保持 啟動狀態
14SDI輸入序列資料輸入
15D7輸入第7位元資料
16VCC電源 (接受 2V 至 6V)

暫存器訊號

引腳初始化開始8位元訊號週期結束
LCK
SCK
SDI高/低

訊號波紋時序圖
LCKSCKSDI
使用要留意
暫存器 不會知道要接收多少訊號後才將資料送出,只是靠 LCK引腳 處理
當 LCK引腳 為 低電壓 時,便會保存資料; LCK引腳 為 高電壓 時,便會將暫存器的資料送出,並清空暫存器的資料
但 暫存器 只保存 8位元資料,例如已經保存 165(dec) = A5(hex) = 10100101(bin)
由於 SN74HC595 以 最低有效位 寫入資料,例如寫入 1 ,資料會變成 331(dec) = 14B(hex) = 101001011(bin)
但由於只保存 8位元資料,會變成 75(dec) = 4B(hex) = 01001011(bin)

線路接駁

見下文
使用 共陽獨立電阻方式 接駁
https://www.tinkercad.com/things/kQ2pRTuU5Jv Tinkercad 測試效果

見下文
使用 共陰獨立電阻方式 接駁
https://www.tinkercad.com/things/0oJ3YTXP8BT Tinkercad 測試效果

見下文
使用 共陽共用電阻方式 接駁
https://www.tinkercad.com/things/kSBplxGT3PY Tinkercad 測試效果

見下文
使用 共陰共用電阻方式 接駁
https://www.tinkercad.com/things/aMH7PpyDvpS Tinkercad 測試效果

共陽 或 共陰 的 接駁方式在效果上沒有太大分別
但由於 SN74HC595 是以正極方向輸出訊號,使用 共陽 連接方式送出訊號,並沒有特別需要注意
如果使用 共陰 方式連接,則要以相反的資訊送出
例如使用 共陽連接方式 送出 153(dec) = 99(hex) = 10011001(bin)
使用 共陰連接方式 便要送出 102(dec) = 66(hex) = 01100110(bin) ,編程時可以用 0xFF ^ data 來轉換

而 獨立電阻 或 共用電阻 則影響 LED的光度
獨立電阻 即是所有 LED 同時亮著都不會影響光度,但 成本比較高
共用電阻 越多 LED 同時亮著時光度會下降,但 成本比較低

見下文
見下文
在下為了節省成本及時間,使用 共陰 及 共用電阻方式 連接

見下文
使用 Arduino Nano 並安裝到 麵包板

見下文
SN74HC595 安裝到 麵包板

見下文
展示 0(dec) = 00(hex) = 00000000(bin) 至 255(dec) = FF(hex) = 11111111(bin) 的訊號
由於在下使用 共用電阻方式 連接,會發現當幾個 LED 同時亮著會偏暗

在下有使用 共陽七段顯示器 測試
在下為了方便 使用七段顯示器 設計一塊 轉接器原型

見下文
見下文
將 七段顯示器模組 安裝到 麵包板

見下文
由於 每粒LED 已經焊接 獨立電阻 ,可以直接連接到 SN74HC595 8支資料引腳

見下文
使用 SN74HC595 控制 七段顯示器

總結

SN74HC595 是一種簡單易用的 移位暫存器,在下查看 Datasheet 竟然只需要10多分鐘便明白使用方法
SN74HC595 可以將需要使用 8支引腳 的 電子器材
減省到 6支引腳 (SDI, EN, LCK, SCK, CLR, SDO) ,甚至 3支引腳 (SDI, LCK, SCK) 便可以運作
想方便使用還可以 設計印刷電路板, 將 SN74HC595 當作模組,方便接駁到其他裝置、接駁線路及使用

有興趣可以到 https://bitbucket.org/hkgoldenmra/sn74hc595
https://create.arduino.cc/editor/hkgoldenmra/4c4f04fb-5cff-4d89-aad7-faa643b81069/preview 了解
或在 Terminal 輸入
git clone "https://bitbucket.org/hkgoldenmra/sn74hc595.git" --depth=1
下載專案

感想

SN74HC595 及 白色LED 其實都是朋友回收的電子零件
還有一些電阻、電容、電池、電晶體、晶片座、其他晶片
白色LED 差不多有 400粒,單是除錫回收,總共使用差不多 16小時,完成後還要測試是否正常
雖然不是全數正常,但最後大約有 300粒 仍能運作,結果算不錯
現在在下開始會將一些認為是損壞了而且不能維收的 電子產品 或 電器,都盡量將內部的電子零件卸除
可以留待有需要時能夠使用或維修其他 電子產品 或 電器

參考資料

沒有留言 :

張貼留言