基于單片機(jī)的音樂(lè)播放系統(tǒng)_第1頁(yè)
基于單片機(jī)的音樂(lè)播放系統(tǒng)_第2頁(yè)
基于單片機(jī)的音樂(lè)播放系統(tǒng)_第3頁(yè)
基于單片機(jī)的音樂(lè)播放系統(tǒng)_第4頁(yè)
基于單片機(jī)的音樂(lè)播放系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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、液晶屏顯示納米比亞地圖音樂(lè)播放系統(tǒng)設(shè)計(jì)李凱龍目 錄摘 要11 緒論11.1 功能需求22 硬件設(shè)計(jì)22.1 音樂(lè)播放系統(tǒng)的電路原理圖22.2 電源輸入的電路原理圖32.3 晶振電路33 系統(tǒng)工作原理43.1 系統(tǒng)的總體方案設(shè)計(jì)43.2 主控芯片AT89C51簡(jiǎn)介44 線路連接55 軟件設(shè)計(jì)65.1 主程序流程圖66 調(diào)試與故障分析86.1 軟件程序調(diào)試86.2 硬件電路調(diào)試87 結(jié)論98 致謝9參考文獻(xiàn)10附錄一:電路圖11附錄二:主程序11Protel軟件及單片機(jī)技術(shù)綜合訓(xùn)練摘 要本文將介紹一種以89C51型單片機(jī)為基礎(chǔ)元件設(shè)計(jì)的自動(dòng)音樂(lè)播放器。在當(dāng)今這個(gè)科技高速發(fā)展的時(shí)代,生活節(jié)奏的加快,

2、人們長(zhǎng)期處于工作、學(xué)習(xí)壓力過(guò)大的狀態(tài),對(duì)于調(diào)節(jié)心理壓力而言音樂(lè)對(duì)于每一個(gè)人都十分重要,由此音樂(lè)播放器在國(guó)內(nèi)已經(jīng)開始普及。校園里的上下課的鈴聲,宿舍內(nèi)早晨的起床號(hào)聲音,都由以前枯燥刺耳的鈴音轉(zhuǎn)變成了好聽(tīng)的音樂(lè),公路、廣場(chǎng)中的計(jì)時(shí)裝置也逐漸開始采用音樂(lè)來(lái)充當(dāng)鈴聲。此裝置不僅為人們?nèi)粘I畹挠?jì)時(shí)提供了方便,同時(shí)也為目前快節(jié)奏的生活帶來(lái)了樂(lè)趣。本文是應(yīng)用MCS-51單片機(jī)原理和控制理論設(shè)計(jì)音樂(lè)演奏控制器的硬件電路,并利用C語(yǔ)言進(jìn)行程序設(shè)計(jì)。通過(guò)控制單片機(jī)內(nèi)部的定時(shí)器來(lái)產(chǎn)生不同頻率的方波,驅(qū)動(dòng)蜂鳴器發(fā)出不同音調(diào)的音樂(lè),再利用延遲來(lái)控制發(fā)音時(shí)間的長(zhǎng)短。把樂(lè)譜轉(zhuǎn)化成相應(yīng)的定時(shí)常數(shù)就可以從發(fā)音設(shè)備中演奏出悅耳

3、動(dòng)聽(tīng)的音樂(lè)。這種控制電路結(jié)構(gòu)簡(jiǎn)單,可讀性高,應(yīng)用性強(qiáng);軟件程序適應(yīng)范圍廣,對(duì)于不同的音樂(lè)只需要改變相應(yīng)的定時(shí)常數(shù)即可。關(guān)鍵詞: 音樂(lè)播放器,51單片機(jī),C語(yǔ)言1 緒論單片機(jī),更確切地說(shuō)應(yīng)稱為作微控制器,是20世紀(jì)70年代中期發(fā)展起來(lái)的一種面向控制的大規(guī)模集成電路模塊,其特點(diǎn)是功能強(qiáng)、體積小、可靠性高、價(jià)格低廉。它一面世便在工業(yè)控制、數(shù)據(jù)采集、智能儀表化、機(jī)電一體化、家用電器等領(lǐng)域得到了廣泛應(yīng)用,極大地提高了這些領(lǐng)域的技術(shù)水平和自動(dòng)化程度。因此,單片機(jī)的開發(fā)應(yīng)用已成為高科技和工程領(lǐng)域的一項(xiàng)重大課題。本次設(shè)計(jì)以89C51單片機(jī)為基礎(chǔ),利用單片機(jī)編成技術(shù)對(duì)芯片進(jìn)行功能設(shè)定,實(shí)現(xiàn)音樂(lè)的播放。同時(shí),利用

4、單片機(jī)的定時(shí)器中斷,在單片機(jī)內(nèi)部產(chǎn)生所需要的音樂(lè)頻率,并通過(guò)音頻功率放大器將音頻信號(hào)放大,通過(guò)蜂鳴器連續(xù)播放一段音樂(lè)。此設(shè)計(jì)通過(guò)多次測(cè)試,音樂(lè)聲音宏亮清晰,節(jié)拍正常,達(dá)到預(yù)期效果。本文將圍繞基于單片機(jī)的自動(dòng)音樂(lè)播放器,介紹一些關(guān)于單片機(jī)的基礎(chǔ)知識(shí)、音樂(lè)播放器的制作原理及方法(其中包括了音樂(lè)編程原理)、定時(shí)器的設(shè)定,以及仿真軟件(Keil、Protel99 SE)的使用方法和相關(guān)PCB板的制作。1.1 功能需求 本設(shè)計(jì)利用單片機(jī)組成音樂(lè)播放系統(tǒng)。利用單片機(jī)的定時(shí)器產(chǎn)生樂(lè)譜的各種頻率方波信號(hào)經(jīng)過(guò)放大后由喇叭發(fā)出聲音,能夠自動(dòng)連續(xù)播放多首樂(lè)曲,還能手動(dòng)選擇單曲。2 硬件設(shè)計(jì)2.1 音樂(lè)播放系統(tǒng)的電路

5、原理圖 單片機(jī)音樂(lè)播放器控制系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,環(huán)節(jié)較少,因此,單片機(jī)音樂(lè)播放器包括LED彩燈、數(shù)碼管的顯示。除了播放音樂(lè)有按鍵外,其余的硬件組成大體相同。對(duì)于單片機(jī)音樂(lè)播放器聲音的讀出除了蜂鳴器以外,還要配置合適的放大器播放出響亮的聲音。本系統(tǒng)共有兩部分構(gòu)成,其中硬件部分由電源電路、晶振電路、按鍵電路、復(fù)位電路、時(shí)鐘電路、發(fā)生電路組成,軟件部分對(duì)應(yīng)的由主程序、初始化程序、鍵功能程序、定時(shí)中斷程序等組成。單片機(jī)上位復(fù)電后,從頭開始執(zhí)行程序,時(shí)鐘頻率由外部晶振頻率提供。 電子時(shí)鐘的電路圖由電源輸入電路、晶振電路、按鍵電路、聲音播放電路等電路組成。本系統(tǒng)采用AT89C51單片機(jī)作為主控制芯片,為了提高計(jì)

6、時(shí)精度,所采用的晶振頻率為12MHz。電子時(shí)鐘原理圖如圖1所示。 圖1 音樂(lè)播放系統(tǒng)的電路原理圖2.2 電源輸入的電路原理圖音樂(lè)播放系統(tǒng)的主控制部分電源需要用5V直流電源供電,把頻率為50Hz、有效值為220V過(guò)電源變壓器、整流電路、濾波電路、穩(wěn)壓電路轉(zhuǎn)換成穩(wěn)定的直流電壓。由于輸入電壓為電網(wǎng)電壓,一般情況下所需直流電壓的數(shù)值和電網(wǎng)電壓的有效值相差較大,因而電源變壓器的作用顯現(xiàn)出來(lái)起到降壓作用。降壓后還是交流電壓,所以需要整流電路把交流電壓轉(zhuǎn)換成直流電壓。由于經(jīng)整流電路整流后的電壓含有較大的交流分量,會(huì)影響到負(fù)載電路的正常工作。需通過(guò)低通濾波電路濾波,使輸出電壓平滑。穩(wěn)壓電路的功能是使輸出直流電

7、壓基本不受電網(wǎng)電壓波動(dòng)和負(fù)載電阻變化的影響,從而獲得穩(wěn)定性足夠高的直流電壓,如圖2所示。圖2 電源輸入的原理圖2.3 晶振電路晶振電路如圖3所示。XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。圖3 晶振電路3 系統(tǒng)工作原理3.1 系統(tǒng)的總體方案設(shè)計(jì)本次設(shè)計(jì)課題為音樂(lè)播放系統(tǒng)的設(shè)計(jì),采用AT89C51單片機(jī)內(nèi)部定時(shí)器實(shí)現(xiàn)數(shù)字時(shí)鐘的定時(shí)功能。音樂(lè)播放系統(tǒng)的整體框圖如圖4所

8、示。圖4 音樂(lè)播放的系統(tǒng)整體框圖3.2 主控芯片AT89C51簡(jiǎn)介AT89C51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89C51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。其引腳圖如圖5所示。圖5 AT89C51引腳圖4 線路連接本課程設(shè)計(jì)需要用到CPU 模塊的P1.0、

9、P1.3、P3.2、P3.5、XTAL1、XTAL2、電源VCC、接地GND引腳。電路板由自己焊接好,無(wú)需外部擴(kuò)展。電路原理圖如下。圖6 89C51引腳接線圖圖7 聲音播放模塊、晶振電路、LED模塊、按鈕模塊、電源模塊接線圖5 軟件設(shè)計(jì)5.1 主程序流程圖一般來(lái)說(shuō),單片機(jī)不像其他專業(yè)樂(lè)器那樣能奏出多種音色的聲音,即不包含相應(yīng)幅度的諧振頻率。單片機(jī)演奏的音樂(lè)基本都是單音頻率。因此單片機(jī)演奏音樂(lè)比較簡(jiǎn)單,只需能清楚“音調(diào)”和“節(jié)拍”兩個(gè)概念即可。音調(diào)表示一個(gè)音符唱多高的頻率。節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。知道了一個(gè)音符的頻率后,便可以讓單片機(jī)發(fā)出相應(yīng)頻率的振蕩信號(hào),從而產(chǎn)生相應(yīng)的音符聲音。通過(guò)單片

10、機(jī)的定時(shí)器進(jìn)行定時(shí)中斷,在中斷服務(wù)程序中將單片機(jī)上完結(jié)單片機(jī)I/O口來(lái)回置高電平或者是低電平的,從而讓揚(yáng)聲器發(fā)出聲音。通過(guò)節(jié)拍計(jì)算出每個(gè)音符所需要的時(shí)間,采用循環(huán)延時(shí)的方法來(lái)實(shí)現(xiàn)控制一個(gè)音符唱多長(zhǎng)的時(shí)間,從而構(gòu)成一首完整的音樂(lè)。音調(diào)主要由聲音的頻率決定。對(duì)一定強(qiáng)度的純音,音調(diào)隨頻率的升降而升降;對(duì)一定頻率的純音、低頻純音的音調(diào)隨響度增加而下降,高頻純音的音調(diào)卻隨響度增加而上升。音調(diào)的高低還與發(fā)聲體的結(jié)構(gòu)有關(guān),因?yàn)榘l(fā)聲體的結(jié)構(gòu)影響了聲音的頻率。大體上,2000赫茲以下的低頻純音的音調(diào)隨響度的增加而下降,3000赫茲以上高頻純音的音調(diào)隨響度的增加而上升。例如,在音樂(lè)中常常把中音C上方的A音定位標(biāo)準(zhǔn)

11、高音,其頻率F=440HZ,其余音均與其進(jìn)行比較。F1和F2為兩個(gè)音符,如果這兩個(gè)音符的頻率相差一倍時(shí),也即F2=2*F1時(shí),則稱F2比F1高一個(gè)頻程。在音樂(lè)中音符1與音符2,音符2與音符3等等之間正好相差一個(gè)倍頻程,在音樂(lè)學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度內(nèi),有12個(gè)半音。由于人耳的聽(tīng)覺(jué)效果,這12個(gè)音階的分度基本上是以對(duì)數(shù)的關(guān)系來(lái)劃分的。只要知道12個(gè)音符的音高,也就是其基本頻率,就可以根據(jù)音符之間的倍頻關(guān)系得到其他音符的基本音調(diào)頻率3。以標(biāo)準(zhǔn)高音A的頻率F=440HZ,其對(duì)應(yīng)的周期為:T=1/F=1/440=2272us因此需要在單片機(jī)I/O端口輸出周期為T=2272us的方波脈沖,也就

12、是t=T/2=2272/2=1136us也就是說(shuō),單片機(jī)上定時(shí)器的中斷出發(fā)時(shí)間為1136us。如果單片機(jī)采用定時(shí)器為工作方式1,它以振蕩器的十二分頻信號(hào)為計(jì)數(shù)脈沖。設(shè)外接晶振的振蕩器頻率為f,則定時(shí)器的預(yù)置初始值有以下公式來(lái)確定:Temp=65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC)TH=Temp/256TL=Temp%256主程序流程圖如圖8所示。圖8 主程序流程圖6 調(diào)試與故障分析 6.1 軟件程序調(diào)試本次設(shè)計(jì)的軟件部分由音樂(lè)播放程序組成,曲目序號(hào)顯示程序仿真。關(guān)于音樂(lè)播放程序的調(diào)試,我首先采用Preteus軟件來(lái)仿真,但是該仿真軟件中

13、沒(méi)有喇叭或蜂鳴器等聲音播放工具。于是本人將圖3-4中的單片機(jī)的P1.0處接了一個(gè)示波器,想通過(guò)這樣來(lái)仿真并調(diào)試音樂(lè)播放程序,但是效果不是很理想。程序運(yùn)行的時(shí)候,能看見(jiàn)示波器有不同頻率的波形交替出現(xiàn),但是頻率變換得很快,無(wú)法確認(rèn)是否顯示的是所需要的頻率,并且無(wú)法辨別音頻變換的節(jié)奏是否正確。此方法并不適用。接著,我制作了一個(gè)簡(jiǎn)單的單片機(jī)播放器電路。即在實(shí)驗(yàn)板上焊接實(shí)驗(yàn)電路,電路由單片機(jī)89C51、按鈕外圍電路組成,并在單片機(jī)的P1.0處用三極管連接一個(gè)簡(jiǎn)單的音頻放大器,再外接一個(gè)蜂鳴器。將程序?qū)懭雴纹瑱C(jī)中,這樣就能聽(tīng)出聲音和音樂(lè)節(jié)奏是否正確。6.2 硬件電路調(diào)試 本次設(shè)計(jì)的硬件電路主要由單片機(jī)89

14、C51組成,在調(diào)試電路的過(guò)程中也碰到了一些問(wèn)題。問(wèn)題一:?jiǎn)纹瑱C(jī)無(wú)法正常下載程序。調(diào)試步驟: (1)檢查單片機(jī)和串口電路是否連接錯(cuò)。 (2)檢查焊接電路是否有虛焊和漏焊。 問(wèn)題二:下載音頻程序后無(wú)法播放音樂(lè)。 調(diào)試步驟: 檢查電源是否正常接入電路中。 利用示波器測(cè)試單片機(jī)輸出端是否有信號(hào)輸出,發(fā)現(xiàn)信號(hào)輸出正常,說(shuō)明單片機(jī)正常工作。 利用示波器測(cè)試音頻放大電路輸出端是否有信號(hào)輸出,發(fā)現(xiàn)信號(hào)輸出正常,說(shuō)明音頻放大電路工作正常,同時(shí)說(shuō)明是蜂鳴器部分出現(xiàn)了問(wèn)題。 故障原因:焊接時(shí)將發(fā)聲器件燒壞了,導(dǎo)致發(fā)不出聲音。 解決方案:重新?lián)Q一個(gè)無(wú)源蜂鳴器,即可正常播放音樂(lè)。7 結(jié)論 經(jīng)過(guò)這次課程設(shè)計(jì),我覺(jué)得自己學(xué)

15、到了不少東西。歸納起來(lái),主要有以下幾點(diǎn):(1)通過(guò)這次課程設(shè)計(jì),我能將以前所學(xué)到的專業(yè)知識(shí)與實(shí)踐相聯(lián)系,將所學(xué)到的知識(shí)充分運(yùn)用到本次設(shè)計(jì)中。同時(shí),我也認(rèn)識(shí)到自己知識(shí)上不足的地方,體會(huì)到了所學(xué)理論知識(shí)的重要性,知識(shí)掌握得越多,設(shè)計(jì)得就更全面、更順利、更好。(2)進(jìn)一步熟悉了單片機(jī)的知識(shí)。通過(guò)本次課程設(shè)計(jì),我對(duì)單片機(jī)的基本原理、內(nèi)部結(jié)構(gòu)、各引腳功能、定時(shí)器和中斷的應(yīng)用都有了更深刻的理解。并且,能夠以單片機(jī)為基礎(chǔ)元件設(shè)計(jì)一個(gè)簡(jiǎn)單的系統(tǒng)。(3)通過(guò)本次設(shè)計(jì),熟悉了設(shè)計(jì)一個(gè)項(xiàng)目所必經(jīng)的幾個(gè)階段。本次設(shè)計(jì)從理論研究到硬件原理圖設(shè)計(jì),自己購(gòu)買元器件焊接電路板,從軟件編程到最后的調(diào)試過(guò)程都由我獨(dú)立完成。這不僅

16、鍛煉了我獨(dú)立完成設(shè)計(jì)工作的能力,更重要的是了解了一個(gè)電子產(chǎn)品的設(shè)計(jì)流程,為將來(lái)投入工作增加了寶貴的經(jīng)驗(yàn),奠定了堅(jiān)實(shí)的基礎(chǔ)。(4)提高了自己查找資料的能力。在設(shè)計(jì)過(guò)程中,我碰到了一些暫時(shí)無(wú)法解決的問(wèn)題,于是我通過(guò)上網(wǎng)查閱和圖書館借閱資料,或是通過(guò)與老師同學(xué)交流一步步地解決了。從中我懂得了我們這個(gè)專業(yè)的知識(shí)面相當(dāng)廣泛,我們需要不斷通過(guò)各種途徑更新自己的知識(shí),不斷充實(shí)自己,同時(shí)要懂得與他人交流意見(jiàn),積極聽(tīng)取別人的建議,懂得不斷學(xué)習(xí)的重要性。8 致謝 五周的課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過(guò)程中,遇到

17、許多這樣那樣的問(wèn)題,在同學(xué)的熱情幫助下,相互學(xué)習(xí),相互監(jiān)督。 課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過(guò)程”千里之行始于足下”,通過(guò)這次課程設(shè)計(jì),我深深體會(huì)到這句千古名言的真正含義我今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ)通過(guò)這次課程設(shè)計(jì),本人在多方面都有所提高。通過(guò)這次課程設(shè)計(jì),綜合運(yùn)用本專業(yè)所學(xué)課程的理論和生產(chǎn)實(shí)際知識(shí)進(jìn)行的實(shí)際訓(xùn)練從而培養(yǎng)和提高學(xué)生獨(dú)立工作能力,鞏固與擴(kuò)充了單片機(jī)程序設(shè)計(jì)的應(yīng)用技能,熟悉了規(guī)范和標(biāo)準(zhǔn),同時(shí)各科相關(guān)的課程都有了全面的復(fù)習(xí),獨(dú)立思考的能力也有了提高。 在這

18、次設(shè)計(jì)過(guò)程中,體現(xiàn)出自己?jiǎn)为?dú)設(shè)計(jì)單片機(jī)程序的能力以及綜合運(yùn)用知識(shí)的能力,體會(huì)了學(xué)以致用、突出自己勞動(dòng)成果的喜悅心情,從中發(fā)現(xiàn)自己平時(shí)學(xué)習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補(bǔ)。 在此感謝我們的馬鳳霞老師,老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中的榜樣;老師循循善誘的教導(dǎo)和不拘一格的思路給予我無(wú)盡的啟迪;這次課程設(shè)計(jì)的每個(gè)實(shí)驗(yàn)細(xì)節(jié)和每個(gè)數(shù)據(jù),都離不開老師您的細(xì)心指導(dǎo)。而您開朗的個(gè)性和寬容的態(tài)度,幫助我能夠很順利的完成了這次課程設(shè)計(jì)。 同時(shí)感謝對(duì)我?guī)椭^(guò)的同學(xué)們,謝謝你們對(duì)我的幫助和支持,讓我感受到同學(xué)的友誼。 由于本人的設(shè)計(jì)能力有限,在設(shè)計(jì)過(guò)程中難免出現(xiàn)錯(cuò)誤,懇請(qǐng)老師們多多指教,我十分樂(lè)意接受你

19、們的批評(píng)與指正,本人將萬(wàn)分感謝。參考文獻(xiàn)1 鄭郁正.單片機(jī)原理及應(yīng)用.四川大學(xué)出版社,20032 譚浩強(qiáng).C程序設(shè)計(jì)(第二版).清華大學(xué)出版社,19993 王曉君.安國(guó)臣等. MCS51及兼容單片機(jī)原理與選型. 北京-電子工業(yè)出版社, 20034 李啟炎. Protel 99SE應(yīng)用教程. 上海-同濟(jì)大學(xué)出版社 2005.25 胡燁, 姚鵬翼, 江思敏. Protel 99 SE電路設(shè)計(jì)與仿真教程. 北京-機(jī)械工業(yè)出版社, 20066 張義和,陳敵北。例說(shuō)8051。北京:人民郵電出版社,20067 張洪潤(rùn),張亞凡。單片機(jī)原理及應(yīng)用。清華大學(xué)出版社,2004附錄一:電路圖附錄二:主程序#incl

20、ude#define sound_amount 5 /歌曲的數(shù)量sbit play_up=P13; /上一首歌sbit play_down=P35; /下一首歌sbit pause=P32; /播放暫停sbit speaker=P10; /無(wú)源蜂鳴器/unsigned char timer0h,timer0l,time;/timer0h,timer0l為定時(shí)器T0的高低位初值,time為對(duì)應(yīng)的節(jié)拍時(shí)間unsigned char music_num; /music_num為歌曲編號(hào),music_num=0表示剛開機(jī)時(shí)的狀態(tài),num是查找歌曲數(shù)據(jù)表的地址unsigned int num;signe

21、d int fre; /對(duì)應(yīng)頻率數(shù)據(jù)表的地址bit play_enable; /歌曲播放的使能標(biāo)志位,用于播放暫停void delay(unsigned char t); /延時(shí)子函數(shù),控制發(fā)音的時(shí)間長(zhǎng)度void delayms(unsigned int t); /普通延時(shí)子程序,可用于按鍵消抖void music_play(void); /播放歌曲/每三個(gè)數(shù)字,代表一個(gè)音符/第一個(gè)數(shù)字是音符的數(shù)值1234567之一(第幾個(gè)音),代表哆來(lái)咪發(fā)./第二個(gè)數(shù)字是0123之一,代表低音中音高音超高音(第幾個(gè)八度)/第三個(gè)數(shù)字是時(shí)間長(zhǎng)度,以半拍為單位,樂(lè)曲數(shù)據(jù)表的結(jié)尾是三個(gè)0/煙花易冷unsigned

22、 char code song1= 5,2,1, 3,2,1, 2,2,2, 2,2,4, 3,2,1, 1,2,1, 2,2,1, 3,2,4, 5,2,1, 3,2,1, 2,2,2, 2,2,2, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1, 7,2,1, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,1, 5,1,1, 6,1,6, 5,2,1, 3,2,1, 2,2,2, 2,2,1, 2,

23、2,1, 2,2,1, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1, 7,2,3, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,2, 5,1,2, 6,1,6, 0,0,0 ;/發(fā)如雪unsigned char code song2= 5,1,1, 2,2,1, 3,2,2, 2,2,1, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1, 3,2,1, 6,2,1,

24、 5,2,1, 3,2,1, 5,2,3, 5,2,1, 6,2,1, 1,3,2, 6,2,1, 5,2,1, 3,2,1, 5,2,1, 3,2,2, 1,2,1, 2,2,1, 3,2,1, 1,2,1, 6,1,1, 3,2,1, 2,2,1, 5,1,1, 2,2,1, 3,2,2, 2,2,1, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1, 5,2,1, 3,2,1, 5,2,1, 3,2,2, 1,2,1, 6,1,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 2,2,1, 2,2,1, 1,2,4, 0,0,0

25、 ;/簡(jiǎn)單愛(ài)unsigned char code song3= 5,1,1, 1,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,1, 4,2,1, 3,2,1, 2,2,3, 5,1,1, 1,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1, 3,2,1, 3,2,1, 1,2,1, 5,2,1, 1,2,1, 5,2,1, 1,2,1, 7,1,1, 1,

26、2,1, 1,2,1, 6,1,1, 2,2,1, 2,2,1, 3,2,1, 3,2,1, 5,2,1, 5,2,1, 4,2,1, 3,2,1, 2,2,3, 5,1,1, 1,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1, 3,2,1, 3,2,1, 1,2,2, 5,2,1, 1,2,1, 5,2,1, 5,2,1, 7,1,1, 1,2,1, 0,0,0 ;/世上只有媽媽好unsigned char code so

27、ng4= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, /6,2,3代表6,中音,3個(gè)半拍; /5,2,1代表5,中音,1個(gè)半拍; /3,2,2代表3,中音,2個(gè)半拍; /5,2,2代表5,中音,2個(gè)半拍; /1,3,2代表1,高音,2個(gè)半拍; /. 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0;/當(dāng)你孤單你會(huì)想起誰(shuí)unsigned char code so

28、ng5= 3,2,2, 3,2,1, 4,2,1, 3,2,2, 2,2,1, 1,2,1, 2,2,2, 5,2,2, 2,2,2, 2,2,3, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 5,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 7,1,1, 1,2,6, 0,0,0 ;/鄉(xiāng)間小路unsigned char code song6= 3,1,2, 3,1,1, 3,1,1, 6,0,1, 6,0,1, 1,1,2, 6,0,1

29、, 5,0,1, 6,0,4, 6,0,2, 6,0,1 ,6,0,1, 6,0,2, 6,0,1, 1,1,1, 2,1,2, 2,1,1, 3,1,1, 2,1,4, 3,1,1, 3,1,1, 3,1,1, 2,1,1, 4,1,2, 3,1,1, 6,1,1, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 5,1,1, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 4,1,2, 4,1,1, 3,1,1, 2,1,2, 1,1,1, 2,1,1, 3,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,4, 6,1,2, 3,1,1, 6,1,

30、1, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 0,0,0; /送別unsigned char code song7= 5,1,2, 3,1,3, 5,1,1, 1,2,3, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 1,1,1, 2,1,1, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 5,1,2, 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 2,1,1, 7,1,1, 1,2,4, 6,1,1, 7,1,1, 1,

31、2,1, 6,1,1, 6,1,1, 5,1,1, 3,1,1, 1,1,1, 2,1,8, 5,1,2, 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 2,1,1, 3,1,1, 4,1,2, 7,0,2, 1,1,4, 0,0,0;/最浪漫的事unsigned char code song8= 5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1, 5,1,1, 3,1,1, 5,1,5, 5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1

32、, 5,1,1, 6,1,1, 1,1,5, 3,1,2, 2,1,3, 5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1, 5,1,1, 6,1,1, 1,1,5, 1,1,1, 2,1,1, 3,1,1, 4,1,2, 4,1,1, 5,1,1, 6,1,1, 6,1,1, 5,1,1, 6,1,2, 1,2,1, 6,1,3, 1,2,1, 6,1,1, 5,1,1, 5,1,4, 1,1,1, 6,1,1, 5,1,5, 5,1,1, 6,1,1, 1,2,1, 3,1,1, 2,1,1, 3,1,1, 1,1,6, 0,0,0; / 頻率

33、-半周期數(shù)據(jù)表 高八位 共保存了四個(gè)八度的28個(gè)頻率數(shù)據(jù)unsigned char code FREQH= 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, /低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,/1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, /高音 234567 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF; /超高音 1234567/ 頻率-半周期數(shù)據(jù)表 低八位unsigned char

34、 code FREQL= 0x42, 0xC1, 0x17, 0xB6, /低音1234567 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, /1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, /高音 234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16; /超高音 1234567 void main(void)TMOD=0x11; /T0 T1 均在工作方式1ET0=1; /T0開中斷EA=1; /CPU開中斷 while(1)music_play

35、();/根據(jù)當(dāng)前狀態(tài)播放相應(yīng)歌曲的某個(gè)音符if(!pause)/暫停鍵處理if(!pause)if(music_num=0) /music_num=0只有在剛開機(jī),且未按下暫停鍵時(shí)存在,表示剛開機(jī)時(shí)的狀態(tài),按下后從第一首開始播放music_num=1; /歌曲序號(hào)置1num=0; /從頭播放play_enable=1;/允許播放elseplay_enable=play_enable; speaker=1;while(!pause) /若按著暫停鍵不放手時(shí)的處理if(play_enable=0) /如果是暫停,則顯示時(shí)間不變/(暫停時(shí)play_enable=0) /暫停鍵處理結(jié)束/while結(jié)束

36、if(!play_up)&(music_num!=0) /上一首按鍵delayms(5);if(!play_up)&(music_num!=0) speaker=1;music_num-=1;/歌曲編號(hào)減一if(music_num=0)music_num=8;num=0; /從頭開始播放if(music_num=(sound_amount+1)music_num=1; delayms(500);/歌曲切換時(shí)延時(shí)0.5Sif(!play_down)&(music_num!=0)delayms(5);if(!play_down)&(music_num!=0) speaker=1;music_num

37、=1;num=0; /從頭開始播放if(music_num=0)music_num=sound_amount;delayms(500);/歌曲切換時(shí)延時(shí)0.5S void delayms(unsigned int t) /MS延時(shí)子程序unsigned int i,j;for(i=0;it;i+)for(j=0;j123;j+);void delay(unsigned char t) /延時(shí)子函數(shù),控制發(fā)音的時(shí)間長(zhǎng)度,每個(gè)節(jié)拍0.4Sunsigned char t1;for(t1=0;t1t;t1+) /嵌套循環(huán), 共延時(shí)t個(gè)半拍 for(t2=0;t28000;t2+) /延時(shí)期間, 可進(jìn)入T0中斷去發(fā)音 ; TR0=0; /關(guān)閉T0, 停止發(fā)音void timer0(void) interrupt 1 /T0中斷程序,控制發(fā)音的音調(diào)speaker=!speaker;/輸出方波, 發(fā)音TH0=timer0h; /下次的中斷時(shí)間,

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論