首页 AVR_单片机初学

AVR_单片机初学

举报
开通vip

AVR_单片机初学 1 第一章 AVR单片机的 C语言开发环境建立 1.1使用Winavr的方案 1.1.1 软件下载及安装 1.下载 winavr 下载地址:http://sourceforge.net/projects/winavr/ 2.下载 AVR调试环境 avrStudio 下载地址:http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 3.安装Winavr和 avrstudio 1.1.2 使用 1.建议在硬盘上建立一个...

AVR_单片机初学
1 第一章 AVR单片机的 C语言开发环境建立 1.1使用Winavr的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 1.1.1 软件下载及安装 1.下载 winavr 下载地址:http://sourceforge.net/projects/winavr/ 2.下载 AVR调试环境 avrStudio 下载地址:http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 3.安装Winavr和 avrstudio 1.1.2 使用 1.建议在硬盘上建立一个文件夹,专门用来放项目文件,例:在 E 盘上建立一个名为 avr 的文件夹,然后在文件夹中再建立每个练习用的子文件夹,如 ex1,ex2等 2. 点击桌面左下角:开始Æ程序ÆwinavrÆProgrammers Notepad [WinAVR] 开启程序编 缉器,编写程序。 程序写完,起名存盘 3.点击桌面左下角:开始Æ程序ÆwinavrÆ MFile [WinAVR] 打开 make file生成器,打开 后,有一个标准模板在内,可根据需要进行更改。 4. 点击:MakefileÆMain可选择主文件名,这个名称将会是目标文件名,默认为 main,一 般不需要改动。 5. 点击:MakefileÆMcutype 可选择器件,根据你用的芯片进行设定,在我们这个教学系 列中,一般就采用 Atmega8515。 6. 点击:MakeÆDebug Format:可选择输出的调试文件格式,应选择最后一项: ELF/DRARF-2(AVR Studio ELF,GDB[experimental] ),这样可以由产生供 AVR studio 4以上版本调试用的 ELF格式的文件。 7. 点击:MakeÆC/C++ Source Files……出现选择文件名的对话框,如图 1 所示,请用 “Choose file…”钮选择你所要编译的文件,注意,一定要将 Include main.c前面的勾去 掉,除非你的确有一个名为 main.c的文件。 图 1 选择主文件 其他的项一般可以不必改动。 8. 更改后用 fileÆSave as…将该 makefile文件保存至刚才所建文件夹中; 9.回到 Programmers Notepad,点击 ToolsÆ[Winavr]Make All进行编译、链接等操作 2 10.如果有错,则改正错误,直到没有错误为止。 11.开始Æ程序ÆAtmel Avr ToolsÆAvr Studio 4,开启 AvrStudio 12. FileÆOpen File…,打开对话框,开启名为 main.elf的文件,即可进入调试。 1.2使用 AtmanAvr的方案 1.2.1 软件下载及安装 AtmanAVR是由晶士电子(Atman Electronics)公司开发的一个用于 AVR单片机开 发的软件,应用了可视化编程技术,自动生成代码。向导、文本编辑器和调试器等工具提供 强有力的支持。工程采用模块化管理,动态修改轻松自如。经实际使用,的确比较方便,该 软件是共享软件,可以免费使用 30天,下载地址: http://www.atmanecl.net/ChineseSite/indexChinese.htm 下载完毕后即可安装使用,安装方法与Windows常用软件相似,这里不再赘述。 1.2.2 使用 1. 点击开始Æ程序ÆAtmanAvrÆAtmanAvr C,开始运行。 2. 点击文件Æ新建,即出现新建对话框的向导,如图 2所示,对于有过 VC使用经验的人 来说,这是个很熟悉的界面。选择页面卡 Project,然后选择列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 框中的第一个项目:Avr C Wizard,在其右侧的工程名对话框中为你要开发的项目取名,在目录对话框中并选取文件夹, 然后点击“下一步”按钮。 图 2 新建工程的对话框 3.按向导提示,一步一步设置项目,你所需要用到的芯片,并对芯片进行配置,如确定晶 振频率,以便在下一步软件为你计算有关定时常数,确定端口的输入或输出,中断允许, AD转换允许等,如果一开始并不很清楚有些功能是否需要,那也没有关系,可以在生成源 程序后手动进行修改。 4.根据向导提示设置好各个项目后,点击“完成”即可自动生成相关代码,这也是一个与 3 Visual C++类似的界面,点击左侧的主文件名(就是你在第二步设定的),即可打开文件, 如果你用了定时器、中断、串行口、ADC 等,那也会生成相应的文件,如果你需要对此进 行修改,那么只要双击相应的文件名即可。 可见,使用 AtmanAVR 不仅方便,而且可以学习和使用多模块编程的概念,养成良好 的编程习惯。所以这里推荐大家都用一用看。 相关链接 http://www.chip-art.net 芯艺设计室 http://61.144.28.245/ouravr/index.html 我们的 AVR http://www.foravr.net/ 自由开发 AVR 4 第二章 AVR单片机实现单灯闪烁 前一课中,我们建立了 AVR单片机的 C语言开发环境,这一节课中我们通过一个典型 的例子,了解 AVR单片机的 C语言程序写法和 AVR单片机的特点。 2.1 硬件连接 2.1.1 时钟源 与 AT89 系列单片机相比,ATMEGA8515 单片机具有更多种的时钟产生方式,通常可 选用: 1) 外接晶振/陶瓷振荡器方式 2) 外接低频晶振方式 3) 外接 RC元件构成的振荡电路 4) 标定的内部 RC振荡电路 5) 外接信号源 这些信号源的选择是在编程通过对 CKSEL3、CKSEL2、CKSEL1和 CKSEL0这 4个位 的选择来确定的。 下表是选择不同的时钟源时,应写入的 CKSEL3…0的值。 时钟源选择 芯片时钟选项 CKSEL3..0 外部晶体/陶瓷振荡器 1111-1010 外部低频晶体 1001 外部RC振荡器 1000-0101 标定的内部RC振荡器 0100-0001 外部时钟 0000 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 :对于所有的熔丝位, “1” 表示未编程, “0” 代表已编程。 2.1.2 启动延时 用于给芯片供电的电源特征各不相同,有一些电源,回路中有大电容,接通电源后其电 压上升速度较慢,当电源升高到一定程度时,电路的各部份都开始工作但却不能稳定地工作, 如果此时让芯片进入到工作状态,往往会导致运算出错、程序跑飞、片内EEPROM数据被乱改 等后果,致使单片机的工作出现不正常,为解决这一问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,ATMEGA8515芯片在芯片完成复位 后并不立即开始工作,而是延迟一段时间再进入正常工作状态,这个延时的时间可以由用户 自行设定,系统中有SU1和SU0位,在编程时对这两位进行设定即可获得不同时长的延时。 芯片在出厂时CKSEL = “0001”, SUT = “10”。默认时钟源为有最长启动时间的内 部RC振荡器。默认设置可以保证用户使用在线编程或并行编程时都能获得所期望的时钟源。 关于振荡电路选择的更详细资料,请参考ATMEGA8515的数据手册。 本实验板在设计时,用了11.0592M的晶振,这是为了使用51单片机而设定的。如果你用 5 的芯片是ATMEGA8515,那么完全不用担心,因为该芯片的最高频率可以达到16M,如果你用 的芯片是ATMEGA8515L,理论上,其最高工作频率为8M,但经过实践,用到11.0592M也同完全 没有问题的,当然,这里仅是在实验板上使用,真正制作产品时不要这么做。 2.1.3 I/O口的连接 ATMEGA8515具有 4个 8位的 I/O口(PA、PB、PC和 PD)和一个附加的 3位 I/O口 (PE),作为通用数字 I/O 使用时,所有 AVR I/O 端口都具有真正的“读- 修改- 写”功 能。这意味着用 SBI 或 CBI 指令对一些管脚进行诸如改变方向、更改端口电平、禁止/ 使 能上拉电阻等操作时,不会影响到其他的管脚。和 51 单片机不同,ATMEGA8515 单片机的输 出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动 LED。所有的端口引脚都 具有与电压无关的上拉电阻。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低 时将输出电流。 每个端口引脚都具有三个寄存器位:,这里的X代表A、B、C、D和E中的一个,以下同。 DDxn 以来选择引脚的方向。当DDxn 为"1“ 时, Pxn 配置为输出;否则为输入。当引脚配 置为输入时,若PORTxn 为"1“,上拉电阻将被接入电路中。如果不需要这个上拉电阻起作 用,可以将PORTxn 清零,或者将这个引脚配置为输出。复位时各引脚为高阻态,即使此时 时钟没有工作也是如此。 当引脚配置为输出时,若PORTxn 为"1“,引脚输出高电平("1“),否则输出低电平 (“0“)。在 高阻态({DDxn, PORTxn} = 0b00)和 输出高电平({DDxn, PORTxn} = 0b11) 两 种状态之间进行切换时,上拉电阻接入电路({DDxn, PORTxn} = 0b01) 或输出低电平 {DDxn,PORTxn} = 0b10) 这两种模式必然会有一个发生。通常,上拉电阻被接入电路是完全 可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。如果外围电路不允许接入 上拉电阻,可以通过置位SFIOR 寄存器的PUD 来禁止所有端口的上拉电阻。在上拉输入和输 出低电平之间切换也有同样的问题。用户必须选择高阻态({DDxn,PORTxn} = 0b00) 或输出 高电平({DDxn, ORTxn} = 0b10) 作为中间步骤。 DSB-1A板在设计时,PB口接有8个发光二极管,同时接有排电阻PZ1作为二极管的限流 电阻,如图1所示,这是51单片机的典型设计,同样可用于ATMEGA8515单片机。 6 图 1 PB口接 8只发光二极管 2.2 实现程序 /************************************************** ; 平凡单片机工作室 ; http://www.mcustudio.com ; Copyright 2003 pingfan's mcustudio ; All rights Reserved ;作者:周坚 ;ddss.c ;单灯闪烁程序,用于 AT89S8515,ATMEG8515,在 DSB-1A型实验板上实现 ;**************************************************/ #include "avr/delay.h" #include "avr/io.h" static void io_init(void) { PORTA = 0x0; 7 DDRA = 0x0; // PortB PORTB = 0x0; DDRB = 0x01; // PortC PORTC = 0x0; DDRC = 0x0; // PortD PORTD = 0x0; DDRD = 0x0; } void mDelay(uint16_t DelayTim) { uint16_t i; for(;DelayTim>0;DelayTim--) { for(i=0;i<40000;i++) {;} for(i=0;i<39000;i++) {;} } } int main(void) { io_init(); while(1) { mDelay(500); PORTB&=0xfe; mDelay(500); PORTB|=0x01; } } 2.3 程序分析 1.C程序是由函数构成的,一个 C源程序至少包括一个函数,一个 C源程序有且只有 一个名为 main()的函数,也可能包含其它函数。这个程序中有一个 main函数和两个用 户自定义函数:mDelay()和 io_init()。 2.和 51 单片机不同,AVR 单片机的端口在使用之前必须先设定好输入或输出,并决 定是否接上拉电阻,因此,AVR单片机编程时比 51要稍复杂一点,但却提供了更为强 大的功能。 AVR单片机的端口一共有 3个寄存器,即 DDxn、 PORTxn 和 PINxn,其中 DDXn 是用来 设定端口的输出方向的,这里仅需要将 PB.0 设为输出即可,因此,在初始化程序中有: DDRB = 0x01; 这样一行,即将 PB.0设为输出。其他的均为 0。 8 3.这里仍用了 51中常用的延时程序编写的方式即空循环的方式来产生延时,延时程序 如 mDelay()所示。需要说明的是,由于 AVR单片机运算速度极快,应此,空循环次数当 多才能产生足够长的延时,这里用了 2 段延时,才达到 1ms 的延时效果,这个循环次数是 经过实际测试得到的,当参数为 1时,延时 1ms。 实际的工程中,好的方法是用定时器来 rtos等方式来产生延时,这样可以并行工作。 2.4实现过程 有了上述程序之后,我们介绍两种实现的方式,即用 winavr和 atmanavr来实现。 2.4.1用WINAVR实现 开启 winavr―>Programmer Notpads,将上述源程序输入其中。保存源程序,设保存在 E盘 AVR文件夹下的 DDSS文件夹下,文件名为 ddss.c。 开启 winavr->Mfile,编缉 Makefile,开启之后,即有一个 makefile 的模板,如图 2 所示。 图 2 Makefile的模板 点击菜单 Makefile->Main file name……即出现如图 3 所示的对话框,通常不需要更 改此选项,最终产生的 hex文件即 main.hex。 图 3 设置主文件名 接着点击Makefile->Mcu type,设定所用单片机的型号,如图 4所示。 9 图 4 设置单片机型号 我们选择 Atmega8515为我们所用的型号。 其他选项的说明如第一课《AVR的 C语言开发环境的建立》一文所作的说明。 设置好后,点击 file->save as将其存到 e:\avr\ddss文件夹。 然后在 Programmer Notepads中,点击:Tools->Make All,即可对该文件进行编译、链 接等处理,有关信息在 output 窗口中呈现。如有错误,单击错误行,即可定位,以便对此 进行修改,直到编译、链接完全正确为止。此时,output窗口显示: > Process Exit Code: 0 此时,即可进入调试。启动 AVRStudio,点击 file->open,即出现 open的通用对话框, 进入 ddss所在文件夹,打开文件时,可选一切文件,而 AVRStudio 会自动识别文件类型, 如图 5所示。 图 5 打开文件时的对话框 选择 main.elf文件,即出现如图 6所示的对话框。 10 图 6选择仿真器及芯片 这里我们选择 Avr Simalator,芯片选择 Atmgea8515。 点击 finish即调入仿真文件并进入仿真界面,如图 7所示。 图 7 进入仿真 2.4.2 用 ATMENAVR实现 启动 Atmenavr,选择“文件->新建”,即图现如图 8所示界面。 图 8 AtmanAVR新建向导 选择 AVR C Wizard(exe),然后在右侧“工程名:”和“目录:”中设置正确的目录并命名 11 一个工程名。我们设定为 E:\AVR\atman目录,工程名为 ddss。 点击确定后,进入向导,首先选择芯片,这里我们选择 Atmega8515,时钟频率选为 11.0592M,看门狗无效,不对外部 RAM进行设置。设置完成后如图 9所示。 图 9 工程设置向导第一步 点击下一步,进入 Step 2,这一步是设置端口方向,点击 PORTB页面卡,选择 Bit0为 0(点击 I即可),其余不需要更改。然后即可以点击“完成”。完成后即进入 AtmanAvr的主 界面,并自动产生了一些文件,如 ddss.c,ddss.h 等,双击 ddss.c,打开后,可以发现已根 据需要做好了 io口的初始化的工作。 查看 main函数,可以看到有这样的程序行: while(1) { // TODO: Add your code here } 即可在此处加上自己的处理代码。我们在此处加上: mDelay(500); PORTB&=0xfe; mDelay(500); PORTB|=0x01; 然后,再自行编写 mDelay函数,即可。 源程序编写好后,按 F7进行编译、链接,如果有错误,会显示在输出窗口中,双击可 定位。修改源程序,直到编译通过为止。 编译通过后,点击编译->开始调试->Go即可进入调试。如图 10所示。 12 图 10 进入调试 至此,用 winavr和 Atmenavr进行程序设计、调试的基本步骤都已经结束。 13 第三章 AVR单片机实现键控灯 前一课中,我们学习了用 AVR单片机实现流水灯的过程,下面我们将通过一个例子继 续学习如何用 AVR单片机的输入引脚来控制输出。 3.1 硬件连接 图 1 所示是键控灯的硬件连线,从图中可以看到,ATMEGA8515 的 PORTD 引脚中的 PD2、PD3、PD4、PD5四个引脚分别接有按钮,按钮按下时,这几个引脚分别接地。PB口 共接有 8个发光二极管。 图 1 按钮与发光管的接法 这个程序的要求很简单,开机后,所有灯均不亮,按下按钮后,相应的 LED 发光,例 如:PD2 上所接的按钮按下时,PB2 上所接的 LED 发光,PD3 上所接的按钮按下时,PB3 上所接的 LED发光,依此类推。 3.2 程序实现 /************************************************** ; 平凡单片机工作室 ; http://www.mcustudio.com ; Copyright 2004 pingfan's McuStudio ; All rights Reserved ;作者:周坚 ;jkd.c ;键控灯程序,用于 AT89S8515或者 ATMEG8515,在 DSB-1A型实验板上实现 **************************************************/ #include "avr/io.h" static void io_init(void) 14 { //PortB Set PORTB = 0xff; DDRB = 0xff; // PortD PORTD = 0xFF; DDRD = 0x0; } int main(void) { io_init(); while(1) { PORTB=PIND; //读引脚 } } 3.3 程序分析 ATMEGA8515 的引脚既可作为输入又可作为输出,与 51 单片机不同,IO 口作为输入 或者输出时,首先设置相应的寄存器。这里将 PORTB 设置为输出,PORTD 设置为输入。 设置为输入引脚时,同时将 PORTD置为 0XFF,这是要求 AVR向输入引脚提供一个弱上拉, 这种用法与 80C51的特性类似。如果此时设置 PORTD=0,那么 PORTD将为高阻态,必须 在外电路明确地提供上拉或下拉电阻,以确定其电平,而我们的电路中并未接上拉电阻,所 以不能用这种方式。 主程序非常简单,除了调用了初始化程序外,就是一行:PORTB=PIND;这是读出端口 D的引脚的值,并送到端口 B。注意,对于 AVR单片机而言,端口有一个专门的引脚输入 地址,要获得引脚的信息,必须直接读这个地址中的数据,这与 80C51是不一样的。 15 第四章 AVR单片机实现流水灯 前一课中,我们学习了用 AVR单片机实现单灯闪烁的过程,下面我们将继续学习如何 用 AVR单片机实现流水灯。 4.1 硬件连接 在实验板上,PB口共接有 8个 LED,上次仅用其中的 1个,通过这个发光管,我们了 解到 PB 口的输出特性,PB 口的其他 7 位也具有同样的特性,因此,我们可以利用这一点 来实现流水灯。硬件电路的连接如“单灯闪烁的实现(1)”中所示。 4.2 程序 /************************************************** ; 平凡单片机工作室 ; http://www.mcustudio.com ; Copyright 2004 pingfan's McuStudio ; All rights Reserved ;作者:周坚 ;lsd.c ;流水灯程序,用于 AT89S8515或者 ATMEG8515,在 DSB-1A型实验板上实现 **************************************************/ #include "avr/io.h" static void io_init(void) { PORTA = 0x0; DDRA = 0x0; // PortB PORTB = 0xff; DDRB = 0xff; // PortC PORTC = 0x0; DDRC = 0x0; // PortD PORTD = 0x0; DDRD = 0x0; } void mDelay(uint16_t DelayTim) { uint16_t i; for(;DelayTim>0;DelayTim--) { for(i=0;i<40000;i++) 16 {;} for(i=0;i<39000;i++) {;} } } int main(void) { uint8_t i=0; io_init(); while(1) { if(++i>=8) i=0; PORTB=~(0x80>>i); //改为 0x01<0;DelayTim--) { for(i=0;i<40000;i++) {;} for(i=0;i<39000;i++) {;} } … 可以看到,延时程序有两段组成,分别循环 40000次和 39000次。在刚开始调试时,只用了 一个段,时间常数取的是 20000,编译完成后,调入 AVR Studio,为观察延时时间,点击左 侧Workspace中的 Processer,注意看其中的几个参数:Cycle Counter和 Stop Watch,前一个 是执行周期数,即从复位开始到目前为止共执行了多少个周期,而 Stop Watch 则表示从复 位开始到目前为止共用去的时间数,如果 Frenance 中的频率值正确,那么这个时间就是正 确的。这样,我们可以通过观察这个时间来调循环次数,将时间基本精确地调整到延时 1ms。 17 图 1 在 AVRStudio中调试程序 18 第五章 程序的调试 5.1用 AvrStudio进行调试 进入 AVRStudio 后,如图 1 所示,可以看到,除了标准的菜单、工具条等之外,下面 就是若干个窗口。其中中部左侧是Workspace窗口,该窗口有 3个页面卡,进入调试后自动 转到 I/O页面,这里有单片机内部的各种资源。从这里,可以看出为什么在进入调试时要选 定型号了,选了型号,这里出现的内容也各不相同。我们点击 Portb 将 Portb 展开,可以看 到有 3个项: PORTB 端口寄存器 DDRB 端口方向寄存器 PINB 引脚 用十六进制和二进制方式清晰地表达出了各位的清况。 右侧是源程序窗口,黄色箭头指向主程序。 这两个窗口下面又有两个窗口,左侧是 OutPut窗口,进入调试后自动切换到信息页面。 显示了调入文件的各种信息。右侧是观察窗口,有若干个页面卡,可以分组在各种页面卡中 显示变量值。 除此之外,还可以通过菜单 View分别调出寄存器、内存等各个不同的观察窗口。 图 1 AvrStudio的窗口 按下 F11,即可单步执行程序,按下 F10可以用过程单步的方式执行程序(将一个函数 作为一个语句来执行,不进入这个函数的内部)。 按下 F10以过程单步的方式执行(很奇怪,io_init()按说应该一次执行完毕,但却跟 踪进入了这个函数体,原因暂未明),执行到:DDRB=0x01 后可以看到左侧窗口中 DDRB 19 的相应变化。如图 2所示。 图 2 DDRB的变化 继续按 F10执行程序,可以看到 PORTB和 PINB都发生了变化,如图 3所示 图 3 PORTB和 PINB发生变化 执行一个循环后,我们按 F11,跟踪到函数内部看一看,如图 4所示是跟踪进入了mDelay 函数。 此时,可以看到,观察窗口中原来没有显示的变量此时已显示出了其数值。 20 图 4 进入 mDelay函数 这样,一步一步执行程序,即可观察各变量的变化。如果跟踪一段时间后已查看到结果, 觉得这样的查看太慢了,也可以将光标置于本函数的未一行,然后点击 Debug->Run to Cursor,即可全速执行到该光标处。 在调试时,我们也感到 AvrStudio 的模拟执行速度较慢,比如 mDelay(500)在实际中延 时约 0.5s,但在作者的机器上却要执行好长一段时间―――我的机器还算是新的。因此,在 调试时希望先给一个较小的数值,以免影响调试的效率。为此,回到 winavr的 Programmer Notpad 中,将 mDelay(500)改为 mDelay(5),然后重新编译,切换回 AvrSTudio 时,可以发 现 AVRStudio已“察觉”这种变化,并询问是否要重新加载,如图 5所示。 图 5 重新加载更新了的目标文件 除了以上的一些调试方法外,Debug菜单还提供了诸如 Reset(复位)、AutoStep(自动 单步)等调试手段,大家可以自行测试。 5.2 用 AtmanAvr进行调试 如果使用 AtmanAvr,那么在编译完成后,按 F5进入调试。此时,可以看到菜单上多出 一项 Debug 项,同时,在菜单、工具条的下方多出了一些窗口,如图 6 所示。从图中可以 21 看出,其窗口与图 1有些类似,事实上,Atmavr应该是嵌入的 AvrStudio的早期版本的调试 窗口。 除了这些窗口外,还可以通过查看->调试窗口 选项来获得更多的窗口,除了 AvrStudio 原有的一些窗口外,AtmanAvr 还得供了 LCD、LED 和键盘这样三个窗口,可用 于真实仿真。 图 6 AtmanAvr进入仿真状态 进行调试的方法和前一节的叙述基本类似,通过 Debug 菜单进行单步、过程单步、全 速、自动单步、设置断点、运行到光标处等方法进行程序的调试,这里就不再一一叙述了。 Debug菜单条如图 7所示。 图 7 AtmAvr的 Debug菜单条
本文档为【AVR_单片机初学】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_497695
暂无简介~
格式:pdf
大小:572KB
软件:PDF阅读器
页数:21
分类:互联网
上传时间:2011-05-13
浏览量:33