EEPROM (Electrically Erasable Programmable Read-Only Memory) thuộc loại "bộ nhớ không mất dữ liệu khi ngừng cung cấp điện" (non-volatile storage). EEPROM được ứng dụng để lưu trữ dữ liệu thường là các thông số cài đặt hay cấu hình của hệ thống. Trong bài tập trước mình đã giới thiệu với các bạn về EEPROM nội của PIC ghi và đọc EEPROM bài này mình sẽ làm bài tập về EEPROM ngoài với dòng chip 24LCxx

24cxx eeprom

Giới thiệu về dòng IC 24LCxx :

- Dòng IC 24LCxx   sử dụng chuẩn kết nối 2 dây I2c

- Số lần ghi/xóa là 1 triệu lần.

- Có thể ghép nhiều IC, mỗi IC được định địa chỉ bởi 3 chân A0, A1, A2 ( sẽ có tối đa 8 IC).

- A0, A1, A2 địa chỉ chip

- Serial Data (SDA) : Chân dữ liệu

- Serial Clock (SCL): Chân Clock

- Write-Protect (WP)

Cách định địa chỉ cho IC :

Địa chỉ của IC được xác định như hình trên với A2, A1, A0 là các bít lựa chọn chip, VD nếu 3 chân A2, A1, A0 được nối hết xuống đất thì địachỉ IC là 0xa0 cho việc ghi dữ liệu và 0xa1 cho việc đọc dữ liệu.

Cách đọc và ghi dữ liệu cho IC 24LCxx dùng vi điều khiển PIC 16F877A :

- Dùng giao tiếp I2C để giao tiếp với PIC 16F877A là master và IC 24LCxx là Slave, tham khảo bài  Giao tiếp I2C

- Khai báo cho PIC  #use i2c(master, sda=PIN_C4, scl=PIN_C3, FAST)

- Dưới đây là code đọc và ghi cho EEPROM : (lưu ý là địa chỉ ô nhớ của chip là 16 bit, như vậy khi ghi dữ liệu cần ghi 2 lần cho byte thấp và byte cao)

// Ghi dữ liệu

void write_ext_eeprom(int16 add, byte dulieu)
{
short int status;
i2c_start();
i2c_write(0xa0);
i2c_write(add>>8);
i2c_write(add);
i2c_write(dulieu);
i2c_stop();
i2c_start();
status=i2c_write(0xa0);
while(status==1)
{
i2c_start();
status=i2c_write(0xa0);
}
i2c_stop();
}

// Đọc dữ liệu

BYTE read_ext_eeprom(int16 add) {
BYTE dulieu;
i2c_start();
i2c_write(0xa0);
i2c_write(add>>8);
i2c_write(add);
i2c_start();
i2c_write(0xa1);
dulieu=i2c_read(0);
i2c_stop();
return(dulieu);
}

Các bạn có thể vào proteus vẽ mạch như hình bên dưới hoặc có thể download về với link ở dưới bài viết.

Nguyên lý hoạt động của bài tập này :

- Nhập từ bàn phím ma trận 3x4 bán kính hình tròn sau đó tính ra diện tích các bạn có thể tham khảo bài Bàn phím ma trận 3x4 để biết cách sử dụng .

- Hiển thị ra LCD giá trị nhập và lưu các thông số vào bộ nhớ các bạn có thể tham khảo bài Hiển thị LCD

- Các bạn nhấn phím * để nhập giá trị bán kính nhấn # để kết thúc nhập dữ liệu chương trình sẽ tính ra diện tích với các thông số vừa mới nhập và lưu vào bộ nhớ ngoài.

- Sau khi lưu vào EEPROM để kiểm tra xem giá trị bán kính đã được lưu chưa các bạn nhấn STOP trên màn hình mô phỏng Proteus rồi bật lại, các bạn sẽ thấy giá trị bán kính đã được lưu lại.

Kết bài : Trong bài tập này các bạn đã học được cách giao tiếp với EEPROM ngoài bằng vi điều khiển PIC, nó cũng đơn giản và dễ sử dụng hy vọng sẽ giúp ích được các bạn khi làm thiết kế liên quan đến giao tiếp với EEPROM ngoài.

 Download bài tập Ghi và đọc EEPROM ngoài 24LCxx 

Xem video mô phỏng

Nếu bạn thấy hay hãy đăng ký , chia sẻ giúp tôi nhé chúng tôi sẽ thường xuyên cập nhật kiến thức mới về vi điều khiển PIC tại đây