找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4516|回復(fù): 24
打印 上一主題 下一主題
收起左側(cè)

【Arduino】168種傳感器模塊系列實驗(143)---PCF8574T擴展模塊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:513258 發(fā)表于 2020-3-1 15:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實踐出真知(一定要動手做)的理念,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動手試試做實驗,不管成功與否,都會記錄下來---小小的進步或是搞不定的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗一百四十三:I2C接口I/O擴展模塊 支持級聯(lián)PCF8574T模塊




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:513258 發(fā)表于 2020-3-1 15:58 | 只看該作者

PCF8574T
是CMOS電路,它通過兩條雙向總線可使大多數(shù)MCU實現(xiàn)遠(yuǎn)程I/O擴展。該器件包含一個8位準(zhǔn)雙向口和一個總線接口。pcf8574t 電流消耗很低,并且輸出鎖存,具有大電流驅(qū)動能力,可直接驅(qū)動LED。它還帶有一種中斷接線可與MCU的中斷邏輯相連。通過INT發(fā)送中斷信號,遠(yuǎn)端I/O口不必經(jīng)過總線通信就通知MCU是否有數(shù)據(jù)從端口輸入。這意味著 pcf8574t 可以作為一個單被控器。

回復(fù)

使用道具 舉報

板凳
ID:513258 發(fā)表于 2020-3-1 16:19 | 只看該作者
PCF8574T主要參數(shù)
工作溫度范圍:-40°C to +85°C
針腳數(shù):16
封裝類型:SOIC
工作溫度最低:-40°C
工作溫度最高:85°C
器件標(biāo)號:8574
電源電壓 最大:6V
電源電壓 最小:2.5V
電源電流:40μA
芯片標(biāo)號:8574
表面安裝器件:表面安裝
邏輯功能號:8574
控制接口:I2C
時鐘頻率:0.1MHz
輸入/輸出數(shù):16



回復(fù)

使用道具 舉報

地板
ID:513258 發(fā)表于 2020-3-1 16:25 | 只看該作者
PCF8574邏輯圖



回復(fù)

使用道具 舉報

5#
ID:513258 發(fā)表于 2020-3-2 05:45 | 只看該作者
各P口輸入輸出簡化示意圖



回復(fù)

使用道具 舉報

6#
ID:513258 發(fā)表于 2020-3-2 08:08 | 只看該作者

回復(fù)

使用道具 舉報

7#
ID:513258 發(fā)表于 2020-3-2 08:09 | 只看該作者

回復(fù)

使用道具 舉報

8#
ID:513258 發(fā)表于 2020-3-2 08:11 | 只看該作者

回復(fù)

使用道具 舉報

9#
ID:513258 發(fā)表于 2020-3-2 08:33 | 只看該作者


雙線雙向總線(I2C)的8位輸入/輸出(I/O)擴展器
設(shè)計用于2.5-V至6-V VCC操作。PCF8574通過I2C為大多數(shù)微控制器系列提供通用遠(yuǎn)程I/O擴展接口[串行時鐘(SCL),串行數(shù)據(jù)(SDA)。該設(shè)備具有一個8位準(zhǔn)雙向I/O端口(P0–P7),包括帶有大電流驅(qū)動的鎖存輸出直接驅(qū)動LED的能力。每個準(zhǔn)雙向I/O都可以用作輸入或輸出,而無需使用數(shù)據(jù)方向控制信號。開機時,I/O很高。在此模式下,只有VCC的電流源活躍。另一個強大的拉向VCC允許快速上升到重負(fù)荷輸出邊緣。這個裝置轉(zhuǎn)動當(dāng)輸出被寫入高位并被SCL的負(fù)邊緣關(guān)閉時打開。I/O應(yīng)該很高,在用作輸入之前。PCF8574提供了一個開漏輸出(int),可以連接到微控制器。在輸入模式下,端口輸入的任何上升或下降沿都會產(chǎn)生中斷。后續(xù)時間,tiv,int是有效的。當(dāng)端口上的數(shù)據(jù)改變時,中斷電路復(fù)位并重新激活從產(chǎn)生中斷的端口讀取或?qū)懭朐荚O(shè)置或數(shù)據(jù)。重置發(fā)生在在SCL信號上升沿后的確認(rèn)位處的讀取模式,或在SCL信號從高到低轉(zhuǎn)換后的確認(rèn)位。確認(rèn)期間發(fā)生的中斷由于在該脈沖期間中斷復(fù)位,時鐘脈沖可能丟失(或非常短)。每次變更復(fù)位后的I/O被檢測到,并且在下一個上升時鐘邊緣之后,被發(fā)送。作為int讀取,或者寫入,另一個設(shè)備不影響中斷電路。通過在這條線路上發(fā)送中斷信號,遠(yuǎn)程I/O可以通知微控制器是否有輸入數(shù)據(jù)在其端口上,無需通過I2C總線進行通信。因此,pcf8574可以保持簡單的從機裝置。


回復(fù)

使用道具 舉報

10#
ID:513258 發(fā)表于 2020-3-2 08:39 | 只看該作者
I2C接口I/O 8位擴展  支持級聯(lián)PCF8574T模塊



回復(fù)

使用道具 舉報

11#
ID:513258 發(fā)表于 2020-3-2 08:44 | 只看該作者
I2C接口I/O擴展模塊功能:
基于I2C接口的I/O擴展模塊,使用2個I/O可擴展8個I/O。支持級聯(lián),最多可同時使用8個模塊,擴張到64個I/O。通過撥碼開關(guān)設(shè)置模塊地址,將3位撥碼開關(guān)全部撥到’ON’上。此時模塊地址為0x27。

PCB Size: 37.5mm x 16.7mm




回復(fù)

使用道具 舉報

12#
ID:513258 發(fā)表于 2020-3-2 08:51 | 只看該作者




回復(fù)

使用道具 舉報

13#
ID:513258 發(fā)表于 2020-3-2 10:35 | 只看該作者
【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  實驗一百四十二:I2C接口I/O 8位擴展  支持級聯(lián)PCF8574T模塊

  程序之一:掃描設(shè)備IIC地址,在串口上即可看到PCF8574T的地址

  Arduino------PCF8574
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 數(shù)據(jù)線
  A5-----------SCL IIC 時鐘線

  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百四十二:I2C接口I/O 8位擴展  支持級聯(lián)PCF8574T模塊

  4.   程序之一:掃描設(shè)備IIC地址,在串口上即可看到PCF8574T的地址

  5.   Arduino------PCF8574
  6.   5V-------------VCC
  7.   GND-----------GND
  8.   A4-----------SDA IIC 數(shù)據(jù)線
  9.   A5-----------SCL IIC 時鐘線
  10. */

  11. #include <Wire.h>

  12. void setup() {
  13.   Serial.begin (115200); // 等待串行端口連接
  14.   while (!Serial) { }
  15.   Serial.println ();
  16.   Serial.println ("I2C scanner. Scanning ...");
  17.   byte count = 0;
  18.   Wire.begin();
  19.   for (byte i = 8; i < 120; i++) {
  20.     Wire.beginTransmission (i);
  21.     if (Wire.endTransmission () == 0) {
  22.       Serial.print ("Found address: ");
  23.       Serial.print (i, DEC);
  24.       Serial.print (" (0x");
  25.       Serial.print (i, HEX);
  26.       Serial.println (")");
  27.       count++;
  28.       delay (1); // 也許不需要?
  29.     } //良好反應(yīng)結(jié)束
  30.   } // 結(jié)束for循環(huán)

  31.   Serial.println ("Done.");
  32.   Serial.print ("Found ");
  33.   Serial.print (count, DEC);
  34.   Serial.println (" device(s).");
  35. } // 運行結(jié)束

  36. void loop() {
  37. }
復(fù)制代碼




回復(fù)

使用道具 舉報

14#
ID:513258 發(fā)表于 2020-3-2 10:38 | 只看該作者
通過模塊上撥碼開關(guān)不同位置,來設(shè)置模塊I2C地址
1上2上3上   為0x27




回復(fù)

使用道具 舉報

15#
ID:513258 發(fā)表于 2020-3-2 10:40 | 只看該作者
通過模塊上撥碼開關(guān)不同位置,來設(shè)置模塊I2C地址

1下2上3上   為0x23




回復(fù)

使用道具 舉報

16#
ID:513258 發(fā)表于 2020-3-2 10:55 | 只看該作者


1下2上3上   為0x23
回復(fù)

使用道具 舉報

17#
ID:513258 發(fā)表于 2020-3-2 11:00 | 只看該作者





通過模塊上撥碼開關(guān)不同位置,來設(shè)置模塊I2C地址
1上2上3上   為0x27
1下2上3上   為0x23
1下2下3上   為0x21
1下2下3下   為0x20
1上2下3下   為0x24
1上2上3下   為0x26
1下2上3下   為0x22
1上2下3上   為0x25

回復(fù)

使用道具 舉報

18#
ID:513258 發(fā)表于 2020-3-2 11:46 | 只看該作者
【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  實驗一百四十二:I2C接口I/O 8位擴展  支持級聯(lián)PCF8574T模塊

  程序之二:每隔2秒鐘,讓P0~P7口輸出高電平、低電平
  實驗說明:本程序未能通過驗證,請各位大俠幫忙看看

  Arduino------PCF8574
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 數(shù)據(jù)線
  A5-----------SCL IIC 時鐘線
  A0-----------P0

  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百四十二:I2C接口I/O 8位擴展  支持級聯(lián)PCF8574T模塊

  4.   程序之二:每隔2秒鐘,讓P0~P7口輸出高電平、低電平
  5.   實驗說明:本程序未能通過驗證,請各位大俠幫忙看看

  6.   Arduino------PCF8574
  7.   5V-------------VCC
  8.   GND-----------GND
  9.   A4-----------SDA IIC 數(shù)據(jù)線
  10.   A5-----------SCL IIC 時鐘線
  11.   A0-----------P0
  12. */

  13. #include <Wire.h>
  14. //初始化

  15. void setup() {
  16.   wire.begin();
  17. }

  18. unsigned char i = 0;
  19. void loop() {

  20.   //讀取模擬管腳0上的輸入
  21.   if (i = 0)
  22.     (
  23.       wire.beginTransmission(0x27) ;
  24.       wire.write(0xff);
  25.       wire.endTransmission();
  26.       i = 1;

  27.     )
  28.     else
  29.       (
  30.         wire.beginTransmission(0x27) ;
  31.         wire.write(0x00);
  32.         wire.endTransmission();
  33.         i = 0;
  34.       )
  35.       delay(2000);//延遲2秒
  36. }
復(fù)制代碼




回復(fù)

使用道具 舉報

19#
ID:513258 發(fā)表于 2020-3-2 12:18 | 只看該作者
實驗開源仿真編程(linkboy3.6)



回復(fù)

使用道具 舉報

20#
ID:513258 發(fā)表于 2020-3-2 12:20 | 只看該作者
實驗仿真編程(linkboy3.6)之二



回復(fù)

使用道具 舉報

21#
ID:513258 發(fā)表于 2020-3-2 12:28 | 只看該作者
實驗仿真編程(linkboy3.6)之二,實時仿真





回復(fù)

使用道具 舉報

22#
ID:469754 發(fā)表于 2020-12-7 22:39 來自手機 | 只看該作者
這文章好像沒有寫完,PCF8574如何讀取引腳狀態(tài),如何設(shè)置引腳狀態(tài),一句wire就代過去了,而且最關(guān)鍵的中斷卻沒有說
回復(fù)

使用道具 舉報

23#
ID:513258 發(fā)表于 2020-12-9 10:46 | 只看該作者
suwill 發(fā)表于 2020-12-7 22:39
這文章好像沒有寫完,PCF8574如何讀取引腳狀態(tài),如何設(shè)置引腳狀態(tài),一句wire就代過去了,而且最關(guān)鍵的中斷 ...

謝謝師傅指點,引腳有圖示的,中斷使用還請師傅明示一下,謝謝



回復(fù)

使用道具 舉報

24#
ID:55085 發(fā)表于 2023-4-7 02:22 | 只看該作者
如何實現(xiàn)單個IO(如P5)的讀寫而不影響其它IO呢?就是單獨操作某個IO口而不影響本模塊的其他IO。!
回復(fù)

使用道具 舉報

25#
ID:1088910 發(fā)表于 2023-7-26 22:48 | 只看該作者
請問2塊PCF8574T級聯(lián)怎么接線
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表