这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 试用PCF8574T模块(I2C转并口)

共1条 1/1 1 跳转至

试用PCF8574T模块(I2C转并口)

专家
2025-12-15 14:17:06     打赏

PCF8574T是基于I2C接口的I/O扩展模块,使用2个两条双向总线I/O可扩展8个I/O。支持级联,多可同时使用8个模块,扩张到64个I/O。PCF8574是CMOS电路。该器件包含一个8位准双向口和一个I2CC总线接口,PCF8574电流消耗很低,且输出锁存具有大电流驱动能力,可直接驱动LED.它还带有一条中断接线(INT)可与MCU的中断逻辑相连。通过INT发送中断信号,远端IO口不必经过I2C总线通信就可通知MCU是否有数据从端口输入。

模块:

图片2.png

通过拨码开关设置模块地址,拨码开关的设置与地址的对应关系如下:

图片3.png

使用ESP8266在Arduino下测试,代码如下:


#include "Wire.h"
#define ADDR 0x20
void setup() {
  Serial.begin(115200);
  Wire.begin();
}
uint8_t i=0;
void loop() {
  if (i==0) {
    Serial.printf("Write data=255 \n" );
    Wire.beginTransmission(ADDR);
    Wire.write(0xff);
    Wire.endTransmission();
    Serial.printf("Read  data:%x \n" , Read_PCF8574());  //Read IO
    i=1;
    delay(2000);
  } else {
    Serial.printf("Write data=0 \n" );
    Wire.beginTransmission(ADDR);
    Wire.write(0x00);
    Wire.endTransmission();
    Serial.printf("Read  data:%x \n" , Read_PCF8574());  //Read IO
    i=0;
    delay(2000);
  }
}
uint8_t Read_PCF8574(void) {
  uint8_t data = 0;
  Wire.requestFrom(ADDR, 1);
  while (Wire.available()) {
    data = Wire.read();
  }
  return data;
}

每隔2秒钟,让P0~P7口输出翻转。将3位拨码开关全部拨到’OFF’上。此时模块地址为0x20

测试结果:

图片1.png

demo2.gif

测试中是同时完成了读写处理的。测试中发现,还有一个INT引出脚,在使用LED中,没有发现有闪烁,不知道是怎么操作能让这个引脚产生信号变化,需要后面查找PCF8574T的数据手册了。





关键词: 大懒猫的试用笔记     PCF8574T模块    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]