AT24C02数据掉电存储.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AT24C02数据掉电存储

AT24C02 数据掉电存储 项目说明: 1.利用定时器,每1s 计一次数。并且将这个数保存到AT24C02 中。 2.任意时刻给开发板断电,再次上电时先从AT24C02 中读出之前保存的数。看 看是不是断电时候的数据。 完整代码: #include reg52.h #include digitron_drv.h #include IIC_drv.h uint8 gNum; /* 定时器0 初始化*/ void TimerInit(void) { TMOD = 0x01; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; EA = 1; ET0 = 1; TR0 = 1; } /* 定时器0 中断函数*/ void Time0(void) interrupt 1 { uint8 times; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; times++; if(20 == times) { times = 0; gNum++; if(gNum == 100) { gNum = 0; } WriteIIC(0xa0,0,gNum); // 每次计数一改变,就保存 } } /* 主函数*/ void main(void) { TimerInit(); gNum = ReadIIC(0xa0,0); // 一上电读取之前保存的数据 if(gNum 99) // 防止第一次读到的数据是乱码 { gNum = 0; } while(1) { DigShowNumber(1,g Num %10 ,0); DigShowNumber(2,g Num/10,0); } } 本项目主要有三个要完成的工作,分别是用定时器 计数;存储数据;读出数据。说白了就是对存储芯片 AT24C 02 读和写的两个操作。 我们的步骤就是:第一步,学习 AT24C02 和单片机的通信过程;第二步, 利用定时器计数,通过中断的方式实现;第三步,数据一旦改变,就存储该数 据,即把该数据写入存储芯片;第四步,单片机上 电的时候从存储芯片中读出 该数据。 第一步:学习单片机与AT24C02 的通信过程 本项目用到的AT24C02 存储芯片共有8 个引脚。我们简单的看一下。 4 ,8 脚供电。 1,2 ,3 脚是用来组合地址:这个地址我们一会儿下面讲。这里看一下怎么 组合出地址,A2 ,A1 ,A0 分别接地,地,电源,组合以后就是001 。这里的地 址就是001 。显然,3 个脚一共可以组合出8 个地址(000- 111)。 7 脚WP 是写保护:我们可以联想一下之前的DS1302 实验,写时间之前要 关闭写保护,写完之后再打开写保护,主要是防止时间被意外修改。这里的WP 也是一样,如果WP 为低电平,表示无保护;高电平表示启用保护。因为AT24C02 作为一个存储芯片,也是需要对已保存的数据保护,防止被意外修改。我们的开 发板考虑到我们只是做实验,默认把WP 接地,可以直接对存储芯片读写。 5,6 脚为通信脚:单片机和AT2

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档