Arduino與74HC595移位寄存器 高效擴展輸出引腳指南
在Arduino項目中,當需要控制大量LED、繼電器或其他數字輸出設備時,有限的I/O引腳往往成為瓶頸。74HC595移位寄存器是一款低成本、易于使用的串行輸入、并行輸出芯片,能夠通過3個Arduino引腳控制8個輸出,并支持多片級聯,極大地擴展了輸出能力。本文將詳細介紹如何在Arduino中使用74HC595。
一、74HC595簡介
74HC595是一款8位串行輸入/并行輸出移位寄存器,帶有輸出鎖存器。其主要引腳功能如下:
- DS(14腳):串行數據輸入
- SHCP(11腳):移位寄存器時鐘輸入,上升沿將數據移入
- STCP(12腳):存儲寄存器時鐘輸入,上升沿將移位寄存器數據鎖存到輸出寄存器
- OE(13腳):輸出使能,低電平有效(通常接地)
- MR(10腳):主復位,低電平有效(通常接高電平)
- Q0~Q7(15,1~7腳):8位并行輸出
- Q7'(9腳):串行數據輸出,用于級聯下一片595
二、硬件連接
以Arduino UNO為例,連接一片74HC595:
- 將74HC595的VCC(16腳)接5V,GND(8腳)接GND。
- OE(13腳)接GND,使輸出始終使能。
- MR(10腳)接5V,不復位。
- DS(14腳)接Arduino的D11(數據)。
- SHCP(11腳)接Arduino的D12(移位時鐘)。
- STCP(12腳)接Arduino的D13(鎖存時鐘)。
- 輸出Q0~Q7可連接LED(需串聯限流電阻)或其他設備。
若需級聯多片,將第一片的Q7'(9腳)接第二片的DS(14腳),并共用SHCP和STCP信號。
三、Arduino編程
Arduino內置了shiftOut()函數,可輕松驅動74HC595。以下示例代碼演示了如何通過595控制8個LED依次點亮(流水燈效果):
`cpp
// 定義引腳
const int dataPin = 11; // DS
const int latchPin = 12; // STCP
const int clockPin = 13; // SHCP
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
for (int i = 0; i < 8; i++) {
// 將數據鎖存到輸出寄存器
digitalWrite(latchPin, LOW);
// 移位輸出:從最低位開始,每次一個1
shiftOut(dataPin, clockPin, MSBFIRST, 1 << i);
digitalWrite(latchPin, HIGH);
delay(100);
}
}`
代碼說明:
shiftOut(dataPin, clockPin, bitOrder, value):將value的8位數據按指定順序(MSBFIRST或LSBFIRST)移出。- 每次循環先將latchPin拉低,以便在移位過程中輸出保持不變;移位完成后將latchPin拉高,數據鎖存到輸出引腳。
1 << i生成一個只有第i位為1的字節,實現依次點亮。
四、級聯多個595
級聯時,只需依次發送多個字節,先發送將到達最后一片595的數據。例如,控制16個LED,使用兩片595,代碼片段如下:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, highByte); // 第二片的數據
shiftOut(dataPin, clockPin, MSBFIRST, lowByte); // 第一片的數據
digitalWrite(latchPin, HIGH);
此處highByte對應第二片595的輸出,lowByte對應第一片。多片級聯同理。
五、注意事項
- 電流限制:74HC595每個輸出引腳最大灌電流約35mA,但芯片總電流有限制(通常70mA),不宜直接驅動大功率負載(如電機、高亮LED),建議配合晶體管或驅動芯片。
- 電源去耦:在VCC和GND之間靠近芯片處加0.1μF電容,提高穩定性。
- 電平匹配:74HC595工作電壓2~6V,可與3.3V或5V Arduino兼容。
- 布線:時鐘線較長時可能引入干擾,盡量縮短連線。
六、
74HC595是Arduino擴展輸出引腳的理想選擇,僅需3個引腳即可控制8路輸出,且支持級聯。掌握其工作原理和shiftOut()函數的使用,能夠輕松應對LED矩陣、數碼管、繼電器組等需要多路輸出的項目,提升項目的可擴展性和性價比。
如若轉載,請注明出處:http://m.hongye888.cn/product/46.html
更新時間:2026-11-10 13:23:36