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

How to Use 24LC256: Examples, Pinouts, and Specs

Image of 24LC256
Cirkit Designer LogoDesign with 24LC256 in Cirkit Designer

Introduction

The 24LC256 is a 256 Kbit (32 K x 8) EEPROM (Electrically Erasable Programmable Read-Only Memory) manufactured by Microchip Technology. It communicates via the I2C (Inter-Integrated Circuit) interface, making it easy to integrate into microcontroller-based systems. This non-volatile memory retains data even when power is removed, making it ideal for applications requiring long-term data storage.

Explore Projects Built with 24LC256

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Arduino Mega 2560-Based Wireless Joystick-Controlled Display with RTC
Image of RH-WallE Sender Schaltplan (Cirkit Designer).png: A project utilizing 24LC256 in a practical application
This circuit is a multi-functional embedded system using an Arduino Mega 2560 as the central controller. It interfaces with various peripherals including a DS3231 RTC for timekeeping, an NRF24L01 for wireless communication, a KY-023 joystick for user input, a 4x4 keypad for additional input, and a TM1637 display for output. The system is powered by a combination of 3.3V and 5V sources.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino Mega 2560-Based Smart Home Control System with LCD Display and Flame Sensor
Image of Copy of schoolproject (1): A project utilizing 24LC256 in a practical application
This circuit is a multi-functional embedded system featuring an Arduino Mega 2560 microcontroller that interfaces with a 4x4 membrane keypad, a 20x4 I2C LCD, an 8x8 LED matrix, a DS3231 RTC module, a passive buzzer, and a KY-026 flame sensor. The system is powered by a 5V PSU and is designed to provide real-time clock functionality, user input via the keypad, visual output on the LCD and LED matrix, and flame detection with an audible alert.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32-Controlled Dual 8x8 LED Matrix Display with NTP Time Synchronization
Image of time: A project utilizing 24LC256 in a practical application
This circuit features an ESP32 microcontroller connected to two cascaded 8x8 LED matrix displays, powered by a 3.3V battery. The ESP32 drives the displays to show time and other information, with the code indicating functionality for connecting to WiFi, synchronizing time via NTP, and displaying data on the matrices using custom fonts. Additionally, there is a separate 3.3V battery powering a red LED, which appears to function as a simple indicator light.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino Mega 2560-Based Keypad and LCD Interface with Adjustable Contrast
Image of KEYPAD DISPLAY: A project utilizing 24LC256 in a practical application
This circuit features an Arduino Mega 2560 microcontroller interfaced with a 4x4 keypad and a 16x2 LCD display. The keypad allows user input, which can be displayed on the LCD, with a trimmer potentiometer used to adjust the LCD contrast.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with 24LC256

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 RH-WallE Sender Schaltplan (Cirkit Designer).png: A project utilizing 24LC256 in a practical application
Arduino Mega 2560-Based Wireless Joystick-Controlled Display with RTC
This circuit is a multi-functional embedded system using an Arduino Mega 2560 as the central controller. It interfaces with various peripherals including a DS3231 RTC for timekeeping, an NRF24L01 for wireless communication, a KY-023 joystick for user input, a 4x4 keypad for additional input, and a TM1637 display for output. The system is powered by a combination of 3.3V and 5V sources.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Copy of schoolproject (1): A project utilizing 24LC256 in a practical application
Arduino Mega 2560-Based Smart Home Control System with LCD Display and Flame Sensor
This circuit is a multi-functional embedded system featuring an Arduino Mega 2560 microcontroller that interfaces with a 4x4 membrane keypad, a 20x4 I2C LCD, an 8x8 LED matrix, a DS3231 RTC module, a passive buzzer, and a KY-026 flame sensor. The system is powered by a 5V PSU and is designed to provide real-time clock functionality, user input via the keypad, visual output on the LCD and LED matrix, and flame detection with an audible alert.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of time: A project utilizing 24LC256 in a practical application
ESP32-Controlled Dual 8x8 LED Matrix Display with NTP Time Synchronization
This circuit features an ESP32 microcontroller connected to two cascaded 8x8 LED matrix displays, powered by a 3.3V battery. The ESP32 drives the displays to show time and other information, with the code indicating functionality for connecting to WiFi, synchronizing time via NTP, and displaying data on the matrices using custom fonts. Additionally, there is a separate 3.3V battery powering a red LED, which appears to function as a simple indicator light.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of KEYPAD DISPLAY: A project utilizing 24LC256 in a practical application
Arduino Mega 2560-Based Keypad and LCD Interface with Adjustable Contrast
This circuit features an Arduino Mega 2560 microcontroller interfaced with a 4x4 keypad and a 16x2 LCD display. The keypad allows user input, which can be displayed on the LCD, with a trimmer potentiometer used to adjust the LCD contrast.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications

  • Data logging and storage in embedded systems
  • Configuration and calibration data storage
  • Non-volatile memory for microcontroller-based projects
  • Consumer electronics, industrial automation, and automotive systems

Technical Specifications

The following table outlines the key technical details of the 24LC256:

Parameter Value
Memory Size 256 Kbit (32 K x 8)
Interface I2C (2-wire)
Operating Voltage Range 2.5V to 5.5V
Maximum Clock Frequency 400 kHz (Fast Mode I2C)
Write Cycle Time 5 ms (typical)
Data Retention > 200 years
Endurance 1,000,000 write/erase cycles
Operating Temperature Range -40°C to +85°C
Package Options PDIP, SOIC, TSSOP, DFN

Pin Configuration and Descriptions

The 24LC256 is typically available in an 8-pin package. The pinout and descriptions are as follows:

Pin Number Pin Name Description
1 A0 Address input bit 0 (used for I2C slave address selection)
2 A1 Address input bit 1 (used for I2C slave address selection)
3 A2 Address input bit 2 (used for I2C slave address selection)
4 VSS Ground (0V reference)
5 SDA Serial Data (I2C bidirectional data line)
6 SCL Serial Clock (I2C clock line)
7 WP Write Protect (active HIGH; disables write operations when HIGH)
8 VCC Power supply (2.5V to 5.5V)

Usage Instructions

Connecting the 24LC256 to a Circuit

  1. Power Supply: Connect the VCC pin to a 2.5V–5.5V power source and the VSS pin to ground.
  2. I2C Interface: Connect the SDA and SCL pins to the corresponding I2C lines of your microcontroller. Use pull-up resistors (typically 4.7 kΩ) on both lines.
  3. Address Selection: Use the A0, A1, and A2 pins to set the I2C slave address. These pins can be tied to either VCC (logic HIGH) or VSS (logic LOW).
  4. Write Protection: If write operations are not required, connect the WP pin to VCC to enable write protection. For normal operation, connect it to VSS.

Important Considerations

  • Pull-Up Resistors: Ensure proper pull-up resistors are used on the SDA and SCL lines for reliable I2C communication.
  • Write Cycle Time: Allow sufficient time (5 ms typical) for write operations to complete before initiating another write.
  • Addressing: The 24LC256 supports up to 8 devices on the same I2C bus by configuring the A0, A1, and A2 pins.

Example: Using 24LC256 with Arduino UNO

Below is an example of how to interface the 24LC256 with an Arduino UNO to write and read data.

Circuit Diagram

  • Connect SDA to Arduino pin A4.
  • Connect SCL to Arduino pin A5.
  • Use 4.7 kΩ pull-up resistors on SDA and SCL lines.
  • Connect VCC to 5V and VSS to GND.
  • Leave WP connected to GND for write operations.

Arduino Code

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

#define EEPROM_I2C_ADDRESS 0x50 // Base I2C address of 24LC256

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

  // Write a byte to EEPROM
  writeEEPROM(0x0000, 42); // Write the value 42 to address 0x0000
  delay(10); // Wait for the write cycle to complete

  // Read the byte back from EEPROM
  uint8_t value = readEEPROM(0x0000);
  Serial.print("Read value: ");
  Serial.println(value); // Print the read value
}

void loop() {
  // Nothing to do here
}

// Function to write a byte to the 24LC256
void writeEEPROM(uint16_t address, uint8_t data) {
  Wire.beginTransmission(EEPROM_I2C_ADDRESS);
  Wire.write((address >> 8) & 0xFF); // Send the high byte of the address
  Wire.write(address & 0xFF);        // Send the low byte of the address
  Wire.write(data);                  // Send the data byte
  Wire.endTransmission();
}

// Function to read a byte from the 24LC256
uint8_t readEEPROM(uint16_t address) {
  Wire.beginTransmission(EEPROM_I2C_ADDRESS);
  Wire.write((address >> 8) & 0xFF); // Send the high byte of the address
  Wire.write(address & 0xFF);        // Send the low byte of the address
  Wire.endTransmission();

  Wire.requestFrom(EEPROM_I2C_ADDRESS, 1); // Request 1 byte from EEPROM
  while (Wire.available() == 0);           // Wait for data to become available
  return Wire.read();                      // Read and return the data byte
}

Troubleshooting and FAQs

Common Issues

  1. No Communication with EEPROM:

    • Ensure proper pull-up resistors are connected to the SDA and SCL lines.
    • Verify the I2C address matches the configuration of the A0, A1, and A2 pins.
    • Check for loose or incorrect wiring.
  2. Data Not Written to EEPROM:

    • Ensure the WP pin is connected to GND to allow write operations.
    • Allow sufficient time (5 ms) for the write cycle to complete before initiating another write.
  3. Incorrect Data Read:

    • Verify the address being accessed is correct.
    • Check for noise or interference on the I2C lines.

FAQs

Q: Can I use the 24LC256 with a 3.3V microcontroller?
A: Yes, the 24LC256 operates within a voltage range of 2.5V to 5.5V, making it compatible with 3.3V systems.

Q: How many devices can I connect on the same I2C bus?
A: Up to 8 devices can be connected by configuring the A0, A1, and A2 pins to unique combinations.

Q: What happens if the power is lost during a write operation?
A: The data being written may be corrupted. It is recommended to use a power-fail detection circuit to prevent this scenario.

Q: Can I erase data on the 24LC256?
A: The 24LC256 does not have an explicit erase command. Writing new data to a memory location automatically overwrites the existing data.