基于51单片机的简易电子琴设计_第1页
基于51单片机的简易电子琴设计_第2页
基于51单片机的简易电子琴设计_第3页
基于51单片机的简易电子琴设计_第4页
基于51单片机的简易电子琴设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于51单片机的简易电子琴设计一问题提出为什么选择简易电子琴设计?1 对于音乐的兴趣我们对音乐都有着浓厚的兴趣,喜欢听钢琴曲,如理查德·克莱德曼演奏的思乡曲星空秋日的私语等,音乐在我们的生活中扮演着很重要的角色。有人曾说,喜欢音乐的人不会向恶。以前不以为然,可是随着这些年来慢慢喜欢上阴郁,听了越来越多的钢琴曲之后,觉得这句话非常有道理。音乐是用艺术家用音符记录世界,传达情感的一种艺术形式,音乐里有一种和谐之美,听音乐可以让人心情舒畅,与外界和谐统一。音乐现在已经成为我生活中很重要的一部分,我们每周都会抽些时间去欣赏世界名曲,作为对精神的洗礼。2 对于电子琴的好奇好奇是人的天性,人类对

2、于自然的认识,对于科学的探索,无不始于好奇。我们对电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇,想通过学习单片机这个机会,深入了解电子琴的功能实现原理。3 对于51单片机强大功能的信赖 51单片机有基本特性:(1) 面向控制的8位CPU和指令系统(2) 4K字节的程序存储器(ROM或EPROM)(3) 128字节的数据存储器(4) 可编程的并行I/O口P0P3,有32位双向输入/输出线(5) 一个全双工串行口(6) 两个16位定时器/计数器(7) 五个中断源,两个优先级的中断结构(8) 一个片内时钟振荡器和时钟电路(9) 可以寻址64K字节的程序存储器和64

3、K字节的外部数据存储器51单片机功能强大,性能日趋完善,在工业测控、智能仪器仪表、机电一体化产品、家电领域中应用广泛,因此基于51单片机设计简易的电子琴可行性非常大。2 功能需求1. 能够实现基本的琴键功能 即每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使蜂鸣器发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开后,声音停止。然后再继续扫描,看是否有键按下,如此循环下去,即可实现基本的琴键功能。 2. 能够实现调节电子琴音色的功能 在键盘上设置功能键,通过按键来选择不同的音色。当选通后,按下琴键,蜂鸣器就一直发出此种音色的声音。直到下一次再次按下音色选择

4、功能键,才会改变音色。系统共设置五种音色:长笛音,钢琴音,小号音,小提琴音,短笛音,默认状态为钢琴音。3. 能够实现通过按键自动播放歌曲的功能 在键盘上设置几个功能键,按下之后会根据功能键跳转到自动播放歌曲的程序,来播放相应的歌曲。播放歌曲的默认音色为钢琴音,若希望调整音色,只需在自动播放歌曲之前,按下相应的音色选择功能键即可实现。3 总体方案1 电子琴原理 在介绍总体方案之前,先简单介绍一下电子琴的发生原理以及如何改变音色的基本原理:声音的频谱范围约在几十到几千赫兹, 若能利用程序来控制单片机某个口线不断输出“ 高” “ 低”电平, 则在该口线上就能产生一定频率的方波, 将该方波接上喇叭就能

5、发出一定频率的声音, 若再利用程序控制“ 高” “ 低”电平的持续时间, 就能改变输出波形的频率从而改变音调。乐曲中, 每一音符对应着确定的频率, 下表给出各音符频率。如果单片机某个口线输出“ 高” “ 低”电平的频率和某个音符的频率一样, 那么将此口线接上喇叭就可以发出此音符的声音。本系统就是根据此原理设计, 对于单片机来说要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时间再输出低电平, 如此循环的输出就会产生一定频率的方波, 通过改变延时的时间就可以改变输出方波的频率。单片机内部有两个位的定时计数器T1和T0, 单片机的定时计数器实际上是个计数装置它既可以对单片机的内部晶振驱动

6、时钟计数也可以对外部输入的脉冲计数, 对内部晶振计数时称为定时器, 对外部时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时,每个机器周期定时计数器的计数值就加, 当计数值达到计数最大值时计数完毕并通知单片机的尸比对外部输入的时钟信号计数时, 外部时钟的每个时钟上升沿定时计数器的计数值就加, 当计数值达到计数最大值时计数完毕并通知单片机的尸。因此, 如果知道单片机的机器周期或者外部输入时钟信号的周期单片机就可以根据定时器的计数值计算出定时的时间。用此方法定时十分准确, 想得到多大的延时时间就可以给定时器赋一定的计数初值, 定时器从预先设置的计数初值开始不断增当增加到计数最大值时计数完毕,

7、 调整计数初值的大小就可以调整定时器定时的时间, 从而达到准确的延时。在本设计中我们使用的外部时钟信号的晶振频率为12MHz,而采用的计数方式为方式1,所以计数器的初始值可以由如下公式求得。 T=65536-1000000/2/ff为对应音调的频率;通过以上方法,可求出各音调对应的频率,如下表2. 外观设计2 硬件部分总体方案 51单片机P0口通过8155扩展,连接4*8的矩阵键盘,作为琴键键盘和相应的功能控制键;并P2口一起,与EPROM连接;P0口则接通不通音色的滤波电路,通过程序控制P0口,选通不通的琴声音色滤波电路,使电子琴发出不同音色的声音。 3 软件部分总体方案(1)键盘扫描程序:

8、检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测 (2)功能转移程序:对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能(3)琴键处理程序:根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音(4)音色调节程序:检测到键盘按下的是音色调节功能键后执行该程序,改变P0端口的值,选通相应的音色滤波电路,达到调节音色的目的(5)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播

9、放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下四硬件详细设计 总电路图 8155扩展 外部EPROM扩展电路 键盘电路 长笛滤波电路 钢琴滤波电路 小号滤波电路 小提琴滤波电路 短笛滤波电路4 软件框图总程序简易流程图键盘扫描程序流程图弹奏程序流程图音色调整子程序自动播放歌曲程序流程图六软件清单ORG 0200HMOV P1, #02H ; 初始化P1口,使得电子琴默认为钢琴声KEYPRO: ;键盘扫描程序ACALL KEXAM ; 检查是否有键按下JZ KEYPRO ;若无键按下,则转KEYPRO,继续等待并检查ACALL D10ms ;若有键按下,则延时10ms,进行曲抖动处理AC

10、ALL KEXAM ;再次检查是否有键按下JZ KEYPRO ;若无键按下,则转KEYPROKEY1:MOV R2,#OFEH ;输出使第X0行为低电平模型数值MOV R3,#OFFH ;列值寄存器预置初值MOV R4,#OOH ;行值寄存器清零KEY2:MOV DPTR,#0303H ;送8155PC口地址MOV A,R2 ;扫描第一行MOVX DPTR,A MOV DPTR,#0301H ;送8155PA口地址MOVX A,DPTR ;读列数据值CPL AANL A,#OFFHJNZ KEY3 ;有键按下,请求转值MOV A,R4 ;无键按下,行值寄存器加8ADD A,#08H MOV R

11、4,AMOV A,R2 ;求下一行为低电平模型数值RL AMOV R2,AJB ACC.4,KEY2 ;判断各行是否完全扫描完,若未完,则继续扫描下一行AJMP KEYPRO ;若全部扫描完毕,则等待下一次按键KEY3: CPL A ;恢复列模型KEY4: INC R3RRC A ;求列值JC KEY4KEY5:ACALL D10msACALL KEXAMJNZ KEY5 ;若有键按下,则转KEY5,等待键释放MOV A,R4 ;计算键值ADD A,R3MOV BUFF,A AJMP KEYADR ;转查找功能键入口地址子程序D10ms: ;延时10ms的子程序MOV R5,#14HDL: M

12、OV R6,DL0DL0: DJNZ R6,DL0 DJNZ R5,DL RETBUFF EQU 30HKEXAM:MOV DPTR,#0303H ;送端口C地址MOV A,#00H ;输出使所有的行均为低电平模型数值MOVX DPTR,AMOV DPTR,#0301HMOVX A,DPTRCPL AANL A,#0FFHRETORG 8000H ; 跳转功能程序KEYADR:MOV A, BUFF ; 取出键值CJNE A, #17H, KYARD1AJMP PLAY ; 等于17H,转琴键处理KEYRD1:JC PLAY ; 小于17H,转琴键处理KEYTBL: MOV DPTR, # J

13、MPTBL ;送功能键地址表指针CLR C ;清进位位SUBB A , #10HRL AJMP A+DPTR ;转相应的功能键处理程序BUFF EQU 30HJMPTBL: AJMP SONG1 ; 跳转至化蝶AJMP SONG2 ;跳转至童年AJMP SONG3 ;跳转至龙的传人AJMP FLUTE ;调节成长笛音色状态AJMP PIANO ;调节成钢琴音色状态AJMP TRUMPET ;调节成小号音色状态AJMP VIOLIN ;调节成小提琴音色状态AJMP PICCOLO ;调节成短笛音色状态 SONG1: MOV DPTR, #BUTTERFLY ;赋梁祝谱初值ACALL SUB_SO

14、NG ;调用播放歌曲子程序AJMP KEYPRO ;返回至键盘扫描程序SONG2: MOV DPTR, #YOUTH ;赋童年谱值ACALL SUB_SONG ;调用播放歌曲子程序AJMP KEYPRO ;返回至键盘扫描程序SONG3:MOV DPTR, #MULTIPLY_OF_THE_DRAGON ;赋龙的传人谱初值ACALL SUB_SONGAJMP KEYPROFLUTE:MOV P1, #01H ;使长笛滤波电路选通AJMP KEYPRO ;跳转回键盘扫描程序PIANO:MOV P1, #02H ;使钢琴琴滤波电路选通AJMP KEYPRO ;跳转回键盘扫描程序TRUMPET: MO

15、V P1, #04H ;使小号滤波电路选通AJMP KEYPRO ;跳转回键盘扫描电路VIOLIN: MOV P1, #08H ;使小提琴滤波电路选通AJMP KEYPRO ;跳转回键盘扫描电路PICCOLO:MOV P1, #10H ;使短笛滤波电路选通通AJMP KEYPRO ;跳转回键盘扫描电路PLAY: ; 弹琴子程序ORG 0F00H ;子程序入口地址SJMP MAINORG 0F1BH ;设置中断入口地址LJMP TINT1MAIN:MOV TMOD, #10H ; 计时器控制字T1方式计时SETB EA ;开中断总开关SETB ET1 ; 允许T1中断SETB TR1 ;定时开始

16、MOV DPTR, #TABLE1 ;查询音律表PUSH ACC MOVC A, A+DPTRMOV TH1,A ;音律表查询值高八位赋值POP ACCINC AMOVC A, A+DPTRMOV TL1,A ;音律表查询值低八位赋值ACALL DLAYAJMP KEYPRO ;跳转回键盘扫描程序TINT1:JB P1.0, FLUTE_ON ;判断是否跳到长笛音色档JB P1.1, PIANO_ON ;判断是否调到钢琴音色档JB P1.2, TRUMPET_ON ;判断是否调到小号音色档JB P1.3, VIOLIN_ON ;判断是否跳到小提琴音色档JB P1.4, PICCOLO_ON ;

17、判断是否跳到短笛音色档POP DPHPOP DPLPUSH DPLPUSH DPHRETIPOP DPHPOP DPLPUSH DPLPUSH DPHRETIPOP DPHPOP DPLPUSH DPLPUSH DPHRETIPOP DPHPOP DPLPUSH DPLPUSH DPHRETIPOP DPHPOP DPLPUSH DPLPUSH DPHRETIDLAY: MOV R2, #0F0H ;延时程序DL2: MOV R3,#0F0HDL1: NOP NOP DJNZ R3, DL1 DJNZ R2, DL2 RETTABLE1: ;音律表DW 0F88BH ;-1DW 0F95BH

18、;-2DW 0FA14H ;-3DW 0FA67H ;-4DW 0FB07H ;-5DW 0FB8FH ;-6DW 0FB9EH ;-6#DW 0FC0BH ;-7DW 0FC43H ;1DW 0FCACH ;2DW 0FD09H ;3DW 0FD33H ;4DW 0FD83H ;5DW 0FDC7H ;6 DW 0FDE7H ;6#DW 0FE05H ;7DW 0FE22H ;+1DW 0FE56H ;+2DW 0FE84H ;+3DW 0FE9AH ;+4DW 0FEC1H ;+5DW 0FEE3H ;+6DW 0FEF3H ;+6#DW 0FF02H ;+7 ORG 0F00HSUB_S

19、ONG: ;自动播放歌曲的子程序-1 EQU 0H ;低音域简谱码-2 EQU 1H-3 EQU 2H-4 EQU 3H-5 EQU 4H-6 EQU 5H-6# EQU 6H-7 EQU 7H1 EQU 8H ;中音域简谱码2 EQU 9H3 EQU 0AH4 EQU 0BH5 EQU 0CH6 EQU 0DH6# EQU 0EH7 EQU 0FH+1 EQU 10H ;高音域简谱码+2 EQU 11H+3 EQU 12H+4 EQU 13H+5 EQU 14H+6 EQU 15H+6# EQU 16H +7 EQU 17HFREQ_TEMP .EQU 31H TIME_TEMP .EQU

20、32H TH0_TEMP .EQU 33HTL0_TEMP .EQU 34HORG 00H ;播放乐曲子程序的主程序JMP STARTORG OBHJMP TIMER0START: MOV SP, #50HMOV IE, #10000010B ;中断,EA=ET0=1MOV TMOD, #00000001B ; 设定计数器0为mode1BEGIN:MOV A, #00HMOVC A,A+DPTR ;取得简谱码MOV FREQ_TEMP,A INC DPTR ;指向下一个地址MOV A, #00HMOVC A, A+DPTR ;取得节拍码MOV TIME_TEMP, AJZ STOP ;比较唱歌

21、是否结束PUSH DPHPUSH DPLMOV A,FREQ_TEMPCJNE A, #FFH, SING_SONG ;比较是否停止发音CLR TR0 ;停止计时JMP HOLDSING_SONG:CLR TR0 ;停止计时MOV DPTR, #TABLE ;频率值存放开始地址MOV A, FREQ_TEMP ;RL A ;FREQ_TEMP地址乘以2MOVC A, A+DPTR ;取得频率值高位组MOV TH0,A ;TH0=频率值高位组MOV TH0_TEMP, AMOV A, FREQ_TEMPRL A ;FREQ_TEMP地址乘以2INC A ;再加1MOVC A,DPTR ;取得频率

22、值低位组MOV TL0,A ;TL0=频率值低位组MOV TL0_TEMP,ASETB TR0 ;开始计时HOLD:CALL DELAY_TIME ;延迟节拍数POP DPLPOP DPHINC DPTR ;指向下一个地址JMP BEGIN STOP CLR TR0 ;乐曲播放结束 SETB P1.0 ;关掉蜂鸣器 JMP $DELAY_TIME: ;节拍数DELAY #254, #245 ;125msDJNZ TIME_TEMP, DELAY_TIMERETTIMER0:MOV TH0, TH0_TEMP ;重新载入频率值高位组MOV TL0, TL0_TEMP ;重新载入频率值低位组JB

23、P1.0, FLUTE_ON ;判断是否调长笛音色档JB P1.1, PIANO_ON ;判断是否调到钢琴音色档JB P1.2, TRUMPET_ON ;判断是否调到小号音色档JB P1.3, VIOLIN_ON ;判断是否跳到小提琴音色档JB P1.4, PICCOLO_ON ;判断是否跳到短笛音色档FLUTE_ON: ;若是长笛音色档,则是长笛版乐曲POP DPHPOP DPLPUSH DPLPUSH DPHRETIPIANO_ON: ;若是钢琴音色档,则是钢琴版乐曲POP DPHPOP DPLPUSH DPLPUSH DPHRETITRUMPET_ON: ;若是小号音色档,则是小号版乐曲

24、POP DPHPOP DPLPUSH DPLPUSH DPHRETIVIOLIN_ON: ;若是小提琴音色档,则是小提琴版乐曲POP DPHPOP DPLPUSH DPLPUSH DPHRETIPICCOLO_ON: ;若是短笛音色档,则是短笛版乐曲POP DPHPOP DPLPUSH DPLPUSH DPHRETITABLE:DW 0F88BH ;-1DW 0F95BH ;-2DW 0FA14H ;-3DW 0FA67H ;-4DW 0FB07H ;-5DW 0FB8FH ;-6DW 0FB9EH ;-6#DW 0FC0BH ;-7DW 0FC43H ;1DW 0FCACH ;2DW 0FD

25、09H ;3DW 0FD33H ;4DW 0FD83H ;5DW 0FDC7H ;6 DW 0FDE7H ;6#DW 0FE05H ;7DW 0FE22H ;+1DW 0FE56H ;+2DW 0FE84H ;+3DW 0FE9AH ;+4DW 0FEC1H ;+5DW 0FEE3H ;+6DW 0FEF3H ;+6#DW 0FF02H ;+7BUTTERFLY: ; 化蝶曲谱DW -3, 04H, -5, 03H, -6, 01H, 1, 03H, 2, 01H, -6, 01H, 1, 01H, -5, 02HDW 5, 03H, +1, 01H, 6, 01H, 5, 01H, 3, 0

26、1H, 5, 01H, 2, 08HDW 2, 02H, 2, 01H, 3, 01H, -7, 02H, -6, 02H, -5, 03H, -6, 01H, 1, 02H, 2, 02HDW -3, 02H, 1, 02H, -6, 01H, -5, 01H, -6, 01H, 1, 01H, -5, 08HDW 3, 03H, 5, 01H, -7, 03H, 2, 01H, -6, 01H, 1, 01H, 5, 05HDW -3, 02H, -5, 01H, -3, 01H, -5, 01H, -6, 01H, -7, 01H, 2, 01H, -6, 06H, -5, 01H, -

27、6, 01HDW 1, 03H, 2, 01H, 5, 02H, 3, 02H, 2, 02H, 3, 01H, 2, 01H, 1, 02H, -6, 01H, -5, 01HDW -3, 04H, 1, 04H, -6, 01H, 1, 01H, -6, 01H, -5, 01H, -3, 01H, -5, 01H, -6, 01H, 1, 01HDW -5, 08H, FFH, 08HDW 00H ;歌曲结束标志YOUTH: ; 童年曲谱DW FFH, 04H, 3, 02H, 5, 02H, 5, 04H, 3, 02H 6, 02H, 6, 02H, 7, 04H, 6, 04H,

28、6, 02H, 6, 02H, 5, 02HDW +1, 04H, +1, 02H, +1, 02H, +1, 02H, 6, 02H, +1, 02H, 6, 02H, 5, 10HDW FFH, 04H, 3, 02H, 5, 02H, 5, 04H, 5, 02H, 3, 02H, 6, 02H, 6, 02H, 7, 04H, 6, 04H, 6, 02H, 6, 02H, 5, 02HDW +1, 04H, +1, 02H, +1, 02H, +1, 02H, 6, 02H, +1, 02H, 6, 02H, +2, 10HDW +5, 02H, +5, 04H, +5, 04H,

29、+5, 02H, +3, 02H, +2, 02H +1, 02H, +1, 04H, 6, 04H, +1, 02H, 6, 02H, +1, 02HDW +2, 03H, +2, 01H, +2, 02H, +2, 02H, +2, 02H, +1, 02H, +3, 02H, +2, 02H +2, 10HDW +3, 02H, +3, 04H, +3, 02H, +3, 02H, +2, 02H, +2, 02H +1, 02H, +1, 04H, +1, 02H, +2, 02H, +1, 02H, 6, 02H, 5, 02HDW 5, 02H, 5, 04H, 5, 02H, 6

30、, 02H, 5, 02H, +2, 02H, +3, 02H +1, 10HDW 00H ;歌曲结束标志MULIPLY_OF_THE_DRAGON: ; 龙的传人曲谱DW 6, 04H, 7, 02H, +1, 02H, +2, 04H, +3, 02H, +2, 02H, +1, 04H, +1, 02H, 7, 02H, 6, 08HDW 6, 04H, 7, 02H, +1, 02H, +2, 04H, +3, 02H, +2, 02H, +1, 04H, +1, 02H, 2, 02H, 3, 08HDW 6, 04H, 7, 02H, +1, 02H, +2, 04H, +3, 0

31、2H, +2, 02H, +1, 04H, +1, 02H, 7, 02H, 6, 08HDW 7, 04H, 7, 04H, 7, 04H, +1, 02H, 7, 02H 6, 04H, 6, 02H, 5, 02H, 6, 08H DW +3, 04H, +3, 04H, +3, 04H, +2, 02H, +1, 02H +2, 04H, +2, 02H, +3, 02H, +2, 08HDW +1, 04H, +1, 04H, +1, 04H, +2, 02H, +1, 02H 7, 04H, 7, 02H, +1, 02H, 7, 08HDW +3, 04H, +3, 04H, +

32、3, 04H, +2, 02H, +1, 02H +2, 04H, +2, 02H, +3, 02H, +2, 08HDW +1, 04H, +1, 04H, 7, 04H, 1, 02H, 7, 02H 7, 04H, 7, 02H, +1, 02H, 7, 08HDW 00H ;歌曲结束标志七总结 在过去的一周里,我们的主要精力都集中在电子琴的设计上。开始的头两天,我们去图书馆查阅电子琴的相关资料,熟悉了解一般电子琴的工作原理。对于电子琴有了基本的了解之后,我们开始了我们基于单片机的简易电子琴的总体方案设计。如何发出不同频率的声音?键盘用什么实现?需要用/,/转换吗?如果需要,该如何连接芯

33、片?能做出电子琴音色调控装置吗?如何改变电子琴的音色?如何实现电子琴自动放音功能?I/O口该如何扩展?需要电子琴节拍控制器吗?能够控制电子琴声音的强弱吗?一系列的问题堆在我们面前,亟待解决。由于单片机这门课应用性特别强,需要多动手去实践才能切实地学好,而我们平时太缺少这样的实践机会,因此对于单片机的很多问题仍然是一知半解。面对这么多问题,一个接一个,我们一开始都很泄气。但是,当生活不允许你说不的时候,你是没有选择的。有句话说的好,一个人的潜能往往在绝境中才会释放出来。我们就处于这样的境地,所以也就不得不拼命开始看单片机的相关资料。有两天,我每天花了10小时来看单片机的原理,早上天还没亮就起来,

34、顶着寒风跑到自习室去抢位置,在那一坐就是一天。平日里懒散的习惯在这两天被打入冷宫,一个全新的我开始了全新的生活。正是在这两天,我慢慢懂了什么叫做中断,定时器如何工作,8051内部的结构,键盘电路该如何连接。潜能就是被逼出来的,而男人,就应该对自己狠一点!转眼元旦就到了,宿舍里四个同学,两个回家去了,一个看望远方的另一半去了,就剩我一个人。新年钟声敲响的那一刻,我还在昏暗的灯光下看着那本从图书馆角落里翻出来的电子琴原理参考书。元旦是我们最后的机会,一旦错过就在也不会有了。所以,我们都使尽浑身解数去奋力一搏,争取能在三天假期内完成简易电子琴设计。三天里,我们唯一的目标就是尽快搞定电子琴设计。我们一个问题一个问题攻克。每解决一个问题,我们都激动不已,毕竟是自己设计的东西,颇有些成就感。第一天过去之后,我们已经确定了我们设计的电子琴可以实现的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论