基于單片機的音樂播放系統(tǒng)_第1頁
基于單片機的音樂播放系統(tǒng)_第2頁
基于單片機的音樂播放系統(tǒng)_第3頁
基于單片機的音樂播放系統(tǒng)_第4頁
基于單片機的音樂播放系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

11、度的增加而上升。 例如,在音樂中常常把中音C上方的A音定位標(biāo)準(zhǔn)高音,其頻率F=440HZ,其余音均與其進行比較。F1和F2為兩個音符,如果這兩個音符的頻率相差一倍時,也即F2=2*F1時,則稱F2比F1高一個頻程。 在音樂中音符1與音符2,音符2與音符3等等之間正好相差一個倍頻程,在音樂學(xué)中稱它相差一個八度音。在一個八度內(nèi),有12個半音。由于人耳的聽覺效果,這12個音階的分度基本上是以對數(shù)的關(guān)系來劃分的。只要知道12個音符的音高,也就是其基本頻率,就可以根據(jù)音符之間的倍頻關(guān)系得到其他音符的基本音調(diào)頻率3。 以標(biāo)準(zhǔn)高音A的頻率F=440HZ,其對應(yīng)的周期為:

12、0;T=1/F=1/440=2272us 因此需要在單片機I/O端口輸出周期為T=2272us的方波脈沖,也就是t=T/2=2272/2=1136us 也就是說,單片機上定時器的中斷出發(fā)時間為1136us。如果單片機采用定時器為工作方式1,它以振蕩器的十二分頻信號為計數(shù)脈沖。設(shè)外接晶振的振蕩器頻率為f,則定時器的預(yù)置初始值有以下公式來確定: Temp = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC) TH = Temp /256 TL

13、0;= Temp %256主程序流程圖如圖8所示。圖8 主程序流程圖6 調(diào)試與故障分析 6.1 軟件程序調(diào)試本次設(shè)計的軟件部分由音樂播放程序組成,曲目序號顯示程序仿真。關(guān)于音樂播放程序的調(diào)試,我首先采用Preteus軟件來仿真,但是該仿真軟件中沒有喇叭或蜂鳴器等聲音播放工具。于是本人將圖3-4中的單片機的P1.0處接了一個示波器,想通過這樣來仿真并調(diào)試音樂播放程序,但是效果不是很理想。程序運行的時候,能看見示波器有不同頻率的波形交替出現(xiàn),但是頻率變換得很快,無法確認是否顯示的是所需要的頻率,并且無法辨別音頻變換的節(jié)奏是否正確。此方法并不適用。接著,我制作了一個簡單的單片機播

14、放器電路。即在實驗板上焊接實驗電路,電路由單片機89C51、按鈕外圍電路組成,并在單片機的P1.0處用三極管連接一個簡單的音頻放大器,再外接一個蜂鳴器。將程序?qū)懭雴纹瑱C中,這樣就能聽出聲音和音樂節(jié)奏是否正確。6.2 硬件電路調(diào)試 本次設(shè)計的硬件電路主要由單片機89C51組成,在調(diào)試電路的過程中也碰到了一些問題。問題一:單片機無法正常下載程序。調(diào)試步驟: (1)檢查單片機和串口電路是否連接錯。 (2)檢查焊接電路是否有虛焊和漏焊。 問題二:下載音頻程序后無法播放音樂。 調(diào)試步驟: 檢查電源是否正常接入電路中。 利用示波器測試單片機輸出端是否有信號輸出,發(fā)現(xiàn)信號輸出正常,說明單片機正常工作。 利用

15、示波器測試音頻放大電路輸出端是否有信號輸出,發(fā)現(xiàn)信號輸出正常,說明音頻放大電路工作正常,同時說明是蜂鳴器部分出現(xiàn)了問題。 故障原因:焊接時將發(fā)聲器件燒壞了,導(dǎo)致發(fā)不出聲音。 解決方案:重新?lián)Q一個無源蜂鳴器,即可正常播放音樂。7 結(jié)論 經(jīng)過這次課程設(shè)計,我覺得自己學(xué)到了不少東西。歸納起來,主要有以下幾點:(1)通過這次課程設(shè)計,我能將以前所學(xué)到的專業(yè)知識與實踐相聯(lián)系,將所學(xué)到的知識充分運用到本次設(shè)計中。同時,我也認識到自己知識上不足的地方,體會到了所學(xué)理論知識的重要性,知識掌握得越多,設(shè)計得就更全面、更順利、更好。(2)進一步熟悉了單片機的知識。通過本次課程設(shè)計,我對單片機的基本原理、內(nèi)部結(jié)構(gòu)、

16、各引腳功能、定時器和中斷的應(yīng)用都有了更深刻的理解。并且,能夠以單片機為基礎(chǔ)元件設(shè)計一個簡單的系統(tǒng)。(3)通過本次設(shè)計,熟悉了設(shè)計一個項目所必經(jīng)的幾個階段。本次設(shè)計從理論研究到硬件原理圖設(shè)計,自己購買元器件焊接電路板,從軟件編程到最后的調(diào)試過程都由我獨立完成。這不僅鍛煉了我獨立完成設(shè)計工作的能力,更重要的是了解了一個電子產(chǎn)品的設(shè)計流程,為將來投入工作增加了寶貴的經(jīng)驗,奠定了堅實的基礎(chǔ)。(4)提高了自己查找資料的能力。在設(shè)計過程中,我碰到了一些暫時無法解決的問題,于是我通過上網(wǎng)查閱和圖書館借閱資料,或是通過與老師同學(xué)交流一步步地解決了。從中我懂得了我們這個專業(yè)的知識面相當(dāng)廣泛,我們需要不斷通過各種

17、途徑更新自己的知識,不斷充實自己,同時要懂得與他人交流意見,積極聽取別人的建議,懂得不斷學(xué)習(xí)的重要性。8 致謝 五周的課程設(shè)計結(jié)束了,在這次的課程設(shè)計中不僅檢驗了我所學(xué)習(xí)的知識,也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計過程中,遇到許多這樣那樣的問題,在同學(xué)的熱情幫助下,相互學(xué)習(xí),相互監(jiān)督。 課程設(shè)計是我們專業(yè)課程知識綜合應(yīng)用的實踐訓(xùn)練,著是我們邁向社會,從事職業(yè)工作前一個必不少的過程”千里之行始于足下”,通過這次課程設(shè)計,我深深體會到這句千古名言的真正含義我今天認真的進行課程設(shè)計,學(xué)會腳踏實地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實的基礎(chǔ)通過這次

18、課程設(shè)計,本人在多方面都有所提高。通過這次課程設(shè)計,綜合運用本專業(yè)所學(xué)課程的理論和生產(chǎn)實際知識進行的實際訓(xùn)練從而培養(yǎng)和提高學(xué)生獨立工作能力,鞏固與擴充了單片機程序設(shè)計的應(yīng)用技能,熟悉了規(guī)范和標(biāo)準(zhǔn),同時各科相關(guān)的課程都有了全面的復(fù)習(xí),獨立思考的能力也有了提高。 在這次設(shè)計過程中,體現(xiàn)出自己單獨設(shè)計單片機程序的能力以及綜合運用知識的能力,體會了學(xué)以致用、突出自己勞動成果的喜悅心情,從中發(fā)現(xiàn)自己平時學(xué)習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補。 在此感謝我們的馬鳳霞老師,老師嚴謹細致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中的榜樣;老師循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪;這次課程設(shè)計的每個實驗細節(jié)和每個

19、數(shù)據(jù),都離不開老師您的細心指導(dǎo)。而您開朗的個性和寬容的態(tài)度,幫助我能夠很順利的完成了這次課程設(shè)計。 同時感謝對我?guī)椭^的同學(xué)們,謝謝你們對我的幫助和支持,讓我感受到同學(xué)的友誼。 由于本人的設(shè)計能力有限,在設(shè)計過程中難免出現(xiàn)錯誤,懇請老師們多多指教,我十分樂意接受你們的批評與指正,本人將萬分感謝。參考文獻1 鄭郁正.單片機原理及應(yīng)用.四川大學(xué)出版社,20032 譚浩強.C程序設(shè)計(第二版).清華大學(xué)出版社,19993 王曉君.安國臣等. MCS51及兼容單片機原理與選型. 北京-電子工業(yè)出版社, 20034 李啟炎. Protel 99SE應(yīng)用教程. 上海-同濟大學(xué)出版社 2005.25 胡燁,

20、 姚鵬翼, 江思敏. Protel 99 SE電路設(shè)計與仿真教程. 北京-機械工業(yè)出版社, 20066 張義和,陳敵北。例說8051。北京:人民郵電出版社,20067 張洪潤,張亞凡。單片機原理及應(yīng)用。清華大學(xué)出版社,2004附錄一:電路圖附錄二:主程序#include<REG52.H>#define sound_amount 5 /歌曲的數(shù)量sbit play_up=P13; /上一首歌sbit play_down=P35; /下一首歌sbit pause=P32; /播放暫停sbit speaker=P10; /無源蜂鳴器/unsigned char timer0h,timer

21、0l,time;/timer0h,timer0l為定時器T0的高低位初值,time為對應(yīng)的節(jié)拍時間unsigned char music_num; /music_num為歌曲編號,music_num=0表示剛開機時的狀態(tài),num是查找歌曲數(shù)據(jù)表的地址unsigned int num;signed int fre; /對應(yīng)頻率數(shù)據(jù)表的地址bit play_enable; /歌曲播放的使能標(biāo)志位,用于播放暫停void delay(unsigned char t); /延時子函數(shù),控制發(fā)音的時間長度void delayms(unsigned int t); /普通延時子程序,可用于按鍵消抖void

22、music_play(void); /播放歌曲/每三個數(shù)字,代表一個音符/第一個數(shù)字是音符的數(shù)值1234567之一(第幾個音),代表哆來咪發(fā)./第二個數(shù)字是0123之一,代表低音中音高音超高音(第幾個八度)/第三個數(shù)字是時間長度,以半拍為單位,樂曲數(shù)據(jù)表的結(jié)尾是三個0/煙花易冷unsigned 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,

23、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,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

24、,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, 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

25、, 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 ;/簡單愛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,

26、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,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

27、,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 song4= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, /6,2,3代表6,中音,3個半拍; /5,2,1代表5,中音,1個半拍; /3,2,2代表3,中音,2個半拍; /5,2,2代表5,中音,2個半拍; /1,3,2代表1,高音,2個半拍; /. 3,2,1, 2

28、,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)你孤單你會想起誰unsigned char code song5= 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

29、,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, 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,

30、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,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,

31、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,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;/最

32、浪漫的事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, 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,

33、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; / 頻率-半周期數(shù)據(jù)表 高八位 共保存了四個八度的28個頻率數(shù)據(jù)unsigned char code FREQH= 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, /低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC

34、,/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 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, /高音

35、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();/根據(jù)當(dāng)前狀態(tài)播放相應(yīng)歌曲的某個音符if(!pause)/暫停鍵處理if(!pause)if(music_num=0) /music_num=0只有在剛開機,且未按下暫停鍵時存在,表示剛開機時的狀態(tài),按下后從第一首開始播放music_num=1; /歌曲序號置1num=0; /從頭播放play_en

36、able=1;/允許播放elseplay_enable=play_enable; speaker=1;while(!pause) /若按著暫停鍵不放手時的處理if(play_enable=0) /如果是暫停,則顯示時間不變/(暫停時play_enable=0) /暫停鍵處理結(jié)束/while結(jié)束if(!play_up)&&(music_num!=0) /上一首按鍵delayms(5);if(!play_up)&&(music_num!=0) speaker=1;music_num-=1;/歌曲編號減一if(music_num<=0)music_num=8;n

37、um=0; /從頭開始播放if(music_num=(sound_amount+1)music_num=1; delayms(500);/歌曲切換時延時0.5Sif(!play_down)&&(music_num!=0)delayms(5);if(!play_down)&&(music_num!=0) speaker=1;music_num=1;num=0; /從頭開始播放if(music_num=0)music_num=sound_amount;delayms(500);/歌曲切換時延時0.5S void delayms(unsigned int t) /MS

38、延時子程序unsigned int i,j;for(i=0;i<t;i+)for(j=0;j<123;j+);void delay(unsigned char t) /延時子函數(shù),控制發(fā)音的時間長度,每個節(jié)拍0.4Sunsigned char t1;for(t1=0;t1<t;t1+) /嵌套循環(huán), 共延時t個半拍 for(t2=0;t2<8000;t2+) /延時期間, 可進入T0中斷去發(fā)音 ; TR0=0; /關(guān)閉T0, 停止發(fā)音void timer0(void) interrupt 1 /T0中斷程序,控制發(fā)音的音調(diào)speaker=!speaker;/輸出方波, 發(fā)音TH0=timer0h; /下次的中斷時間,這個時間控制音調(diào)高低TL0=timer0l; void song(void) /演奏一個音符TH0=timer0h; /控制音調(diào)TR0=1; /啟

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論