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