24C02串行E2PROM的读写
24C02读写C程序

//选择性读操作,从 address 地址中读出 1 个字节 uchar Read24c02(uchar address) {
uchar ch; //伪写操作 Start(); Write8Bit(WriteDeviceAddress); //发送从器件地址,且方式为写。 while(TestAck()); Write8Bit(address); while(TestAck());
}
//从 24c02 中读出 8 个 bit uchar Read8Bit() {
unsigned char temp,rbyte=0; for(temp=8;temp!=0;temp--) {
SCL=1; rbyte=rbyte<<1; rbyte=rbyte|((unsigned char)(SDA)); SCL=0; } return(rbyte); }
#define WriteDeviceAddress 0xa0 #define ReadDeviceAddress 0xa1 sbit SCL=P2^7; sbit SDA=P2^6;
//定义器件在 IIC 总线中的地址,且方式为写 //定义器件在 IIC 总线中的地址,且方式为读
sbit P10=P1Stop();
//主机产
生停止信号 return(ch);
}
//本课试验写入一个字节到 24c02 并读出来
void main(void) // 主程序 {
uchar c1,c2; c1=Read24c02(0x02);
//从 24c02 中读出 1 个字节
Write24c02(0x88,0x03); c2=Read24c02(0x03); P3=c2;
24C02读写C程序
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的定时时间。
24c02中文资料

24c02中文资料1. 简介24c02是Microchip公司推出的一种串行电子可擦写可编程读写存储器,属于EEPROM(Electrically Erasable Programmable Read-Only Memory)系列。
它采用2-wire串行总线(I2C)接口,具有体积小、功耗低、可靠性高等特点。
本文档将详细介绍24c02的硬件特性、接口规范、存储容量和使用方法。
2. 硬件特性24c02的主要硬件特性如下:•存储容量:24c02有256个字节,每个字节有8位,总计拥有2Kb的存储空间。
•工作电源:24c02需要使用3.3V到5V的供电电压,支持广泛的电源电压范围。
•通信接口:24c02使用I2C串行总线进行通信,具有两根信号线:串行数据线(SDA)和串行时钟线(SCL)。
•封装类型:24c02有多种封装类型可供选择,如DIP(双列直插式封装)、SOP(小型轻负载封装)等。
3. 接口规范24c02采用I2C串行总线接口,其接口规范如下:•数据传输方式:24c02支持字节读写操作和页写操作。
字节读写操作是指每次读写一个字节的数据;页写操作是指每次可以写入8个连续字节的数据。
•起始信号和停止信号:在I2C总线上进行通信时,需要发送起始信号(Start)和停止信号(Stop)以标识数据传输的开始和结束。
•从器件地址:24c02有多个从器件地址可供选择,通过设置硬件地址引脚,可以实现多个24c02器件的级联。
4. 存储容量24c02的存储容量为2Kb,相当于256个字节。
每个字节有8位,可存储0x00到0xFF的数据。
这些存储空间可以被分为多个页,每页包含8个字节。
5. 使用方法以下是24c02的基本使用方法,供参考:•初始化:将24c02与主控芯片(如单片机)连接,并提供正常的供电电源。
同时,设置24c02的硬件地址引脚,确保能正确寻址。
•写入数据:选择要写入数据的存储地址,发送起始信号和器件地址,然后发送数据字节。
I2C总线at24c02芯片使用说明

response(); //应答信号
stop(); //停止信号
uchar at24_read(uchar address)
{uchar date;
}
void main()
{uchar tt, i ,r
sda=1;
scl=1;
at24_write(8,9);//向at24c02的地址8写入数据9
}}nopp(5);
scl=0;
nopp(5);
sda=1;
nopp(5);
uchar read_byte() //读一个字节
{uint i,j;
}
void at24_write(uchar address,uchar date)
{ start(); //初始信号
write_bscl=1;
nopp(5);
sda=0;
nopp(5);
for(n=0;n<s;n++)
_nop_();
{sda=0;
}
void response() //应答信号
{uchar i;
}
void write_byte(uchar date) //写一个字节
{uchar i,temp;
temp=date;
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;
}
void start() //开始信号
24c02读写程序大全

CLR SCLK24
CALL START24;启动
MOV A,#0A0H
CALL SHIFT8;移位
CALL ACK;响应
POP ACC
>SETB;应答毕,SDA置1
>RET
>程序中多处调用了DELAY子程序(仅两条NOP指令),这是为了满足I2C总线上数据传
送速率的要求,只有当SDA数据线上的数据稳定下来之后才能进行读写(即SCL线发出正
脉冲)。另外,在读最后一数据字节时,置应答信号为“1”,表示读操作即将完成。
>
>下面是本人编写的源程序,已经调试成功,下载就可以使用,程序编写的不是很规范
>ACALL SUBS
>MORE: ACALL SUBR
>MOV@R1,A
>INCR1
>DJNZ R7,MORE
>CLR
>ACALL DELAY
>SETB
>ACALL DELAY
>SETB;送停止信号
>RET
>SUBR: MOVR0,#08H ;接受单字节子程序
>LOOP2: SETB
>ACALL DELAY
TT2:MOV30H,A
MOVCA,@A+DPTR
CLR;开数码管
MOVP0,A;送显示
MOVA,30H
INCA
MOVB,A
MOVA,#00H
LCALLWT24
AJMP$
TAB:DB28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H
RD24: PUSH ACC;读24C02子程序。
FPGA读写AT24C02实验

文档编号 作者 版本 审阅
jiaqiqiu 1.0
1 / 10
版本信息记录
版本号 作者
版本信息
1.0 jiaqiqiu FPGA 读写 AT24C02 实验
更新原因 历史版本 审阅 发布日期
2 / 10
目录
1. 引言...........................................................................................................................................................................................4 文档目的 ......................................................................................................................................................................................4
TxD_data,并启动一次发送,在忙状态检测到其上升沿则不会响应此次发送 命令; 3) IIC 控制命令产生模块 iic_ctrl: 包括以下比较重要的接口: byte_wr_en、page_wr_en、byte_rd_en、page_rd_en、page_rd_stop 这几个属于一类信 号分别对应字节写、页 写、随机读(一次 读一个字节)、 连续读启动信号 即连续读停止信 号,检测到其上升沿就会触发相应的操作。
5 / 10
3. 代码
EEPROM存储芯片24C02
EEPROM存储芯⽚24C021、24C02简介 24C02是⼀个2Kbit的串⾏EEPROM存储芯⽚,可存储256个字节数据。
⼯作电压范围为1.8V到6.0V,具有低功耗CMOS技术,⾃定时擦写周期,1000000次编程/擦除周期,可保存数据100年。
24C02有⼀个16字节的页写缓冲器和⼀个写保护功能。
通过I2C总线通讯读写芯⽚数据,通讯时钟频率可达400KHz。
可以通过存储IC的型号来计算芯⽚的存储容量是多⼤,⽐如24C02后⾯的02表⽰的是可存储2Kbit的数据,转换为字节的存储量为2*1024/8 = 256byte;有⽐如24C04后⾯的04表⽰的是可存储4Kbit的数据,转换为字节的储存量为2*1024/8 = 512byte;以此来类推其它型号的存储空间。
24C02的管脚图如下: VCC和VSS是芯⽚的电源和地,电压的⼯作范围为:+1.8V~+6.0V。
A0、A1、A2是IC的地址选择脚。
WP是写保护使能脚。
SCL是I2C通讯时钟引脚。
SDA是I2C通讯数据引脚。
2、24C02的设备地址和写保护功能 I2C主机在与24C02通讯时,需要发送⼀个设备地址进⾏寻址,在I2C总线上,每⼀个从机设备的地址都是唯⼀的。
24C02的设备地址包含两部分,第⼀部分是bit7~bit4是固定的“1010”,第⼆部分bit3~bit1位由A2、A1、A0组成。
主机在与24C02进⾏通讯时,除了发送设备地址还需要发送数据的读写⽅向位R/W,24C02的是设备地址与R/W位组成了⼀个字节的数据。
如下图: 上图列出了⼏个存储IC的设备地址与R/W位组成的字节。
由图中可以看到,存储IC地址的bit7~bit4位固定为“1010”;bit3~bit1位由A2、A1、A0引脚的电平状态决定,如果Ax接的是电源(⾼电平),那么Ax=1,如果Ax接的是地,那么Ax=0,即由A2、A1、A0可以组合成8种设备地址,也就是说在同⼀个I2C总线上可以同时挂载8个24C02芯⽚。
IIC总线读写EEPROM(深度诠释)
/*----------------------------------------------------------------------------------------------------------IIC总线读写EEPROM(串行扩展eeprom,24c02)(STC12C系列单片机自带eeprom,且有另外的eeprom操作方式)作者:Allen.H(帮同学修改的一个程序)时间:2010.11.5----------------------------------------------------------------------------------------------------------*/#include <reg52.h>#include <intrins.h>//是用括号还是双引号看情况,本地头文件用双引号,系统头文件用括号//这里使用了_nop_()函数,所以调用此头文件#define TRUE 1/*define宏定义一般用大写,宏定义并不会减少最终代码空间define多行语句时,每一行末尾写上\,最后一行可以不写,有时比较短的语句写成一个子函数会牺牲更多的时间,因为函数调用耗时比较多,这个时候用一个define语句更好*/#define FALSE 0typedef unsigned char uchar;//良好的程序风格,不应该用#define//#define uchar unsigned charsbit sda=P2^0; //---------你把sda和scl引脚可能定反了,我换过来了-------------------------------sbit scl=P2^1;//等号对其,变量名长短不一时,注意,且测试等于号"=="或者其他双目关系运算符两边都空一格//-----------------------------------------------------------------void delay(uchar z)//带参数很好{//大括号所在行不要写代码uchar i,j;//局部变量中用来自加自减可以用i,j之类的定义,计数建议不要用i,j//局部变量不占内存,函数调用时生成堆栈,不应该定义局部变量时作初始化//----局部变量命名后空一格,写正式代码for(i=z;i>0;i--)for(j=100;j>0;j--);//注明多少时间,在调试模式下,看窗口左边的SEC值}//函数与函数之间空一格void delay_7nop()//子程序命名最好顾名思义,比如delay_1ms(),这里考虑都是使用7nop,不带参数{/*程序代码每进一层逻辑就缩进一格TAB键,TAB设置为3,4格,在keil的view->options里面设置,不要使用几个空格来缩进,统一使用TAB键*/_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//这里0-1000多个_nop_都可以}//delay函数都放在一起,函数顺序不要乱放,相关的放一起,//--------------------------------------------------------------------void init(){sda=1;delay_7nop();scl=1;delay_7nop();}//---SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;//SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
24C02数据读写
一这物行时每如一、认识IIC 这是最常用、物理结构上,行信息 传输。
时钟。
信息传每个器件都有如:存储器)C 总线的工作方最典型的II IIC 系统由一。
在数据传输传输的对象和方有一个唯一的地。
发送器或接方式C 总线连接方一条串行数据输时,由主机初方向以及信息地址,而且可接收器可以在IIC 时方式。
据线SDA 和一条初始化一次数息传输的开始可以是单接收的在主模式或从模时序24C02的条串行时钟线数据传输,主和终 止均由的器件(例如模式下操作,的操作 线SCL 组成。
主机使数据在S 主机决定。
如:LCD 驱动器这取决于芯片主机按一定的SDA 线上传输器)或者可以接片是否必须启的通信协议向输的同时还通过接收也可以发启动数据的传从机寻址和进过SCL 线传输发送的器件(例传输还是仅仅被进输例被寻1I 在低2I 寻址。
1.总线上数据IIC 总线是以在时钟线高电低电平时,才2.总线上的信IIC 总线在传据的有效性串行方式传输电平期间数据线才允许数据线上信号送数据过程中输数据,从数据线上必须保持上的电平状态中共有四种类据字节的最高持稳定 的逻辑态变化,如图类型信号,它们高位开始传送,辑电平状态,11-2所示。
们分别是:开,每一个数据位高电平为数据开始信号、停止位在SCL 上都据1,低电平为止信号、重新都有一个时钟为数据0。
只新开始信号和应脉冲相对应。
有在时钟线为应答信号。
为开的停停重之所开始信号(STA 的时候,例如停止信号(STO 停止信号,结重新开始信号之前,主机通所示,当SCL ART):如图1如,没有主动设OP):如图11结束数据通信。
号(Repeated S 通过发送重新开L为高电平时,1-3所示,当设备在使用总-3所示,当。
START):在I 开始信号,可,SDA由高电当SCL 为高电总线(SDA 和S SCL 为高电平IC 总线上,由可以转换与当电平向低电平跳平时,SDA 由CL 都处于高电平时,SDA 由低由主机发送一前从机的通信跳变,产生重由高电平向低电电平),主机通低电平向高电一个开始信号启信模 式,或是重新开始信号,电平跳变,产通过发送开始电平跳变,产生启动一次通信是切换到与另,它的本质就产生开始信号始(START)信号生停止信号。
24C02资料 (2)
一、EPROM与EEPROM:EPROM(Erasable Programmable Read Only Memory),中文含意为“可擦除可编程只读存储器”。
它是一种可重写的存储器芯片,并且其内容在掉电的时候也不会丢失;换句话说,它是非易失性的。
它通过EPROM编程器进行编程,EPROM编程器能够提供比正常工作电压更高的电压对EPROM编程。
一旦经过编程,EPROM只有在强紫外线的照射下才能够进行擦除。
为了进行擦除,EPROM的陶瓷封装上具有一个小的石英窗口,这个石英窗口一般情况下使用不透明的粘带覆盖,当擦除时将这个粘带揭掉,然后放置在强紫外线下大约20分钟。
主要IC有27XX系列和27CXX系列。
EEPROM(electrically erasable, programmable, read-only )是一种电可擦除可编程只读存储器,并且其内容在掉电的时候也不会丢失。
在平常情况下,EEPROM与EPROM一样是只读的,需要写入时,在指定的引脚加上一个高电压即可写入或擦除,而且其擦除的速度极快!通常EEPROM芯片又分为串行EEPROM和并行EEPROM两种,串行EEPROM在读写时数据的输入/输出是通过2线、3线、4线或SPI 总线等接口方式进行的,而并行EEPROM的数据输入/输出则是通过并行总线进行的。
主要IC有28XX系列。
二、24c02芯片硬件介绍:1、引脚说明:A0,A1,A2——地址输入引脚,走位硬件寻址的依据,同种芯片可同时连接8片(2^3);Vcc,Gnd——电源,接地引脚,1.8-5.5vWp——写保护,当Wp接地时,允许对器件的正常读写操作;当Wp接高电平时,写保护,只能进行读操作。
SDA——串行地址/数据输入/输出端口,双向传输,漏极开路,需外接上拉电阻到Vcc(典型阻值为10k)。
SCL——串行时钟输入,高低电平不同状态与SDA配合,执行不同的命令。
2、存储结构:24c02的容量是2k,256字节。