Interfacing of PIC16F877 with (i2c based) 24LC64 EEPROM (Code + Proteus simulation)

Summary of Interfacing of PIC16F877 with (i2c based) 24LC64 EEPROM (Code + Proteus simulation)


This article explains how to interface a 24LC64 I2C EEPROM with a PIC16F877 microcontroller using C language in MPLAB with the HI-TECH C compiler. It includes a Proteus simulation showing the microcontroller as the I2C master communicating with the EEPROM slave. The example stores the string "Saeed" in the EEPROM and reads it back to display on an LCD. The circuit uses RC4 and RC3 pins for SDA and SCK with 10K pull-up resistors. An I2C debugger tool in Proteus is used for monitoring I2C bus activity. Code and simulation files are available for download.

Parts used in the 24LC64 EEPROM Interfacing with PIC16F877:

  • PIC16F877 Microcontroller
  • 24LC64 EEPROM (I2C based)
  • Liquid Crystal Display (LCD) in 4-bit mode
  • 10K Ohm pull-up resistors (for SDA and SCK lines)
  • Proteus simulation software (for code simulation and debugging)
  • MPLAB IDE v8.85
  • HI-TECH C Compiler v9.83

This post provides the code for interfacing 24LC64 EEPROM with PIC16F877 microcontroller. This 24LC64 EEPROM has i2c based interface.

PIC16F877 with 24LC64

This code is written in C language using MPLAB with HI-TECH C compiler. You can download this code from the ‘Downloads‘ section at the bottom of this page.

It is assumed that you know how to interface LCD with PIC16F877 microcontroller in 4bit mode. If you don’t then please read this page first, before proceeding with this article. It is also assumed that you know how to use i2c module in PIC16F877, if you don’t then please read this page first. You should also read how to write/read a byte in/from 24LC64 EEPROM from it’s datasheet.

The result of simulating the code in Proteus is shown below.

PIC16F877 with 24LC64 Schematic

In the above circuit[1], RC4 pin is being used as SDA pin and RC3 pin is the SCK pin. Both of these pins are pulled up using 10K resistors as required for i2c protocol. 24LC64 EEPROM is the slave device, while PIC16F877 is configured to be the master. LCD is also attached with PIC16F877, just to show the values received from the EEPROM, otherwise it is not required in this circuit. Proteus provides an ‘I2C Debugger Tool‘ which is attached on the SDA and SCK pins in the above circuit, this debugger shows all the activity on i2c bus[2]. It is attached in the circuit just for debugging purposes.

In the code, string ‘Saeed’ is stored in the 24LC64 EEPROM and then retrieved back and displayed on the LCD. As shown in Figure 1, ‘Saeed‘ is correctly displayed on the LCD, this shows that it was stored and retrieved from 24LC64 EEPROM successfully.

Code

The code for the main function is shown below.

Downloads

24LC64 EEPROM interfacing with PIC16F877 code was compiled in MPLAB v8.85 with HI-TECH C v9.83 compiler and simulation was made in Proteus v7.10. To download code and Proteus simulation click here.

 

For more detail: Interfacing of PIC16F877 with (i2c based) 24LC64 EEPROM (Code + Proteus simulation)


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.