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粒 仍能運作,結果算不錯
現在在下開始會將一些認為是損壞了而且不能維收的 電子產品 或 電器,都盡量將內部的電子零件卸除
可以留待有需要時能夠使用或維修其他 電子產品 或 電器

參考資料

沒有留言 :

張貼留言