AT24C02外部I2C总线EEPROM实验 联系客服

发布时间 : 星期四 文章AT24C02外部I2C总线EEPROM实验更新完毕开始阅读07ef9420c8d376eeafaa31b2

AT24C02外部总线EEPROM实验

AT24C02外部I2C总线EEPROM实验

1、实现功能

实现功能:通过通信协议使数码管显示字符。

实验现象:程序下载后可以看到数码管显示“CorrEct\表示测试正确,如果显示”Error“表示数据错误。 2、硬件介绍 该项目有以下模块: (1)、单片机系统

(2)、数码管模块

3、软件介绍

AT24C02外部总线EEPROM实验

软件流程图如下:

等待上电 HC595_Init函数声明 开始

开始显示 读取数据 LED_Display 延时100ms 写入数据

ToDisplayCorrect

ToDisplayError 否 TestData[cnt]!=DataBuf[cnt] 是

LED_Display

AT24C02外部总线EEPROM实验

3

关键代码:

/*********************************************** 函数名称:AT24C02_WritePage 功 能:AT24C02页写函数 入口参数:pbuf:指向数据指针 返 回 值:无 备 注:无

************************************************/ void AT24C02_WritePage(unsigned char * pbuf) {

unsigned char i;

AT24C02_Start();

//起始信号

//发送设备地址+写信号

AT24C02_SendByte(AT24C02_ADD_WR); AT24C02_SendByte(TEST_ADD); for (i=0; i

AT24C02_SendByte(pbuf[i]); }

AT24C02_Stop(); }

//发送存储单元地址

//写入一页的数据

//停止信号

AT24C02外部总线EEPROM实验

/*********************************************** 函数名称:AT24C02_ReadPage 功 能:AT24C02页读函数 入口参数:pbuf:指向返回数据指针 返 回 值:无 备 注:无

************************************************/ void AT24C02_ReadPage(unsigned char *pBuf) {

unsigned char i;

AT24C02_Start();

//起始信号

//发送设备地址+写信号

AT24C02_SendByte(AT24C02_ADD_WR); AT24C02_SendByte(TEST_ADD); AT24C02_Start();

//发送存储单元地址 //起始信号

//发送设备地址+读信号 //读出一页数据

AT24C02_SendByte(AT24C02_ADD_RD); for (i=0; i

pBuf[i] = AT24C02_RecvByte(); if (i == (PAGE_SIZE-1)) 应答

{

//读出一个字节数据

//I2C协议接收最后一个数据不进行

//详细参考I2C协议规定

//最后一个数据不需要应答

AT24C02_SendACK(NOACK); } else

AT24C02外部总线EEPROM实验

5

{

AT24C02_SendACK(ACK); } }

AT24C02_Stop(); } 4、调试

//停止信号

//应答

该EEPROM为I2C接口,使用单片机端口模拟I2C协议实现通信,程序中对EEPROM写入一个页的数据,再将该页的数据读出,如果读写EEPROM失败,则数码管显示“Error”,如果测试成功, 则在数码管显示“CorrECt”。该项目显示结果如上,所以数据正确。