如果考到AT24C02模块就是送分题,芯片手册给出了写和读的时序,PCF8591的AD和DA时序同AT24C02,AT24C02在写的时候需注意,写周期为5ms
@annotation :蓝桥开发板上AT24C02的原理图
@annotation : AT24C02——256byte——2048bits
@annotation : Random Read ——随机读IIC时序
@annotation : Byte Write ——字节写IIC时序
@pay attention : 翻阅手册可以发现它的一个写周期长达5ms!!!
@pay attention : 它是有写保护的,本开发板上的写保护接地即关闭了写保护,诸如有写保护的常用器件还有DS1302
//===============================================
#include "MAIN.H"
#define AT24C02_Address 0XA0
//===============================================
//@role : 写入一字节
//@detail : Address can be 0-255
void AT2C02_WriteByte(uchar Address,Data )
{
IIC_Start(); //开始
IIC_SendByte(AT24C02_Address);//发送设备地址 ——写
if(!IIC_WaitAck()){IIC_Stop();} //如果没有寻址成功,停止
IIC_SendByte(Address); //发送写入的地址
IIC_WaitAck(); //等待应答
IIC_SendByte(Data); //发送写入的数据
IIC_WaitAck(); //等待应答
IIC_Stop(); //停止
}
//===============================================
//@role : 读出一字节数据
//@detail : address can be 0-255;
uchar AT24C02_ReadByte(uchar Address)
{
unsigned char Data;
IIC_Start(); //开始
IIC_SendByte(AT24C02_Address);
if(!IIC_WaitAck()){IIC_Stop();}
IIC_SendByte(Address);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(AT24C02_Address|0X01); //发送设备地址——读
IIC_WaitAck();
Data=IIC_RecByte();
IIC_Ack(1);
IIC_Stop();
return Data;
}
//===============================================