Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use PCF8575C: Examples, Pinouts, and Specs

Image of PCF8575C
Cirkit Designer LogoDesign with PCF8575C in Cirkit Designer

Introduction

The PCF8575C is a 16-bit I/O port expander that communicates via the I2C protocol. It enables microcontrollers to control up to 16 digital input/output pins using only two communication lines (SCL and SDA). This makes it an excellent choice for applications where additional GPIO pins are required but limited by the microcontroller's onboard resources.

Explore Projects Built with PCF8575C

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Biometric and RFID Security System with Dual Adafruit Feather nRF52840 Controllers
Image of Rfid access control: A project utilizing PCF8575C in a practical application
This circuit features two Adafruit Feather nRF52840 microcontrollers, each interfaced with an RFID-RC522 module for RFID communication and an AT24C256 external EEPROM for additional memory storage. One of the microcontrollers is also connected to an R307 Fingerprint Sensor for biometric input, and both microcontrollers are powered by a shared power supply and a coin cell breakout for backup or RTC power. The circuit is likely designed for secure access control or identification purposes, utilizing both RFID and fingerprint authentication, with data storage capabilities.
Cirkit Designer LogoOpen Project in Cirkit Designer
Cellular-Enabled IoT Device with Real-Time Clock and Power Management
Image of LRCM PHASE 2 BASIC: A project utilizing PCF8575C in a practical application
This circuit features a LilyGo-SIM7000G module for cellular communication and GPS functionality, interfaced with an RTC DS3231 for real-time clock capabilities. It includes voltage sensing through two voltage sensor modules, and uses an 8-channel opto-coupler for isolating different parts of the circuit. Power management is handled by a buck converter connected to a DC power source and batteries, with a fuse for protection and a rocker switch for on/off control. Additionally, there's an LED for indication purposes.
Cirkit Designer LogoOpen Project in Cirkit Designer
Multi-Stage Voltage Regulation and Indicator LED Circuit
Image of Subramanyak_Power_Circuit: A project utilizing PCF8575C in a practical application
This circuit is designed for power management, featuring buck and boost converters for voltage adjustment, and linear regulators for stable voltage output. It includes LEDs for status indication, and terminal blocks for external connections.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino Mega 2560 Based Security System with Fingerprint Authentication and SMS Alerts
Image of Door security system: A project utilizing PCF8575C in a practical application
This circuit features an Arduino Mega 2560 microcontroller interfaced with a SIM800L GSM module, two fingerprint scanners, an I2C LCD display, an IR sensor, and a piezo buzzer. Power management is handled by a PowerBoost 1000 Basic Pad USB, a TP4056 charging module, and a Li-ion 18650 battery, with an option to use a Mini AC-DC 110V-230V to 5V 700mA module for direct power supply. The primary functionality appears to be a security system with GSM communication capabilities, biometric access control, and visual/audible feedback.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with PCF8575C

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of Rfid access control: A project utilizing PCF8575C in a practical application
Biometric and RFID Security System with Dual Adafruit Feather nRF52840 Controllers
This circuit features two Adafruit Feather nRF52840 microcontrollers, each interfaced with an RFID-RC522 module for RFID communication and an AT24C256 external EEPROM for additional memory storage. One of the microcontrollers is also connected to an R307 Fingerprint Sensor for biometric input, and both microcontrollers are powered by a shared power supply and a coin cell breakout for backup or RTC power. The circuit is likely designed for secure access control or identification purposes, utilizing both RFID and fingerprint authentication, with data storage capabilities.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of LRCM PHASE 2 BASIC: A project utilizing PCF8575C in a practical application
Cellular-Enabled IoT Device with Real-Time Clock and Power Management
This circuit features a LilyGo-SIM7000G module for cellular communication and GPS functionality, interfaced with an RTC DS3231 for real-time clock capabilities. It includes voltage sensing through two voltage sensor modules, and uses an 8-channel opto-coupler for isolating different parts of the circuit. Power management is handled by a buck converter connected to a DC power source and batteries, with a fuse for protection and a rocker switch for on/off control. Additionally, there's an LED for indication purposes.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Subramanyak_Power_Circuit: A project utilizing PCF8575C in a practical application
Multi-Stage Voltage Regulation and Indicator LED Circuit
This circuit is designed for power management, featuring buck and boost converters for voltage adjustment, and linear regulators for stable voltage output. It includes LEDs for status indication, and terminal blocks for external connections.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Door security system: A project utilizing PCF8575C in a practical application
Arduino Mega 2560 Based Security System with Fingerprint Authentication and SMS Alerts
This circuit features an Arduino Mega 2560 microcontroller interfaced with a SIM800L GSM module, two fingerprint scanners, an I2C LCD display, an IR sensor, and a piezo buzzer. Power management is handled by a PowerBoost 1000 Basic Pad USB, a TP4056 charging module, and a Li-ion 18650 battery, with an option to use a Mini AC-DC 110V-230V to 5V 700mA module for direct power supply. The primary functionality appears to be a security system with GSM communication capabilities, biometric access control, and visual/audible feedback.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications and Use Cases

  • Expanding GPIO pins for microcontrollers like Arduino, Raspberry Pi, or ESP32
  • Controlling LEDs, relays, or other digital devices
  • Reading multiple button or switch inputs
  • Home automation systems
  • Industrial control systems

Technical Specifications

Key Technical Details

  • Operating Voltage: 2.5V to 5.5V
  • I2C Address Range: 0x20 to 0x27 (configurable via address pins A0, A1, A2)
  • Maximum I2C Clock Frequency: 400 kHz (Fast Mode)
  • Number of I/O Pins: 16 (P0.0 to P0.7 and P1.0 to P1.7)
  • Output Current: 25 mA (sink) per pin
  • Input Current: ±1 µA
  • Operating Temperature Range: -40°C to +85°C
  • Package Types: TSSOP, SOIC

Pin Configuration and Descriptions

The PCF8575C has 24 pins. Below is the pin configuration:

Pin Name Type Description
1 P0.0 I/O General-purpose I/O pin
2 P0.1 I/O General-purpose I/O pin
3 P0.2 I/O General-purpose I/O pin
4 P0.3 I/O General-purpose I/O pin
5 P0.4 I/O General-purpose I/O pin
6 P0.5 I/O General-purpose I/O pin
7 P0.6 I/O General-purpose I/O pin
8 P0.7 I/O General-purpose I/O pin
9 GND Power Ground connection
10 A0 Input I2C address selection bit 0
11 A1 Input I2C address selection bit 1
12 A2 Input I2C address selection bit 2
13 RESET Input Active-low reset pin
14 SCL Input I2C clock line
15 SDA Input/Output I2C data line
16 INT Output Interrupt output (active low)
17 P1.0 I/O General-purpose I/O pin
18 P1.1 I/O General-purpose I/O pin
19 P1.2 I/O General-purpose I/O pin
20 P1.3 I/O General-purpose I/O pin
21 P1.4 I/O General-purpose I/O pin
22 P1.5 I/O General-purpose I/O pin
23 P1.6 I/O General-purpose I/O pin
24 P1.7 I/O General-purpose I/O pin

Usage Instructions

How to Use the PCF8575C in a Circuit

  1. Power Supply: Connect the VCC pin to a 3.3V or 5V power source and the GND pin to ground.
  2. I2C Communication: Connect the SCL and SDA pins to the corresponding I2C pins on your microcontroller. Use pull-up resistors (typically 4.7kΩ) on both lines.
  3. Address Configuration: Set the I2C address by connecting the A0, A1, and A2 pins to either VCC (logic high) or GND (logic low).
  4. I/O Pins: Use the P0.x and P1.x pins as digital inputs or outputs. Configure them by sending the appropriate data via I2C.
  5. Interrupt Pin: Optionally, connect the INT pin to your microcontroller to detect changes in input states.

Important Considerations and Best Practices

  • Ensure the total current drawn by the I/O pins does not exceed the device's maximum ratings.
  • Use decoupling capacitors (e.g., 0.1 µF) near the VCC pin to stabilize the power supply.
  • Avoid leaving unused input pins floating; connect them to GND or VCC as needed.
  • When using the PCF8575C with a 5V system, ensure the microcontroller's I2C pins are 5V-tolerant or use level shifters for compatibility.

Example Code for Arduino UNO

Below is an example of how to use the PCF8575C with an Arduino UNO to toggle an LED connected to one of its pins:

#include <Wire.h> // Include the Wire library for I2C communication

#define PCF8575C_ADDRESS 0x20 // Default I2C address of the PCF8575C

void setup() {
  Wire.begin(); // Initialize I2C communication
  Serial.begin(9600); // Initialize serial communication for debugging

  // Set all pins to output and turn them off
  Wire.beginTransmission(PCF8575C_ADDRESS);
  Wire.write(0x00); // Low byte (P0.0 to P0.7)
  Wire.write(0x00); // High byte (P1.0 to P1.7)
  Wire.endTransmission();
}

void loop() {
  // Turn on an LED connected to P0.0
  Wire.beginTransmission(PCF8575C_ADDRESS);
  Wire.write(0x01); // Set P0.0 high, others low
  Wire.write(0x00); // Keep P1.x pins low
  Wire.endTransmission();
  delay(1000); // Wait for 1 second

  // Turn off the LED
  Wire.beginTransmission(PCF8575C_ADDRESS);
  Wire.write(0x00); // Set all P0.x pins low
  Wire.write(0x00); // Keep P1.x pins low
  Wire.endTransmission();
  delay(1000); // Wait for 1 second
}

Troubleshooting and FAQs

Common Issues and Solutions

  1. I2C Communication Not Working

    • Ensure the SCL and SDA lines have proper pull-up resistors (4.7kΩ recommended).
    • Verify the I2C address matches the configuration of the A0, A1, and A2 pins.
    • Check for loose or incorrect wiring.
  2. I/O Pins Not Responding

    • Confirm the PCF8575C is powered correctly (check VCC and GND connections).
    • Ensure the I/O pins are configured properly in your code.
    • Check if the total current drawn by the I/O pins exceeds the device's limits.
  3. Interrupt Pin Not Functioning

    • Verify that the INT pin is connected to the correct microcontroller pin.
    • Ensure the interrupt functionality is enabled in your code.

FAQs

  • Can the PCF8575C handle analog signals? No, the PCF8575C is designed for digital input/output only.

  • What happens if multiple PCF8575C devices share the same I2C address? Address conflicts will occur, leading to communication errors. Use unique addresses for each device by configuring the A0, A1, and A2 pins.

  • Is the PCF8575C compatible with 3.3V systems? Yes, the PCF8575C operates within a voltage range of 2.5V to 5.5V, making it compatible with both 3.3V and 5V systems.