找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(143)---PCF8574T擴(kuò)展模塊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動(dòng)手試試做實(shí)驗(yàn),不管成功與否,都會(huì)記錄下來---小小的進(jìn)步或是搞不定的問題,希望能夠拋磚引玉。

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




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

使用道具 舉報(bào)

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

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

回復(fù)

使用道具 舉報(bào)

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



回復(fù)

使用道具 舉報(bào)

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



回復(fù)

使用道具 舉報(bào)

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



回復(fù)

使用道具 舉報(bào)

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

回復(fù)

使用道具 舉報(bào)

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

回復(fù)

使用道具 舉報(bào)

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

回復(fù)

使用道具 舉報(bào)

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


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


回復(fù)

使用道具 舉報(bào)

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



回復(fù)

使用道具 舉報(bào)

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

PCB Size: 37.5mm x 16.7mm




回復(fù)

使用道具 舉報(bào)

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




回復(fù)

使用道具 舉報(bào)

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

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

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

  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3.   實(shí)驗(yàn)一百四十二:I2C接口I/O 8位擴(kuò)展  支持級(jí)聯(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 時(shí)鐘線
  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. } // 運(yùn)行結(jié)束

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




回復(fù)

使用道具 舉報(bào)

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




回復(fù)

使用道具 舉報(bào)

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

1下2上3上   為0x23




回復(fù)

使用道具 舉報(bào)

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


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

使用道具 舉報(bào)

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ù)

使用道具 舉報(bào)

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

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

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

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

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

  6.   Arduino------PCF8574
  7.   5V-------------VCC
  8.   GND-----------GND
  9.   A4-----------SDA IIC 數(shù)據(jù)線
  10.   A5-----------SCL IIC 時(shí)鐘線
  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ù)

使用道具 舉報(bào)

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



回復(fù)

使用道具 舉報(bào)

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



回復(fù)

使用道具 舉報(bào)

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





回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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)鍵的中斷 ...

謝謝師傅指點(diǎn),引腳有圖示的,中斷使用還請(qǐng)師傅明示一下,謝謝



回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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