基于單片機(jī)的數(shù)字音樂盒_第1頁
基于單片機(jī)的數(shù)字音樂盒_第2頁
基于單片機(jī)的數(shù)字音樂盒_第3頁
基于單片機(jī)的數(shù)字音樂盒_第4頁
基于單片機(jī)的數(shù)字音樂盒_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、山東建筑大學(xué)信息與電氣工程學(xué)院學(xué)院課程設(shè)計(jì)說明書山東建筑大學(xué)課 程 設(shè) 計(jì) 說 明 書題 目: 基于單片機(jī)的數(shù)字音樂盒課 程: 單片機(jī)原理及應(yīng)用B課程設(shè)計(jì)院 (部): 信息與電氣工程學(xué)院專 業(yè): 電子信息工程班 級: 學(xué)生姓名: 學(xué) 號: 指導(dǎo)教師: 高煥兵 張君捧完成日期: 2013年6月I目 錄摘 要I1 設(shè)計(jì)目的22 設(shè)計(jì)要求23 設(shè)計(jì)內(nèi)容33.1 設(shè)計(jì)原理33.2 方案設(shè)計(jì)33.3 電路各模塊說明43.4 器件選擇63.5系統(tǒng)設(shè)計(jì)83.6 軟件設(shè)計(jì)83.7 仿真調(diào)試及操作說明9總結(jié)與致謝10參考文獻(xiàn)11附錄12附錄一:基于單片機(jī)的數(shù)字音樂盒總電路圖12附錄二:音樂程序12摘 要20世紀(jì)

2、末,電子技術(shù)獲得了飛速的發(fā)展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個(gè)領(lǐng)域,基于單片機(jī)制作的電子式音樂盒,控制功能強(qiáng)大,可根據(jù)需要選歌,使用方便。所放歌曲的節(jié)奏可以根據(jù)需要進(jìn)行設(shè)置,根據(jù)存儲容量的大小,可以盡可能多的存儲歌曲。本設(shè)計(jì)由由單片機(jī)AT80C51芯片和LCD顯示器為核心,輔以必要的電路,構(gòu)成的一個(gè)單片機(jī)電子數(shù)字音樂盒。本設(shè)計(jì)采用4*4鍵盤,用Protel99來畫系統(tǒng)硬件圖,采用C語言進(jìn)行編程,編程后利用KEIL C51來進(jìn)行編譯,再生成的HEX文件裝入芯片中,采用proteus軟件來仿真,檢驗(yàn)功能得以正常實(shí)現(xiàn)。關(guān)鍵詞:單片機(jī);音樂盒;電路;播放01 設(shè)計(jì)目的單片機(jī)原理及應(yīng)用是高校

3、工程專業(yè)的一門專業(yè)基礎(chǔ)課,該門課程具有很強(qiáng)的實(shí)踐性。通過課程的學(xué)習(xí),使學(xué)生掌握基本概念、基本理論和基本技能。通過本次設(shè)計(jì)使同學(xué)們掌握對單片機(jī)的控制,實(shí)現(xiàn)自己編程,完成專業(yè)要求。2 設(shè)計(jì)要求1、利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂曲(最少儲存三首樂曲,每首不少于30秒)2、采用LCD顯示信息3、開機(jī)時(shí)有英文歡迎提示字符,播放時(shí)顯示歌曲序號(或名稱)4、可通過功能鍵選擇樂曲,暫停,播放 5、顯示樂曲播放時(shí)間或剩余時(shí)間3 設(shè)計(jì)內(nèi)容3.1設(shè)計(jì)原理 設(shè)計(jì)原理:通過按鍵給單片機(jī)的P2口輸入低電平,進(jìn)而利用程序來判斷是否執(zhí)行某一播放功能。而利用單片機(jī)的定時(shí)器0中斷來控制播放

4、樂曲。3.2 方案設(shè)計(jì)本實(shí)驗(yàn)采用AT80S51單片機(jī)的I/O口產(chǎn)生一定頻率的方波,配合鍵盤系統(tǒng),時(shí)鐘電路,復(fù)位電路以及液晶顯示電路,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂曲。共有4樂曲,每首樂曲都由相應(yīng)的按鍵控制,并且有開關(guān)鍵、暫停鍵、上一曲以及下一曲控制鍵。系統(tǒng)總體結(jié)構(gòu)框圖電源電路晶振電路鍵盤電路復(fù)位電路蜂鳴器LCD液晶 AT80C51單片機(jī)3.3 電路各模塊說明3.3.1時(shí)鐘電路此系統(tǒng)的時(shí)鐘電路設(shè)計(jì)是采用內(nèi)部方式,即是利用芯片內(nèi)部的振蕩電路。利用12MHZ的晶振做外部時(shí)鐘;AT80C51中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。

5、這個(gè)放大器與作為反饋元件的片外石英晶體(陶瓷)諧振器一起構(gòu)成自然振蕩器。外接石英晶體及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容C1,C2雖然沒有什么嚴(yán)格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,我們推薦電容使用30PF10PF(而如果使用陶瓷振蕩器建議選擇40PF10PF)。其電路圖如圖3-3-1所示圖3-3-13.3.2 復(fù)位電路51單片機(jī)的RST引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩脈沖周期(即二個(gè)機(jī)器周期)以上。一般有兩種復(fù)位方式:上電復(fù)位和手動(dòng)復(fù)位。復(fù)位電

6、路圖如圖3-3-2所示。圖3-3-23.3.2 控制電路鍵盤接口電路如圖,本次設(shè)計(jì)中,按鍵有7個(gè).鍵分別接于7根I/O線(P1口),各按鍵在實(shí)物連接上相互獨(dú)立,彼此的工作狀態(tài)互不影響,STC單片機(jī)自帶上拉電阻因此無需外接上拉電阻,用查詢法完成按鍵功能。其電路圖如圖3-3-2所示:圖3-3-23.3.3蜂鳴器電路:利用PNP管放大驅(qū)動(dòng)?;鶚O接10K歐姆的電阻,發(fā)射極接蜂鳴器,集電極接電源。其電路圖如圖3-3-3所示:圖3-3-33.4 器件選擇3.4.1 80C51單片機(jī)簡介該系列單片機(jī)是采用高性能的靜態(tài)80C51 設(shè)計(jì) 由先進(jìn)CMOS 工藝制造并帶有非易失性Flash 程序存儲器 全部支持12

7、 時(shí)鐘和6 時(shí)鐘操作 P89C51X2 和P89C52X2/54X2/58X2 分別包含128 字節(jié)和256 字節(jié)RAM 32 條I/O 口線 3 個(gè)16 位定時(shí)/計(jì)數(shù)器 6 輸入4 優(yōu)先級嵌套中斷結(jié)構(gòu) 1 個(gè)串行I/O 口 可用于多機(jī)通信 I/O 擴(kuò)展或全雙工UART以及片內(nèi)振蕩器和時(shí)鐘電路。外形及引腳排列如圖3-4-1所示. 圖3-4-13.4.2 鍵盤 鍵盤在單片機(jī)應(yīng)用系統(tǒng)中能實(shí)現(xiàn)向單片機(jī)輸入數(shù)據(jù),傳送命令等功能,是人工干預(yù)單片機(jī)的主要手段。(1)鍵盤輸入的特點(diǎn)鍵盤實(shí)質(zhì)上是一級按鍵開關(guān)的集合。通常,鍵盤開關(guān)利用了機(jī)械觸點(diǎn)的合、斷作用。(2)按鍵的確認(rèn)鍵的閉合與否,反映在行線輸出電壓上就呈

8、現(xiàn)高電平或低電平,如果高電平表示鍵斷開,低電平則表示鍵閉合,通過對行線電平高低狀態(tài)的檢測,便可確認(rèn)按鍵按下與否。為了確保CPU對一次按鍵動(dòng)作只確認(rèn)一次按鍵有效,必須消除抖動(dòng)的影響。(3)如何消除按鍵的抖動(dòng)采用軟件來消除按鍵抖動(dòng)的基本思想是:在一次檢測到有鍵按下時(shí),該鍵所對應(yīng)的行線為低電平,執(zhí)行一段延時(shí)10MS的子程序后,確認(rèn)該行線電平是不否仍為低電平,如果仍為低電平,則確認(rèn)為該行確實(shí)有鍵按下。當(dāng)按鍵松開時(shí),行線的低電平變?yōu)楦唠娖?,?zhí)行一段延時(shí)10MS的子程序后,檢測該行線為高電平,說明按鍵確實(shí)已經(jīng)松開。3.4.3 LCD液晶顯示1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字

9、、符號等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。3.5系統(tǒng)設(shè)計(jì)其系統(tǒng)原理圖如附錄一所示。3.6軟件設(shè)計(jì)程序設(shè)計(jì)流程圖如圖3-6所示. 先從主程序開始,接著初始化變量及 LCD 接口,然后初始化方波發(fā)生器、晶振管,使 LCD 顯示信息,就進(jìn)入了開機(jī)狀態(tài),等待動(dòng)作選擇按鍵,包括播放鍵,暫停鍵,停止鍵,當(dāng)然也可以選擇返回;加入選擇的是播放

10、鍵,LCD 上就會 -7-現(xiàn)實(shí)歌曲編號,與此同時(shí)演奏相應(yīng)的樂曲,此時(shí),你可以按上一曲或下一曲鍵,使其演奏上一個(gè)或者先一個(gè)樂曲。主程序流程圖 LCD顯示流程圖其程序代碼如附錄二所示。3.7 仿真調(diào)試及操作說明按照上面設(shè)計(jì)的電路在protel軟件內(nèi)畫圖, 打開單片機(jī)軟件開發(fā)系統(tǒng)Keil,選擇80c51單片機(jī),在其中編寫程序,運(yùn)行生成一個(gè)后綴名為hex的文件,然后將該文件下載到protel中的AT80c51單片機(jī)中進(jìn)行仿真,觀察實(shí)驗(yàn)現(xiàn)象。仿真能實(shí)現(xiàn)播放音樂,按鍵選擇曲目,暫停,播放功能。仿真成功后,安裝好實(shí)驗(yàn)板,然后將音樂程序下載到電路板內(nèi) ,觀察結(jié)果。能實(shí)現(xiàn)播放音樂,按鍵換曲等功能??偨Y(jié)與致謝一個(gè)

11、星期的摸索與實(shí)驗(yàn),雖然時(shí)間很短,但使我們不僅僅是對于單片機(jī)入門軟件與硬件的常用設(shè)計(jì)與功能,還使我們對于一項(xiàng)設(shè)計(jì)研究的制作過程所需要的詳細(xì)步驟和具體的實(shí)現(xiàn)方法的力度的掌握。當(dāng)然在這次寶貴的設(shè)計(jì)活動(dòng)中,經(jīng)驗(yàn)才是對于我們最大的收獲,而且還增強(qiáng)了自身對未知問題以及對知識的深化認(rèn)識的能力,用受益匪淺這個(gè)詞語來概括這次難忘的活動(dòng)我覺得再合適不過了。但是,光是完成了作品還是不可以自我滿足的,在從一開始的時(shí)候就懷著將作品制作得更加人性化,更加令人滿意,更加地使功能完美又方便地被應(yīng)用領(lǐng)域這個(gè)最終目的下,隨著對單片機(jī)這門學(xué)科的認(rèn)識加深,到達(dá)了拓展的程度,我想這個(gè)目的將在不遠(yuǎn)的時(shí)期內(nèi)被實(shí)現(xiàn)??傊?,這次設(shè)計(jì)從軟件編寫

12、、調(diào)試到軟硬件聯(lián)機(jī)調(diào)試,我們傾注了大量的時(shí)間和心血。真是曾經(jīng)為程序的編寫而冥思苦想過,曾經(jīng)為無法找出錯(cuò)誤而郁悶苦惱過,也曾經(jīng)為某一功能不能實(shí)現(xiàn)而猶豫彷徨過,但最終我們完成設(shè)計(jì)了。至此完成課程設(shè)計(jì),首先要感謝不畏辛辭的老師,通過老師的指導(dǎo),使我增漲了單片機(jī)的知識。其次,還要感謝我的同學(xué),在這次課程設(shè)計(jì)中,遇到了許多的困難,是通過詢問他們才解決的。 參考文獻(xiàn)1 徐崢穎編著.Protel99SE EDA 技術(shù)及應(yīng)用M.北京機(jī)械工業(yè)出版社2005.2 三恒星科技.MCS-51單片機(jī)原理與應(yīng)用實(shí)例M. 北京:電子工業(yè)出版社,2008.013 王為青,程國鋼.單片機(jī)Keil Cx51應(yīng)用開發(fā)技術(shù)M. 北京

13、:人民郵電出版社,2007.024 邊春遠(yuǎn)編著.MCS-51單片機(jī)應(yīng)用開發(fā)實(shí)用子程序M.北京人民郵電出版社2005.5 黃智偉凌陽單片機(jī)課程設(shè)計(jì)指導(dǎo)M,北京:北京航空航天大學(xué)出版社,2006.11. 6 李廣弟,朱月秀,王秀山.單片機(jī)基礎(chǔ)M,北京:北京航空航天大學(xué)出版社,2001.7. 7 康華光模擬電子技術(shù)基礎(chǔ)第四版)M, 武漢:華中理工大學(xué)出版社,1999.附錄附錄一:基于單片機(jī)的數(shù)字音樂盒總電路圖附錄二:音樂程序#include #define uchar unsigned char#define uint unsigned intsbit BEEP = P14; /蜂鳴器sbit k0

14、=P20;sbit k1=P21;sbit k2=P22;sbit k3=P23;sbit k4=P24;sbit k5=P25;sbit k6=P26;uint code Tone_Delay_Table = 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178 ;uchar code Song1_Tone=1, 1, 5, 5, 6, 6, 5,4, 4, 3 ,3, 2, 2, 1,5, 5, 4, 4, 3, 3, 2, 5, 5, 4, 4, 3

15、, 3, 2,1,1, 5, 5, 6, 6 ,5,4 ,4, 3, 3, 2, 2, 1,0xff;uchar code Song1_Time=2,2,2,2,2,3,4,2,2,2,2,2,2,4,2,2,2,2,2,2,4,2,2,2,2,2,2,5,2,2,2,2,2,2,5,2,2,2,2,2,2,5,0xff;uchar code Song2_Tone=1,2,3,1,1,2,3,1,3,4,5,3,4,5, 5,6,5,4,3,1, 5,6,5,4,3,1 ,1,5,1,0xff;uchar code Song2_Time=2,2,3,2,2,2,3,2,2,2,2,2,2,2,

16、2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,0xff; uchar code Song3_Tone = 1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xFF; uchar code Song3_Time = 2,1,1,2,1,1,1,2,1,1,3,2,1,1,2,4,1,1,2,1,1,1,0xFF; uchar code Song4_Tone = 8,9,2,3,7,6,2,3,10,11,1,2,3,1,2,3,3,4,5,6,5,3,5,6,5,3,5,3,2,1,1,2,3,0xFF; uchar code Son

17、g4_Time = 3,6,7,2,4,5,8,1,2,2,5,5,1,9,1,1,1,1,6,1,1,2,4,1,1,2,1,1,1,1,1,2,2,1,0xFF;uchar Song_Index = 0, Tone_Index = 0; /音樂片段索引,音符索引uchar *Song_Tone_Pointer, *Song_Time_Pointer; /音符指針,延時(shí)指針uchar i = 0; uchar j=0,k=0,m=0; /從當(dāng)前數(shù)組中取音符的位置 void DelayMS(uint ms) /延時(shí) uchar t; while(ms-) for (t = 0; t 120;

18、t+); void play0() /按鍵產(chǎn)生的INT0 ET0=1; TR0 = 0;k0=1; Song_Index = ( Song_Index + 1) % 4; /切換到下一音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer =

19、 Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; /從下一段音樂的第0個(gè)音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時(shí)間 continu

20、e; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play1() ET0=1; TR0 = 0;k1=1; Song_Index = ( Song_Index + 3) % 4; /切換到上一段音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_To

21、ne; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; i = 0; /從上一段音樂的第0個(gè)音符開始 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; i

22、f ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時(shí)間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play2() m=!m; TR0 = 0;k2=1;if(m=0) j=1; TR0=0;ET0=0; if(m=1) ET0=1; k=1;if(j=1) /播放被暫停的音樂 switch (Song_Index) case 0: Song_Tone_Pointer = So

23、ng1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; /從本一段音樂的第i個(gè)音符開始

24、 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時(shí)間 Song_Index = ( Song_Index + 1) % 4; /播放下一首音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_To

25、ne_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break;continue; TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; if

26、 (j=0)j=1; Song_Tone_Pointer = Song1_Tone; /開始播放音樂 Song_Time_Pointer = Song1_Time; i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時(shí)間 Song_Index = ( Song_Index + 1) % 4; /播放下一段音樂 switch (Song_Index) case

27、0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Tim

28、e; break; continue; TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play3() ET0=1; TR0 = 0; k3=1;/切換到第一段音樂 Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; Song_Index=0; /從第一段音樂的第0個(gè)音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Son

29、g_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時(shí)間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play4() ET0=1; TR0 = 0;k4=1;Song_Tone_Pointer = Song2_Tone;/切換到第二段音樂 Song_Time_Pointer = Song2_Time; Song_Index=1 ; i=0; /

30、從第二段音樂的第0個(gè)音符開始 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時(shí)間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play5() ET0=1; TR0 = 0;k5=1;Song_Tone_Pointer = Song3_Tone; /切換到第三段音樂 Song_Time_Pointer = Song3_Time; Song_Index=2; /從第三段音樂的第0個(gè)音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論