I2C总线at24c02芯片使用说明
I2C总线at24c02芯片使用说明

3.2.5 密码储存电路密码储存电路采用I2C总线at24c02存储芯片存放密码,可实现断电密码不消失,at24c02存储芯片可长期存储信息,可上百万次以上重新擦写。
图3-5 密码储存电路2.4.3 I2C总线密码存储芯片at24c02介绍图2-3 at24c02引脚图(1)引脚功能介绍及相关知识WP:写保护引脚,将该引脚接VCC E2PR0MI就实现写保护(只读)。
引脚接地或悬空,可以对器件进行读写操作。
SCL串行时钟引脚,串行输入输出时该引脚用于输入时钟。
SDA串行数据输入输出引脚,用来输入输出数据,该引脚为射极开路输出,需接上拉电阻。
(2)I2C总线协议只有总线非忙时才被允许进行数据传送,在传送时,当时钟线为高电平,数据线必须为固定状态,不允许有跳变。
时钟线为高电平时数据线的任何电平变化将被当作总线的启动或停止条件。
(3)起始条件起始调教必须在所有操作命令之前发送。
时钟线保持高电平期间,数据线电平从高到低跳变作为I2C总线的启动信号。
CAT24Cxx>一直监视SDA和SCL电平信号,直到条件满足时才响应。
(4)停止条件时钟线保持高电平期间,数据线电平从低到高跳变作为IC总线的停止信号。
(5)器件地址的约定主器件在发送启动命令后开始传送数据,主器件发送相应的从器件地址,8 位从器件地址的高四位固定为1010,接下来的 3 位用来定义存储器的地址,对2于,这三位无意义,对于,接下来的 2 位无意义,第三位是地址高位,中,第一位无意义,后两位表示地址高位。
最后一位为读写控制位,“1表”示对从器件进行读写操作,“0表”示写操作。
在主器件发送启动命令和一字节从器件地址后,如果与从器件地址吻合,CAT24C02各发送一个应答信号,然后再根据读/写控制为进行读或写操作。
(6)应答信号每次数据传送成功后,接收器件将发送一个应答信号。
当第九个时钟信号产生时,产生应答型号的器件将SDA下拉为低,通知已经接受到8位数据,接收到起始条件和从器件地址后,CAT24C02发送一个应答信号,如果为写操作,每接收到一个字节数据,CAT24C02发送一个应答信号。
I2C总线芯片AT24C02程序设计

I2C总线芯片AT24C02程序设计I2C总线芯片AT24C02是一种常用的存储器芯片,在嵌入式系统中广泛应用。
本文将介绍如何使用AT24C02进行程序设计,包括芯片初始化、读取数据和写入数据等操作。
为了简化整个流程,本文将只介绍关键的代码部分。
首先,我们需要了解AT24C02芯片的连接方式和寄存器地址。
AT24C02通过I2C总线连接到控制器,其中使用两根信号线SCL和SDA进行通信。
芯片的I2C地址为0xA0,并且有256个存储器单元,每个单元8位,总共可以存储2KB的数据。
接下来,我们需要进行芯片的初始化。
初始化过程包括初始化I2C总线、设置AT24C02的I2C地址和其他必要的配置。
以下是AT24C02初始化的代码示例:```c#include <Wire.h>#define AT24C02_ADDRESS 0xA0 // AT24C02芯片的I2C地址void setupWire.begin(; // 初始化I2C总线void loop//主程序代码```在进行读取数据之前,我们需要指定要读取的存储器单元的地址,并将其发送给AT24C02芯片。
以下是读取数据的代码示例:```c#include <Wire.h>#define AT24C02_ADDRESS 0xA0 // AT24C02芯片的I2C地址#define MEMORY_ADDRESS 0x00 // 要读取的存储器单元的地址void setupWire.begin(; // 初始化I2C总线Wire.beginTransmission(AT24C02_ADDRESS); // 开始I2C通信Wire.write(MEMORY_ADDRESS); // 发送存储器单元的地址Wire.endTransmission(; // 结束I2C通信void loop//主程序代码```在进行写入数据之前,我们需要指定要写入的存储器单元的地址,并将数据发送给AT24C02芯片。
I2C串行AT24C02实验

第4章实验01-I2C串行AT24C02实验
一、实验目的:
1、了解I2C总线的工作原理;
2、学习I2C总线与单片机的接口方法;
3、学习串行E2PROM芯片24CXX系列的读写方法;
4、单片机I2C总线接口的编程方法。
二、实验内容:
1、向24C02写入数据,然后读出数据检验,检验正确,点亮8个发光二极管;检验错误,熄灭8个发光二极管。
原理图:
流程图:
子程序开始子程序开始开始
发送启动条件发送启动条件I/O端口初始化
I2C初始化送出器件地址,设为送出器件地址,设为
“写”模式;“写”模式;I2C写1个字节
送出写入地址;送出写入地址;
送出写入数据;I2C读出1个字节
送出重启条件否
发送停止条件读出=写入?
送出器件地址,设为“读”是延时10ms 接收24C02送出的数据
灯灭灯亮
返回发送非应答条件
发送停止条件踏步
返回
2、编制程序,分别按字节模式和页模式向24C02芯片写入数据,比较写入速度的差别。
原理图:
流程图:
字节子程序主程序
一个字节程序I/O端口初始化
N I2C初始化
是否8次定时初始化
Y
返回启动定时0
页模式程序
页模式子程序关闭定时0
发送启动条件启动定时1
送出器件地址,设置字节子程序
“写”模式;关闭定时1
送出写入地址;N
T0<T1
Y
送出写入数据灯亮灯灭
N
是否8次?
Y 踏步
返回
T0 为定时器0的定时时间;T1为定时器T1的定时时间。
首先先看AT24C02的数据手册

首先先看AT24C02的数据手册1、24C02读写规则。
器件地址:此处将A2A1A0接地。
所以地址为0x50;最低位为读写标志位,有DSP自动发送。
2、I2C总线初始化:void InitI2C(void){InitI2CGpio();//将对应的IO口功能设置成I2C总线工作模式。
// Initialize I2CI2caRegs.I2CSAR = 0x50; // Slave address=0x00;- EEPROM control codeI2caRegs.I2CPSC.all = 9; // I2C模块时钟频率=100MHZ/(9+1)=10MHZI2caRegs.I2CCLKL = 10; //I2caRegs.I2CCLKH = 5; // SCL--Master Clock=10M/(CLKL+CLKH+10)=400k;I2caRegs.I2CIER.all = 0x2C; // Enable SCD & ARDY interruptsI2caRegs.I2CMDR.all = 0x0020; // Take I2C out of resetI2caRegs.I2CFFTX.all = 0x6000; // Enable FIFO mode and TXFIFOI2caRegs.I2CFFRX.all = 0x2040; // Enable RXFIFO, clear RXFFINT,}3、I2C页写子程序:对某个页面进行写8个数据。
起始地址:MemoryAddressvoid I2C_PageWrite(Uint16 MemoryAddress,Uint16 write_buffer[8]){Uint16 i;// 设置器件地址I2caRegs.I2CSAR=0x0050;// 需要发送的数据个数:=需要发送的数据个数+1个数据长度的地址I2caRegs.I2CCNT =8+1;// 第一个发送的数据:存储地址I2caRegs.I2CDXR =MemoryAddress;//接着是要发的数据。
IIC总线操作AT24C02芯片详解

IIC总线操作AT24C02芯片详解一IIC总线操作规范起始和终止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
数据传送格式: 每一个字节必须保证是8位长度。
数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。
二.AT24C02芯片定义和功能该芯片是一个有2K(256*8)存储单元的EEPROM.1010为固定,A0,A1,A2正好与芯片的1,2,3引角对应.对通过这三个引脚设定可编程地址.若这三个引脚都接地,则地址如下图片:在IIC总线上读写AT24C02要遵循以下规范三,程式实例void init() //初始化{SCL=1;delay();SDA=1;delay();}void start() //启动信号{SDA=1;delay();SCL=1;delay();SDA=0;delay();}void stop() //停止信号{SDA=0;delay();SCL=1;delay();SDA=1;delay();}void respons() //回应信号{uchar i=0;SCL=1;delay();while((SDA==1)&&(i<255))i ;SCL=0;delay();}void writebyte(uchar date)// 写一个字节{uchar i,temp;temp=date;for(i=0;i<8;i ){temp=temp<<1;SCL=0;delay();SDA=CY;delay();SCL=1;delay();}SCL=0;delay();SDA=1;delay();}uchar readbyte() //读一个字节{uchar i,j,k;SCL=0;delay();SDA=1;for(i=0;i<8;i ){SCL=1;delay();if(SDA==1)j=1;elsej=0;k=(k<<1)|j;SCL=0;delay();}delay();return k;}Void write_add(uchar address,uchar info) //指定地址写一个字节数据{start();writebyte(0xa0);respons();writebyte(address);respons();writebyte(info);respons();stop();}uchar read_add(uchar address) //指定地址读一个字节数据{uchar dd;start();writebyte(0xa0);respons();writebyte(address);respons();start();writebyte(0xa1);respons();dd=readbyte(); stop();return dd;}。
ATMEL 24c02使用详解(汇编及C程序都有)

ATMEL 24c02使用详解原文地址: /Blog/cns!2FEAB5F0F11F7A67!296.entryATMEL 24c02使用详解I2C总线是一种用于IC器件之间连接的二线制总线。
它通过SDA(串行数据线)及SCL (串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。
1.I2C总线的基本结构采用I2C总线标准的单片机或IC器件,其内部不仅有I2C 接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。
CPU不仅能通过指令将某个功能单元电路挂*或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。
I2C总线接口电路结构如图1所示。
2.双向传输的接口特性传统的单片机串行接口的发送和接收一般都各用一条线,如MCS51系列的TXD和RXD,而I2C总线则根据器件的功能通过软件程序使其可工作于发送或接收方式。
当某个器件向总线上发送信息时,它就是发送器(也叫主器件),而当其从总线上接收信息时,又成为接收器(也叫从器件)。
主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。
I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。
在总线上,既没有中心机,也没有优先机。
总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于此时数据传送的方向。
SDA和SCL均为双向I/O线,通过上拉电阻接正电源。
当总线空闲时,两根线都是高电平。
连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能。
I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。
3.I2C总线上的时钟信号在I2C总线上传送信息时的时钟同步信号是由挂接在SCL 时钟线上的所有器件的逻辑“与”完成的。
I2C总线原理介绍AT24C02内部原理介绍
I2C总线原理介绍AT24C02内部原理介绍I2C总线原理介绍:I2C (Inter-Integrated Circuit)总线是一种用于在集成电路之间进行通信的串行通信总线协议。
它最初由飞利浦半导体公司(现在的NXP半导体)开发,旨在解决多个IC之间的通信问题。
I2C总线协议包括了两种设备,即主设备和从设备。
主设备负责控制总线及发送和接收数据,而从设备则依从主设备的控制。
主设备通过发送一个起始条件开始通信,并通过发送地址和数据进行控制。
从设备则根据主设备发送的地址和数据进行相应的响应。
1.双向通信:I2C总线允许主设备和从设备之间双向通信,即主设备可以发送数据给从设备,也可以从从设备接收数据。
2.多主模式:I2C总线支持多个主设备同时驱动总线,这可以实现多个主设备之间的协同工作。
3.硬件地址和数据传输:I2C总线使用7位或10位地址来寻址从设备,并以字节为单位传输数据。
4.起始和停止条件:I2C总线使用起始和停止条件来控制通信的开始和结束。
5.错误检测:I2C总线通过校验和来检测传输过程中的错误。
6.时钟同步:I2C总线使用时钟信号来同步主设备和从设备之间的通信。
AT24C02内部原理介绍:AT24C02是一种常见的I2C EEPROM (Electrically Erasable Programmable Read-Only Memory)芯片,用于存储数据。
它的内部原理如下:1.存储单元:AT24C02由256个8位字节构成,每个字节具有一个唯一的地址。
地址范围从0到255,可以存储共计2048位的数据。
2.寻址和读写:AT24C02通过I2C总线进行寻址和读写操作。
主设备发送启始条件和设备地址,然后发送要读取或写入的数据的地址,最后发送或接收实际数据。
3.数据传输:AT24C02的数据以字节为单位被写入和读取。
写入操作通过I2C总线将字节数据写入到指定地址处。
读取操作通过I2C总线将字节数据从指定地址读出。
IIC总线及AT24C02
单片机IIC总线及AT24C02的应用一:IIC和24C02的关系IIC是一种通信协议,IIC总线:由时钟线和数据线构成。
IIC和24C02的关系:24C02是芯片,24C02和其他设备通信使用的是IIC总线。
二:24C02和EEPROM的关系24C02和EEPROM的关系:24C02是一款数据存储芯片,它的存储介质是EEPROM。
三:EEPROM是什么,有什么特点?EEPROM是一款存储介质,电可擦除,可编程的存储介质。
数据可读可写,数据掉电不丢失。
四:EEPROM和单片机的关系EEPROM和单片机的关系:24C02的存储介质是EEPROM,24C02通过IIC总线和单片机通信,单片机把需要掉电不丢失的数据存储在24C02的EEPROM里面。
ROM:程序存储器,数据可读不能写,掉电不丢失。
RAM:数据存储器,数据可读可写,掉电丢失。
EEPROM:数据存储器,数据可读可写,掉电丢失。
容量小,价格高,可以随机读写擦除。
FLASH:数据存储器,数据可读可写,掉电丢失。
快擦除,价格较低,容量较大。
出现坏掉的概率相对较高。
五:AT24C02怎么控制总线—启动,停止,读,写。
(时序图可得)1.启动总线:时钟线是高电平的时候,数据线上的电平由高到低的跳变。
2.停止总线:时钟线是高电平的时候,数据线上的电平由低到高的跳变。
3.正常传输数据要改变的话:时钟线处于低电平。
设备地址:每个硬件设备地址,设备地址可以理解为器件地址。
A0H(实际应用而定)字地址:芯片内部数据存放的地址,256字节空间。
00H~FFHA:写操作(根据写操作时序图)1.启动总线2.写芯片地址(写设备地址)等待应答3.应答有效后,写芯片内部地址(字地址)4.写数据,等待应答5.结束,B:读操作(根据读操作时序图)1.启动总线2.写芯片地址(写设备地址)等待应答3.应答有效后,写芯片内部地址(字地址)4.重启总线(根据读的时序图得:先写操作后才读操作(只有写操作才有读写))5.发送设备地址(目的是把写改为读),6.结束模块化模块的分割:一个.c配一个.h文件,.C文件用来写实体函数。
I2C_24C02总线通信协议实例详解(附详细示波器实测波形图)
I2C详解I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。
I2C总线只有两根双向信号线:一根是数据线SDA,另一根是时钟线SCL。
I2C总线通过上拉电阻接正电源。
当总线空闲时,两根线均为高电平。
连到总线上的任一器件输出的低电平都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
在有些情况下,可能没接上拉电阻I2C也能正常通信,但是建议读者最好接上拉电阻。
本文最后将给出有接上拉电阻和没接两种情况下的I2C通信波形,可以明显的看出来,接了上拉电阻波形更漂亮,通信也更稳定。
本文将以24C02来详细讲解I2C 协议。
因为本文的重点是讲解I2C,所以这里只简单的介绍24C02,有关24C02的更为详细的资料,读者可以查阅其数据手册,在这里就其必需的部分进行简单的讲解。
一、 AT24C02简介AT24C02是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含256×8位(2K)存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。
它的典型应用电路如图1:图1 AT24C02典型应用电路图1中AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。
在本文都将其接地,表示其地址为000。
第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,第6脚SCL为串行时钟输入线。
当用单片机I/O 口模拟I2C通信时,这两个引脚可以接任意的I/O口。
SDA和SCL都需要接一个上拉电阻,其阻值一般为4.7K~10K。
第7脚是写保护引脚,可以接IO口也可以直接接地,接地就不再具有保护功能。
这里将其直接接地。
二、 I2C总线的构成及信号类型I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
I2C总线 24C02芯片的读写应用
I2C总线24C02芯片的读写应用什么是I2C总线?I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。
也可以简单地理解为I2C是微控制器与外围芯片的一种通讯协议。
在不同的书籍中,可能会称为I2C,IIC,或者I平方C,但是概念也是一样的,只是叫法不同。
一﹑I2C总线特点I2C总线的优点非常多,其中最主要体现在1:硬件结构上具有相同的接口界面;2:电路接口的简单性;3:软件操作的一致性。
I2C总线占用芯片的引脚非常的少,只需要两组信号作为通信的协议,一条为数据线(SDA),另一条为时钟线(SCL)。
因此减少了电路板的空间和芯片管脚的数量,所以降低了互联成本。
总线的长度可高达25英尺,并且能够以10Kbps 的最大传输速率支持40个组件。
I2C总线还具备了另一个优点,就是任何能够进行发送和接收数据的设备都可以成为主控机。
当然,在任何时间点上只能允许有一个主控机。
图5-20(总线连接图)二﹑I2C总线工作原理图5-20为I2C总线的连接图。
I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。
在单片机与被控IC之间,最高传送速率100kbps。
各种I2C器件均并联在这条总线上,就像电话线网络一样不会互相冲突,要互相通信就必须拨通其电话号码,每一个I2C模块都有唯一地址。
并接在I2C总线上的模块,既可以是主控器(或被控器),也可以是发送器(或接收器),这取决于它所要完成的功能。
I2C总线在传送数据过程中共有四种类型信号,它们分别是:起始信号、停止信号﹑应答信号与非应答信号。
三﹑I2C总线数据的传送规则起始信号:在I2C总线工作过程中,当SCL为高电平时,SDA由高电平向低电平跳变,定义为起始信号,起始信号由主控机产生。
如图5-21所示图5-21(开始信号)停止信号:当SCL为高电平时,SDA由低电平向高电平跳变,定义为停止信号,此信号也只能由主控机产生。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2.5 密码储存电路
密码储存电路采用I2C总线at24c02存储芯片存放密码,可实现断电密码不消失,at24c02存储芯片可长期存储信息,可上百万次以上重新擦写。
图3-5 密码储存电路
2.4.3 I2C总线密码存储芯片at24c02介绍
图2-3 at24c02引脚图
(1)引脚功能介绍及相关知识
WP:写保护引脚,将该引脚接VCC,E2PROM就实现写保护(只读)。
引脚接地或悬空,可以对器件进行读写操作。
SCL:串行时钟引脚,串行输入输出时该引脚用于输入时钟。
SDA:串行数据输入输出引脚,用来输入输出数据,该引脚为射极开路输出,需接上拉电阻。
(2)I2C总线协议
只有总线非忙时才被允许进行数据传送,在传送时,当时钟线为高电平,数据线必须为固定状态,不允许有跳变。
时钟线为高电平时数据线的任何电平变化将被当作总线的启动或停止条件。
(3)起始条件
起始调教必须在所有操作命令之前发送。
时钟线保持高电平期间,数据线电平从高到低跳变作为I2C总线的启动信号。
CAT24Cxxx一直监视SDA和SCL电平信号,直到条件满足时才响应。
(4)停止条件
时钟线保持高电平期间,数据线电平从低到高跳变作为I2C总线的停止信号。
(5)器件地址的约定
主器件在发送启动命令后开始传送数据,主器件发送相应的从器件地址,8位从器件地址的高四位固定为1010,接下来的3位用来定义存储器的地址,对
于CAT24C021/022,这三位无意义,对于CAT24C41/042,接下来的2位无意义,第三位是地址高位,CAT24C081/082中,第一位无意义,后两位表示地址高位。
最后一位为读写控制位,“1”表示对从器件进行读写操作,“0”表示写操作。
在主器件发送启动命令和一字节从器件地址后,如果与从器件地址吻合,CAT24C02将发送一个应答信号,然后再根据读/写控制为进行读或写操作。
(6)应答信号
每次数据传送成功后,接收器件将发送一个应答信号。
当第九个时钟信号产生时,产生应答型号的器件将SDA下拉为低,通知已经接受到8位数据,接收到起始条件和从器件地址后,CAT24C02发送一个应答信号,如果为写操作,每接收到一个字节数据,CAT24C02发送一个应答信号。
如果为读操作,CAT24C02发送一个字节数据后释放总线等待应答信号,一旦接收到应答信号,它将继续发发送数据,如果接收到主器件发送非应答信号,将结束数据传送等待停止条件。
(7)写操作
在写字节模式下,助器件发送起始命令和从器件地址信息给从器件,在从器件响应应答信号后,主器件将要写入的数据地址发送到CAT24C02的地址指针,主器件收到从器件的应答信号后再送数据到相应的数据存储区地址,CAT24C02再响应一个应答信号,主器件产生一个停止信号,然后CAT24C02启动内部写周期,在内部写周期期间,CAT24C02不再响应主器件任何请求。
写操作时序读如图2-4所示:
图2-4 写时序图
(8)读操作
CAT24C02读操作的初始化方式和写操作一样,仅把R/W位置1,读操作有三种方式:立即地址读、选择地址读、连续读。
选择地址读操作时序图如图2-5所示:
图2-5 读时序图
程序:
#include<>
#include<>
#define uint unsigned int
#define uchar unsigned char
uchar i,date;
password [6];
uchar code deposit []={3,2,5,8,9,2}; sbit sda=P3^4;
sbit scl=P3^5;
void nopp(uchar s)
{ uchar n;
for(n=0;n<s;n++)
_nop_();
}
void start() //开始信号
{ sda=1;
nopp(5);
scl=1;
nopp(5);
sda=0;
nopp(5);
}
void stop() //停止信号
{ sda=0;
nopp(5);
scl=1;
nopp(5);
sda=1;
nopp(5);
}
void response() //应答信号
{ uchar i;
scl=1;
nopp(5);
while((sda==1)&&(i<255))i++;
scl=0;
nopp(5);
}
void write_byte(uchar date) //写一个字节{ uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{ scl=0;
nopp(5);
temp<<=1;
sda=CY;
nopp(5);
scl=1;
nopp(5);
}
scl=0;
nopp(5);
sda=1;
nopp(5);
}
uchar read_byte() //读一个字节
{ uint i,j;
scl=0;
nopp(5);
sda=1;
nopp(5);
for(i=0;i<8;i++) //循环8次读出一个字节数据
{ scl=1;
nopp(5);
j=(j<<1)|sda;
scl=0;
nopp(5);
}
return j;
}
void at24_write(uchar address,uchar date)
{ start(); //初始信号write_byte(0xa0); //写入芯片地址0XA0
response(); //应答信号
write_byte(address); //写入芯片内部寄存器地址ADDRESS response(); //应答信号
write_byte(date); // 写入数据
response(); //应答信号
stop(); // 停止信号
}
uchar at24_read(uchar address)
{ uchar date;
start(); // 初始信号
write_byte(0xa0); // 写入芯片地址0XA0
response(); // 应答信号
write_byte(address); // 写入芯片内部寄存器地址ADDRESS response(); // 应答信号
start(); // 初始信号
write_byte(0xa1); // 初始信号
response(); // 写入芯片地址0XA1(读)
date=read_byte(); // 读出数据
stop(); // 停止信号
return date; // 返回读出值
}
void main()
{ uchar tt, i ,r
sda=1;
scl=1;
at24_write(8,9);//向at24c02的地址8写入数据 9
delay(50);
for(i=0;i<6;i++)//将数组中的数据写入at24c02 的地址为0 至5的位置{ at24_write(i,deposit[i]);
delay(50);
}
tt=at24_read(8);//读地址 8 中的数据
for(r=0;r<6;r++)//读取地址为0 至5的数据,存放在数组password 中password[r]=at24_read(r);
}。