多片PCF8574擴展樹莓派IO


這里選擇了使用3片PCF8574擴展,可以拓展出24個雙向IO口。

如果有不了解,可參考我前邊的幾篇文章:

樹莓派i2c配置

樹莓派安裝WiringPi庫

PCF8574擴展樹莓派io口 

 

正面接線圖:

 

反面焊點圖:      

 

(注意:PCF8574芯片的A0 A1 A2引腳電平狀態,這里的接法三片PCF8574的地址分別為 0x20 0x21 0x22 ,實際可根據自己的需要進行調整。)

 

連接好芯片后,用 i2cdetect  工具查看芯片識別狀態

sudo i2cdetect -y 1

如果按我的地址選擇方案,正常情況下會顯示如下:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 21 22 -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

 

既然識別了,那接下來就進行IO操作

(這里使用了wiringPi庫,好處自己體會。)

//pcf8574.c
#include <stdio.h> #include <wiringPi.h> #include <pcf8574.h> #define EXTEND_BASE 100 int main (void) { // wiringPi初始化 wiringPiSetup( ); // pcf8574初始化 pcf8574Setup( EXTEND_BASE, 0x20 ); pcf8574Setup( EXTEND_BASE+8, 0x21 ); pcf8574Setup( EXTEND_BASE+16, 0x22 ); int i; //設置為輸出狀態 for ( i = 0 ; i < 24 ; i++ ) { pinMode( EXTEND_BASE + i, OUTPUT ); } //流水燈 for (;;) { for( i = 0 ; i < 24; i++) { digitalWrite ( EXTEND_BASE + i, HIGH); delay (10); digitalWrite ( EXTEND_BASE + i, LOW); delay (10); } } return 0 ; }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM