AT24C02外部I2C总线EEPROM实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AT24C02外部I2C总线EEPROM实验
1、实现功能
实现功能:通过通信协议使数码管显示字符。
实验现象:程序下载后可以看到数码管显示“CorrEct"表示测试正确,如果显示”Error “表示数据错误。
2、硬件介绍
该项目有以下模块:
(1)、单片机系统
(2)、数码管模块
3、软件介绍
软件流程图如下:
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<PAGE_SIZE; i++) //写入一页的数据
{
AT24C02_SendByte(pbuf[i]);
}
AT24C02_Stop(); //停止信号
}
/***********************************************
函数名称: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<PAGE_SIZE; i++) //读出一页数据
{
pBuf[i] = AT24C02_RecvByte(); //读出一个字节数据
if (i == (PAGE_SIZE-1)) //I2C协议接收最后一个数据不进行应答
{ //详细参考I2C协议规定
AT24C02_SendACK(NOACK); //最后一个数据不需要应答
}
else
5
{
AT24C02_SendACK(ACK); //应答
}
}
AT24C02_Stop(); //停止信号
}
4、调试
该EEPROM为I2C接口,使用单片机端口模拟I2C协议实现通信,程序中对EEPROM写入一个页的数据,再将该页的数据读出,如果读写EEPROM失败,则数码管显示“Error”,如果测试成功,则在数码管显示“CorrECt”。
该项目显示结果如上,所以数据正确。