单片机从at24c02中文资料读来的数据放在哪儿

既然51单片机有了存储的作用,那AT24C02行使EEPROM的作用是不是多余了啊?求解答_百度知道
既然51单片机有了存储的作用,那AT24C02行使EEPROM的作用是不是多余了啊?求解答
我有更好的答案
普通51单片机内部只有两种存储器,一种是程序存储器,早期用的是ROM(一次性编程)或EPROM(可紫外线擦除5、6次),后来大部分用Flash(可重擦写1000次以上闪存),上述存储器的数据可永久保存,但在程序运行时是不可改写的;而另一种是易失性数据存储器,叫RAM。RAM在程序运行时数据可反复改写,但数据在掉电后也随之丢失。由于程序存储器在运行时数据不能改写,而数据存储器的数据掉电后会丢失,有些应用场合又亟需一种在程序运行时,数据可反复修改,并且在掉电后数据不丢失的存储器,后来就有了非易失性存储器EEPROM,EEPROM在程序运行时数据可改写,掉电后数据不丢失。显然,这种作用是上述两种存储器所没有的,虽然EEPROM的擦写次数有一定限制,但还是能满足实际应用需要的。现在很多单片机内置EEPROM,包括增强型51单片机,这为芯片的选型提供了便利。估计,单片机外挂EEPROM应用将日渐减少。
采纳率:61%
51里面的flash只存储代码吧,ram存储临时数据的,对于一些应用,你需要存储一些值(掉电后仍在的),就需要用到外部掉电不丢数据的存储器了吧。EEPROM操作时序简单,所以小容量应用会常用到吧。51内部的存储器大小也是有限的,当不够用时,也需要外扩。
不一定,要是程序长,占用空间大,你必须外接存储器
如果需要的eeprom不用很多可以选择内部自带的,如果不够再扩展
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。最近在学习几种串行通信协议,感觉收获很多,这篇文章是学习IIC总线协议的第一篇文章,以后还会再写一篇关于PCF8591 IIC通信的ADDA转换芯片的文章.
关于IIC总线
IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。主要包括启始、停止、读、写、应答信号。这种方式简化了信号传输总线接口。
IIC总线上可以挂多个器件,而每个器件都有唯一的地址,这样可以标识通信目标。数据的通信的方式采用主从方式,主机负责主动联系从机,而从机则被动回应数据。
关于AT24C02
AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个8字节页写缓冲器。该器件通过IIC进行操作,有一个专门的功能。在单片机上的应用广泛, 可以实现掉电数据不丢失功能。
IIC总线数据有效性的规定
SCL=1期间,SDA必须保持稳定,SCL=0时,SDA才允许改变。
IIC 总线的几种信号
1.起始和终止信号:
从时序图可以看出,起始信号为,SCL=1,SDA下降沿;终止信号为SCL=1,SDA为上升沿,保持的时间是有限制的:
具体的程序实现如下:
起始信号:SDA=1保持时间大于4。7us,随后SDA=0保持时间大于4us
/*SDA下降沿*/
void start()
SDA = 1; //顺序不能反了,先是SDA=1;
终止信号:SDA=0保持时间大于4us,随后SDA=1保持时间大于4。7us
/*SDA上升沿*/
void end()
//顺序不能反了,先是SDA=0;
2.应答信号:
传送的每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答信号(即一帧共有9位)。
如:主机往总线上发送一个字节的数据后,释放总线,从机会把总线拉低(即应答信号),以表示这一字节发送成功
同理主机从总线上读取完一个字节的数据后,主机会把总线拉低,"告诉"从机这一字节的数据接收成功
void ack()
uchar i = 0;
while(SDA == 1 && i & 250)i++;
//SCL=0,SDA可以改变
3.AT24C02的器件地址:
根据数据手册和原理图可以看出器件地址为:0x90/0x91其中最后一位是读写方向位,若下一个字节为向总线上发送数据,则为0x90,若下一个字节是从总线上读取数据,则为0x91。
4.往总线上写一字节的数据
程序实现:先写最高位,通过左移运算符,将一字节的数据一位一位的传送到总线上,其中CY存储的是左移后的进位
void write_byte(uchar dat)
for(i = 0; i & 8; i++)
dat = dat && 1;          //如 左移一位为
//SDL=0,才能往SDA送数据,或从SDA读数据
SDA = CY;               //上面左移后进位为1
5.从总线上读取一个字节的数据
程序实现:带返回值,先读高位,然后通过移位运算符,一位一位读入
uchar read_byte()
uchar dat = 0, tmp,
for(i = 0; i & 8; i++)
//让SDA保持稳定,准备读取
tmp = SDA;        //读取此时SDA的状态
dat = dat && 1;
dat = dat |
//释放SDA总线,为下一次读取做准备
AT24C02读写操作
1.通过以上几种信号的组合,可以向AT24C02指定单元地址写一字节的数据,可以看出,读写顺序为:起始,写器件地址,应答,写单元地址,应答,写数据,应答,终止。
程序实现:此函数无返回值,有两个形参, 内存单元地址,范围0-255;要写的数据,如0
void write_AT24C02(uchar unit_addr, uchar dat)
write_byte(AT24C02_ADDR + 0);    //下一个字节为写,所以是+0
write_byte(unit_addr);
write_byte(dat);
&2.从AT24C02任意单元地址读取数据,可以看出读写顺序为:起始,写器件地址+0(下一个字节为写),应答,写单元地址,应答,起始,写器件地址+1(下一个字节为读取),读取数据,终止。
具体程序实现:此函数有返回值,一个形参;单元地址,范围:0-255;
uchar read_AT24C02(uchar unit_addr)
/*先写数据*/
write_byte(AT24C02_ADDR + 0);      //下一个字节为写
write_byte(unit_addr);
write_byte(AT24C02_ADDR + 1);       //下一个字节为读
dat = read_byte();
void delay()
//短暂5us延时
IIC初始化:
void I2C_init()
SDA = <span style="color: #;
SCL = <span style="color: #;
有了以上几个函数,我们就可以写主函数了, 功能是向内存单元211,写入数据0xae,然后在从内存单元211中读取出来,送给P1口led显示.注意:写完后要延时一会才能读取,否则不能成功读取.
void main()
write_AT24C02(211, 0xae);
delay_10ms();
//写完后,必须延时一定的时间才可以读取,否则不行
P1 = read_AT24C02(211);
通过IIC 总线通信协议的学习,可以看出,IIC总线用IO口模拟操作起来还是很简单的,使用起来还是比较方便的,而且还可以多个IIC器件挂接在一条总线上,只需要SDA和SCL两根线即可,当然也有缺点,由于是只有一根数据线,所以不能全双工传输,传输速度也有一定的限制.
我是初学者,以上内容如有错误,欢迎指正.
阅读(...) 评论()没有更多推荐了,
不良信息举报
举报内容:
单片机读取EEPROM(AT24C02)
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!您的位置: >
用户级别:高级会员
贡献文章:
贡献资料:
+ (0) + (0)
本内容提供了AT24C02B的数据写入读出程序-PIC单片机
#include & &pic.h&
#define SDA &RC4
#define SCL &RC3
bank1 unsigned char eeprom_xie_ru_shu_ju[]={8,0,0,1,24,5,30,0};&
bank1 &const unsigned char bcd[]={0X3F,0X06,0X5B,0X4F,
0X66,0X6D,0X7d,0X07,0X7F,0X6F,0x00};
const unsigned char &bcd_dai_xiao_shu_dian[]={0XBF,0X86,0XDB,
0XCF,0XE6,0XED,0XFd,0X87,0XFF,0XEF,0x00};
bank1 &unsigned int &t,h;
bank1 &unsigned char eeprom_du_chu_shu_ju[8],p=0,r5;&
bank1 &unsigned char m[2];&
bank1 &unsigned int &
bank1 &unsigned char huanshub=0;
bank1 &unsigned char daiabudi=1;
bank1 &unsigned char kabi=0;
bank1 &unsigned char j=0;
不好我反对
AT24C02B的数据写入读出程序-PIC单片机下载
相关电子资料下载
评价:好评中评差评
技术交流、我要发言
发表评论,获取积分! 请遵守相关规定!提 交
Powered by: 电子发烧友 (
elecfans.com. .All Rights Reserved 粤ICP备号51单片机I2C 对AT24C02可换页读写程序_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
51单片机I2C 对AT24C02可换页读写程序
&&详细的51单片机I2C模块 对AT24C02存储器的读写操作
特点是可换页读写
你可能喜欢

我要回帖

更多关于 at24c64数据手册 的文章

 

随机推荐