快速解答
如果您需要大量簡單的開/關輸出,並希望每個引腳的成本最低,請使用 74HC595 移位暫存器。如果您只需要少量輸出,並希望節省微控制器引腳,請使用 I2C 擴展器,例如 PCF8574。取捨在於引腳數量與接線簡潔性及電流驅動能力之間的平衡。
74HC595 移位暫存器的工作原理
74HC595 是一個 8 位元的串列輸入、並列輸出移位暫存器。您可以使用三個微控制器接腳(資料、時脈和閂鎖)一次一個位元地發送資料。一旦閂鎖,八個輸出會保持其狀態,直到您再次更新它們。這使其非常適合驅動 LED、繼電器或其他低電流負載。由於它是移位暫存器,您可以串接多個晶片來增加 8、16、24 或更多輸出,同時僅使用三個微控制器接腳。74HC595 可以為標準 LED 提供或吸收足夠的電流,但對於更高功率的負載,您將需要一個驅動器,例如電晶體或專用驅動器 IC。DIP-16 封裝適合麵包板使用,我們的 74HC595 8 位元串列移位暫存器(DIP 16)(5 入包裝)為您提供五 個晶片,價格低於 $1.40,每個輸出的成本非常低。
I²C 連接埠擴充器的工作原理
像 PCF 這類的 I²C 連接埠擴充器,透過兩線式 I²C 匯流排(SDA 和 SCL)進行通訊。每個擴充器都有獨特的 I²C 位址,因此您可以在同一匯流排上連接多個擴充器,而無需使用額外的接腳。PCF 提供準雙向 I/O 接腳,但它們並非真正的推挽輸出;它們可以吸入電流,但提供的電流非常少。這使得它們更適合用於輸入,或驅動需要低電位訊號的負載,例如將電晶體的基極拉低。由於 I²C 是匯流排,接線更簡單:只需兩條資料線,再加上電源和接地。然而,代價是速度和電流能力。I²C 比移位暫存器的序列介面慢,而且有限的源極電流意味著您通常需要為 LED 或繼電器使用外部驅動器。此外,每個 I²C 裝置都需要一個獨特的位址,因此您只能連接有限數量的裝置。 每條匯流排上的數量有限。
主要差異:速度、電流與引腳成本
74HC595在速度和電流驅動能力上勝出。它可以非常快速地更新,因此如果您快速切換閂鎖,則適用於多工或類似PWM的效果。其輸出可以直接為標準LED提供或吸收足夠的電流。I2C擴展器速度較慢,輸出驅動能力較弱,但無論您串聯多少個擴展器,總共只使用兩個微控制器引腳。移位暫存器每個鏈使用三個引腳,但您可以串聯許多晶片而不會發生位址衝突。使用74HC595時,每個輸出的成本較低,尤其是在購買我們提供的5件裝時。對於I2C擴展器,每個引腳的成本較高,並且對於需要更多電流的負載,您可能需要額外的驅動元件。
實際接線與程式碼考量
接線 74HC595 很簡單:連接 VCC 和 GND,然後將 SER(資料)連接到微控制器的腳位,SRCLK(時脈)連接到另一個腳位,RCLK(閂鎖)連接到第三個腳位。您可以透過將一個移位暫存器的 Q7' 連接到下一個的 SER 來進行菊鏈連接。對於 I2C 擴展器,請將 SDA 和 SCL 連接到微控制器的 I2C 腳位,並設定位址腳位以避免衝突。在程式碼中,74HC595 使用 shiftOut() 或 SPI,而 PCF8574 使用 Wire 函式庫指令。如果您需要讀取輸入,PCF8574 可以做到,但 74HC595 無法讀取;它僅用於輸出。這是一個關鍵限制:如果您的專案需要同時具備輸入和輸出,您可能需要不同的擴展器或組合。
何時選擇各選項
當您需要大量輸出、快速更新和直接驅動 LED 時,請選擇 74HC595。它非常適合 LED 矩陣、7 段顯示器,或透過驅動器驅動多個繼電器。當您的微控制器接腳不足且只需要少量輸出,或想同時增加輸入時,請選擇 I2C 擴展器。當同一匯流排上有多個裝置且您想將接線減到最少時,I2C 也是更好的選擇。如果需要驅動馬達,請考慮使用專用擴展板,例如適用於 Arduino 的 Motor Drive Shield L293D,它能處理電流並提供便利的介面。對於簡單的狀態指示燈,可以使用幾個 3mm 擴散式 LED(白色),直接由 74HC595 驅動,或透過電晶體由 I2C 擴展器驅動。如果您正在使用 DIP 晶片進行原型設計,一個黑色的 28 引腳 ZIF 插座可讓 IC 更換變得容易,並減少接腳損壞。
取捨一覽
- 成本與接線簡易度的權衡: 74HC595 每條鏈使用 3 個微控制器接腳,但能以低成本增加許多輸出。I2C 擴展器總共只使用 2 個接腳,但每個輸出成本較高,且有位址限制。 若需大量輸出,請選擇移位暫存器;若需少量輸出且接腳最少,請選擇 I2C。
- 輸出電流與速度: 74HC595 可提供/吸收足夠的電流給 LED,並快速更新。I2C 擴展器的源電流較弱,更新速率較慢。 如需直接驅動 LED 或快速更新,請使用 74HC595。對於低電流訊號或輸入,I2C 即可勝任。
- 輸入能力: 74HC595 僅供輸出。像 PCF8574 這類 I2C 擴展器可以讀取輸入,但使用準雙向腳位。 如果您需要輸入,I2C 擴展器更具彈性;否則,對於輸出,移位暫存器更簡單。
產品資訊
- 74HC595 8 位元串列移位暫存器(DIP 16)(每包 5 個): 包含 5 個 74HC595 8 位元串列移位暫存器(DIP 16)IC。資料表可在我們的支援論壇取得(此處)。請注意,此晶片的製造商可能有所變更。五個移位暫存器可提供最多 40 個輸出,成本極低,且 DIP 封裝易於在麵包板上使用。資料表有助於驗證接腳配置與時序。
- Arduino 用馬達驅動擴充板 L293D: 這款用於 Arduino 的馬達驅動擴展板 L293D 旨在幫助您為專案添加馬達控制功能。它提供兩個用於 5V 伺服馬達的介面,連接到 Arduino 的高解析度專用定時器,從而實現精準的伺服操作。與 Arduino Uno 板相容(板子不包含在內)。包含兩個用於 5V 伺服馬達的介面,以滿足您的專案需求。如果您的專案需要驅動馬達或伺服馬達,此擴展板可處理電流並提供整潔的介面,因此您無需使用離散元件構建驅動器。
- 3mm 擴散型 LED(白色): 標準高品質白色LED,3mm,採用白色擴散/霧面封裝。適用於電源指示燈、狀態指示燈、背光照明、訊息顯示器、3D立方體等。價格以單顆(1)LED計算。購買數量越多,成本越低。這些LED非常適合測試您的新輸出。擴散封裝提供柔和光暈,且價格隨數量降低,因此您可以購買足夠數量用於完整專案。
- 黑色,28針ZIF插座: 這些 ZIF(零插入力)插座配備了一個槓桿,可驅動零插入力(ZIF)機制,有助於減少對裝置的損壞。這些 2.54 mm 的 DIP 插座為間距 2.54 mm、本體寬度 0.3 的雙列直插封裝提供了優異的測試和燒機介面。如果在原型設計期間更換 74HC595 晶片或其他 DIP IC,ZIF 插座可防止引腳彎曲並使測試更容易。
應該使用哪一種?
最適合用於
- 預算有限但需要大量輸出(LED、繼電器)的專案
- 需要快速更新的需求,例如多工或PWM
- 直接驅動低電流負載,無需額外電晶體
不適用於
- 需要讀取輸入的專案(選擇I2C擴展器)
- 當您需要將微控制器接腳減少到僅兩個時
- 無需額外驅動器的高電流負載






