实验七 EEPROM读写实验+实验报告.docx





《实验七 EEPROM读写实验+实验报告.docx》由会员分享,可在线阅读,更多相关《实验七 EEPROM读写实验+实验报告.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验七EEPROM读写实验实验报告姓名: 学号:实验内谷在实验七的基础上实现把串口发送的控制码保存在EEPROM (型号为AT24co2)中, 下次开机或复位后可以从AT24C02中读出上次保存的控制码,并根据控制码执行相应的控 制功能。串口通信的控制功能不变,控制功能表见表8-1。表8-1控制功能表控制码控制功能0熄灭1LED从上往下循环2LED从下往上循环3LED闪烁4蜂鸣器响二、相关知识1、IIC总线的五个核心函数(声明函数并说明功能)。void I2cDelay();约 4us 的延迟void I2cStart(void);/产生起始信号void I2cStop(void);产生终止信
2、号bit I2cWriteByte(unsigned char dat);总线写操作unsigned char I2cReadByte(bit ACK);/总线读操作2、简述AT24C02的地址控制字格式,它的容量是多大?AT24co2的芯片地址为1010,其地址控制字格式为1010A2A1A0R/W。其中A2、Al A 0 为可编程的地址选择位,A2、Ak A0引脚接高、低电平后得到确定的3位编码,与1010 组成7位编码即该器件的地址码。RAV为芯片读写控制位,该位为0,表示对芯片进行写 操作;该位为1,表示对芯片进行读操作。AT24co2存储容量为2Kb。3、简要说明EEPROM 芯片A
3、T24c02单字节读写原理。单字节写入方式。(1)首先是12c的起始信号,接着是首字节,也就是前边所讲的PC的器件地址,并且在 读写方向上选择“写”操作。(2)发送数据的存储地址。AT24C02共256B的存储空间,地址从0x000xF、需要把数 据存储在哪个位置,此刻写的就是哪个地址。(3)发送要存储的8位数据。注意,在写数据的过程中,EEPROM每个字节都会回应个 “应答位0”,用以提示写EEPROM数据成功。如果没有回应应答位,则说明写入不成功。指定地址单字节读操作。(1)首先是12c的起始信号,接着是首字节,也就是前边所讲的12c的器件地址,并且 在读写方向上选择“写”操作。注意,这一
4、步依然是“写”,之所以选择写操作,是为了 把所要读的数据的存储地址先写进去,告诉EEPROM要读取哪个地址的数据。(2)发送要读取的数据的地址,注意是地址而非存在于EEPROM中的数据。(3)重新发送12c起始信号和器件地址,并且在方向位选择“读”操作。前3步中,每一个字节实际上都是在“写”,所以每一个字节EEPROM都会回应一个应 答位0”。(4)读取从器件发回的数据,读一个字节,并发送非应答位ACK(l)。六、心得体会本次实验学习了 12c总线和EEPROM读写实验。学习12c总线时我注意到12c总线的SDA和SCL两条信号线同时处于高电平时,规定 为总线的空闲状态。此时各个器件的输出级场
5、效应管均处在截止状态,即释放总线,由两 条信号线各自的上拉电阻把电平拉高。进行EEPROM读写实验时我注意到在写数据的过程中,每成功写入一个字节,EEPROM 存储空间的地址就会自动加1,当加到OxFF后,再写一个字节,地址就会溢出又变成 0x00o我还注意到EEPROM是先写到缓冲区,然后再“搬运到”到掉也非易失区。所以这个 过程需要一定的时间,AT24co2这个过程是不超过5ms,如果在这个时候去让它应答是没有 响应的。所以,当我们在写多个字节时,写入一个字节之后,再写入下一个字节之前,必 须等待EEPROM再次响应才可以。4、根据教材P176页图9-5写出AT24C02单字节写程序。vo
6、id At24cO2WriteByte(unsigned char addr,unsigned char dat) (I2cStart();I2cWriteByte(0xa0);I2cWriteByte(addr);I2cWriteByte(dat);I2cStop();5、根据教材P177页图97写出AT24C02从指定地址中读取数据程序。unsigned char At24cO2ReadByte(unsigned char addr) unsigned char num;I2cStart();I2cWriteByte(0xa0);I2cWriteByte(addr);I2cStart();
7、I2cWriteByte(0xal);num=I2cReadByte( 1);I2cStop();return num;三、硬件电路请画出单片机与AT24c02的接口电路,并对电路进行分析。U1 VCC ciAT24C02 J o.1u5 AO VCC Al WP2 A2 SCL-GNDSDA: 1T GND6 SCL 5 SDAGND其中A2、AK A0与WP都接地,SDA接单片机P3. 6引脚,SCL接单片机P3. 7引脚, SDA与SCL分别于VCC之间接一 4. 7k。的上拉电阻,因为AT24C02总线内部是漏极开漏形 式,不接上拉电阻无法确定总线空闲时的电平状态。U1画出主程序流程图
8、:主程序及注释: #include nreg52.hH #include delay.h #include nintrins.h include “EEPROM.h” #include uart.h #include ndecoder.hnvoid ReadAt24c02(void);void main()SelectHC 138(0);ConfigUART(9600);ReadAt24cO2(); while(l);) void ReadAt24c02(void)switch(At24c02ReadByte(0x00)case O:PO=OXff;break;case T:P0=0X7f;B
9、EEP = 1;while(At24c02ReadByte(0) = T)delay_ms(100);P0=_cror_(P0,l);break;PO=OXFE;BEEP= 1;while(At24c02ReadByte(0) = 2) (delay_ms(100);PO=_crol_(PO,l);)break;BEEP = 1;while(At24c02ReadByte(0) = 3) (PO=OXFF;delay_ms(100);PO=OXOO;delay_ms(100);)break;case 4:while(At24c02ReadByte(0) = 4) (PO=OXff;BEEP =
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验七 EEPROM读写实验+实验报告 实验 EEPROM 读写 报告

限制150内