首页 AT24C01的学习总结(修改后)

AT24C01的学习总结(修改后)

举报
开通vip

AT24C01的学习总结(修改后)AT24C01的学习和总结I2C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。学习意义:I2C总线在现在总线中应用非常广泛,可以用于密码的存储、临时数据的存...

AT24C01的学习总结(修改后)
AT24C01的学习和总结I2C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。学习意义:I2C总线在现在总线中应用非常广泛,可以用于密码的存储、临时数据的存储、和历史有用数据的保存。1.I2C总线特点I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。2.I2C总线 工作原理 数字放映机工作原理变压器基本工作原理叉车的结构和工作原理袋收尘器工作原理主动脉球囊反搏护理 2.1总线的构成及信号类型I2C总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。2.2位的传输SDA线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变,见图1:图12.3开始信号SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。2.4结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。图22.5应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。2.6总线基本操作I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件(本文为AT24C01)都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器CPU)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。参见图2。3.I2C应用实例AT24C01AT24C系列串行E2PROM具有I2C总线接口功能,功耗小,宽电源电压(根据不同型号2.5V~6.0V),工作电流约为3mA,静态电流随电源电压不同为30μA~110μA。3.1AT24C系列E2PROM接口及地址选择由于I2C总线可挂接多个串行接口器件,在I2C总线中每个器件应有唯一的器件地址,按I2C总线规则,器件地址为7位数据(即一个I2C总线系统中理论上可挂接128个不同地址的器件),它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位(读/写)。器件寻址字节中的最高4位(D7~D4)为器件型号地址,不同的I2C总线接口器件的型号地址是厂家给定的,如AT24C系列E2PROM的型号地址皆为1010,器件地址中的低3位为引脚地址A2A1A0,对应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚电平给定。图3对于E2PROM的片内地址,容量小于256字节的芯片(AT24C01/02),8位片内寻址(A0~A7)即可满足要求。然而对于容量大于256字节的芯片,则8位片内寻址范围不够,如AT24C16,相应的寻址位数应为11位(211=2048)。若以256字节为1页,则多于8位的寻址视为页面寻址。在AT24C系列中对页面寻址位采取占用器件引脚地址(A2、A1、A0)的办法,如AT24C16将A2、A1、A0作为页地址。凡在系统中引脚地址用作页地址后,该引脚在电路中不得使用,作悬空处理。AT24C系列串行E2PROM的器件地址寻址字节如图4所示,表中P0P1P2表示页面寻址位。3.2AT89S51单片机与AT24C01E2PROM通讯的硬件实现图5是用AT89S51P2口模拟I2C总线与E2PROM连接电路图(以AT24C01为例),由于AT24C01是漏极开路,图中R1、R2为上拉电阻(5.1k)。A0~A2地址引脚脚均接地。图5AT24C01与51单片机接口3.3AT24C系列E2PROM读写操作软件实现 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 对AT24C系列E2PROM的读写操作完全遵守I2C总线的主收从发和主发从收的规则。3.3.1AT24C01的写操作写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的时序参见图6和图7。连续写操作是对E2PROM连续装载n个字节数据的写入操作,n随型号不同而不同,一次可装载字节数也不同。AT24C01/028字节/每页AT24C04/08/1616字节/每页图6写一个字节的时序图图7写一页的时序图3.3.2AT24C01的读操作读操作有三种基本操作:当前地址读、随机读和顺序读。图10给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。AT24C系列片内地址在接收到每一个数据字节地址后自动加1,故装载一页以内规定数据字节时,只须输入首地址,若装载字节多于规定的最多字节数,数据地址将“上卷”,前面的数据被覆盖。连续读操作时为了指定首地址,需要两个伪字节写来给定器件地址和片内地址,重复一次启动信号和器件地址(读),就可读出该地址的数据。由于伪字节写中并未执行写操作,地址没有加1。以后每读取一个字节,地址自动加1。在读操作中接收器接收到最后一个数据字节后不返回肯定应答(保持SDA高电平)随后发停止信号。图8读当前地址内容图9读任意地址内容图10读连续地址内容4、测试电路图:5、测试程序:#include"reg51.h"#include"intrins.h"#defineone_ledP2_5=0;P2_6=0;P2_7=0;#definetwo_ledP2_5=0;P2_6=0;P2_7=1;#definethird_ledP2_5=0;P2_6=1;P2_7=0;#definefour_ledP2_5=0;P2_6=1;P2_7=1;#definefive_ledP2_5=1;P2_6=0;P2_7=0;#definesix_ledP2_5=1;P2_6=0;P2_7=1;#defineseven_ledP2_5=1;P2_6=1;P2_7=0;#defineeight_ledP2_5=1;P2_6=1;P2_7=1;#defineucharunsignedchar#defineuintunsignedint#defineAddWr0xa0/*器件地址选择及写标志*/#defineAddRd0xa1/*器件地址选择及读标志*/#defineHidden0x0e/*显示器的消隐码*/sbitP2_5=P2^5;sbitP2_6=P2^6;sbitP2_7=P2^7;/*有关全局变量*/sbitSda=P3^7;/*串行数据*/sbitScl=P3^6;/*串行时钟*/voidmDelay(ucharj){uinti;for(;j>0;j--){for(i=0;i<125;i--){;}}}/*发送起始条件*/voidStart(void)/*起始条件*/{Sda=1;Scl=1;_nop_();_nop_();_nop_();_nop_();Sda=0;_nop_();_nop_();_nop_();_nop_();}voidStop(void)/*停止条件*/{Sda=0;Scl=1;_nop_();_nop_();_nop_();_nop_();Sda=1;_nop_();_nop_();_nop_();_nop_();}voidAck(void)/*应答位*/{Sda=0;_nop_();_nop_();_nop_();_nop_();Scl=1;_nop_();_nop_();_nop_();_nop_();Scl=0;}voidNoAck(void)/*反向应答位*/{Sda=1;_nop_();_nop_();_nop_();_nop_();Scl=1;_nop_();_nop_();_nop_();_nop_();Scl=0;}voidSend(ucharData)/*发送数据子程序,Data为要求发送的数据*/{ucharBitCounter=8;/*位数控制*/uchartemp;/*中间变量控制*/do{temp=Data;Scl=0;_nop_();_nop_();_nop_();_nop_();if((temp&0x80)==0x80)/*如果最高位是1*/Sda=1;elseSda=0;Scl=1;temp=Data<<1;/*RLC*/Data=temp;BitCounter--;}while(BitCounter);Scl=0;}ucharRead(void)/*读一个字节的数据,并返回该字节值*/{uchartemp=0;uchartemp1=0;ucharBitCounter=8;Sda=1;do{Scl=0;_nop_();_nop_();_nop_();_nop_();Scl=1;_nop_();_nop_();_nop_();_nop_();if(Sda)/*如果Sda=1;*/temp=temp|0x01;/*temp的最低位置1*/elsetemp=temp&0xfe;/*否则temp的最低位清0*/if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}voidWrToROM(ucharData[],ucharAddress,ucharNum){uchari;uchar*PData;PData=Data;for(i=0;i<Num;i++){Start();/*发送启动信号*/Send(0xa0);/*发送SLA+W*/Ack();Send(Address+i);/*发送地址*/Ack();Send(*(PData+i));Ack();Stop();mDelay(20);}}voidRdFromROM(ucharData[],ucharAddress,ucharNum){uchari;uchar*PData;PData=Data;for(i=0;i<Num;i++){Start();Send(0xa0);Ack();Send(Address+i);Ack();Start();Send(0xa1);Ack();*(PData+i)=Read();Scl=0;NoAck();Stop();if(i==0){one_led;P0=*(PData+i);}elseif(i==1){five_led;P0=*(PData+i);}elseif(i==2){third_led;P0=*(PData+i);}elseif(i==3){two_led;P0=*(PData+i);}elseif(i==4){six_led;P0=*(PData+i);}elseif(i==5){four_led;P0=*(PData+i);}elseif(i==6){seven_led;P0=*(PData+i);}else{eight_led;P0=0x4f;}}}voidmain(){ucharNumber[10]={63,06,91,79,102,109,125,7,127,103};//3f,06,5b,4f,66,6d,7d,07,7f,67,WrToROM(Number,4,10);/*将初始化后的数值写入EEPROM*/mDelay(20);Number[0]=0;Number[1]=0;Number[2]=0;Number[3]=0;Number[4]=0;Number[5]=0;Number[6]=0;Number[7]=0;Number[8]=0;Number[9]=0;/*将数组中的值清掉,以验证读出的数是否正确*/RdFromROM(Number,4,10);}6、利用IIC总线进行访问AT24C01的测试程序(所用单片机C8051F040)#include"c8051F040.h"#include"intrins.h"#include"stdio.h"#include"absacc.h"#include"math.h"#include"stdlib.h"typedefunsignedintuint;typedefunsignedcharuchar;typedefunsignedlongulong;#defineSEND_TIME100//1second#defineaddress0x00#defineii_r0xa1/*IIC_R为SMBUS读控制*/#defineii_w0xa0#defineretry_max50#defineread0x01#definelenght128uchartab0[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//xdataucharXBYTE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//xdataucharXBYTE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}xdataucharXBYTE0[10];xdataucharPC_COM[4];intCS_COM0=0;charuart0_char;charcontrol_code='0';charcontrol_code0;intkeybord=0;inttime_sum=0;uchark;//SMBUS数据长度inti=6;intj=0;inth=0;intm=0;sbitled0=P0^4;sbitled1=P0^5;sbitsw1=P0^6;sbitLED=P1^6;structsmbus_mes{ucharid;uintin_adr;ucharlen;ucharisread;ucharadr_end;ucharisbuserror;};xdatastructsmbus_mesmes_M,mes_S;//将结构体定义到外部内存上voidmaster_mes_creat(ucharadr,uintin_adr,ucharlen,uchardir){mes_M.id=adr;mes_M.in_adr=in_adr;//主机要发送从机的内存地址,故起始必然是写操作mes_M.len=len;mes_M.isread=dir;mes_M.isbuserror=0;}voiddelay(unsignedintn){while(n--);}//Peripheralspecificinitializationfunctions,//CalledfromtheInit_Device()functionvoidReset_Sources_Init(){WDTCN=0xDE;WDTCN=0xAD;}voidTimer_Init(){SFRPAGE=TIMER01_PAGE;TCON=0x50;TMOD=0x21;CKCON=0x18;TH0=0x88;TH1=0xF6;}voidUART_Init(){SFRPAGE=UART0_PAGE;SCON0=0x50;}voidSMBus_Init(){SFRPAGE=SMB0_PAGE;SMB0CN=0x40;SMB0CR=0xF3;}voidPort_IO_Init(){//P0.0-TX0(UART0),Push-Pull,Digital//P0.1-RX0(UART0),Open-Drain,Digital//P0.2-SDA(SMBus),Open-Drain,Digital//P0.3-SCL(SMBus),Open-Drain,Digital//P0.4-Unassigned,Push-Pull,Digital//P0.5-Unassigned,Push-Pull,Digital//P0.6-Unassigned,Open-Drain,Digital//P0.7-Unassigned,Open-Drain,Digital//P1.0-Unassigned,Open-Drain,Digital//P1.1-Unassigned,Open-Drain,Digital//P1.2-Unassigned,Open-Drain,Digital//P1.3-Unassigned,Open-Drain,Digital//P1.4-Unassigned,Open-Drain,Digital//P1.5-Unassigned,Open-Drain,Digital//P1.6-Unassigned,Push-Pull,Digital//P1.7-Unassigned,Open-Drain,Digital//P2.0-Unassigned,Push-Pull,Digital//P2.1-Unassigned,Push-Pull,Digital//P2.2-Unassigned,Push-Pull,Digital//P2.3-Unassigned,Push-Pull,Digital//P2.4-Unassigned,Push-Pull,Digital//P2.5-Unassigned,Push-Pull,Digital//P2.6-Unassigned,Push-Pull,Digital//P2.7-Unassigned,Push-Pull,Digital//P3.0-Unassigned,Open-Drain,Digital//P3.1-Unassigned,Open-Drain,Digital//P3.2-Unassigned,Open-Drain,Digital//P3.3-Unassigned,Open-Drain,Digital//P3.4-Unassigned,Open-Drain,Digital//P3.5-Unassigned,Open-Drain,Digital//P3.6-Unassigned,Open-Drain,Digital//P3.7-Unassigned,Open-Drain,DigitalSFRPAGE=CONFIG_PAGE;P0MDOUT=0x31;P1MDOUT=0x40;P2MDOUT=0xFF;XBR0=0x05;XBR2=0x40;}voidInterrupts_Init(){IE=0x82;EIE1=0x02;}//Initializationfunctionfordevice,//CallInit_Device()fromyourmainprogramvoidInit_Device(void){Reset_Sources_Init();Timer_Init();UART_Init();SMBus_Init();Port_IO_Init();Interrupts_Init();}voidload_command(){while(RI0==0);RI0=0;uart0_char=SBUF0;switch(CS_COM0){case0:{if(uart0_char=='%')CS_COM0=1;elseCS_COM0=0;break;}case1:{PC_COM[CS_COM0]=uart0_char;CS_COM0=2;break;}case2:{PC_COM[CS_COM0]=uart0_char;CS_COM0=3;break;}case3:{PC_COM[CS_COM0]=uart0_char;CS_COM0=0;if((PC_COM[1]==PC_COM[2])&&(PC_COM[2]==PC_COM[3])){PC_COM[0]=PC_COM[1];control_code=PC_COM[0];}break;}default:CS_COM0=0;break;}}voidsmbusMasterStart(){//此函数用来启动主机发送起始位,主机发送完起始位将引发中断k=0;//将smbus数据索引指向0SFRPAGE=0x00;STA=1;}voidmain(){bitneedreceive;Init_Device();SFRPAGE=0x00;sw1=1;led0=0;led1=0;master_mes_creat(0xa0,0x1f,2,1);//各参数初始化;SFRPAGE=0x00;while(BUSY);//等待总线释放smbusMasterStart();//主机发送起始位needreceive=1;while(1){load_command();switch(control_code){case'1':control_code0=0x88;break;case'2':control_code0=0x99;break;default:break;}if(control_code0==XBYTE0[0]){led0=1;led1=1;P2=0x82;}else{led0=1;led1=1;P2=0x90;}/*SFRPAGE=0x00;if(!BUSY){//总线空闲时查询总线传输状况if(mes_M.isbuserror!=0)if(mes_M.len>0)smbusMasterStart();//再次发送。if(mes_M.len==0){if(needreceive){master_mes_creat(0xa0,0x00,128,read);smbusMasterStart();needreceive=0;led0=1;led1=1;P2=XBYTE0[0];delay(1000);}}}if(mes_M.len==0){if(!needreceive)needreceive=0;}*/}}voidsmbusInt()interrupt7{//smbus中断//比较完善的SMBUS中断处理程序,但是由于对各种状态均作出处理,降低处理速度//读者可根据需要删减一些状态处理staticucharretry_time=0;SFRPAGE=0x00;if(SMB0STA==0x08){//起始位发送成功,主机模式下才会出现这种状态SMB0DAT=mes_M.id;//将地址和读写控制装入发送缓冲区STA=0;//将STA清零,注意,若不清零则将一直为重复起始状态mes_M.adr_end=0;//内存地址没有发送完毕gotobus_end;}if(SMB0STA==0x10){//重复起始条件处理SMB0DAT=mes_M.id;STA=0;mes_M.adr_end=0;//内存地址没有发送完毕gotobus_end;}if(SMB0STA==0x18){//从地址+W发出,收到从机ACK应答SMB0DAT=mes_M.in_adr;mes_M.adr_end=0;//内存地址没有发送完毕retry_time=0;//将重试计数器清零gotobus_end;}if(SMB0STA==0x20){//从地址+W发出,收到从机NACK应答STO=1;retry_time++;if(retry_time<retry_max){STA=1;//若重试次数小于最大限值,则产生重复起始条件}else{mes_M.isbuserror=1;//isbuserror在初始化时须清零retry_time=0;//若大于重试次数,由于没有将STA置1,不会产生重复起始条件//且须将retry_time即时清零,以便下一次SMBUS中断时,重试次数从零开始计数}gotobus_end;}if(SMB0STA==0x28){//SMBUS数据成功发送,且收到从机ACK应答if(mes_M.len>0){if(mes_M.adr_end==0){//若内存地址没有发送完毕,继续发送内存地址SMB0DAT=mes_M.in_adr;//发送内存低地址mes_M.adr_end=2;}else{if(mes_M.isread==read){//更换角色,对从机写完内存地址后,读取从机发送过来的数据mes_M.id|=ii_r;//将id中写控制位改成读控制位STA=1;//此时不需要将STO置1}else{SMB0DAT=0xff;//取自身外部内存相应地址上的数据发送到SMBUS总线上mes_M.in_adr++;//自身内存地址自增1mes_M.len--;//数据长度减1/*主从机内存地址自增能保证当产生重复起始条件时,对于成功发送的数据不再重发*/}}}else{//若数据长度等于0,则停止发送STO=1;retry_time=0;}gotobus_end;}if(SMB0STA==0x30){//SMBUS数据成功发送,但接收到从机NACK应答STO=1;STA=1;//产生重复起始条件gotobus_end;}if(SMB0STA==0x38){//总线竞争失败。STO=1;//发送停止帧,并把总线错误标志位置1。mes_M.isbuserror=1;gotobus_end;}if(SMB0STA==0x40){//从机地址+R发送成功,接收到从机ACK应答信号if(mes_M.len>1)AA=1;//下一接收数据不是最后数据,故AA置1,以应答从机else{if(mes_M.len==1)//下一数据为最后数据AA=0;}retry_time=0;//将重试计数器清零gotobus_end;}if(SMB0STA==0x48){//从机地址+R发送成功,但接收到从机NACK应答信号retry_time++;STO=1;if(retry_time<retry_max){//若小于重试最大限值,则继续重试STA=1;}else{mes_M.isbuserror=1;//若大于重试最大限值,则停止总线,且将总线错误标志位置1retry_time=0;}gotobus_end;}if(SMB0STA==0x50){//接收到从机所发送的数据,并发送ACK应答信号if(mes_M.len>1)AA=1;//下一接收数据不是最后数据,故AA置1,以应答从机else{if(mes_M.len==1)//下一数据为最后数据AA=0;}XBYTE0[j]=SMB0DAT;j++;mes_M.in_adr++;mes_M.len--;gotobus_end;}if(SMB0STA==0x58){//接收到从机所发送的最后一个数据,并发送NACK应答信号XBYTE0[0]=SMB0DAT;mes_M.in_adr++;mes_M.len=0;STO=1;//结束总线传输gotobus_end;}if(SMB0STA==0x00){//出现总线错误mes_M.isbuserror=1;mes_S.isbuserror=1;STO=1;}bus_end:SI=0;}voidt0_ISR()interrupt1//T0中断处理定时0.2秒{TF0=0;TH0=0x88;TL0=0x5e;time_sum=time_sum+1;if(time_sum==SEND_TIME){time_sum=0;TI0=1;printf("##");printf("%BX",XBYTE0[0]);printf("%BX",XBYTE0[1]);printf("@@");}}7、在I2C总线的应用中应注意的事项总结为以下几点:1)严格按照时序图的要求进行操作2)若与口线上带内部上拉电阻的单片机接口连接,可以不外加上拉电阻。3)程序中为配合相应的传输速率,在对口线操作的指令后可用NOP指令加一定的延时。4)为了减少意外的干扰信号将EEPROM内的数据改写可在EEPROM内部没有用的空间写入标志字,每次上电时或复位时做一次 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 ,判断EEPROM是否被意外改写。5)在进行写操作时,如果送完8位数据后,AT24CX芯片会向CPU发送一个应答信号SDA=0;此时,可以检测此位,即可知芯片已经接收完毕,等待送下一个数据(此处不对IIC总线产生应答)。在进行读操作时,如果读完8位数据后,CPU会向芯片发送一个反应答信号SDA=1;此时,AT24CX芯片会保持再等待上位机的读操作。结束语:随着I2C总线在通信,控制等方面的普遍应用,本文以实例的方式给出了I2C总线在单片机上的实现方法,具有一定的实用性与可移植性。测试者:张公平2006年9月8日星期五 AT24C01的学习和总结 1.I2C总线特点 2.I2C总线工作原理 3.I2C应用实例AT24C01 4、测试电路图: 5、测试程序: 6、利用IIC总线进行访问AT24C01的测试程序(所用单片机C8051F040) 7、在I2C总线的应用中应注意的事项总结为以下几点:
本文档为【AT24C01的学习总结(修改后)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
肥猫叫noah
暂无简介~
格式:pdf
大小:360KB
软件:PDF阅读器
页数:0
分类:高中语文
上传时间:2020-03-07
浏览量:14