Giao tiếp eeprom 24c512

Các ứng dụng trong thực tế hiện nay việc sử dụng vi mạch nhớ eeprom trở nên rất phổ biến. Nó là vi mạch mở rộng bộ nhớ chương trình, ngoài ra chức năng nổi bật của nó là lưu dữ liệu khi mất nguồn điện. Bài hôm nay chúng ta đi tìm hiểu cách sử dụng một vi mạch nhớ đó eeprom 24c512.
Loại chip này có bộ nhớ 64K x 8 (512 Kbit), giao tiếp chuẩn I2C, khả năng ghi xóa 100000 lần .
Sơ đồ ghép nối :


Trong đó các chân A0 -> A2 để chọn chip, nếu có 1 chip thì nối gnd .
Chân 7 WR cho phép ghi đọc tích cực ở mức thấp -> nối gnd.
Địa chỉ chip trên bus I2C mặc định là là 0xa0.
Địa chỉ dữ liệu là thanh ghi 16 bit bắt đầu từ địa chỉ 0x0000 đến 0xffff. Việc ghi đọc phải tách ra thực hiện thành 2 giá trị 8 bit. Ghi phần giá trị cao trước, thấp sau.

Dưới đây là một ứng dụng sử dụng eeprom trong mạch đếm sản phẩm. Giá trị sản phẩm đếm được sẽ được lưu khi mất điện . Các bạn xem video để biết thêm thông tin.

mạch mô phỏng :

Video demo :

Code:


#include
#include "24xx512.h"
#include "lcd.h"

unsigned int x,dat;
void init()
{
unsigned char inner, outer;

for (outer = 0x00; outer < 0x10; outer++)
{
for (inner = 0x00; inner < 0xFF; inner++);
}

LCD_init();

for (inner = 0; inner < 10; inner++)
LCD_delay(2);
}

/***************************** Main function *************************************/
void main(void)
{
IE=0x81;// su dung ngat ngoai chan INT0
IT0=1;// ngat suon âm
init();
LCD_row1(); LCD_puts("http://");
LCD_row2(); LCD_puts(" machdientu.net");
LCD_delay(100);
LCD_clear();
LCD_row1(); LCD_puts("Test EEPROM 24xx");
LCD_row2(); LCD_puts("Waiting...");
LCD_delay(50);
LCD_clear();
while(1)
{
LCD_row1(); LCD_puts("So san pham:");
dat = EEPROM_get(0xffff);// doc san pham da luu hien thi len LCD
LCD_row2(); LCD_command(0xc0+2);LCD_number(dat);
LCD_command(0xc0+5);LCD_puts(" SP");
x=dat;// doc lai gia tri bien x khi mat dien
}
} /* End main */

void ngat0(void) interrupt 0
{
x++;
EEPROM_set(0xffff,x);// luu bien san pham eeprom
if(x==999)x=0;
}

Download ví dụ

Pass : machdientu.net

digg delicious stumbleupon technorati Google live facebook Sphinn Mixx newsvine reddit yahoomyweb