发布时间 : 星期四 文章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”。该项目显示结果如上,所以数据正确。