Bootstrap

51单片机 AT24C02模块讲解 毕设专用

一、模块原理图

二、模块性能讲解

根据上方表格说明,可以看出24C0x 最后一个数表示的是RRPROM的存储大小,例如24C02 他的大小就是2K(2048)个bit ,因为一字节等于8bit 所以总共有256个字节存储空间(也就是256个地址),芯片每个地址只有8bit(一字节)数据空间。

从上方图片可以看到每个引脚对应的功能,我们的24C02可以从硬件电路上来进行地址区别,可以使用两个数据线读写8个24c02设备。根据的就是A0/A1/12这三个引脚来设置设备地址

进行读写步骤:

  1. IIC开始

  2. 发送设备器件地址

  3. 发送数据地址

  4. ......

部分主要代码-单设备读取

//初始化AT24c02 来判断是否读取数值
void Init_Read_24C02()
{
  unsigned char Check_Dat;
  Check_Dat = AT24C02_read_date(0);//从0地址读取检查值
  if(Check_Dat != CHECK_DATA)//判断是否等于 CHECK_DATA
  {
    Clean_24c02();//不等于则清除所有数据
  }
  else
  { //监测到等于CHECK_DATA则读取出上次保存数据
    Dat_1 = AT24C02_read_date(255); 
    Dat_2 = (AT24C02_read_date(2)<<8 | AT24C02_read_date(3));
  }
}

部分主要代码-多设备读取

//初始化AT24c02 来判断是否读取数值
void Init_Read_24C02()
{
  unsigned char Dat;
  Dat = AT24C02_read_date(0,AT24C02_DEV_1);//从0地址读取检查值
  if(Dat != CHECK_DATA)//判断是否等于 CHECK_DATA
  {
    Clean_24c02(AT24C02_DEV_1);//不等于则清除所有数据
  }
  else
  { //监测到等于CHECK_DATA则读取出上次保存数据
    Dat_1 = AT24C02_read_date(255,AT24C02_DEV_1);
    Dat_2 = (AT24C02_read_date(2,AT24C02_DEV_1)<<8 | AT24C02_read_date(3,AT24C02_DEV_1));
  }
  
  Dat = AT24C02_read_date(0,AT24C02_DEV_2);//从0地址读取检查值
  if(Dat != CHECK_DATA)//判断是否等于 CHECK_DATA
  {
    Clean_24c02(AT24C02_DEV_2);//不等于则清除所有数据
  }
  else
  { //监测到等于CHECK_DATA则读取出上次保存数据
    Dat_3 = AT24C02_read_date(255,AT24C02_DEV_2);
    Dat_4 = (AT24C02_read_date(2,AT24C02_DEV_2)<<8 | AT24C02_read_date(3,AT24C02_DEV_2));
  }
  
  
}

提供资料图示:

更详细代码视频讲解及代码下载请看:

【51模块库】AT24C02驱动代码+使用范例+多设备同IIC总线使用范例-毕设模块代码

;