tag 标签: at24c02

相关帖子
相关博文
  • 热度 20
    2012-5-8 04:22
    4733 次阅读|
    0 个评论
       AT24C02是Atmel公司生产的低功耗CMOS型EEPROM,内含2K bit,即256字节存储空间。它采用I2C总线方式进行数据读写,可工作于标准模式、快速模式和高速模式。硬件电路及其简单,数据读写也很方便。 注:本篇文章并不对I2C进行深入介绍,有关I2C总线的原理及操作见上一篇文章。 (1)引脚定义   1、2、3引脚为地址输入脚,根据需要分别接地或电源。当I2C总线工作于多节点模式时确定器件地址。AT24C02的地址分为固定部分和可编址部分,高半字节固定为1010,低半字节前三位对应A2、A1、A0引脚,最低位为读/写选择位。“0”表示写操作,“1”表示读操作。在主机发送起始条件后需发送器件地址,以确定要进行操作的器件,被选中的器件发送应答信号。4、8引脚分别接地与电源。6、7号引脚为I2C总线的时钟线与数据线,需加10K上拉电阻以使I2C总线在空闲时保持高电平。7号引脚为写保护引脚,接地时可正常读写,接高时只允许对器件进行读操作,以防止因为误操作而损坏内部存储的数据。AT24C02的写周期约为10ms,也就是在写操作后10ms才能正常读出数据。 (2)AT24C02写操作 单字节写操作 写操作要求在发送器件地址及应答后,发送一字节子地址,即存储器内部地址,因AT24C02容量为256字节,所以子地址为0-255。在接收到子地址后EEPROM再发送一位应答。在接下来的时钟周期里主机发送8位数据,EEPROM应答后,主机发送停止信号。 操作时序:     /**************************************************************** 函数名称:EEPROM_Write_Byte 函数功能:向EEPROM发送字符串 入口参数:add  //器件地址    sub_add  //子地址,即EEPROM内部地址(0-255)  dat   //要写入的一字节数据 出口参数:无 备 注: *****************************************************************/ void EEPROM_Write_Byte(unsigned char add,unsigned char sub_add,unsigned char dat) { Start_I2c();         Send_Byte(add);            Send_Byte(sub_add);                Send_Byte(dat);              Stop_I2c();                 } 注 :应答信号在EEPROM接受到数据后自动发出,无需软件发送   页写操作   AT24C02提供32个8字节的页空间。页写操作初始化与字节写相同,但在EEPROM接受到8位数据后单片机并不发送停止条件,而是继续发送7字节数据,在每接受一字节数据,EEPROM发送一位应答。在发送完8字节数据后,单片机需发送停止信号以终止操作。在进行页写操作时,存储器的子地址低三位会自动增一,但由于高位并不自增,在子地址加到页空间边界,即写入8字节后,下一字节会自动写入该页空间的第一字节,覆盖之前的数据,即“roll over”。 操作时序:       /**************************************************************** 函数名称:EEPROM_Write_Page 函数功能:向EEPROM写一页数据,即8字节 入口参数:add  //器件地址      sub_add   //子地址,EEPROM内部地址(0-255)  *s  //需写入的8字节数组或字符串 出口参数:无 备 注: *****************************************************************/ void EEPROM_Write_Page(unsigned char add,unsigned char sub_add,unsigned char *s) { unsigned char i; Start_I2c(); Send_Byte(add);//器件地址最低位为0,表示写操作 Send_Byte(sub_add); for(i=0;i8;i++)//一次只能写入8字节数据 { Send_Byte(*s); s++; } Stop_I2c(); }     (3)AT24C02读操作      单字节读操作 读操作分为当前地址读操作、随机读操作、顺序读操作。这里以随机读操作为例。在单片机发送完器件地址及子地址后,产生另一个重复起始信号,并发送器件地址(此时的器件地址最低位为1,表示读操作),这时子地址指向的为之前定义的值,方便访问任意地址空间,单片机接收到数据后发送非应答信号,并产生停止条件。 操作时序:   /**************************************************************** 函数名称:EEPROM_Read_Byte 函数功能:从EEPROM读出字符串 入口参数:add  //器件地址    sub_add  //子地址,即EEPROM内部地址(0-255) 出口参数:c   //读取的一字节数据 备 注: *****************************************************************/ unsigned char EEPROM_Read_Byte(unsigned char add,unsigned char sub_add) { unsigned char c; Start_I2c();            Send_Byte(add);             Send_Byte(sub_add);           Start_I2c(); Send_Byte(add+1); c=Rcv_Byte(); NoAck_I2c();                 Stop_I2c(); return (c);                    }   页读操作 : 初始部分与单字节操作相同,在单片机每接收到一字节发送一个应答位,在接收到第8字节时发送非应答信号,并产生停止条件。在读取超过8字节数据时,地址指针会在读完8字节后跳会页空间的第一字节。   /**************************************************************** 函数名称:EEPROM_Read_Page 函数功能:从EEPROM读取一页数据,即8字节 入口参数:add  //器件地址      sub_add   //子地址,EEPROM内部地址(0-255)  *s  //读出数据所存放的数组 出口参数:无 备 注: *****************************************************************/ void EEPROM_Read_Page(unsigned char add,unsigned char sub_add,unsigned char *s) { unsigned char i; Start_I2c(); Send_Byte(add); Send_Byte(sub_add);   Start_I2c(); Send_Byte(add+1); //发送器件地址,最低位为1,表示读操作 for(i=0;i7;i++)//一次只能读取8字节 { *s=Rcv_Byte(); //将读取的数据存于数组 s++; Ack_I2c();//主机发出应答信号 } *s=Rcv_Byte();  s++; NoAck_I2c();   //主机发出非应答信号 Stop_I2c(); }
相关资源
  • 所需E币: 0
    时间: 2021-3-20 20:24
    大小: 40.42KB
    上传者: samewell
    AT89S52单片机C语言应用100例-基于AT24C02的多机通信
  • 所需E币: 0
    时间: 2020-11-20 09:31
    大小: 13.53KB
    上传者: zendy_731593397
    51单片机程序应用案例源码-AT24C02
  • 所需E币: 0
    时间: 2020-9-18 18:02
    大小: 33.98KB
    上传者: LGWU1995
    将数据0x0f写入AT24C02再读出送P1口显示
  • 所需E币: 0
    时间: 2020-9-18 18:02
    大小: 33.46KB
    上传者: LGWU1995
    将数据0x0f写入AT24C02再读出送P1口显示
  • 所需E币: 0
    时间: 2020-9-18 18:02
    大小: 38.23KB
    上传者: LGWU1995
    将按键次数写入AT24C02,再读出并用1602LCD显示
  • 所需E币: 0
    时间: 2020-9-18 18:02
    大小: 34.18KB
    上传者: LGWU1995
    对I2C总线上挂接多个AT24C02的读写操作
  • 所需E币: 0
    时间: 2020-9-18 18:02
    大小: 36.15KB
    上传者: LGWU1995
    基于AT24C02的多机通信
  • 所需E币: 0
    时间: 2020-9-18 18:02
    大小: 19.25KB
    上传者: LGWU1995
    将渴望乐谱写入AT24C02并读出播放
  • 所需E币: 0
    时间: 2020-6-17 16:37
    大小: 455.59KB
    上传者: zendy_731593397
    AT24C02规格书datasheet
  • 所需E币: 1
    时间: 2020-5-31 09:32
    大小: 94.18KB
    上传者: 星空下的屋顶
    I2C总线芯片AT24C02程序设计(精简版).pdf
  • 所需E币: 3
    时间: 2019-12-28 23:43
    大小: 39KB
    上传者: 978461154_qq
    ThisapplicationnoteaddressesaddingexternalEEPROMintoSFF-8472applicationsthatrequiremorethan128BytesofmemorylocatedattheI2C*deviceaddressA0h.……
  • 所需E币: 4
    时间: 2019-12-25 12:07
    大小: 21.08KB
    上传者: 2iot
    at24c02……
  • 所需E币: 5
    时间: 2019-12-25 10:58
    大小: 2.23MB
    上传者: 16245458_qq.com
    单片机课程设计__电子密码锁报告基于单片机控制的电子密码锁摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用关键词:AT89S51,AT24C02,电子密码锁,矩阵键盘一、引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。二、方案论证与比较方案一:采用数字电路控制。其原理方框图如图1-1所示。[pic]图2-1数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码……
  • 所需E币: 3
    时间: 2020-1-6 11:09
    大小: 455.59KB
    上传者: 238112554_qq
    AT24C02蕊片资料FeaturesLow-voltageandStandard-voltageOperation……