2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《單片機(jī)應(yīng)用與仿真訓(xùn)練》設(shè)計(jì)報(bào)告</p><p>  模擬電子琴發(fā)聲控制系統(tǒng)</p><p><b>  摘要</b></p><p>  本次課程設(shè)計(jì)的主要內(nèi)容是用AT89C51單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)簡(jiǎn)單的電子琴并可實(shí)現(xiàn)音樂(lè)的連續(xù)播放。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有

2、12個(gè)按鍵和揚(yáng)聲器。定時(shí)器按設(shè)置的定時(shí)參數(shù)產(chǎn)生中斷,由于定時(shí)參數(shù)不同,就會(huì)發(fā)出不同頻率的脈沖,不同頻率的脈沖經(jīng)喇叭驅(qū)動(dòng)電路放大濾波后,就會(huì)發(fā)出不同音調(diào)。</p><p>  本簡(jiǎn)易電子琴的設(shè)計(jì)可實(shí)現(xiàn)的功能如下:程序中預(yù)存了4首音樂(lè):《同一首歌》、《兩只蝴蝶》、《祝你快樂(lè)》、《Time to say goodbye》并通過(guò)一個(gè)獨(dú)立鍵盤可以實(shí)現(xiàn)對(duì)四首音樂(lè)的“下一曲”控制。3*4矩陣鍵盤中的7個(gè)按鍵分別對(duì)應(yīng)著7個(gè)不同的

3、音符,另外3個(gè)分為高、中、低音的控制,當(dāng)按下某一按鍵,會(huì)發(fā)出相應(yīng)的音調(diào)。按下按鍵時(shí),揚(yáng)聲器會(huì)發(fā)出聲音,松開(kāi)按鍵后,揚(yáng)聲器停止發(fā)聲,按鍵的時(shí)間越長(zhǎng),發(fā)聲時(shí)間越久。連續(xù)按下不同的按鍵,可以實(shí)現(xiàn)樂(lè)曲的演奏。此外還有一“模式”按鍵,負(fù)責(zé)在電子琴和音樂(lè)播放器兩種不同模式下的切換。</p><p><b>  目錄</b></p><p><b>  1概述7<

4、;/b></p><p>  1.1音樂(lè)產(chǎn)生原理7</p><p>  1.2結(jié)構(gòu)框圖7</p><p>  2系統(tǒng)總體方案及硬件設(shè)計(jì)8</p><p>  2.1總體方案8</p><p>  2.2按鍵鍵盤8</p><p>  2.3蜂鳴器電路8</p&

5、gt;<p>  2.4數(shù)碼管電路9</p><p>  2.5最小系統(tǒng)10</p><p>  2.6設(shè)計(jì)實(shí)現(xiàn)過(guò)程10</p><p><b>  3軟件設(shè)計(jì)12</b></p><p>  3.1整體設(shè)計(jì)12</p><p>  3.2音樂(lè)設(shè)計(jì)13<

6、/p><p>  3.3按鍵設(shè)計(jì)14</p><p>  3.4顯示設(shè)計(jì)16</p><p>  4Proteus仿真17</p><p>  5課程設(shè)計(jì)體會(huì)18</p><p><b>  參考文獻(xiàn)18</b></p><p>  附1:源程序代碼19&l

7、t;/p><p>  附2:系統(tǒng)原理圖29</p><p><b>  概述</b></p><p><b>  音樂(lè)產(chǎn)生原理</b></p><p>  一首音樂(lè)是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了,當(dāng)然對(duì)于單片機(jī)來(lái)產(chǎn)生不

8、同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這</p><p>  樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系正確即可。</p><p>  若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,</p><p>  即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)半周期時(shí)間,每當(dāng)計(jì)時(shí)終止后就將P1.0反相,然后重復(fù)計(jì)時(shí)再反相。就可

9、在P1.0引腳上得到此頻率的脈沖。</p><p>  利用STC89C52的內(nèi)部定時(shí)器使其工作計(jì)數(shù)器模式(MODE1)下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,單片機(jī)晶振頻率為12MHz,因此只要令計(jì)數(shù)器計(jì)時(shí)(956μs/1μs)=478,每計(jì)數(shù)478次時(shí)將I/O反相,就可得到中音DO(523Hz)。對(duì)于AT80C51而言要產(chǎn)生一定

10、頻率的方波一般是先將某口線輸出高電平,延遲一段時(shí)間后再輸出低電平。通過(guò)改變延遲時(shí)間可以改變單片機(jī)的輸出頻率。單片機(jī)的延時(shí)主要有兩種方式,即軟件延時(shí)和使用定時(shí)/計(jì)數(shù)器延時(shí)。其中軟件延時(shí)不是很精確,而電子琴電路由于每個(gè)音符的頻率值要求比較嚴(yán)格,因此我們選用定時(shí)/計(jì)數(shù)器延時(shí)。</p><p>  由于本課程設(shè)計(jì)是由用戶通過(guò)鍵盤輸入彈奏樂(lè)曲的,所以節(jié)拍由用戶掌握,不由程序控制。因此,我們只需弄清楚音樂(lè)中的音符和對(duì)應(yīng)的頻率

11、,利用單片機(jī)的定時(shí)/計(jì)數(shù)器來(lái)產(chǎn)生方波頻率信號(hào)即可。</p><p><b>  結(jié)構(gòu)框圖</b></p><p>  系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p><b>  總體方案</b></p><p>  本設(shè)計(jì)采用3*4鍵盤控制通過(guò)程序產(chǎn)生高、中、低七度音律,要考慮到軟件和硬件的匹配以及硬件電路

12、焊接時(shí)的排版問(wèn)題,否則建會(huì)帶來(lái)不必要的焊接麻煩,在編程序時(shí)要注意仿真與實(shí)際電路中可能的不符。在此基礎(chǔ)上,另外設(shè)計(jì)數(shù)碼管顯示電路,蜂鳴器驅(qū)動(dòng)電路。</p><p><b>  按鍵鍵盤</b></p><p>  設(shè)計(jì)中采用AT89S51的并行口P0接3×4矩陣鍵盤,以P0.0-P0.2作輸入線,以P0.4-P0.7作輸出線。每個(gè)按鍵有它的行值和列值,行值和列

13、值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過(guò)兩并行接口和CPU通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開(kāi)關(guān)的一端(列線)通過(guò)電阻接VCC,而接地是通過(guò)程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表

14、,查出該鍵的功能,在本程序中,當(dāng)程序檢測(cè)到有鍵按下時(shí),將查表使按鍵值與預(yù)存數(shù)據(jù)表中數(shù)據(jù)對(duì)應(yīng),并調(diào)用發(fā)聲程序。另單獨(dú)焊接第三行第四列按鍵為獨(dú)立按鍵,用以控制歌曲的切換。</p><p><b>  2.3蜂鳴器電路</b></p><p>  蜂鳴器一陽(yáng)極接三極管的集電極,另一端接地,三極管的集電極節(jié)電源VCC,基極接P3.6口。當(dāng)P3.6口為低電平時(shí)三極管導(dǎo)通,蜂鳴器

15、有電流流過(guò),即發(fā)聲。本次設(shè)計(jì)采用的是9015(NPN型)三極管作為蜂鳴器的驅(qū)動(dòng)電路。</p><p><b>  2.4數(shù)碼管電路</b></p><p>  本次單片機(jī)課程設(shè)計(jì)的顯示電路采用共陽(yáng)極LED數(shù)碼管顯示,由于 LED是屬于電流控制器件,使用時(shí)必須加限流電阻。本次顯示使用的是數(shù)碼管的靜態(tài)顯示功能,主要用以顯示高、中、低音的狀態(tài)以及電子琴、播放器狀態(tài)的指示。&

16、lt;/p><p><b>  最小系統(tǒng)</b></p><p>  本部分分為印刷電路板,主要包含復(fù)位電路、時(shí)鐘電路、P0-P3口插槽。</p><p><b>  2.5設(shè)計(jì)實(shí)現(xiàn)過(guò)程</b></p><p>  本次硬件設(shè)計(jì)的核心部分就是按鍵,組成鍵盤的按鍵有機(jī)械式、電容式、導(dǎo)電橡膠式、薄膜式多種,

17、但不管什么形式,其作用都是一個(gè)使電路接通與斷開(kāi)的開(kāi)關(guān)。目前微機(jī)系統(tǒng)中使用的鍵盤按其功能不同,通常可分為編碼鍵盤和非編碼鍵盤兩種基本類型。 編碼鍵盤:鍵盤本身帶有實(shí)現(xiàn)接口主要功能所需的硬件電路。不僅能自動(dòng)檢測(cè)被按下的鍵,并完成去抖動(dòng)、防串鍵等功能,而且能提供與被按鍵功能對(duì)應(yīng)的鍵碼(如ASCII碼)送往CPU。所以,編碼鍵盤接口簡(jiǎn)單、使用方便。但由于硬件電路較復(fù)雜,因而價(jià)格較貴。 非編碼鍵盤:鍵盤只簡(jiǎn)單地提供按鍵開(kāi)關(guān)的行列矩

18、陣。有關(guān)按鍵的識(shí)別、鍵碼的確定與輸入、去抖動(dòng)等功能均由軟件完成。目前微機(jī)系統(tǒng)中,一般為了降低成本大多數(shù)采用非編碼鍵盤。 鍵盤接口必須具有去抖動(dòng)、防串鍵、按鍵識(shí)別和鍵碼產(chǎn)生4個(gè)基本功能。 (1)去抖動(dòng):每個(gè)按鍵在按下或松開(kāi)時(shí),都會(huì)產(chǎn)生短時(shí)間的抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間與鍵的質(zhì)量相關(guān),一般為5—20mm。所謂抖動(dòng)是指在識(shí)別被按鍵是必須避開(kāi)抖動(dòng)狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開(kāi)狀態(tài)才能保證識(shí)別正確無(wú)誤。去抖問(wèn)</p>&

19、lt;p>  題可通過(guò)軟件延時(shí)或硬件電路解決。 (2)防串鍵:防串鍵是為了解決多個(gè)鍵同時(shí)按下或者前一按鍵沒(méi)有釋放又有新的按鍵按下時(shí)產(chǎn)生的問(wèn)題。常用的方法有雙鍵鎖定和N鍵輪回兩種方法。雙鍵鎖定,是當(dāng)有兩個(gè)或兩個(gè)以上的按鍵按下時(shí),只把最后釋放的鍵當(dāng)作有效鍵并產(chǎn)生相應(yīng)的鍵碼。N鍵輪回,是當(dāng)檢測(cè)到有多個(gè)鍵被按下時(shí),能根據(jù)發(fā)現(xiàn)它們的順序依次產(chǎn)生相應(yīng)鍵的鍵碼。 (3)被按鍵識(shí)別:如何識(shí)別被按鍵是接口解決的主要問(wèn)題,一般可通過(guò)軟

20、硬結(jié)合的方法完成。常用的方法有行掃描法和線反轉(zhuǎn)法兩種。行掃描法的基本思想是,由程序?qū)︽I盤逐行掃描,通過(guò)檢測(cè)到的列輸出狀態(tài)來(lái)確定閉合鍵,為此,需要設(shè)置入口、輸出口一個(gè),該方法在微機(jī)系統(tǒng)中被廣泛使用。線反轉(zhuǎn)法的基本思想是通過(guò)行列顛倒兩次掃描來(lái)識(shí)別閉合鍵,為此需要提供兩個(gè)可編程的雙向輸入/輸出端口。 (4)鍵碼產(chǎn)生:為了從鍵的行列坐標(biāo)編碼得到反映鍵功能的鍵碼,一般在內(nèi)存區(qū)中建立一個(gè)鍵盤編碼表,通過(guò)查表獲得被按鍵的鍵碼。</p&g

21、t;<p>  用STC89C52的并行口P0接3×4矩陣鍵盤,以P0.0-P0.2作輸入線,以P0.4-P0.7作輸出線。</p><p>  除核心電路外,還包括輔助的發(fā)音電路和顯示電路。發(fā)音電路主要部件是蜂鳴器,用三極管作為可控器件輔以驅(qū)動(dòng)電路,以保證音量適中,音色較真。顯示電路由兩位共陽(yáng)極數(shù)碼管作為顯示器件,同樣輔以三極管放大電路,并串接限流電阻,通過(guò)靜態(tài)顯示的方法作為高、中、低音

22、狀態(tài)的顯示和電子琴模式與音樂(lè)播放器模式的狀態(tài)顯示。</p><p><b>  軟件設(shè)計(jì)</b></p><p><b>  整體設(shè)計(jì)</b></p><p>  本設(shè)計(jì)使用Protues仿真軟件進(jìn)行仿真,在程序設(shè)計(jì)部分,包括鍵盤掃描程序,音樂(lè)發(fā)聲程序(程序見(jiàn)附錄1)。3*4矩陣鍵盤是由單片機(jī)控制I/O口來(lái)實(shí)現(xiàn)掃描的。具體

23、程序見(jiàn)附錄二主程序鍵盤掃描部分。程序首先給P0口賦值,然后讀取P0的狀態(tài),將讀取的狀態(tài)值同所賦值相比較,如果二者不相同,則說(shuō)明有鍵按下,子程序?qū)存I值返回主程序;否則,說(shuō)明沒(méi)有鍵按。程序繼續(xù)進(jìn)行下一次掃描。 本系統(tǒng)的軟件主程序流程圖如下:</p><p><b>  音樂(lè)設(shè)計(jì)</b></p><p>  對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的另外一個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成。琴

24、鍵處理程序,根據(jù)檢測(cè)到得按鍵值,查詢音律表,給計(jì)時(shí)器賦值,發(fā)出相應(yīng)頻率的聲音。對(duì)音調(diào)的控制:根據(jù)不同的按鍵,對(duì)定時(shí)器T1送入不同的初值,調(diào)節(jié)T1的溢出時(shí)間,這樣就可以輸出不同音調(diào)頻率的方波。不同音調(diào)下各個(gè)音階的定時(shí)器。在這個(gè)程序中用到了兩個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成的。其中T0用來(lái)產(chǎn)生音符頻率,T1用來(lái)產(chǎn)生音拍。</p><p>  要產(chǎn)生相應(yīng)的音頻脈沖,只需要計(jì)算出某音頻的周期,再除以2。利用計(jì)數(shù)器計(jì)時(shí)半周期,計(jì)滿時(shí)使

25、P2.0反向,然后重復(fù)計(jì)時(shí)再反向。本例中,單片機(jī)工作在12MHz時(shí)鐘,使用定時(shí)器/計(jì)數(shù)器T0,工作模式為1,改變計(jì)數(shù)初值TH0、TL0就可產(chǎn)生不同頻率的脈沖信號(hào)。</p><p>  例如低3MI音,頻率為330Hz,其周期T=1/f=1/330=3030us,計(jì)數(shù)值N=3030/2=1515,所以每計(jì)數(shù)1515次P2.0反向。計(jì)數(shù)初值T=65536-N=64021。</p><p>  

26、計(jì)數(shù)脈沖值與頻率的關(guān)系式是:</p><p><b>  N=fi÷2÷fr</b></p><p>  式中,N是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時(shí),其頻率為1MHz);fr是想要產(chǎn)生的頻率。</p><p>  其計(jì)數(shù)初值T的求法如下:</p><p>  T=65536-N=655

27、36-fi÷2÷fr</p><p>  例如:設(shè)K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計(jì)數(shù)值。</p><p>  T=65536-N=65536-fi÷2÷fr</p><p> ?。?5536-1000000÷2÷fr</p&

28、gt;<p>  =65536-500000/fr</p><p>  計(jì)算可得高中低音分別為:</p><p>  低音DO的T=65536-500000/262=63627</p><p>  中音DO的T=65536-500000/523=64580</p><p>  高音DO的T=65536-500000/1046=6

29、5059</p><p>  單片機(jī)12MHZ晶振,高中低音符與計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如表所示:</p><p><b>  音符頻率表</b></p><p>  我們要為這個(gè)音符建立一個(gè)表格,單片機(jī)通過(guò)查表的方式來(lái)獲得相應(yīng)的數(shù)據(jù),低音0-19之間,中音在20-39之間,高音在40-59之間 </p><p>

30、  TABLE1: DW 64021,64103,64260,64400</p><p>  DW 64524,64580,64684,64777</p><p>  DW 64820,64898,64968,65030</p><p>  DW 65058,65110,65157,65178</p><p>  音樂(lè)的音拍,一個(gè)節(jié)拍為單位(

31、C調(diào))如下表:</p><p><b>  曲調(diào)值表</b></p><p><b>  按鍵設(shè)計(jì)</b></p><p>  對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的另外一個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成。琴鍵處理程序,根據(jù)檢測(cè)到得按鍵值,查詢音律表,給計(jì)時(shí)器賦值,發(fā)出相應(yīng)頻率的聲音。對(duì)音調(diào)的控制:根據(jù)不同的按鍵,對(duì)定時(shí)器T1送入不同的初

32、值,調(diào)節(jié)T1的溢出時(shí)間,這樣就可以輸出不同音調(diào)頻率的方波。不同音調(diào)下各個(gè)音階的定時(shí)器。</p><p><b>  顯示設(shè)計(jì)</b></p><p>  顯示部分使用共陽(yáng)極數(shù)碼管,用NPN型三極管驅(qū)動(dòng)電路進(jìn)行靜態(tài)顯示,分別顯示高中低音狀態(tài)和音樂(lè)播放器及電子琴的模擬切換狀態(tài)。數(shù)碼管由P1.0-P1.7控制段顯示,P2.0和P2.1分別控制住位選,流程圖如下:</p

33、><p><b>  Proteus仿真</b></p><p>  軟件仿真調(diào)試主要是針對(duì)單片機(jī)部分進(jìn)行調(diào)試。在軟件運(yùn)行前,先確保電路中連線正確,這一工作是整個(gè)調(diào)試工作的第一步,也是非常重要的一個(gè)步驟。在這部分調(diào)試中主要通過(guò)目測(cè),用來(lái)完成檢測(cè)電路中是否存在斷路或者短路情況等。 </p><p><b>

34、;  5.課程設(shè)計(jì)體會(huì)</b></p><p>  本次課程設(shè)計(jì)制作簡(jiǎn)易電子琴,雖然花費(fèi)了我們很多精力,但收獲頗豐,一方面,將自己的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),進(jìn)一步鞏固了專業(yè)基礎(chǔ)知識(shí)和相關(guān)專業(yè)課程知識(shí);另一方面,也培養(yǎng)了自己獨(dú)立自主、綜合分析的思維與創(chuàng)新能力,更讓我知道了團(tuán)隊(duì)的力量是巨大的。在實(shí)際制作時(shí),我們將程序燒入芯片,調(diào)試成功后,可任意彈奏自己想要的旋律。本設(shè)計(jì)通過(guò)制作電子琴,將幾個(gè)模塊很好的融

35、合,對(duì)使用單片機(jī)設(shè)計(jì)簡(jiǎn)易電子琴進(jìn)行了分析,并了解了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來(lái)獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂(lè)。說(shuō)明一首音樂(lè)是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了,于是我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可,然后我們利用功放電路來(lái)將音樂(lè)聲音放大。&l

36、t;/p><p>  設(shè)計(jì)的過(guò)程不是一帆風(fēng)順,遇到過(guò)各種各樣的問(wèn)題。特別是設(shè)計(jì)軟件時(shí),一些很細(xì)小的問(wèn)題都可能導(dǎo)致功能性的錯(cuò)誤,修改了多次才通過(guò)仿真,例如:1、在剛剛焊接好后,程序燒入芯片后,發(fā)現(xiàn)并不發(fā)聲,經(jīng)檢查才發(fā)現(xiàn)是對(duì)鍵盤沒(méi)看清楚,將鍵盤接亂了;2、在程序編寫時(shí)發(fā)現(xiàn)程序正確但電路并不工作,后來(lái)才發(fā)現(xiàn)是所用三極管為NPN型,而程序編寫時(shí)則按PNP型進(jìn)行編寫,在修改程序后,程序運(yùn)行正常實(shí)現(xiàn)了預(yù)想的功能;3、在硬件電路修

37、改好后,發(fā)現(xiàn)每次按鍵時(shí)會(huì)引起蜂鳴器一直響,再按鍵時(shí)有可能會(huì)消失,經(jīng)檢查后知道是在每按鍵件程序后蜂鳴器對(duì)應(yīng)參值沒(méi)有直接置1(置1關(guān)蜂鳴器,由電路連接方式?jīng)Q定)。 </p><p>  總之,這是一次動(dòng)手能力的鍛煉,也是一次單片機(jī)知識(shí)的再回顧,還是對(duì)自己細(xì)心以及耐心能力的考察。同時(shí)在具體的制作過(guò)程中我們發(fā)現(xiàn)一些書(shū)本上的知識(shí)與實(shí)際的應(yīng)用存在著一定的差距,書(shū)本上的知識(shí)很多都是理想化后的結(jié)論,忽略了很多實(shí)際的因素,或者

38、涉及的不全面,可在實(shí)際的應(yīng)用時(shí)這些是不能被忽略的,我們不得不考慮這方面的問(wèn)題,這也讓我更深刻地體會(huì)到在今后的學(xué)習(xí)工作中也要注重理論聯(lián)系實(shí)際。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]余發(fā)山.單片機(jī)原理及應(yīng)用技術(shù)[M],中國(guó)礦業(yè)大學(xué)出版社,2003年12月版;</p><p>  [2] 馬淑華、王鳳文.單片機(jī)原理

39、與接口技術(shù)[M],北京郵電大學(xué)出版社,2005年10月版;</p><p>  [3] 郭天祥.新概念51單片機(jī)C語(yǔ)言教程,電子工業(yè)出版社,2009年版</p><p><b>  附1:源程序代碼</b></p><p>  #include "MusInstru.h"</p><p>  #inc

40、lude <reg52.h></p><p>  #include <stdio.h></p><p>  #include <math.h></p><p>  #include <absacc.h></p><p>  #include "SoundPlay.h"<

41、/p><p>  unsigned k,h=1;</p><p>  void Delay1ms(unsigned int count)</p><p><b>  {</b></p><p>  unsigned int i,j;</p><p>  for(i=0;i<count

42、;i++)</p><p>  for(j=0;j<120;j++);</p><p><b>  }</b></p><p>  void music()</p><p><b>  {</b></p><p>  InitialSound();</p>

43、<p><b>  P2=0;</b></p><p><b>  P1=0x00;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  Play(Music_One,0,3

44、,360);</p><p>  Delay1ms(600);</p><p>  Play(Music_Two,0,3,360);</p><p>  Delay1ms(600);</p><p>  Play(Music_Three,0,3,360);</p><p>  Delay1ms(600);</p&

45、gt;<p>  Play(Music_Four,0,3,360);</p><p>  Delay1ms(600);</p><p>  //Play(Music_Five,0,3,360);</p><p>  //Delay1ms(600);</p><p><b>  }</b></p>

46、<p>  } </p><p>  /* 鍵掃描函數(shù) */</p><p>  uchar getkey(void) </p><p><b>  {</b></p><

47、;p>  uchar scancode,tmpcode;</p><p>  if ((P0&0xf0)==0xf0)</p><p>  return(0);</p><p>  scancode = 0xfe;</p><p>  while((scancode&0x10)!=0)

48、 // 逐行掃描</p><p><b>  {</b></p><p>  P0 = scancode; // 輸出行掃描碼</p><p>  if ((P0&0xf0)!=0xf0) // 本行有鍵按下</p><p><b>  {</b&

49、gt;</p><p>  tmpcode = (P0&0xf0)|0x0f;</p><p>  /* 返回特征字節(jié)碼,為1的位即對(duì)應(yīng)于行和列 */</p><p>  return((~scancode)+(~tmpcode));</p><p><b>  }</b></p><p>

50、;  else scancode = (scancode<<1)|0x01;// 行掃描碼左移一位</p><p><b>  }</b></p><p>  return(0);</p><p><b>  }</b></p><p>  void display()</p&

51、gt;<p><b>  {</b></p><p>  unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,</p><p>  0x99,0x92,0x82,0xf8,</p><p>  0x80,0x90,0x88,0x83,</p><p>  0xc6

52、,0xa1,0x86,0x8e};</p><p>  unsigned char code hl[]={0xf7,0xbf,0xfe};</p><p>  unsigned int i,m=0;</p><p>  for(i=0;i<9;i++)</p><p><b>  {</b></p>

53、<p><b>  m=m%2;</b></p><p><b>  if(m==0)</b></p><p><b>  {</b></p><p><b>  P2=1;</b></p><p><b>  P1=hl[h];<

54、;/b></p><p>  Delay1ms(5); </p><p><b>  m+=1;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b

55、></p><p><b>  P2=2;</b></p><p>  P1=table[k+1];</p><p>  Delay1ms(5); </p><p><b>  m+=1; </b></p><p><b>  }</b><

56、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  /*MUSINSTRU頭文件*/</p><p>  #ifndef_MUSINSTRU_H // 防止MusInstru.h被重復(fù)引用</p><p>  #define

57、_MUSINSTRU_H</p><p>  #include <reg52.h></p><p>  #include <absacc.h></p><p>  #include <stdio.h></p><p>  #include <math.h></p><p&g

58、t;  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  /* 音符與計(jì)數(shù)值對(duì)應(yīng)表 */</p><p>  uint code tab[3][7]={{0xf88b,0xf95b,0xfa14,0xfa03,0xfb8f,0xfbcf,0xfc0b},</p&g

59、t;<p>  {0xfc43,0xfcab,0xfd08,0xfd33,0xfd81,0xfdc7,0xfe05},</p><p>  {0xfe21,0xfe55,0xfe84,0xfe99,0xfec0,0xfee3,0xff02}}; </p><p>  /*4首音樂(lè)代碼*/</p><p>  unsigned char code Mus

60、ic_One[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,</p><p>  0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02,

61、0x17,0x02,</p><p>  0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,</p><p>  0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,</p><p>  0x17,0x01, 0x19,0x02, 0x1B,0x02,

62、0x1B,0x70, 0x1A,0x03,</p><p>  0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,</p><p>  0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,</p><p>  0x19,0x02, 0x1A,0x02,

63、0x19,0x0C, 0x18,0x0D, 0x17,0x03,</p><p>  0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,</p><p>  0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,</p><p>  0x19,0x03,

64、0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,</p><p>  0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,</p><p>  0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,</p><p>  

65、0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,</p><p>  0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,</p><p>  0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,</p>

66、<p>  0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,</p><p>  0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,</p><p>  0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,&

67、lt;/p><p>  0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,</p><p>  0x00,0x00 }; // 兩只蝴蝶 </p><p>  unsigned char code Music_Two[] ={ 0x17,0x03, 0x16,0x03, 0x1

68、7,0x01, 0x16,0x03, 0x17,0x03,</p><p>  0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,</p><p>  0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,</p><p>  0x10,0x0E, 0x1

69、5,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03,</p><p>  0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01,</p><p>  0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,</p><p>  0x1

70、6,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01,</p><p>  0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,</p><p>  0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,</p><

71、;p>  0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,</p><p>  0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03,</p><p>  0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,<

72、/p><p>  0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,</p><p>  0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00,</p><p>  0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1

73、B,0x03,</p><p>  0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03,</p><p>  0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,</p><p>  0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x1

74、7,0x0D, 0x16,0x03,</p><p>  0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03,</p><p>  0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E,</p><p>  0x1B,0x04, 0x17,0x02, 0x1

75、A,0x03, 0x1A,0x03, 0x1A,0x0E,</p><p>  0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03,</p><p>  0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03,</p><p>  0x19,0x03, 0x1

76、A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03,</p><p>  0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,</p><p>  0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02,</p><p>  0x1

77、A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01,</p><p>  0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03,</p><p>  0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,</p><

78、;p>  0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,</p><p>  0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,</p><p>  0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02,<

79、/p><p>  0x10,0x03, 0x15,0x00, 0x00,0x00 }; //同一首歌</p><p>  unsigned char code Music_Three[]={ 0x17,0x02, 0x10,0x03, 0x15,0x03, 0x19,0x03, 0x0D,0x02,</p><p>  0x19,0x03, 0x15,0x02,

80、0x16,0x03, 0x15,0x03, 0x10,0x01,</p><p>  0x1A,0x02, 0x1A,0x03, 0x19,0x03, 0x15,0x02, 0x16,0x02,</p><p>  0x17,0x00, 0x17,0x03, 0x1A,0x03, 0x1A,0x03, 0x19,0x03,</p><p>  0x10,0x02,

81、0x17,0x03, 0x16,0x03, 0x17,0x03, 0x17,0x03,</p><p>  0x15,0x03, 0x16,0x01, 0x17,0x02, 0x17,0x03, 0x19,0x03,</p><p>  0x16,0x03, 0x15,0x02, 0x0F,0x03, 0x10,0x00, 0x17,0x02,</p><p>  

82、0x17,0x03, 0x19,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x02,</p><p>  0x1A,0x00, 0x1F,0x02, 0x1F,0x03, 0x1B,0x02, 0x1A,0x02,</p><p>  0x1F,0x00, 0x11,0x02, 0x17,0x03, 0x19,0x03, 0x1A,0x03,</p>

83、<p>  0x1B,0x03, 0x1A,0x03, 0x1A,0x00, 0x11,0x02, 0x1B,0x03,</p><p>  0x1A,0x02, 0x1B,0x02, 0x16,0x00, 0x16,0x03, 0x16,0x03,</p><p>  0x16,0x03, 0x10,0x03, 0x15,0x02, 0x16,0x02, 0x17,0x00,&

84、lt;/p><p>  0x19,0x03, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,</p><p>  0x1A,0x03, 0x19,0x03, 0x1A,0x00, 0x00,0x00 };//祝你快樂(lè)</p><p>  unsigned char code Music_Four[]={ 0x0F,0x03, 0x

85、15,0x03, 0x15,0x01, 0x11,0x03, 0x16,0x03,</p><p>  0x15,0x01, 0x15,0x66, 0x16,0x03, 0x17,0x03, 0x17,0x66,</p><p>  0x17,0x02, 0x16,0x03, 0x18,0x03, 0x17,0x03, 0x15,0x66,</p><p>  0x

86、1F,0x03, 0x1B,0x03, 0x19,0x03, 0x15,0x03, 0x1B,0x03,</p><p>  0x19,0x03, 0x17,0x03, 0x19,0x01, 0x16,0x03, 0x18,0x03,</p><p>  0x17,0x03, 0x16,0x03, 0x15,0x03, 0x11,0x03, 0x0F,0x03,</p>&l

87、t;p>  0x15,0x03, 0x15,0x01, 0x11,0x03, 0x16,0x03, 0x15,0x01,</p><p>  0x15,0x66, 0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03,</p><p>  0x17,0x03, 0x17,0x17, 0x16,0x03, 0x18,0x03, 0x17,0x03,<

88、;/p><p>  0x15,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x15,0x03,</p><p>  0x1B,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x01, 0x16,0x03,</p><p>  0x18,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x

89、11,0x03,</p><p>  0x11,0x01, 0x0E,0x04, 0x0F,0x04, 0x10,0x04, 0x0F,0x04,</p><p>  0x10,0x04, 0x11,0x04, 0x10,0x04, 0x11,0x04, 0x15,0x04,</p><p>  0x11,0x04, 0x15,0x04, 0x16,0x04, 0x

90、15,0x04, 0x10,0x04,</p><p>  0x16,0x04, 0x17,0x04, 0x18,0x02, 0x17,0x02, 0x0E,0x04,</p><p>  0x0F,0x04, 0x10,0x04, 0x0F,0x04, 0x10,0x04, 0x11,0x04,</p><p>  0x10,0x04, 0x11,0x04, 0x

91、16,0x67, 0x15,0x04, 0x17,0x02,</p><p>  0x0E,0x04, 0x0F,0x04, 0x10,0x04, 0x0F,0x04, 0x10,0x04,</p><p>  0x11,0x04, 0x10,0x04, 0x11,0x04, 0x15,0x16, 0x0E,0x04,</p><p>  0x0F,0x04, 0x

92、10,0x04, 0x0F,0x04, 0x10,0x04, 0x11,0x04,</p><p>  0x10,0x04, 0x11,0x04, 0x16,0x67, 0x15,0x04, 0x16,0x67,</p><p>  0x15,0x04, 0x18,0x67, 0x17,0x04, 0x0F,0x15, 0x00,0x00 };</p><p>  

93、//time to say goodbye</p><p><b>  #endif</b></p><p>  /*SoundPlay頭文件*/</p><p>  #ifndef __SOUNDPLAY_H_REVISION_FIRST__</p><p>  #define __SOUNDPLAY_H_REVISI

94、ON_FIRST__</p><p>  #define SYSTEM_OSC 11059200//定義晶振頻率12000000HZ</p><p>  #define SOUND_SPACE 4/5 //定義普通音符演奏的長(zhǎng)度分率,//每4分音符間隔</p><p>  sbit BeepIO = P3^6;//定義輸出管腳<

95、;/p><p>  uint Point,SoundLength;</p><p>  uint code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始頻率表</p><p>  uchar code SignTab[7] = { 0,2,4,5,7,9,11 };

96、//1~7在頻率表中的位置</p><p>  uchar code LengthTab[7]= { 1,2,4,8,16,32,64 };</p><p>  uchar Sound_Temp_TH0,Sound_Temp_TL0;//音符定時(shí)器初值暫存 </p><p>  uchar Sound_Temp_TH1,Sound_Temp_TL

97、1;//音長(zhǎng)定時(shí)器初值暫存</p><p>  void InitialSound(void)</p><p><b>  {</b></p><p>  BeepIO = 0;</p><p>  Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256;// 計(jì)算TL1應(yīng)裝

98、入的初值 (10ms的初裝值)</p><p>  Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256;// 計(jì)算TH1應(yīng)裝入的初值 </p><p>  TH1 = Sound_Temp_TH1;</p><p>  TL1 = Sound_Temp_TL1;</p><p>  TMOD

99、 |= 0x11;</p><p>  ET0 = 1;</p><p>  ET1 = 0;</p><p>  TR0 = 0;</p><p>  TR1 = 0;</p><p>  EA = 1;</p><p><b>  }</b&g

100、t;</p><p>  void BeepTimer0(void) interrupt 1//音符發(fā)生中斷</p><p><b>  {</b></p><p>  BeepIO = !BeepIO;</p><p>  TH0 = Sound_Temp_TH0;</p><p>  

101、TL0 = Sound_Temp_TL0;</p><p><b>  }</b></p><p>  void int0(void) interrupt 0</p><p><b>  {</b></p><p>  Point =SoundLength;</p><p

102、><b>  }</b></p><p>  void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed)</p><p><b>  {</b></p><p>  uint NewFreT

103、ab[12];//新的頻率表</p><p>  uchar i,j;</p><p>  uint LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T;</p><p>  uchar Tone,Length,SL,SH,SM,SLen,XG,FD;</p><p>  for(i=0;i<

104、;12;i++) // 根據(jù)調(diào)號(hào)及升降八度來(lái)生成新的頻率表 </p><p><b>  {</b></p><p><b>  EX0=1;</b></p><p>  j = i + Signature;</p><p>  if(j > 11)</p><p&

105、gt;<b>  {</b></p><p><b>  j = j-12;</b></p><p>  NewFreTab[i] = FreTab[j]*2;</p><p><b>  }</b></p><p><b>  else</b></

106、p><p>  NewFreTab[i] = FreTab[j];</p><p>  if(Octachord == 1)</p><p>  NewFreTab[i]>>=2;</p><p>  else if(Octachord == 3)</p><p>  NewFreTab[i]<<=

107、2;</p><p>  }</p><p>  SoundLength = 0;</p><p>  while(Sound[SoundLength] != 0x00)//計(jì)算歌曲長(zhǎng)度</p><p><b>  {</b></p><p>  SoundLength+=2;

108、</p><p><b>  }</b></p><p>  Point = 0;</p><p>  Tone = Sound[Point];</p><p>  Length = Sound[Point+1]; // 讀出第一個(gè)音符和它時(shí)時(shí)值</p><p>  LDiv0 = 1

109、2000/Speed;// 算出1分音符的長(zhǎng)度(幾個(gè)10ms) </p><p>  LDiv4 = LDiv0/4; // 算出4分音符的長(zhǎng)度 </p><p>  LDiv4 = LDiv4-LDiv4*SOUND_SPACE; // 普通音最長(zhǎng)間隔標(biāo)準(zhǔn) </p><p>  TR0 = 0;</p><p> 

110、 TR1 = 1;</p><p>  while(Point < SoundLength)</p><p><b>  {</b></p><p>  SL=Tone%10; //計(jì)算出音符 </p><p>  SM=Tone/10%10; //計(jì)算出高低音 </p&g

111、t;<p>  SH=Tone/100; //計(jì)算出是否升半 </p><p>  CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出對(duì)應(yīng)音符的頻率 </p><p><b>  if(SL!=0)</b></p><p><b>  {</b>&

112、lt;/p><p>  if (SM==1) CurrentFre >>= 2; //低音 </p><p>  if (SM==3) CurrentFre <<= 2; //高音</p><p>  Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);</p>

113、<p><b>  //計(jì)算計(jì)數(shù)器初值</b></p><p>  Sound_Temp_TH0 = Temp_T/256; </p><p>  Sound_Temp_TL0 = Temp_T%256; </p><p>  TH0 = Sound_Temp_TH0; </p><p>  TL0 =

114、Sound_Temp_TL0 + 12; //加12是對(duì)中斷延時(shí)的補(bǔ)償 </p><p><b>  }</b></p><p>  SLen=LengthTab[Length%10]; //算出是幾分音符</p><p>  XG=Length/10%10; //算出音符類型(0普通1連音2頓音) </p><p&

115、gt;  FD=Length/100;</p><p>  LDiv=LDiv0/SLen; //算出連音音符演奏的長(zhǎng)度(多少個(gè)10ms)</p><p>  if (FD==1) </p><p>  LDiv=LDiv+LDiv/2;</p><p>  if(XG!=1)</p><p>  if(XG=

116、=0) //算出普通音符的演奏長(zhǎng)度 </p><p>  if (SLen<=4)</p><p>  LDiv1=LDiv-LDiv4;</p><p><b>  else</b></p><p>  LDiv1=LDiv*SOUND_SPACE;</p><p><b&

117、gt;  else</b></p><p>  LDiv1=LDiv/2; //算出頓音的演奏長(zhǎng)度 </p><p><b>  else</b></p><p>  LDiv1=LDiv;</p><p>  if(SL==0) LDiv1=0;</p><p>  LDiv2=

118、LDiv-LDiv1; //算出不發(fā)音的長(zhǎng)度 </p><p>  if (SL!=0)</p><p><b>  {</b></p><p><b>  TR0=1;</b></p><p>  for(i=LDiv1;i>0;i--) //發(fā)規(guī)定長(zhǎng)度的音 </p>&

119、lt;p><b>  {</b></p><p>  while(TF1==0);</p><p>  TH1 = Sound_Temp_TH1;</p><p>  TL1 = Sound_Temp_TL1;</p><p><b>  TF1=0;</b></p><p

120、><b>  }</b></p><p><b>  }</b></p><p>  if(LDiv2!=0)</p><p><b>  {</b></p><p>  TR0=0; BeepIO=0;</p><p>  for(i=LDiv2

121、;i>0;i--) //音符間的間隔</p><p><b>  {</b></p><p>  while(TF1==0);</p><p>  TH1 = Sound_Temp_TH1;</p><p>  TL1 = Sound_Temp_TL1;</p><p><b>

溫馨提示

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

評(píng)論

0/150

提交評(píng)論