电子琴设计6.doc_第1页
电子琴设计6.doc_第2页
电子琴设计6.doc_第3页
电子琴设计6.doc_第4页
电子琴设计6.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

电子琴论文 电子琴 一、 设计任务设计制作一个电子琴。二、 设计要求1. 基本要求:1) 可以通过按键控制发音,能够发出1、2、3、4、5、6、7、i等八个音符;2) 可以播放已存储的音乐;3) 能够自动演奏多首(两首以上)乐曲,且演奏方式可选择(如重复播放或者顺序播放等)。2. 扩展要求:1) 可以发出八个以上的音符;2) 进行音调、音量的选择;3) 可以对编奏乐曲进行录音,在按下放音键时能演奏出来;摘 要 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用STC89C52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器模块组成核心主控制模块,流水灯、数码管模块组成扩展控制模块。在主控模块上设有16个按键和扬声器,在扩展模块中设有流水灯和3位数码显示管。主控模块利用了STC89C52单片机的P3 I/0输出口和P23 I/0输出口, 以实现键盘的识别和蜂鸣器的发声功能。扩展模块利用了STC89C52单片机的P1和P2 I/O输出口,以实现流水灯和计时功能。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。总体方案电子琴原理 声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线不断的输出“高”“低”电平,则在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,若再利用程序控制“高”“低”电平的持续时间,就能改变输出波形的频率,从而改变音调。高中低音符与单片机计数T0相关的计数值如下表所示 音符 频率(HZ)简谱码(T值) 音符 频率(HZ)简谱码(T值) 低1 DO 262 63628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 乐曲中,每一音符对应着确定的频率,表1给出C调时各音符频率。如果单片机某个口线输出“高”“低”电平的频率和某个音符的频率一样,那么将此口线接上喇叭就可以发出此音符的声音。本系统就是根据此原理设计,对于AT89C2051单片机来说要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时间再输出低电平,如此循环的输出就会产生一定频率的方波,通过改变延时的时间就可以改变输出方波的频率,而单片机延时主要有两种方法:第一种方法是使用循环语句来实现延时,让单片机循环的执行某条指令然后根据单片机每条指令运行的时间以及循环的次数来计算延时时间。如下所示:在上面的延时程序中可以看出:DJNZ指令执行时间为2个机器周期,MOV指令执行时间为1个机器周期,对于单片机的晶振频率为12MHz时机器周期为1s。因此可以根据这些指令的执行时间和每条指令的循环次数计算出以上的延时程序延时时间大约为50ms。但这种方法的计算的延时时间不是很准确并且为达到一定的延时时间先必须进行很复杂的运算。所以在延时时间要求不严格的时候才采用这种方法。但对于电子琴电路由于每个音符的频率值要求比较严格,变化范围不能太大,因此产生方波的频率也要求比较严格,不能采用延时程序来产生此方波。第二种方法是使用单片机的定时计数器延时。AT89C2051单片机内部有两个16位的定时计数器T0和T1,单片机的定时计数器实际上是个计数装置它既可以对单片机的内部晶振驱动时钟计数也可以对外部输入的脉冲计数,对内部晶振计数时称为定时器,对外部时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时,每个机器周期定时计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU;对外部输入的时钟信号计数时,外部时钟的每个时钟上升沿定时计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU。因此,如果知道单片机的机器周期或者外部输入时钟信号的周期,单片机就可以根据定时器的计数值计算出定时的时间。用此方法定时十分准确,想得到多大的延时时间就可以给定时器赋一定的计数初值,定时器从预先设置的计数初值开始不断增1当增加到计数最大值时计数完毕,调整计数初值的大小就可以调整定时器定时的时间,从而达到准确的延时。本系统中就采用第二种方法通过定时/计数器延时。本系统的具体电路如右图所示。图中P11-P17分别接7个按键对应着乐曲中的1、2、3、4、5、6、7七个音符。P36口通过功率放大芯片LM386与喇叭相连。当P11P1.7中有一个按键按下时单片机便执行相应的子程序对定时器赋一个计数初值同时使P36口输出高电平。当定时器定时结束时将P36口的值取反并重新赋计数初值继续计数,再次计完时再将P36口的值取反再赋初值计数,如此循环便在P36口产生一定频率的方波,LM386将此方波经过功率放大后通过喇叭输出便产生对应音符的声音。按不同的按键单片机便执行不同的子程序给定时器赋不同的初值得到不同频率的方波从而输出不同的声音,因此按一个按键输出一种音符。在单片机的特殊功能寄存器中有6个寄存器(TH1、TH0、TL1、TL0、TMOD、TCON)是用来控制单片机的定时器的,通过编程对这些特殊功能寄存器的读写就可以控制单片机的两个定时器T0、T1。当单片机复位时这6个寄存器默认值都是00H。特殊功能寄存器中TMOD和TCON是定时器的方式控制寄存器。图2为TMOD寄存器的内部结构,图3为TCON寄存器的内部结构。TMOD和TCON是寄存器的名称,我们在写程序时就可以直接用这个名称来指定它们,当然也可以直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。从图2中可以看出,TMOD被分成两部份,每部份4位。分别用于控制T1和T0。从图3中可以看出,TCON也被分成两部份,高4位用于定时计数器,低4位则用于中断。单片机定时计数器有四种工作方式,方式0、方式1、方式2、方式3,除方式3外,T0和T1有完全相同的工作状态,下面以T1为例,分述各种方式的特点和用法。图4为定时计数器T1在工作方式0下的内部结构图。从图4中可以看出计数脉冲要进入计数器TR1(或TR0)要为1,开关才能合上,脉冲才能过来。因此,TR1(O)称之为运行控制位,可用指令SErB来置位以启动计数器,定时器运行,用指令CLR来关闭定时计数器的工作。当计数脉冲进入计数器后,计数脉冲加到TL1的低5位,从预先设置的计数初值开始不断增1。TL1计满后,向THl进位。当TL1和TH1都计满后,置位T1的定时器回零标志TF1,从此表明定时时间或计数次数已到,单片机可以根据标志位判断定时器的状态,从而执行相应的程序。 1工作方式0定时器,计数器的工作方式O称之为13位定时计数方式。它由TL(10)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(10)的高3位未用。对于定时器的工作模式可以根据定时器的寄存器TMOD来设置:M1M0:定时计数器共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。CT:定时计数器即可作定时用也可用计数用,如果C/T为O就是用作定时器(开关往上打),如果CT为1就是用作计数器(开关往下打)。一个定时计数器同一时刻要么作定时用,要么作计数用,不能同时用的。GATE:当我们选择了定时或计数工作方式后,定时计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时计数是否工作,只取决于TR1。GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1引脚的控制,只有TRl为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性可以用来测量一个信号的高电平的宽度。2工作方式1工作方式1是16位的定时计数方式,将M1M0设为01即可,其它特性与工作方式0相同。3:工作方式28位自动装入时间常数方式。由TL1构成8位计数器,TH1仅用来存放时间常数。看图5所示,每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。这是由硬件自动完成的,不需要由人工干预。通常这种式作方式用于波特率发生器,用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是最妙不过了。4工作方式32个8位的计数器,只适合于定时器0。这种式作方式之下,定时计数器0被拆成2个独立的定时计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而THO则只能作为定时器来用。我们知道作定时、计数器来用需要控制位TR0,计满后溢出需要有溢出标记TF0。T0被分成两个来用,那就要两套控制及溢出标记,TLO还是用原来的T0的标记,而TH0则借用T1的标记。如此T1就无标记、控制可用因此一般只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。(二)定时器计数器的定时计数范围工作方式O:13位定时计数方式,因此,最多可以计到213,也就是8192次。对于12MHz的晶振,单片机的机器周期是1us。则工作方式0最大定时时间是8.192us。工作方式1:16位定时计数方式,因此,最多可以计到216,也就是65536次。对于12MHz晶振,工作方式1最大定时时间是65536s。工作方式2和工作方式3,都是8位的定时计数方式,因此,最多可以计到28,也说是256次。对于12MHz晶振,工作方式1最大定时时间是256s。计数初值的计算方法:用最大计数量减去需要的计数次数即可。例:如果T0运行于定时状态,单片机的晶振是12MHz,要求定时lOOus,那么定时器要计100个机器周期,当TO工作在工作方式O时计数初值应该是8192100=8092;工作在方式1时的计数初值应该是65536-100=65436;工作在方式2,3时的计数初值应该是256100=156。一、方案论证与比较A. 主控模块1.控制器部分方案一:AT89c52 方案二:STC89c52方案比较:两者内部硬件结构不一样,内部硬件资源不一样,相比之下,一般stc的同类型的单片机资源比at的多,执行速度也快。因此通过比较两者的优劣行我们选择使用STC89c522.蜂鸣器部分方案一:0.25W / 8欧喇叭发声方案二:2.5W / 8欧喇叭发声方案比较:使用0.25W / 8欧喇叭可以直接使用单片机驱动元件,使用2.5W / 欧喇叭则需要外加三极管驱动电路,但大功率喇叭的音质效果比前者更佳,故为了电子琴整体性考虑,我们选用了0.5W功率喇叭3.键盘部分方案一 独立式键盘每键都有相应的I/O口对应,编程容易控制,实现方便;但拒于IO口有限,能接的按键不能太多,而本系统需用户根据需要调整的参数较多,用独立按键会使操作变得复杂。方案二 4*4键盘利用8个IO口得到16个按键,可使操作介界变得简单,操作也方便;缺点:软件处理比独立按键复杂。通过比较,方案二为最佳方案。B扩展模块4.显示部分方案一:3位数码管 利用数码管的段选和位选外加2个74HC573芯片实现3位09的数码管显示。方案二:液晶显示屏 利用液晶显示功能实现数字显示,以实现计时功能。方案比较:3位数码管程序编辑简单,操作方便,制作容易,液晶显示屏功能较强,但考虑适合性,3位数码管更适合本电子琴电路。5流水灯部分方案一:串联1K上拉电阻,低电平控制LED灯 方案二:直接串入8个I/O口,高电平控制 方案比较:方案一串入上拉电阻,起保护电路作用,安全可靠,方案二不科学,且驱动电流不足,选用方案一。 C电源部分方案一:自制直流稳压电源优点:可结合本系统对电源电压和电流的要求,自行设计制作电源缺点:耗时长,需调试方案二:5V USB电源方案比较:因自制电源耗时长,需调试,5V USB电源电路工作稳定制作简便,节省资源,故采用方案二。二、系统的具体设计及实现1.系统总框图STC89C52RC 单片机流水灯模块 复位电路模块USB电源模块蜂鸣器模块键盘模块数码管模块本电子琴系统以STC89C52单片机为系统核心,配合3位数码管模块、流水灯模块、矩阵键盘模块和蜂鸣器模块4部分组成,很好地实现了电子琴的弹奏,乐曲的播放和计时功能。2 硬件设计21 矩阵键盘在本系统中,针对用户调整各项参数时的需要,我们采用了4*4键盘,只占用8个IO口(P3口)就实现了16个按键,使操作界面更加人性化,操作过程更加简单、方便。键盘的原理图如下。 2.2 三位数码管 本系统使用5361AS共阴极3位数码管,共有12管脚,显示清晰,功能使用,并利用2片74HC573芯片对数码管进行控制,以及串入10K上拉电阻,以实现计时计数功能。数码管原理图如下。2.3流水灯 流水灯模块使用8位LED排列电路,串上1K上拉电阻,利用单片机芯片的P1输出I/0口,实现流水灯功能。流水灯原理图如下。 2.4蜂鸣器蜂鸣器使用0.5W/8欧蜂鸣器,利用三极管驱动电路,串联一10K电位器(实现调节音量),接入单片机P2.3 I/O输出口,实现发声功能。原理图如下。25复位电路 复位电路由一矩阵键盘、一电解电容和两电阻组成,接入单片机RESET口,实现系统复位功能。原理图如下。 26 USB电源USB电源原理图如下。3 软件设计系统软件总流程图如下。开机时。第一步是对定时器T0进行初始化,设定它的工作状态(对于本系统将T0设定为工作方式O);然后判断是否有键按下,如果没有按键按下,继续判断,如果有按键按下,则判断是哪个键按下;再根据按键的功能将计数初值装入定时器T0中中并启动T0,当T0定时完毕后,重新装入计数初值继续定时并将P36取反,再次定时完毕后再一次的装入计数初值继续定时并将P36取反,一直循环此操作直到按键释放为止,按键释放后停止T0工作并再次判断是否又有按键按下,并继续执行以前的过程。 定时器T0工作在方式0,13位计数方式所以最大的计数次数为213=8192次,由于单片机的晶振是12MHz则机器周期是1s,即定时器最大可以定时8192s。各个音符周期的一半即高电平或低电平持续的时间就是定时器需要定时的时间,所以对于各个音符的计数初值计算方法如下:设音符的频率为f,则计数初值=8192一各个音符的周期=8192-计数初值如表2所示:参考文献: 1 单片微机原理及应用 清华大学出版社 方方、周伟 主编 2单片机原理及应用 西安电子科技大学出版社 柴钰 主编 3基于51单片机的简易电子琴设计 洪家政、段杰完整的系统原理图 完整的系统源代码#include /52单片机头文件#include /包含有左右循环移位子函数的库#define uint unsigned int /宏定义#define uchar unsigned char /宏定义sbit beep=P23;uint fre;uchar th0_f; /在中断中装载的 T0 的值高 8 位 uchar tl0_f; /在中断中装载的 T0 的值低 8 位 uchar code tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar code table= 63628,63835,64021,64103, 64260,64400,64524,64580, 64684,64777,64820,64898, 64968,65030,65058,65110;uchar num,temp;void delay(uint z)/延迟函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void light(uchar a)P1=taba;/*temp=P3; beep=beep; fre=tableaa; th0_f=(65536-fre)/256; tl0_f=(65536-fre)%256; TR0=1;*/uchar keyscan();/*void display(uchar aa);*/ void main() /主函数 TMOD = 0x11; TR0 = 0; ET0 = 1; EA = 1; num=17; while(1)P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3; temp=temp&0xf0;switch(temp)case 0xe0:num=0;break;case 0xd0:num=1;break;case 0xb0:num=2;break;case 0x70:num=3;break; P1=tabnum; temp=P3; beep=beep; fre=tablenum; th0_f=(65536-fre)/256; tl0_f=(65536-fre)%256; TR0=1;delay(50); beep=1;delay(50); temp=temp&0xf0;while(temp!=0xf0)beep=1;temp=P3;temp=temp&0xf0; TR0=0;P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3; temp=temp&0xf0;switch(temp)case 0xe0:num=4;break;case 0xd0:num=5;break;case 0xb0:num=6;break;case 0x70:num=7;break; P1=tabnum; temp=P3; beep=beep; fre=tablenum; th0_f=(65536-fre)/256; tl0_f=(65536-fre)%256; TR0=1;delay(50); beep=1;delay(50); temp=temp&0xf0;while(temp!=0xf0)temp=P3;temp=temp&0xf0; TR0=0;P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3; temp=temp&0xf0;switch(temp)case 0xe0:num=8;break;case 0xd0:num=9;break;case 0xb0:num=10;break;case 0x70:num=11;break; P1=tabnum; temp=P3; beep=beep; fre=tablenum; th0_f=(65536-fre)/256; tl0_f=(65536-fre)%256; TR0=1; delay(50); beep=1;delay(50); temp=temp&0xf0;while(temp!=0xf0)temp=P3;temp=temp&0xf0; TR0=0;P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3; temp=temp&0xf0;switch(temp)case 0xe0:num=12;break;case 0xd0:num=13;break;case 0xb0:num=14;break;case 0x70:num=15;break; P1=tabnum; temp=P3; beep=beep; fre=tablenum; th0_f=(65536-fre)/256; tl0_f=(65536-fre)%256; TR0=1; delay(50); beep=1; delay(50); temp=temp&0xf0;while(temp!=0xf0)temp=P3;temp=temp&0xf0; TR0=0; void timer0() interrupt 1 /定时器0中断 TH0=th0_f;TL0=tl0_f;beep=beep; /以下几个if分别用来选取不同的频率/*低1 DO 262 63628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 */#include#define uint unsigned int#define uchar unsigned charuchar temp,aa,bai,shi,ge;uchar Count;sbit _Speak =P23 ;/讯响器控制脚sbit key1=P37;sbit key2=P36;unsigned char code SONG = /祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00, /路边的野华不要采0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0

温馨提示

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

评论

0/150

提交评论