本篇讲的单片机是第十一届蓝桥杯单片机实训的硬件设备。
蓝桥杯单片机硬件基础
蓝桥杯单片机AT24C02存储器电路图:
由上述电路硬件连接和AT24C02存储器地址初值,可知该AT24C02存储器的器件地址为:0xa0;
AT24C02读写时序(IIC为基础)
AT24C02存储器容量为256*8(2Kb),即数据存放的地址空间为0x00 - 0xfe;通信接口采用双线串行接口(SCL时钟线、SDA串行数据线);双线数据传送协议为:ISO/IEC7816-3同步协议。
- 写字节时序:
根据上述写字节时序,得到写字节函数代码:
//函数功能:写入AT24C02一字节
//入口参数:写入地址、写入数据
void EEPROM_W(u8 add,u8 dat)
{
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_SendByte(dat);
IIC_WaitAck();
IIC_Stop();
Delay5ms(); //延时一段时间
}
- 读字节时序:
根据上述读字节时序,得到读字节函数代码:
//函数功能:返回AT24C02指定地址的一个字节数据
//入口参数:读取数据的地址
u8 EEPROM_R(u8 add)
{
u8 dat;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xa1);
IIC_WaitAck();
dat = IIC_RecByte();
IIC_Ack(0); //不应答
IIC_Stop();
return dat;
}
注:本模块采用的是IIC为基础的协议编写,IIC的起始信号、停止信号、写字节信号、等待应答信号、应答信号、读字节信号等等函数,这里默认读者都有先前了解。
AT24C02字符串存储和读取
其基本理论与上面字节的写入和读出是一样的,这里就不重复说明。
相关代码编写:
- AT24C02字符串写入函数
//函数功能:写入AT24C02一字符串
//入口参数:写入地址、字符串数组名,字符串长度
void EEPROM_WS(u8 add, u8 *p,u8 lens)
{
u8 i;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
for(i=0;i<lens;i++)
{
IIC_SendByte(*p++);
IIC_WaitAck();
}
IIC_Stop();
Delay5ms();
}
- AT24C02字符串读出函数
//函数功能:读取AT24C02一字符串
//入口参数:读取地址、读取存放数组名,读取字符串长度
void EEPROM_RS(u8 add, u8 *p,u8 lens)
{
u8 i;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xa1);
IIC_WaitAck();
for(i=0;i<lens;i++)
{
*p++ = IIC_RecByte();
if(i!=lens) IIC_SendAck(0);
}
IIC_SendAck(1); //不应答
IIC_Stop();
}
函数的使用方法,这里就不展示了,欢迎提问和咨询 ~