基于单片机的带流水灯的音乐盒设计_第1页
基于单片机的带流水灯的音乐盒设计_第2页
基于单片机的带流水灯的音乐盒设计_第3页
基于单片机的带流水灯的音乐盒设计_第4页
基于单片机的带流水灯的音乐盒设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、前言本次课程设计是一个基于AT89C51系列单片机的音乐盒的设计,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器和led显示电路组成。使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路led的变化花样。本音乐盒共有两首歌曲,花样灯花样共计3种。播放歌曲时,蜂鸣器发出某个音调,与之对应的led亮起。本设计利用keil编程软件对音乐盒源程序进行编程并调试,配合proteus仿真软件对硬件进行仿真调试。该音乐盒使用c语言编程和汇编语言相结合,程序段使用C语言,歌曲音谱和led显示花样使用汇编语言。目录绪论11.设

2、计题目要求21.1 课题意义21.2设计目的21.3设计要求22 方案设计及硬件设计及其原理22.1 方案设计和硬件设计22.1.1系统总体方案设计22.1.2 音乐盒设计32.1.3硬件总体设计32.1.4硬件仿真图及功能42.2相关知识,原理和理论介绍5 2.2.1 AT89C52简介52.2.2 LED显示电路设计与原理52.2.3 时钟振荡电路52.2.4 花样灯3种花样图63软件设计73.1音调、节拍以及编码的确定方法73.1.1音调的确定73.1.2 节拍的确定83.1.3 编码93.2软件程序设计103.2.1 主程序流程图103.2.2 播放音乐子程序设计133.3 调试成果1

3、54心得体会15参考文献17附录18绪论21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。随着人类社会的发展,人们对视觉、听觉方面的享受提出了

4、越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。1 设计题目要求1.1课题意义音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。音乐盒有着300多年的发展历史,是人类文明发展的历史见证。传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,

5、从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。1.2设计目的设计一个基于

6、AT89C52系列单片机的音乐盒,利用按键切换演奏出不同的乐曲。蜂鸣器发出某个音调,与之相对应的LED亮起。使用两个按键,一个用来切换歌曲,另一个切换八路LED的变化花样。1.3设计要求1)电路有两种工作模式:演奏音乐模式和花样灯模式。演奏音乐模式:演奏完整的一首的歌曲,八路LED随着音乐变化。花样灯模式:八路LED变化出各种花样,蜂鸣器随着发出音乐声。2)按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲。3)按下按键2进入花样灯模式,再按切换LED花样,共三种花样。2 方案设计及硬件设计及其原理2.1方案设计及硬件设计2.1.1系统总体方案设计音乐盒的系统结构以AT89C51单片机位控制

7、核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。系统组成框图如图2.1.1所示。图2.1.1 系统组成框图 2.1.2音乐盒设计音乐盒的功能结构如图2.1.2所示。Key1负责切换播放歌曲,播放歌曲共2首,分别是月亮代表我的心和国歌。Key2负责切换LED显示花样,显示花样共3种,第一种顺序显示,第二种由两边向中间移动然后向两边移动,第三种循环显示。图2.1.2 音乐盒功能结构图 2.1.3硬件总体设计图2.1.3总体设计框2.1.4硬件仿真图及功能总体硬件电路实现功能如下,如图2.1.4所示1)

8、电路中用P3.2、P3.3控制按键。2)P1.0P1.7控制LED。3)P2.7控制蜂鸣器。4)电路为11.0592MHZ晶振频率工作,起振电路中C1、C2均为 30PF。 图2.1.4 硬件电路图2.2 相关知识,原理和理论介绍2.2.1 AT89C52简介AT89C52是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2052是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器

9、件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,AT89C2052是它的一种精简版本。AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2.2.1所示图2.2.1 AT89C52系列单片机2.2.2 LED显示电路设计与原理 LED显示电路是由8个LED发光二极管组成,连接方式为共阳极,LED接到单片机的P1口,若为低电平,可使LED亮起。发光二极管的亮、灭由内部程序控制,8个LED发光二极管分别对应不同的音阶

10、,所以LED会随着音阶的变化按规律亮、灭。2.2.3 时钟振荡电路AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF10PF,而如果使用陶瓷振荡器建议选择40PF10PF。用户也可以采用外部时钟。采用外部时钟的电路如

11、图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如下: 图2.2.3 单片机内部、外部振荡电路2.2.4 花样灯3种花样图1)第一种花样灯显示方式为:从D1移向D2,然后D1熄灭,再从D2移向D3,然后D2熄灭,以此类推,往复循环。图2.2.4.1 第一种花样2)第二种花样灯显示方式为:从两边向中间移动,首先从D1移向D8,再从D8移向D2,以此类推,往复循环。具体如图5.

12、3。图2.2.4.2 第2种花样3)第三种花样灯显示方式为:从D1移向D2,然后D1熄灭,再从D2移向D3,然后D2熄灭,以此往复循环。与第一种方式的不同之处为:当D1移向D2时,D1不熄灭,再从D2移向D3时,D2也不熄灭,以此类推。图2.2.4.3 第3中花样3 软件设计按键1使得count1在1和2之间切换,按键2使得count2在14之间切换。程序检测count1的值,count1等于1时播放第一首歌曲,等于2时播放第二首。另一方面根据count2的值来切换LED的花样。count1和count2的值是互斥的,设置count1等于1、2时,count2同时设置为0;设置count2等于

13、14在本程序中设置了两个标志count1和count2,分别初始化为1和0。时,count1也同时设置为0。3.1音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。3.1.1 音调的确定不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所

14、以叫“音调”,即Tone。把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上,CD、DE、FG、GA、AB两音之间隔着一个黑键,他们之间的距离就是全音;EF、BC两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上号或者b号的叫变化音。叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频

15、率(266 Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍。1)要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。2)利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,

16、则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。3)例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次技术956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系公式如下:N=Fi2FrN:计算值;Fi:内部计时一次为1us,故其频率为1MHz;4)其计数值的求法如下:T=65536-N=65536-Fi2Fr例如:设K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的计算值T=65536-N=65536-Fi2Fr=655

17、36-10000002Fr=65536-500000/Fr低音DO的T=65536-500000/262=63627低音DO的T=65536-500000/523=64580低音DO的T=65536-500000/1047=650595)C调各音符频率与计数值T的对照表如表3.1.1所示。表3.1.1 C调各音符频率与计数值T的对照表低音频率T参数中音频率T参数高音频率T参数Do2621908229Do523956115Do10465757Do2771805217Do554903108Do11095454Re2941701204Re587852102Re11755151Re3111608193

18、Re62280497Re12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa3701351162Fa74067681Fa14804141So3921276153So78463877So15683838So4151205145So83160272So16613636La4401136136La88056868La17603434La4641078129La93253664La18653232Si4941012121Si98850661Si197630303.1.2 节拍的确定若要构成音乐,光有音调是不

19、够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0.5s,则1/4 拍为0.125s。至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不

20、同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。表3.1.2给出了节拍和节拍码的对照。表3.1.2节拍与节拍码对照节拍码节拍数节拍码节拍数11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍42/1拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍A2又1/2拍A1又1/4拍C3拍C1又1/2拍F3又3/4拍3.1.3 编码do re mi fa so la si分别编码为17,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位(在本程序中为165ms)

21、,一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18。举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。表3.1.3给出了简谱对应

22、的简谱码,T值和节拍数。表3.1.3 简谱对应的简谱码、T值、节拍数简谱发音简谱码T值节拍码节拍数5低音SO16426011/4拍6低音LA26440022/4拍7低音TI36452433/4拍1中音DO46458041拍2中音RE56468451又1/4拍3中音MI66477761又1/2拍4中音FA76482082拍5中音SO864898A2又1/2拍6中音LA964968C3拍7中音TIA65030F3又3/4拍1高音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF652173.2软件程序设计3.2.1主程序设计 主程序流程图:图3.2.1主

23、程序流程主程序代码:main() uchar x; count1=0; count2=1; P34=0;EA=1;EX0=1; IT0=1;EX1=1; IT1=1;TMOD=0x01;TH0=0; TL0=0; ET0=1; while(1) if(count1!=0) switch(count1) case 1: for(x=0;x<14;x+) duan=1; P1=huayang1x; beep(); delay1(300); duan=0; if(count1!=1) break; break; case 2: for(x=0;x<14;x+) duan=1; P1=hu

24、ayang2x; beep(); delay1(300); duan=0; if(count1!=2) break; break; case 3: for(x=0;x<16;x+) duan=1; P1=huayang3x; beep(); delay1(300); duan=0; if(count1!=3) break; break; case 4: for(x=0;x<8;x+) duan=1; P1=huayang4x; beep(); delay1(300); duan=0; if(count1!=4) break; break; else song(); delay1(1

25、000); 3.2.2 播放音乐子程序设计 播放音乐子程序:void song() uint temp; uchar jp;i=0; while(1) if(count2=0) break; if(count2=1) temp=qnzli; if(count2=2) temp=jmszli; if(temp=0xff) break; jp=temp/16; duan=1; P1=yinyuejp; duan=0; if(jp!=0) timeh=cuzhijp*2; timel=cuzhijp*2+1; else TR0=0; fm=1; delay(temp%16);TR0=0; fm=1;

26、 delay1(10); TR0=1; i+; TR0=0; fm=1; void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=19000;y>0;y-); void delay1(uint z) uint x,y; for(x=z;x>0;x-) for(y=112;y>0;y-); void beep() uchar i; for(i=0;i<50;i+) fm=fm; delay1(1); fm=1; 3.3调试成果 软件硬件结合调试成果图3.3只是一部分。图3.3 调试成果4 心得体会在这次课设中,从拿到课题

27、,查阅资料,编程,画仿真图,进行仿真,焊接,达到最终结果。只能说是一个比较浩大的工程。编程的时候没有想那么多,程序编好之后,keil显示的没有错误真的很高兴。可是按照程序画好仿真图的时候,仿真结果却出不来,达不到理想结果,咨询老师发现是中断的问题,可是改完中断之后还是有嘟嘟声,经过查资料之后,发现主程序也有问题,又继续接着改。终于出来了理想的结果。以为焊接是最简单的,没想到焊接了两天还是错误的,开始是没有给芯片接上地和电源,还是没有声音,发现是蜂鸣器的原因,因为电流太小,加上一个三极管和两个电阻终于出来了想要的歌声,当时真的很激动,毕竟这个是自己参与做出来的,还成功那个了。通过这次实验,我明白

28、了团队的力量是不容小觑的,不懂就要问,就要查资料,不能放任问题不管。参考文献1 李建忠.单片机原理及应用M,西安电子科技大学出版社,2008.2. 2 黄智伟.全国大学生电子设计竞赛系统设计M,北京:北京航空航天大学出版社,2006.6.3 黄智伟.凌阳单片机课程设计指导M,北京:北京航空航天大学出版社,2006.11.4 李广弟,朱月秀,王秀山.单片机基础M,北京:北京航空航天大学出版社,2001.7.5 赵曙光,郭万有,杨颂华.可编程逻辑器件原理开发与应用M,西安:西安电子科技大学, 2000.6 候伯亨.VHDL硬件描述语言与数字逻辑电路设计M, 西安:西安电子科技大学出版社, 1999

29、.7 康华光. 模拟电子技术基础(第四版)M, 武汉:华中理工大学出版社,1999.8 谭浩强.C语言程序设计(第二版)M,北京:清华大学出版社,1991.9 陈小忠,黄宁. 单片机接口技术实用子程序M,北京:北京人民邮电出版社, 2005.10 欧伟明,周春临,瞿遂春.电子信息系统设计M,西安电子科技大学出版社,2005.9.11 贾立新,王涌.电子系统设计与实践M,北京:清华大学出版社,2007.12 罗亚非.凌阳16位单片机应用基础M,北京:北京航空航天大学出版社,2003.13 雷思孝.凌阳单片机原理及实用技术M,西安电子科技大学,2004.附录源程序代码#include <re

30、g52.h> #define uchar unsigned char #define uint unsigned int sbit duan=P26; sbit key1=P32;sbit key2=P33;sbit fm=P27;sbit P34=P34;uchar code huayang1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf;uchar code huayang2=0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7,0xef,0xfb,0xdf,0xf

31、d,0xbf,0xfe;Uchar code huayang3=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff; char code huayang4=0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0; uchar count1;uchar count2;uchar timeh,timel,i; uchar code qnzl=0x02,0x82,0x16,0x32,0x54,0x02,0x52,0xA6, 0x32,0x54,0x02,0x52,0x64

32、,0x74,0xB6,0x64,0x52,0x5C,0x32,0x22, 0x16,0x12,0x14,0x32,0x22,0x16,0x12,0x14,0x22,0x32,0x26,0x12,0x94,0x22,0x32,0x2C,0x32,0x52,0x36,0x22,0x14,0x54,0xAC,0x92,0xA2,0x96,0xA2,0x96,0x82,0x3C,0x54,0x36,0x22,0x14,0x54, 0xAC,0x92,0xA2,0x16,0x12,0x14,0x22,0x32,0x2C,0x02,0x82, 0x16,0x32,0x56,0x12,0xA6,0x32,0

33、x56,0x52,0x66,0x72,0xB6,0x62, 0x1C, 0xff;uchar code jmszl=0x03,0x04,0x04,0xc2,0x14,0x12,0x12,0x12,0x11,0x11,0xc2,0xd1,0xe1,0x14,0x02,0x32,0x12,0x21,0x31,0x52,0x51,0x51,0x54,0x32,0x31,0x31,0x12,0x11,0x31,0x52,0x51,0x31,0x24,0x24,0x24,0x64,0x54,0x24,0x34,0x52,0x32,0x21,0x31,0x12,0x11,0x21,0x34,0x04,0x

34、52,0x51,0xd1,0x12,0x12,0x32,0x31,0x31,0x52,0x51,0x51,0x22,0x22,0x22,0xd2,0xd1,0x24,0x22,0xc2,0x14,0x12,0x34,0x32,0x32,0x54,0x54,0x54,0x54, 0x12,0x11,0x31,0x52,0x51,0x51,0x64,0x54,0x32,0x31,0x11,0x52,0x52,0x52,0x32,0x02,0x12,0x02,0xc4,0x14,0xa2,0xa1,0x11,0x52,0x52,0x52,0x32,0x02,0x12,0x02,0xc4,0x14,0

35、xc4,0x14,0xc4,0x14,0x14,0x04, 0x04,0x04,0x04,0x04, 0xff; uchar code cuzhi= 0xff,0xff,0xFC,0x8E,0xFC,0xED, 0xFD,0x43, 0xFD,0x6A, 0xFD,0xB3, 0xFD,0xF3, 0xFE,0x2D, 0xFE,0x47, 0xFE,0x76, 0xFE,0xA1, 0xFE,0xC7, 0xFE,0xD9, 0xFE,0xF9, 0xFF,0x16 ; Uchar yinyue=0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x0,0x0; void delay1(uint z); void delay(uint z); void song(); void beep();main() uchar x; count1=0; count2=1; P34=0;EA=1;EX0=1; IT0=1;EX1=1; IT1=1;TMOD=0x01;TH0=0; TL0=0; ET0=1; while(1) if(count1!=0) switch(count1) case 1: for(x=0;x<14;x+) duan=1; P1=huayang

温馨提示

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

评论

0/150

提交评论