單片機(jī)課程設(shè)計(jì)——紅外遙控音樂播放器_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機(jī)課程設(shè)計(jì)</b></p><p>  項(xiàng)目名稱 紅外遙控音樂播放器設(shè)計(jì) </p><p>  專業(yè)班級 通信091班 </p><p>  學(xué)生姓名 <

2、;/p><p>  指導(dǎo)教師 </p><p>  2012年 12 月 21 日</p><p><b>  摘 要</b></p><p>  隨著計(jì)算機(jī)技術(shù)的發(fā)展, 單片機(jī)的應(yīng)用范圍也不斷擴(kuò)大,目前單片機(jī)滲透到工作和生活的各個(gè)領(lǐng)域。在以

3、單片機(jī)為核心的控制系統(tǒng)中,紅外遙控成為目前使用比較廣泛的一種無線通信和遙控手段。本課程設(shè)計(jì)提出一種基于單片機(jī)的紅外遙控音樂播放器的設(shè)計(jì)方法。主要采用單片機(jī)為控制核心,以紅外信號為通信手段,通信蜂鳴器發(fā)聲,來完成音樂播放器的功能。本設(shè)計(jì)具有無線、非接觸控制,抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn)及特色。通過本設(shè)計(jì)可以完成簡單的音樂播放器的功能,包括播放及更換歌曲等內(nèi)容。通過本次課程設(shè)計(jì),我對單片機(jī)中斷系統(tǒng)等知識有了進(jìn)

4、一步的了解,對單片機(jī)的相關(guān)知識做到理論聯(lián)系實(shí)際。</p><p>  關(guān)鍵詞:單片機(jī);紅外遙控;中斷系統(tǒng); </p><p><b>  Abstract</b></p><p>  With the development of computer technology, the application range of the microco

5、ntroller expanding microcontroller penetrated into various fields of work and life. Microcontroller as the core of the control system, infrared remote control to use a wireless communication and remote control means. Thi

6、s course is designed infrared remote control music player based microcontroller design method. Mainly using SCM as the control center, the infrared signal as a means of communication, communication b</p><p>

7、  Keywords: Microcontroller Unit;Infrared Remote Control;Interrupt System; </p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p

8、><b>  第1章 緒論1</b></p><p><b>  1.1 概述1</b></p><p>  1.2 主要功能1</p><p>  第2章 電路設(shè)計(jì)2</p><p>  2.1 整體電路設(shè)計(jì)2</p><p>  2.2 電路模

9、塊設(shè)計(jì)3</p><p>  2.2.1 單片機(jī)最小系統(tǒng)電路3</p><p>  2.2.2 紅外解碼電路4</p><p>  2.2.3 顯示及播放電路5</p><p>  第3章 程序設(shè)計(jì)8</p><p>  3.1 紅外解碼程序8</p><p>  3.2

10、 播放及顯示程序12</p><p>  第4章 硬件調(diào)試17</p><p><b>  結(jié)論19</b></p><p><b>  參考文獻(xiàn)20</b></p><p>  附錄1 整體電路圖及實(shí)物圖21</p><p>  附錄2 電路元件22<

11、;/p><p>  附錄3 程序源碼23</p><p><b>  致謝32</b></p><p><b>  第1章 緒論</b></p><p><b>  1.1 概述</b></p><p>  利用單片機(jī)演奏音樂是單片機(jī)愛好者的興趣之

12、一,應(yīng)用的范圍也比較廣泛。所謂音樂播放器,由單片機(jī)進(jìn)行信息處理,再經(jīng)過信號放大,由蜂鳴器發(fā)出樂曲聲。我們知道,振動產(chǎn)生聲音,振動頻率不同所發(fā)出的聲音也就不同。有規(guī)律的振動發(fā)出的聲音叫“樂音”。音樂由音頻和節(jié)拍構(gòu)成,音頻即發(fā)聲的頻率;節(jié)拍即延時(shí)的長短。因此利用單片機(jī)的定時(shí)器,產(chǎn)生一定頻率的方波,即可以產(chǎn)生一定頻率的聲音。再利用單片機(jī)軟件延時(shí)的方法來產(chǎn)生不同的節(jié)拍。把音頻和節(jié)拍結(jié)合起來,進(jìn)行合理的排列,即可播放出比較悅耳的音樂。本文比較詳細(xì)

13、地介紹了音樂播放器的工作原理、設(shè)計(jì)思路、硬件的選擇及相關(guān)作用、軟件的實(shí)現(xiàn)方法以及詳細(xì)的程序清單。</p><p>  控制單片機(jī)播放音樂的方式有很多,多數(shù)使用者利用單片機(jī)存儲音樂與控制播放。本設(shè)計(jì)利用AT89S52單片機(jī)及少數(shù)外圍電路控制音樂播放,產(chǎn)生兩首不同的歌曲。 對于單片機(jī)產(chǎn)生音樂,關(guān)鍵是控制頻率的輸出。本設(shè)計(jì)采用了定時(shí)器T0中斷的方法產(chǎn)生不同頻率的脈沖,從而產(chǎn)生不同頻率的聲音。此外,使用紅外一體化頭SM0

14、038接收紅外信號,通過外部中斷INT1來進(jìn)行對紅外信號的解碼,由單片機(jī)內(nèi)部程序?qū)Σ煌逆I值完成不同的操作。并且使用常用的無源蜂鳴器進(jìn)行發(fā)聲,實(shí)現(xiàn)了一個(gè)簡單的遙控音樂播放器的功能。</p><p><b>  1.2 主要功能</b></p><p>  本設(shè)計(jì)以單片機(jī)為核心實(shí)現(xiàn)紅外遙控音樂播放器功能,主要完成功能為兩首歌曲的選擇播放、暫停、暫停后斷點(diǎn)播放、結(jié)束播放

15、歌曲,播放下一曲,播放上一曲等功能。同時(shí),使用數(shù)碼管顯示紅外信號解碼后的鍵值。其中為了方便,將32位的二進(jìn)制紅外信號編碼解碼為8位16進(jìn)制編碼。其中,本設(shè)計(jì)只顯示紅外信號解碼后8位16進(jìn)制編碼中的兩位數(shù)據(jù)碼,其它的用戶編碼與數(shù)據(jù)碼的反碼共6位不予顯示。本設(shè)計(jì)中使用常見的家用紅外遙控器進(jìn)行控制,使用其中的1、2兩個(gè)數(shù)字鍵(對應(yīng)功能選擇1、2兩首歌曲),音量加、減兩個(gè)按鍵(對應(yīng)功能上一曲、下一曲),頻道加、減兩個(gè)按鍵(對應(yīng)功能暫停、結(jié)束播放

16、),以及確定鍵(對應(yīng)功能播放歌曲)。</p><p><b>  第2章 電路設(shè)計(jì)</b></p><p>  2.1 整體電路設(shè)計(jì)</p><p>  根據(jù)設(shè)計(jì)要求,紅外遙控音樂播放器可以分為三個(gè)模塊進(jìn)行設(shè)計(jì):</p><p>  1.單片機(jī)最小系統(tǒng)電路:單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的

17、單片機(jī)可以工作的最小的系統(tǒng)單元。</p><p>  對51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、時(shí)鐘電路、復(fù)位電路。本設(shè)計(jì)中使用的單片機(jī)為AT89S52,晶振電路使用12MHZ的晶振。復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,當(dāng)系統(tǒng)一上電,RST腳將會出現(xiàn)高電平,當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位。</p><p>  2.紅外解碼電路:本電路主要用于對紅外遙控器發(fā)出的紅外信號進(jìn)

18、行解碼,然后程序根據(jù)解碼后的不同鍵值相應(yīng)完成不同的功能。</p><p>  3.顯示及播放電路:本部分電路用于顯示紅外遙控器不同按鍵所對應(yīng)的不同按鍵值,實(shí)物中用兩位16進(jìn)制數(shù)在數(shù)碼管上進(jìn)行顯示。播放電路主要用蜂鳴器來播放不同的音樂曲目。</p><p>  分析各模塊電路的功能,畫出原理框圖如圖2-1所示:</p><p>  圖2-1 紅外遙控音樂播放器原理框圖

19、</p><p>  2.2 電路模塊設(shè)計(jì)</p><p>  2.2.1 單片機(jī)最小系統(tǒng)電路</p><p>  單片機(jī)最小系統(tǒng)電路如圖2-2所示:</p><p>  圖2-2 單片機(jī)最小系統(tǒng)電路圖</p><p>  由圖2-2可以知道,單片機(jī)最小系統(tǒng)主要由復(fù)位電路、時(shí)鐘電路等組成。</p>&

20、lt;p>  1.復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,并結(jié)合"電容電壓不能突變"的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會出現(xiàn)高電平,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來決定。</p><p>  典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位,所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位。一般教科書推薦C 取10uF,R取8.2K左右。當(dāng)然也有其他取法的,原則就是要讓

21、RC組合可以在RST腳上產(chǎn)生不少于2個(gè)機(jī)周期的高電平。單片機(jī)復(fù)位電路就好比電腦的重啟部分,當(dāng)電腦在使用中出現(xiàn)死機(jī),按下重啟按鈕電腦內(nèi)部的程序從頭開始執(zhí)行。單片機(jī)也一樣,當(dāng)單片機(jī)系統(tǒng)在運(yùn)行中,受到環(huán)境干擾出現(xiàn)程序跑飛的時(shí)候,按下復(fù)位按鈕內(nèi)部的程序自動從頭開始執(zhí)行。</p><p>  2.時(shí)鐘電路:單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,引腳XTAL1 和XTAL2 分別是該放大器的輸入端和輸出端,如果引腳XTAL1 和

22、XTAL2 兩端跨接上晶體振蕩器(晶振)或陶瓷振蕩器就構(gòu)成了穩(wěn)定的自激振蕩電路,該振蕩電路的輸出可直接送入內(nèi)部時(shí)序電</p><p><b>  路。</b></p><p>  單片機(jī)的時(shí)鐘可由兩種方式產(chǎn)生,即內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。</p><p>  (1)內(nèi)部時(shí)鐘方式。內(nèi)部時(shí)鐘方式即是由單片機(jī)內(nèi)部的高增益反相放大器和外部跨接的晶振、

23、微調(diào)電容構(gòu)成時(shí)鐘電路產(chǎn)生時(shí)鐘的方法。外接晶振(陶瓷振蕩器)時(shí),C1、C2 的值通常選擇為30Pf左右;C1、C2 對頻率有微調(diào)作用,晶振或陶瓷諧振器的頻率范圍可在1.2MHz ~12MHz之間選擇。為了減小寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作,振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)引腳XTALl 和XTAL2 靠近。由于內(nèi)部時(shí)鐘方式外部電路接線簡單,單片機(jī)應(yīng)用系統(tǒng)中大多采用這種方式。內(nèi)部時(shí)鐘方式產(chǎn)生的時(shí)鐘信號的頻率就是晶振的固有頻率,

24、常用fsoc 來表示。</p><p>  (2)外部時(shí)鐘方式。外部時(shí)鐘方式即完全用單片機(jī)外部電路產(chǎn)生時(shí)鐘的方法,外部電路產(chǎn)生的時(shí)鐘信號被直接接到單片機(jī)的XTAL1引入,此時(shí)XTAL2 開路。</p><p>  3.內(nèi)外程序存儲器選擇控制端EA/Vpp,決定了單片機(jī)訪問內(nèi)部或外部的程序存儲器。EA高電平時(shí),訪問內(nèi)部程序存儲器,但當(dāng)程序計(jì)數(shù)器(PC)值超過0FFFFH時(shí),單片機(jī)自動轉(zhuǎn)向外部

25、程序存儲器。當(dāng)EA低電平時(shí),不管單片機(jī)有無內(nèi)部存儲器,只訪問外部存儲器[1]。</p><p>  2.2.2 紅外解碼電路</p><p>  紅外解碼電路如圖2-3所示:</p><p>  圖2-3 紅外解碼電路圖</p><p>  由圖2-3知道,紅外解碼電路中主要元件為紅外一體化接收頭SM0038。</p><

26、;p>  一體化紅外接收頭SM0038是集信號放大、濾波、檢波、整形于一體的紅外接收器,電路內(nèi)置PIN二極管和前置放大器,采用可以紅外濾波的環(huán)氧樹脂材料封裝,可靠性高,不易受環(huán)境影響并可以防止非控制信號的輸出脈沖出現(xiàn)。</p><p>  內(nèi)部結(jié)構(gòu)如圖2-4所示:</p><p>  圖2-4 SM0038內(nèi)部結(jié)構(gòu)圖</p><p>  SM0038內(nèi)置帶通濾

27、波器、積分器、和自動增益控制電路以抑制各種干擾和噪音。數(shù)據(jù)信號和干擾信號的主要區(qū)別在于載波頻率、脈沖波長和工作周期上。所以數(shù)據(jù)信號應(yīng)該滿足載波信號的頻率盡量接近帶通濾波器的中心頻率(38KHZ);脈沖長度在300us以上;數(shù)據(jù)的編碼類型相兼容。而本系統(tǒng)選用的SM0038在這三方面和NEC編碼格式是相配的</p><p>  2.2.3 顯示及播放電路</p><p>  顯示及播放電路如

28、圖2-5所示:</p><p>  圖2-5 顯示及播放電路圖</p><p>  1.74HC573:八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器。</p><p>  其真值表如表2-1所示:</p><p>  表2-1 74HC573真值表</p><p>  由真值表可知:當(dāng)=0、LE=1時(shí),輸出端數(shù)據(jù)等于輸入端數(shù)據(jù);當(dāng)=0、

29、LE=0時(shí),輸出端保持不變;當(dāng)=1時(shí),無論LE、D為何,輸出端為高阻態(tài)。</p><p>  74HC573與74HC138在電路中主要用于由數(shù)碼管組成的顯示電路。在數(shù)碼管顯示時(shí),如果要維持一個(gè)數(shù)據(jù)的顯示,往往要持續(xù)的快速的刷新。尤其是在四段八位數(shù)碼管等這些要選通的顯示設(shè)備上。在人類能夠接受的刷新頻率之內(nèi),大概每三十毫秒就要刷新一次。這就大大占用了處理器的處理時(shí)間,消耗了處理器的處理能力,還浪費(fèi)了處理器的功耗。&

30、lt;/p><p>  鎖存器的使用可以大大的緩解處理器在這方面的壓力。當(dāng)處理器把數(shù)據(jù)傳輸?shù)芥i存器并將其鎖存后,鎖存器的輸出引腳便會一直保持?jǐn)?shù)據(jù)狀態(tài)直到下一次鎖存新的數(shù)據(jù)為止。這樣在數(shù)碼管的顯示內(nèi)容不變之前,處理器的處理時(shí)間和I/O引腳便可以釋放。可以看出,處理器處理的時(shí)間僅限于顯示內(nèi)容發(fā)生變化的時(shí)候,這在整個(gè)顯示時(shí)間上只是非常少的一個(gè)部分。而處理器在處理完后可以有更多的時(shí)間來執(zhí)行其他的任務(wù)。這就是鎖存器數(shù)碼管顯示方

31、面的作用:節(jié)省了寶貴的MCU時(shí)間。</p><p>  鎖存器就是把當(dāng)前的狀態(tài)鎖存起來,使CPU送出的數(shù)據(jù)在接口電路的輸出端保持一段時(shí)間鎖存后狀態(tài)不再發(fā)生變化,直到解除鎖定。還有一些芯片具有鎖存器,比如芯片74LS244 (3態(tài)8位緩沖器)就具有鎖存器的功能,它可以通過把一個(gè)引腳置高電平后,輸出就會保持現(xiàn)有的狀態(tài),直到把該引腳清0后才能繼續(xù)變化。 </p><p>  緩沖寄存器

32、又稱緩沖器,它分輸入緩沖器和輸出緩沖器兩種。前者的作用是將外設(shè)送來的數(shù)據(jù)暫時(shí)存放,以便處理器將它取走;后者的作用是用來暫時(shí)存放處理器送往外設(shè)的數(shù)據(jù)。有了數(shù)控緩沖器,就可以使高速工作的CPU與慢速工作的外設(shè)起協(xié)調(diào)和緩沖作用,實(shí)現(xiàn)數(shù)據(jù)傳送的同步。由于緩沖器接在數(shù)據(jù)總線上,故必須具有三態(tài)輸出功能。</p><p>  2.74HC138:三通道輸入、八通道輸出譯碼器。</p><p>  其真值

33、表如表2-2所示:</p><p>  表2-2 74HC138真值表</p><p>  74HC138譯碼器可接受3位二進(jìn)制加權(quán)地址輸入(A0, A1和A2),并當(dāng)使能時(shí),提供8個(gè)互斥的低有效輸出(Y0至Y7)。74HC138特有3個(gè)使能輸入端:兩個(gè)低電平有效(E1和E2)和一個(gè)高電平有效(E3)。除非E1和E2置低且E3置高,否則74HC138將保持所有輸出為高。利用這種復(fù)合使能特性

34、,74HC138充當(dāng)一個(gè)8輸出多路分配器,本設(shè)計(jì)中用于進(jìn)行數(shù)碼管的位選。</p><p>  3.ULN2003:高壓大電流達(dá)林頓晶體管陣列,由七個(gè)硅NPN復(fù)合晶體管組成。電路特點(diǎn): ULN2003的每一對達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類

35、要求高速大功率驅(qū)動的系統(tǒng)。本設(shè)計(jì)中用于無源蜂鳴器的驅(qū)動,同時(shí)可以為再次擴(kuò)展時(shí)提供驅(qū)動電路。</p><p><b>  第3章 程序設(shè)計(jì)</b></p><p>  分析紅外遙控音樂播放的功能,包括選擇播放兩首歌曲、暫停、暫停后斷點(diǎn)播放、結(jié)束播放歌曲,播放下一曲,播放上一曲,并且使用數(shù)碼管顯示紅外信號解碼后的兩位16進(jìn)制的數(shù)據(jù)碼。根據(jù)以上功能,可心得出結(jié)論:該程序設(shè)

36、計(jì)的主要工作,即核心問題是紅外信號的解碼。因?yàn)?,無論是播放音樂的哪一個(gè)操作,還是顯示紅外信號的數(shù)據(jù)碼,都是建立在對紅外信號的正確解碼下的。首先進(jìn)行正確的紅外解碼,然后根據(jù)解碼后的鍵值進(jìn)行播放歌曲與顯示按鍵值。按照以上得出的結(jié)論,畫出程序流程圖如圖3-1所示:</p><p>  圖3-1 程序流程圖</p><p>  結(jié)合程序流程圖,可以知道:將整個(gè)程序的設(shè)計(jì)分為兩個(gè)模塊,即:紅外解碼、

37、播放及顯示。</p><p>  3.1 紅外解碼程序</p><p>  在進(jìn)行程序設(shè)計(jì)之前,先分析一下紅外信號的波形。每當(dāng)次按鍵按下,紅外發(fā)射器會發(fā)出一串脈沖,紅外接收器會收到這一串脈沖寬度不等的脈沖波形流,其脈沖流包括:(1)前導(dǎo)碼:第1個(gè)脈沖波形;(2)用戶碼1:第2到第9個(gè)脈沖波形;(3)用戶碼2:第10到第17個(gè)脈沖波形;(4)數(shù)據(jù)碼:第18到第25個(gè)脈沖波形;(5)數(shù)據(jù)反碼

38、:第26到第33個(gè)脈沖波形;(6) 連續(xù)按鍵脈沖:第34和第35個(gè)脈沖為結(jié)束脈沖,在每次按鍵結(jié)束后會有兩個(gè)結(jié)束脈沖,如果一直按鍵不放的話,會一直發(fā)送連續(xù)按鍵脈沖,并可以認(rèn)為在收到10個(gè)連續(xù)按鍵脈沖后是下一個(gè)按鍵(本次設(shè)計(jì)中不考慮連續(xù)按鍵脈沖)。其碼型結(jié)構(gòu)如圖3-2所示:</p><p>  圖3-2 紅外信號碼型圖</p><p>  由圖3-2可知:紅外信號碼型中本次設(shè)計(jì)中要使用的部分,

39、即是圖3-2中的8位鍵數(shù)據(jù)碼。下面分析具體的怎樣進(jìn)行紅外信號的解碼。</p><p>  紅外信號為采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”,其波形如圖3-3所示。</p><p>  圖3-3 紅外信號脈沖寬度圖</p>

40、<p>  上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,即產(chǎn)生了如圖3-2所示的有效碼組序列。在圖3-3中同樣可以看到引導(dǎo)碼脈寬為9ms,間隔4.5ms。在紅外信號經(jīng)過解碼電路后,原碼型中的高低電平進(jìn)行反轉(zhuǎn)。在得到的新碼型中,去掉第一個(gè)下降沿(引導(dǎo)碼),第二個(gè)下降沿開始即為有效碼序列,應(yīng)該進(jìn)行解碼并記錄。在本設(shè)計(jì)中,

41、將解碼后的信號引入外部中斷1,由于是下降沿有效,故IT1=1[2]。紅外解碼源碼如下:</p><p>  unsigned char irtime; //脈沖寬度時(shí)間值</p><p>  unsigned char startflag;//接收開始標(biāo)志</p><p>  unsigned char bitnum; //碼組位數(shù)</p>&

42、lt;p>  unsigned char irreceok; //接收完成標(biāo)志</p><p>  unsigned char irprocok; //解碼完成標(biāo)志</p><p>  unsigned char irdata[33];//脈沖寬度數(shù)組</p><p>  unsigned char ircode[4]; //解碼值數(shù)組</p>

43、<p>  void timer0init(void) </p><p><b>  {</b></p><p>  TMOD=0x02; //定時(shí)器0 定時(shí)方式2 8位自動重裝</p><p>  TH0=0x00; //初值為0 實(shí)現(xiàn)定時(shí)256us</p><p><b

44、>  TL0=0x00;</b></p><p>  ET0=1; //開定時(shí)器0中斷</p><p>  EA=1; //開總中斷</p><p>  TR0=1; //啟動定時(shí)器0</p><p><b>  }</b></p><p> 

45、 void int1init(void)</p><p><b>  {</b></p><p>  IT1=1; //外部中斷1負(fù)跳變沿有效</p><p>  EX1=1; //開外部中斷1中斷</p><p>  EA=1; //開總中斷</p><p>

46、<b>  }</b></p><p>  void irproc(void)//解碼函數(shù) </p><p><b>  {</b></p><p>  uchar k,value,m,j;</p><p><b>  k=1;</b></p><p

47、>  for(j=0;j<4;j++)//4組二進(jìn)制碼</p><p><b>  {</b></p><p>  for(m=0;m<8;m++)//每組8位</p><p><b>  {</b></p><p>  value=value>>1;

48、//由于低位在前,所以右移到正常順序</p><p>  if(irdata[k]>6)//irtime大于6*256us 則解碼數(shù)據(jù)為1</p><p><b>  {</b></p><p>  value=value | 0x80;//解碼數(shù)據(jù)為1 則高位或1 則高位置1</p><p>

49、<b>  }</b></p><p>  k++;//所有二進(jìn)制碼的位</p><p><b>  }</b></p><p>  ircode[j]=value;//每組解碼后的值存入ircode</p><p><b>  }</b></p>

50、<p>  irprocok=1;//解碼完成</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  timer0init();//定時(shí)器初始化</p><p

51、>  int1init();//外部中斷初始化</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(irreceok) //接收完成</p><p><b>  { </b&

52、gt;</p><p>  irproc(); //解碼</p><p>  irreceok=0;</p><p><b>  }</b></p><p>  if(irprocok) //解碼完成</p><p><b>  {</b></p>

53、<p>  irwork(); //把解碼后的數(shù)據(jù)轉(zhuǎn)成16進(jìn)制的兩位數(shù)</p><p>  irprocok=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

54、<p>  void timer0() interrupt 1</p><p><b>  {</b></p><p><b>  irtime++;</b></p><p><b>  }</b></p><p>  void int1() interrupt 2

55、</p><p><b>  {</b></p><p>  if(startflag==1)</p><p><b>  {</b></p><p>  if(irtime>32)//檢測9ms引導(dǎo)碼</p><p><b>  {</b&g

56、t;</p><p>  bitnum=0;</p><p><b>  }</b></p><p>  irdata[bitnum]=irtime;</p><p><b>  irtime=0;</b></p><p><b>  bitnum++;<

57、;/b></p><p>  if(bitnum==33)//接收結(jié)束</p><p><b>  {</b></p><p><b>  bitnum=0;</b></p><p>  irreceok=1;//接收完成</p><p>

58、<b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  startflag=1;//接收開始標(biāo)志位</p><p

59、><b>  irtime=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  3.2 播放及顯示程序</p><p>  分析音樂播放的過程,其為不同頻率聲音的組合,當(dāng)一組恰當(dāng)頻率聲音組合按照一定的先后順序

60、與節(jié)拍播放時(shí),即可產(chǎn)生音樂。故要產(chǎn)生音頻信號,只要算出某一音頻的周期,將此周期除以2即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)此半周期時(shí)間,計(jì)時(shí)到后取反輸出,重復(fù)此過程即得到此頻率的聲音信號。此信號從P2.3腳輸出,用ULN2003驅(qū)動蜂鳴器播放音樂。其中每個(gè)音符使用兩個(gè)字節(jié)表示:低位字節(jié)(偶地址)代表音級,表示的音級為c、﹟c、d、﹟d、e、f、……a3、﹟a3、b3;高位字節(jié)(奇地址)代表音符的時(shí)值(節(jié)拍),表示拍數(shù)為1/8拍(0.10s)~

61、8拍(6.40s)。</p><p>  程序設(shè)計(jì)中用軟件延時(shí)程序來控制音級, 與紅外解碼共用定時(shí)器0進(jìn)行節(jié)拍的控制,并在播放和暫停播放中隨時(shí)判斷是否有紅外信號的改變,以便隨時(shí)更換或結(jié)束音樂。本設(shè)計(jì)中歌曲的音符存在一個(gè)數(shù)組中,以在開始位置和在中間位置播放不同的曲目。紅外信號解碼后,用兩位共陰數(shù)碼管顯示其中的數(shù)據(jù)碼[3]。顯示電路的74HC573用于數(shù)碼管的驅(qū)動,74HC138用于數(shù)碼管動態(tài)掃描時(shí)的位選,蜂鳴器播放

62、音樂源碼如下:</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit FM=P2^3; //定義蜂鳴器引腳</p><p>  uchar count;</p><p>  uns

63、igned char code song[] ={ //祝你平安</p><p>  0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,</p><p>  0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x

64、20,0x20,0x20,0x1c,0x20,</p><p>  0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,</p><p>  0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0

65、x26,0x20,</p><p>  0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,</p><p>  0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,</

66、p><p>  0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,</p><p>  0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,</p><p&g

67、t;  0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,</p><p>  0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,</p><p>  0x18,0x20,

68、0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,</p><p>  0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,</p><p>  0x39,0x20,0x26,0x10,0x2b

69、,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,</p><p>  0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,</p><p><b>  //八月桂花遍地開</b></p><p>  0x18,0x30,0x1C,0x10,0x

70、20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,</p><p>  0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,</p><p>  0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0

71、x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,</p><p>  0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,</p><p>  0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,

72、0x20,0x20,0x26,0x20,0x2B,0x20,</p><p>  0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,</p><p>  0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20

73、,0x30,0x1C,0x10,</p><p>  0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,</p><p>  0x1F,0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x4

74、0,</p><p>  0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,</p><p>  0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,</p>

75、<p>  0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00};</p><p>  void delay_50us(uint t) //延時(shí)50微秒</p><p><b>  {</b></p><p><b>  

76、uchar j;</b></p><p>  for(;t>0;t--)</p><p><b>  {</b></p><p>  for(j=19;j>0;j--);</p><p><b>  }</b></p><p><b>  }

77、</b></p><p>  void timer0init(void) </p><p><b>  {</b></p><p>  TMOD = 0x01;//定時(shí)器0 定時(shí)方式1</p><p>  IE = 0x82;//開定時(shí)器中斷 開總中斷</p>

78、<p>  TH0 = 0xDC;//定時(shí)10ms</p><p>  TL0 = 0x00;//定時(shí)10ms</p><p><b>  }</b></p><p>  void play(uchar i)//音樂播放函數(shù)</p><p><b>  {</b&

79、gt;</p><p>  uchar temp1,temp2;</p><p>  uint addr;//song[]播放位置</p><p>  count = 0;//中斷計(jì)數(shù)清0</p><p>  addr = i * 217;</p><p><b>  while(1)

80、</b></p><p><b>  {</b></p><p>  temp1 = song[addr++];</p><p>  if (temp1 == 0xFF) //休止符</p><p><b>  {</b></p><p>  TR0

81、 = 0;//關(guān)閉定時(shí)器0</p><p>  delay_50us(100);</p><p><b>  }</b></p><p>  else if (temp1 == 0x00)//歌曲結(jié)束符</p><p><b>  {</b></p><p><

82、;b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  temp2 = song[addr++];</p><p&g

83、t;  TR0 = 1;//啟動定時(shí)器0</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  FM = ~FM;</b></p><p>  delay_50us(temp1); </

84、p><p>  if(temp2 == count)//節(jié)拍</p><p><b>  {</b></p><p>  count = 0;</p><p><b>  break;</b></p><p><b>  }</b></p>

85、;<p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  timer0init();//定時(shí)器初始化</p><

86、;p><b>  while(1)</b></p><p><b>  {</b></p><p>  play(0);// play(0)為祝你平安 play(1)為八月桂花遍地開</p><p><b>  }</b></p><p><b>  }

87、</b></p><p>  void timer0() interrupt 1</p><p><b>  {</b></p><p>  TH0 = 0xDC;</p><p>  TL0 = 0x00;</p><p>  count++;//長度加1</p&g

88、t;<p><b>  }</b></p><p>  數(shù)碼管顯示紅外解碼值源碼如下:</p><p>  #define uchar unsigned char</p><p>  uchar table[16] = </p><p>  {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x

89、7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)碼管顯示編碼</p><p>  uchar disp[2]; //送往數(shù)碼管的數(shù)</p><p>  void irwork(void)//把解碼后的數(shù)據(jù)轉(zhuǎn)成16進(jìn)制的兩位數(shù)</p><p>  {<

90、/p><p>  disp[0]=ircode[2]/16;//取出ircode中的兩位“數(shù)據(jù)碼”</p><p>  disp[1]=ircode[2]%16;//取出ircode中的兩位“數(shù)據(jù)碼”</p><p><b>  }</b></p><p>  void display(void)//數(shù)

91、碼管顯示函數(shù)</p><p><b>  {</b></p><p>  P0=table[disp[0]];//P0口送數(shù)據(jù)</p><p>  P2=0x06;//數(shù)據(jù)管位選</p><p>  delay_50us(2);//顯示數(shù)值保持100us</p><p> 

92、 P2=0x00;//關(guān)閉位選</p><p>  P0=table[disp[1]];//P0口送數(shù)據(jù)</p><p>  P2=0x07;//數(shù)據(jù)管位選</p><p>  delay_50us(2);//顯示數(shù)值保持100us</p><p>  P2=0x00;//關(guān)閉位選</p>

93、;<p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><

94、p>  display();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  第4章 硬件調(diào)試</b></p><p>  根據(jù)上述設(shè)計(jì)電路畫出電路原理圖,根據(jù)原理圖焊接電路板,實(shí)物圖如圖4-1所示:</

95、p><p><b>  圖4-1 實(shí)物圖</b></p><p>  在本設(shè)計(jì)中使用的紅外遙控器如圖4-2所示,遙控器各按鍵相應(yīng)碼值如圖4-3所示:</p><p>  圖4-2 紅外遙控器 圖4-3 遙控器按鍵碼值 </p><p>  紅外遙控音樂播放器的設(shè)計(jì)中,對于紅外遙控器未將全部的按鍵設(shè)計(jì)

96、功能,本設(shè)計(jì)使用按鍵對應(yīng)碼值及功能如表4-1所示:</p><p>  表4-1 遙控器按鍵、碼值及功能表</p><p>  根據(jù)設(shè)計(jì)功能進(jìn)行硬件調(diào)試,調(diào)試過程如下:</p><p>  (1)單片機(jī)上電,此時(shí)無按鍵按鍵,數(shù)碼管顯示00,蜂鳴器不工作。</p><p>  (2)按下數(shù)字鍵1,對應(yīng)碼值17,數(shù)碼管顯示17,蜂鳴器工作,實(shí)現(xiàn)播

97、放曲目1:祝你平安。</p><p>  (3) 按下數(shù)字鍵2,對應(yīng)碼值16,數(shù)碼管顯示16,蜂鳴器工作,實(shí)現(xiàn)播放曲目2:八月桂花遍地開。</p><p>  (4) 按下頻道“+”,對應(yīng)碼值02,數(shù)碼管顯示02,蜂鳴器暫停播放曲目2。按下確認(rèn)鍵,對應(yīng)碼值06,數(shù)碼管顯示06,蜂鳴器繼續(xù)工作,實(shí)現(xiàn)斷點(diǎn)播放曲目2。</p><p>  (5) 按下頻道“+”,對應(yīng)碼值

98、02,數(shù)碼管顯示02,蜂鳴器暫停播放曲目2。按下音量“-”,對應(yīng)碼值07,數(shù)碼管顯示07,蜂鳴器播放曲目1,實(shí)現(xiàn)暫停時(shí)更換曲目。</p><p>  (6) 按下音量“+”,對應(yīng)碼值05,數(shù)碼管顯示05,蜂鳴器播放曲目2,實(shí)現(xiàn)播放時(shí)更換曲目。</p><p>  (7) 按下頻道“-”,對應(yīng)碼值0a,數(shù)碼管顯示0a,蜂鳴器停止工作,實(shí)現(xiàn)停止播放功能。</p><p>

99、;<b>  結(jié)論</b></p><p>  通過此次課程設(shè)計(jì),我對單片機(jī)的相關(guān)知識有了進(jìn)一步的了解和認(rèn)識,在單片機(jī)外圍電路的設(shè)計(jì)過程中也學(xué)到了許多課本上沒有的知識,并且學(xué)會了使用Proteus仿真軟件,可以讓我們在虛擬的環(huán)境中進(jìn)行仿真,可以先通過它來檢驗(yàn)電路的正確性和程序的可行性,而不需要真實(shí)電路環(huán)境的介入,不必顧及儀器設(shè)備的短缺與環(huán)境的限制,能夠極大的提高實(shí)驗(yàn)的效率。</p>

100、;<p>  本次設(shè)計(jì)讓我學(xué)到的知識有很多,提高了我的邏輯思維能力,使我在邏輯電路的分析與程序的設(shè)計(jì)上有了更大的進(jìn)步。加深了我對組合邏輯電路、時(shí)序邏輯電路以及單片機(jī)程序設(shè)計(jì)方面的認(rèn)識,也進(jìn)一步增進(jìn)了對一些常見邏輯器件的了解。另外,我還在焊接單片機(jī)電路的過程中,學(xué)到了許多焊接方面的知識與技巧。并且,培養(yǎng)了我查閱參考書和獨(dú)立思考的能力。這次課程設(shè)計(jì)使我真正懂得了理論與實(shí)際相結(jié)合的重要性。</p><p>

101、;<b>  參考文獻(xiàn)</b></p><p>  [1] 張毅剛.MCS-51單片機(jī)應(yīng)用設(shè)計(jì).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2003</p><p>  [2] 求是科技.8051系列單片機(jī)C程序設(shè)計(jì)完全手冊.北京:人民郵電出版社,2006</p><p>  [3] 李升.單片機(jī)原理與接口技術(shù).北京:北京大學(xué)出版社,2011</p&g

102、t;<p>  附錄1 整體電路圖及實(shí)物圖</p><p><b>  附錄2 電路元件</b></p><p><b>  附錄3 程序源碼</b></p><p>  #include<reg52.h></p><p>  #define uchar unsign

103、ed char</p><p>  #define uint unsigned int</p><p>  sbit FM=P2^3; //定義蜂鳴器引腳</p><p>  uchar table[16] = </p><p>  {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x

104、77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)碼管顯示編碼</p><p>  uchar irtime,startflag,bitnum,irreceok,irprocok,shuaxin,n;</p><p>  uchar i,count;</p><p>  uchar irdata[33];//所有irtime</p>

105、<p>  uchar ircode[4]; //解碼后數(shù)據(jù)</p><p>  uchar disp[2]; //送往數(shù)碼管的數(shù)</p><p>  uchar qumu[2] ={0,1};//曲目數(shù)組</p><p>  unsigned char code song[] ={ //祝你平安</p><p&g

106、t;  0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,</p><p>  0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,</p><p>  0x20,0x80,

107、0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,</p><p>  0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,</p><p>  0x30,0x20,0x30,0x20,0x39

108、,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,</p><p>  0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,</p><p>  0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x3

109、0,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,</p><p>  0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,</p><p>  0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x

110、30,0x60,0x39,0x10,0x30,0x10,</p><p>  0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,</p><p>  0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0

111、x20,0x30,0x20,</p><p>  0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,</p><p>  0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,

112、</p><p>  0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,</p><p><b>  //八月桂花遍地開</b></p><p>  0x18,0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x4

113、0,</p><p>  0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,</p><p>  0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,</p>

114、<p>  0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,</p><p>  0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,</p><p>  0x3

115、0,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,</p><p>  0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,</p><p>  0x20,0x10,0x1C,0x

116、10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,</p><p>  0x1F,0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,</p><p>  0x20,0x30,0x1C,0x10,0x18,0x20,0

117、x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,</p><p>  0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,</p><p>  0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,

118、0x40,0x13,0x40,0x18,0x80,0x00};</p><p>  void delay_50us(uint t) //延時(shí)50微秒</p><p><b>  {</b></p><p><b>  uchar j;</b></p><p>  for(;t>0;t--

119、)</p><p><b>  {</b></p><p>  for(j=19;j>0;j--);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void delay_25us(uint t)

120、 //延時(shí)25微秒</p><p><b>  {</b></p><p><b>  uchar j;</b></p><p>  for(;t>0;t--)</p><p><b>  {</b></p><p>  for(j=3;j&

121、gt;0;j--);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void timer0init(void) </p><p><b>  {</b></p><p>  TMOD=0x02;

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論