网站大量收购闲置独家精品文档,联系QQ:2885784924

实验十二 基于单片机的EEPROM AT24C02实验.doc

实验十二 基于单片机的EEPROM AT24C02实验.doc

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

实验十二 EEPROM AT24C02实验 一、实验目的 掌握I2C 总线工作原理及其操作方法 二、实验内容 利用24C02 断电以后存储的数据不消失的特点,可以做一个断电保护装置。 首先利用单片机做一个0-99 秒的自动计时器。然后随机关断电源,在通电以后计时器接着断电前的状态继续计时 I2C 总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。在I2C 总线上传送的一个数据字节由八位组成。总线对每次传送的字节数没有限制,但每个字节后必须跟一位应答位。数据传送首先传送最高位(MSB)。首先由主机发出启动信号“S”(SDA 在SCL 高电平期间由高电平跳变为低电平),然后由主机发送一个字节的数据。启动信号后的第一个字节数据具有特殊含义:高七位是从机的地址,第八位是传送方向位,0表示主机发送数据(写),1表示主机接收数据(读)。被寻址到的从机设备按传送方向位设置为对应工作方式。标准I2C 总线的设备都有一个七位地址,所有连接在I2C 总线上的设备都接收启动信号后的第一个字节,并将接收到的地址与自己的地址进行比较,如果地址相符则为主机要寻访的从机,应答在第九位时钟脉冲时向SDA 线送出低电平作为应答。除了第一字节是通用呼叫地址之外第二字节开始即数据字节。数据传 送完毕,由主机发出停止信号“P”(SDA 在SCL 高电平期间由低电平跳变为高电平)。 AT24C 系列串行E2PROM 具有I2C 总线接口功能,功耗小,宽电源电压(根据不同型号2.5V~6.0V),工作电流约为3mA,静态电流随电源电压不同为30μA~110μA。 由于I2C 总线可挂接多个串行接口器件,在I2C 总线中每个器件应有唯一的器件地址,按I2C 总线规则,器件地址为7位数据(即一个I2C 总线系统中理论上可挂接128个不同地址的器件),它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位(读/写)。器件寻址字节中的最高4 位(D7~D4)为器件型号地址,不同的I2C 总线接口器件的型号地址是厂家给定的,如AT24C系列E2PROM 的型号地 址皆为1010,器件地址中的低3 位为引脚地址A2 A1 A0,对应器件寻址字节中的D3、D2、D1 位,在硬件设计时由连接的引脚电平给定。对AT24C 系列E2PROM的读写操作完全遵守I2C 总线的主收从发和主发从收的规则。 三、实验电路 四、实验程序 #includereg51.h #include intrins.h #define uint unsigned int #define uchar unsigned char unsigned char sec; //定义计数值,每过1 秒,sec 加1 unsigned int tcnt; //定时中断次数 bit write=0; //写24C08 的标志; sbit sda=P2^0; //I2C 接口SDA定义 sbit scl=P2^1; //IIC 接口SCL 定义 sbit dula=P2^6; sbit wela=P2^7; unsigned char j,k; void delay(unsigned char i) //延时程序 { for(j=i;j0;j--) for(k=125;k0;k--); } uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管编码 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void display(uchar bai_c,uchar sh_c) //显示程序 { dula=0; P0=table[bai_c]; //显示百位 dula=1; dula=0; wela=0; P0=0x7e; wela=1; wela=0; delay(5); dula=0; P0=table[sh_c]; //显示十位 dula=1; dula=0; wela=0; P0=0x7d; wela=1; wela=0; delay(5); } /////////24C02 读写驱动程序//////////////////// void delay1(unsigned char x) //延时子函数 { unsigned int i; for(i=0;ix;i++);} void flash() //延时子函

文档评论(0)

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

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

1亿VIP精品文档

相关文档