版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北 华 航 天 工 业 学 院课程设计报告(论文) 设计名称: 单片机技术课程设计 设计地点: 单片机实验室(教7209) 班 级: b09221 姓 名: 学 号: 指导教 师: 完 成 时 间: 2012 年 4 月 18 日北华航天工业学院电子工程系课程设计任务书姓 名:学号:班 级:指导教师:职 称:教授课程设计题目:正弦信号发生器的设计主要课程支撑:模拟电子技术、数字电子技术、微机原理与接口技术设计目标:1 熟练掌握单片机汇编指令的使用方法2 熟练掌握行列式键盘、led显示器的控制与管理方法3 掌握a/d、/d/a的应用4掌握单片机应用系统设计方法、软硬件调试方法5熟练使用单片机仿真
2、软件基本要求:1完成单片机综合设计(每人选做一个题目)2编程实现题目要求的基本功能,程序运行通过。3撰写课程设计报告(设计思路、实现方法、硬件资源分配、程序流程图、运行结果分析等),要求用a4纸打印设计报告。所需仪器设备:伟福lab6000综合实验仿真系统一台套微机一台成果验收形式:程序上机运行、现场回答问题参考文献:lab6000综合实验仿真系统说明书时间安排(1) 8周:完成选题、方案设计(2) 第1-4次上机调试程序(3) 第5次上机课题验收(4) 第10周上交实践报告指导教师: 教研室主任: 年 月 日 一、概述 1、设计目的 了解单片机系统中实现d/a(数字、模拟)转换的原理及方法
3、详细了解d/a转换芯片0832的性能及编程方法 了解单片机系统中扩展d/a转换的基本原理,了解单片机如何尽行数据采集 掌握dac0832,at89c51输入/输出接口电路设计方法 掌握dac0832转换实现的程序设计方法 掌握wave 软件的操作,掌握单片机程序设计的流程2、设计要求 正弦波频率范围:1hz100hz,100hz1000hz 频率步进值:1hz100hz档步进是10hz,100hz1000hz档步进是100hz 输出电压:15v幅值可调(1v步进) 具有显示输出波形频率和幅度的功能 显示位数:6位 键盘设置频率值二、方案设计与论证(设计思路、题目分析、解决方法)1编程语言的选择
4、进行单片机开发,既可以用c语言,也可以用汇编语言。在本设计中选择合适的语言进行设计很重要。汇编语言是一种用文字助记符来表示机器指令的符号语言。其主要优点是占用资源少,执行效率高。但是不同的cpu,其汇编语言可能有所差异,所以不易移植。c语言是一种结构化的高级语言。其优点是可读性好,移植容易,是一种普遍使用的计算机语言,缺点是占用资源较多,没有汇编语言执行效率高。对于目前普遍使用risc架构的8位单片机来说,其内部rom、 ram、stack等资源有限,如果使用c语言编写,一条c语言编译后就会变成很多机器码,很容易出现rom空间不够、堆栈溢出等问题。而汇编语言,一条指令就对应一条机器码,每一步的
5、执行动作都很清楚,并且程序大小和堆栈条用情况都容易控制,调试起来也比较方便。就正弦波发生器设计而言,对程序指令执行的精度、时间要求比较严格,因此本次设计采用汇编语言进行编程较为合理。2如何利用单片机进行控制输出-5v+5v电压-5v+5v为模拟量输出,单片机本身并不具备此功能,单片机只能进行数字量输出,因此需要用到dac(数模转换)芯片dac0832简要介绍dac转换器是一种将数字量转换成模拟量的器件,其特点是接受、保持和转换的是数字信息,不存在温度和事件的漂移问题,因此电路的抗干扰性能较好。dac0832是8位分辨率的d/a转换集成芯片,它具有价格低廉、接口简单及转换控制容易等特点。它由8位
6、输入锁存器、8位dac寄存器、8位dia转换电路及转换控制电路组成,能和cpu数据总线直接连接,属中速转换器,大约在1us内将一个数字量转换成模拟量输出。dac0832的结构d0d7: 8位数据输入线,ttl电平,有效时间应大于90ns(否则锁存器的数据会出错);ile:数据锁存允许控制信号输入线,高电平有效;cs:片选信号输入线(选通数据锁存器),低电平有效;wr1:数据锁存器写选通输入线,负脉冲(卖宽应大于500ns)有效。由ile、cs、wr1的逻辑组合产生le1,当le1为高电平时,数据锁存器状态随输入数据线变换,le1的负跳变时将输入数据锁存;xfer: 数据传输控制信号输入线,低电
7、平有效,负脉冲(脉宽应大于500ns)有效;wr2:dac寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由wr1、xfer的逻辑组合产生le2,当le2为高电平时,dac寄存器的输出随寄存器的输入而变化,le2的负跳变时将数据锁存器的内容打入dac寄存器并开始d/a转换。iout1:电流输出端1,其值随dac寄存器的内容线性变化;iout2:电流输出段2,其值与iout1值之和为一常数;rfb:反馈信号输入线,改变rfb端外接电阻值可调整转换满量程度;vcc:电源输入端,vcc的范围为+5v+5v;vref:基准电压输入线,vref的范围为-10v+10v;agnd:模拟信号地;dgn
8、d:数字信号地; 0832的引脚图和内部结构图如图1、图2所示图1 dac0832引脚图图2 dac0832内部结构图dac0832的三种工作方式1、直通方式直通方式是使dac0832内部的两个寄存器(输入寄存器和dac寄存器)处于不锁存状态,数据一旦到达输入端di7di0,就直接送入d/a转换器,被转换成模拟量。当ile为高电平,cs和wr1、wr2和xfer端都接数字帝,这时锁存信号le1、le2均为高电平,输入寄存器和dac寄存器均处于不锁存状态,即直通方式。2、单缓冲方式单缓冲方式就是使两个寄存器中的一个处于缓冲方式,另一个处于锁存方式,数据只同故宫一级缓冲器送入d/a转换器。通的做法
9、是将cs和xfer均姐弟,使dac寄存器处于直通凡事,而把ile接高电平,接端口地址译码信号。wr1接cpu系统总显线的iow信号,是输入寄存器处于锁存方式。但换种方式只需执行一次写操作即可完成d/a转换。一般不需要多个模拟量同时输出,可采用单缓冲方式。3、双缓冲方式双缓冲方式就是使两个寄存器均处于锁存方式,数据要经过两级锁存(即两级缓冲)后再送入d/a转换器,就是说,要执行两次写操作才能完成一次d/a转换。只要将ile接高电平,wr1和wr2接cpu的iow,cs和xfer分别接两个不同的i/o地址译码信号即可。在本设计中,令0832工作在单缓冲方式,其片选端接138译码器单元的cs1,其地
10、址为0x9000h。dac0832的输出方式dac0832为电流型输出,若需要电压输出可使用运算放大器构成单极性输出和双极性,图3 中a、b分别为0832的单极性输出和双极性输出的电路连接方式。若采用单极性输出,则只能产生0v5v电压,不能得到既有正脉波又有负脉波的正弦波。因此本设计采用dac0832的双极性输出,其输出电压为-5+5v;当di0di7为0000000b时输出-5v,为10000000b时输出0v,为11111111b是输出+5v。这样可以产生既有正脉波又有服脉波的正弦波。图3 dac0832的单极性输出和双极性输出3.如何产生正弦波 (a) (b)图4 正弦波的分解 用单片机
11、控制dac0832来产生正弦波有个问题,就是数模转换总是有其分辨率的,输出的电压并不是连续变化的。例如:8位dac输出为-5v+5v,那么分辨率就是:,所以产生的正弦波会有一定的误差。如何利用单片机控制dac0832产生正弦波呢?我们可以先把一个正弦波按横轴等间距分别为若干个点(如图 4分为51个点)。把每个点电压幅值所对应的8位二进制数值做成表,放在cpu的rom中。例如:图4中左起第一个点幅值是0v,对应的送给dac0832的8位二进制数为80h,所以表的第一元素为80h制成下表:(下表中数据以十进制表示)tab1: db 128, 144, 160, 175, 190, 203, 216
12、, 227, 236, 244, 250, 254, 255, 255, 254, 250, 244, 236, 227, 216, 203, 190, 175, 160, 144, 128, 112, 96, 81, 66, 53, 40, 29, 20, 12, 6, 2, 0, 0, 2, 6, 12, 20, 29, 40, 53, 66, 81, 96, 112, 128 先取表中第一个元素送给0832,0832输出第一个电压0v,再取第二个数送给0832输出下一个电压,依次类推,取到表的最后一个元素时,从头开始取表的第一个元素。循环往复,就输出了一个连续的正弦波形。只产生一个正弦波
13、是不够的,我们还要求其频率和幅值可调。可以看一下哪些因素会影响输出波形的频率和幅值频率的影响因素由图4可知,该正弦波的频率 (为所取的两个点之间的间隔),所以只要改变就可以改变输出波形的频率。我采用的方案是:用一个定时器,每隔产生一次中断,在中断服务程序里控制dac0832输出。如果想要改变只要改变定时器的时间就行了。也就改变了输出波形的频率。采用这个方案需要验证两个问题: 本设计要求输出频率在1hz1000hz可调,所以定时器的定时时间需要达到s,即定时器的定时时间要在s之间可调,并且其分辨率满足要求。经验证51单片机的定时器0工作在方式1时,其性能满足要求,故采用定时器的方案可行。 不可能
14、无限小,假设单片机晶振为6mhz,那么定时器的分辨率为2s即0.000002s。单片机执行指令是需要时间的,当定时器溢出产生中断时,需要执行一系列指令,包括对断点地址进行压栈、给pc赋值等操作,都是需要占用时间的,这一部分占用的时间是不可避免的。除此之外,进入中断服务子程序中,顺序执行里面的程序,在执行movx dptr,a 给dac0832送数据让其输出电压之前会有一些必须的程序,包括赋初值给定时器的th0和tl0,查表程序等。综合上面几个因素,这时定时器的定时时间并不是理论上计算出的时间,而大于这个时间,这样输出波形的频率就会有误差。为了减小误差,第一,尽量减少定时中断服务程序中的指令,以
15、减少其占用的时间;第二:给th0,tl0幅值时,减去延时的时间,以抵消掉指令占用的时间。幅值的影响因素从前面介绍的dac0832的原理可知,只要改变dac0832数字量输入就可以改变其输出模拟量的幅度。由于产生波形的幅度是在存储于单片机内部rom的表中,按顺序取出的。因此我们需要从新建立一个表,这样定时中断服务程序中,该表所查的表,就改变了输出波形的幅度。本设计要求幅值1v5v可调,因此需要建立5个表。建立5个表的时候如果一个元素一个元素的算,未免太麻烦。可以用matlab分别算出5个表,然后粘贴到程序中,稍作修改就可以使用(图5为输出幅值为4v时表的计算方法算法)。算法: (u为需要得的到的
16、幅值,此时b数组就是对应的表)图5 表的计算方法(输出幅值为4v时) 综合上面改变频率和幅值的方法,就可以得到符合本设计的设计要求的波形。3.频率与幅值的设置方案:利用单脉冲发生器,当需要设置幅值和频率时,产生中断,暂停正在工作的定时器,停止波形输出,进入外部中断0中断服务程序,通过按键,对波形进行设置。按键0:频率/幅值切换;按键1:频率/幅值增加;按键2:退出外部中断,开启定时器,输出波形4.键盘与显示 利用wave6000 实验环境中的显示程序和键盘扫描电路及程序。改程序提供了三个子程序:testkey;getkey;displedbuf。三、硬件设计1硬件电路本设计由单片机、d/a转换
17、电路、键盘及显示电路几个组成部分,各部分采用的电路形式及主要器件确定如下:(1)单片机部分选用89c51单片机作为主机,同时要设计89c51单片机的晶振电路和复位电路,具体电路略。(2)d/a转换电路部分直接利用单片机实验箱上的d/a转换电路正弦波信号的输出。电路如图6所示。图6 dac0832连接电路(3)按键与显示部分 直接利用单片机试验箱上的按键与显示电路。如图7、图8所示 图7 显示器电路连接图图8 键盘电路连接图四、程序设计 1程序流程图 主程序流程图:开始初始化(中断允许、定时器初始化等)sjmp $ 循环等待图9 主程序流程图 定时器0中断服务程序流程图:是否开始定时器重赋初值m
18、ov th0,cth0mov tl0,ctl0表的首地址赋dptrmov dph,#cdphmov dph,#0根据r0内容进行查表把查表的内容送到0832inc r0r0等于50?mov r0,#0图10定时器0中断服务程序流程图否开始停止定时器0的中断初始化工作f0清零显示清空调用显示程序displayled检测有无按键testkey无按键有按键取键值getkey键值为#0?cpl f0 并且根据f0来显示u或f是键值为#1?键值为#2?否否f0为零inc cu否则inc chz并把显示被容送入ledbuf是允许定时器0中断reti结束外部中断0中断服务程序流程图:图11外部中断0中断服务
19、程序流程图2程序模块功能主程序:进行一系列初始化后,主程序最后停在sjmp $等待。定时器0中断服务程序:每隔一定时间按次序查表,把相应数值送给dac0832进行数模转换,实现正弦波输出。外部中断0中断服务程序:配合按键扫描程序和数码管显示程序,对正弦波参数进行设置。3.硬件资源分配表存储单元、寄存器用途备注r0定时器0中断服务程序中,用作循环50个点的查表每来一次定时器中断加1,到50后清0f0标志位用来判断现在调整频率还是幅值cu(09h)查表计数(用作频率调整)每次加1,到21之后清0chz(12h)查表计数(用作幅值调整)每次加1,到5之后清0cth0(10h)存储调整后的th0的初值
20、ctl0(11h)存储调整后的tl0的初值cdph存储调整后的dph的值outbit(08002h)位控制端口outseg(08004h)段控制端口in(08001h)键盘读入端口ledbuf(60h)显示缓冲区首地址60h65h四、运行结果分析1.软硬件调试(出现的问题、如何解决。)搭建proteus仿真电路,进行软件模拟仿真(图12)图12 proteus仿真电路此电路和实际电路有差异,主要用于前期的软件仿真,基本的波形发生,测试matlab软件计算出的数值运行后是否满足设计要求。此外,我还用此电路测试了取不同点数时,波形差异。分别测试了30点、50点、70点以及100点,点数越多越接近正
21、弦,点数越少失真越严重。但是点数过多,所能达到的频率最低值越大,不能满足本设计中频率达到1000hz的要求。经试验,取50点可以达到最好的效果,是频率达到要求,波形又不失真严重。前期仿真完成后,进行上机调试。起初,加上键盘显示程序时,键盘和显示程序时钟程序始终不正常。经老师指点,改变思路,在进行频率和幅度设置时,关掉波形发生功能。顺利完成调试。2.运行结果系统上电,产生50hz,-5v+5v正弦波。按单脉冲发生键,进入设置程序,按键盘0键决定调节频率还是幅值;按1键进行调节;按2键完成设置,开始输出波形。(图13、图14、图15、图16分别为几种不同频率和幅值的输出波形)图13 正弦波(100
22、hz,-5v+5v)图13 正弦波(100hz,-4v+4v)图14 正弦波(200hz,-4v+4v)五、设计总结本次设计题目是正弦信号发生器。用到的硬件有按键、数码管显示、译码电路、dac0832、8051单片机。通过这次设计,进一步熟悉了这些硬件的用法。熟悉了wave编程软件的使用。对汇编语言进行单片机程序设计有了更深一步的认识。完成本次设计后,学到了一种新的编程思路:大量的应用查表的方式进行程序设计,可以有效的增加程序执行的效率,缩短其执行时间,一些对程序执行时间有严格要求的场合,可以用此思路进行设计。当然,查表方式进行程序设计亦有其缺点:占用大量的内部rom空间,对于一些内部rom空
23、间不是很充足的单片机,过多的表可能导致rom空间不足。因此,进行程序设计时要将查表方式和算法方式进行综合考虑,选择效率较高的方式进行设计,也可以将两种方式有效结合起来。 此次设计能顺利完成,要感谢李老师的指导,在加入键盘和显示程序时,遇到了困难,是李老师的指导,使我走出了泥潭。六、参考资料1 胡宴如. 高频电子线路m.高教出版社. 2001.9:12-19 2 卢屹. 数字锁相环的参数设计及其应用j 通信技术2001,(9):12-153 涂时亮等. 单片微机软件设计技术.重庆:科学技术文献出版社重庆分社,19884 张志良. 单片机原理及控制技术.北京:机械工业出版社,20015 徐君毅等,
24、单片微型计算机原理与应用.上海:上海科学技术版社,19886 成都木马科技. 单片机原理及应用.北京:北京希望电子出版社,19887 宋培义等.单片机原理、接口技术及应用.北京:中国广播电视出版社,19998 何利民.i2c总线应用系统设计.北京:北京航空航天大学出版社,1994附录:源程序org 0000h ajmp main org 0003h ljmp wbzd0 org 000bh ljmp dszd0 org 0030h cu equ 09h cth0 equ 10h ctl0 equ 11h chz equ 12h cdph equ 13h outbit equ 08002h ;
25、位控制口 outseg equ 08004h ; 段控制口 in equ 08001h ; 键盘读入口 ledbuf equ 60h ; 显示缓冲main: mov chz,#0 mov a,#00h mov dptr,#09000h mov tmod,#11h mov th0,#0ffh mov tl0,#0edh setb ea setb et0 setb et1 setb ex1 setb it0 setb it1 mov cdph,#09h setb ex0 mov cth0,#0ffh mov ctl0,#0fh setb tr0 sjmp $delay: mov r7, #0del
26、ayloop: djnz r7, delayloop djnz r6, delayloop retdisplayled: mov r0, #ledbuf mov r1, #6 ; 共6个八段管 mov r2, #00100000b ; 从左边开始显示loop: mov dptr, #outbit mov a, #0 movx dptr, a ; 关所有八段管 mov a, r0 mov dptr, #outseg movx dptr, a mov dptr, #outbit mov a, r2 movx dptr, a ; 显示一位八段管 mov r6, #1 call delay mov a
27、, r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1, loop rettestkey: mov dptr, #outbit mov a, #0 movx dptr, a ; 输出线置为0 mov dptr, #in movx a, dptr ; 读入键状态 cpl a anl a, #0fh ; 高四位不用 retgetkey: mov dptr, #outbit mov p2, dph mov r0, #low(in) mov r1, #00100000b mov r2, #6kloop: mov a, r1 ; 找出键所在列 cpl a movx dptr
28、, a cpl a rr a mov r1, a ; 下一列 movx a, r0 cpl a anl a, #0fh jnz goon1 ; 该列有键入 djnz r2, kloop mov r2, #0ffh ; 没有键按下, 返回 0ffh sjmp exitgoon1: mov r1, a ; 键值 = 列 x 4 + 行 mov a, r2 dec a rl a rl a mov r2, a ; r2 = (r2-1)*4 mov a, r1 ; r1中为读入的行值 mov r1, #4loopc: rrc a ; 移位找出所在行 jc exit inc r2 ; r2 = r2+
29、行值 djnz r1, loopcexit: mov a, r2 ; 取出键码 mov dptr, #keytable movc a, a+dptr mov r2, awaitrelease: mov dptr, #outbit ; 等键释放 clr a movx dptr, a mov r6, #10 call delay call testkey jnz waitrelease mov a, r2 retkeytable: ; 键码定义 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03
30、h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07h ledmap: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hwbzd0 : clr et0; ;禁止定时器中断,不再产生波形 clr f0 ; ;flag mov ledbuf+0, #0h ; 显示 8.8.8.8. mov ledbuf+1, #0h mov ledbuf+2, #0h mov ledbuf+3, #0h mov ledbuf
31、+4, #0 mov ledbuf+5, #0 k1: call displayled ; ;显示程序 call testkey ;;检测按键 jz k1 call getkey ; ;获取键值 anl a,#0fh cjne a,#0,ne1 ;;判断是否按下0键,0键功能:输入频率还是幅值的转换 cpl f0 jb f0,bb ; ;输入幅值还是频率的标志 mov ledbuf+0, #71h sjmp bb1 bb: mov ledbuf+0, #00111110b bb1:ljmp k1 ne1:cjne a,#1,ee sjmp cc ee:ljmp ne2 cc:jb f0,af
32、mov a,cu mov dptr,#tabsjh ;cth0里面内容th0,ctl0里面内容tl0 movc a,a+dptr mov cth0,a mov a,cu mov dptr,#tabsjl movc a,a+dptr mov ctl0,a inc cu mov a,cu cjne a,#21,s1 mov cu,#0s1: mov ledbuf+1, #0h mov ledbuf+2, #0h mov ledbuf+3, #0h mov ledbuf+4, #0 mov ledbuf+5, #0 mov a,cu mov dptr,#tab7seg6 movc a,a+dptr
33、mov ledbuf+5,a mov a,cu mov dptr,#tab7seg5 movc a,a+dptr mov ledbuf+4,a mov a,cu mov dptr,#tab7seg4 movc a,a+dptr mov ledbuf+3,a mov a,cu mov dptr,#tab7seg3 movc a,a+dptr mov ledbuf+2,a sjmp k1 af: inc chz mov a,chz cjne a,#1,mm1 mov cdph,#0ch sjmp w1mm1: cjne a,#2,mm2 mov cdph,#0bh sjmp w1mm2: cjne
34、 a,#3,mm3 mov cdph,#0ah sjmp w1mm3: cjne a,#4,mm4 mov cdph,#09h sjmp w1mm4: mov cdph,#0dh mov chz,#0 sjmp w1 w1: mov ledbuf+1, #0h mov ledbuf+2, #0h mov ledbuf+3, #0h mov ledbuf+4, #0 mov ledbuf+5, #0 mov dptr,#tab7seg1 mov a,chz movc a,a+dptr mov ledbuf+5,a ljmp k1 ne2: cjne a,#2,ne3 sjmp mend ne3:
35、 ljmp k1 mend: setb et0; reti dszd0: mov th0,cth0 mov tl0,ctl0 mov dph,cdph mov dpl,#0 mov a,r0 movc a,a+dptr mov dptr,#09000h movx dptr,a inc r0 cjne r0,#50,ll mov r0,#0 ll: retitab7seg1:db 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71htab7seg2:db 0h ,0h ,0h ,0h ,0h ,0h
36、 ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0tab7seg3:db 0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,06h,0tab7seg4:db 0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,0h ,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,3fh ,0tab7seg5:db 0h ,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,3f
37、h,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,0tab7seg6:db 06h ,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,3fh,0tabsjh:db 0f8h,0fch,0fdh,0feh,0feh,0feh,0feh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffhtabsjl:db 30h,18h,65h,0ch,70h,0b2h,0e2h,06h,21h,38h,38h,9ch,0bdh,0ceh,0d8h,0deh,0e3h,0e7h,0e9h,0echorg 0900htab1: db 128, 144, 160, 175, 190, 203, 216, 227, 236, 244, 250, 254, 255, 255, 254, 250, 244
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论