單片機音樂播放器課程設(shè)計總結(jié)_第1頁
單片機音樂播放器課程設(shè)計總結(jié)_第2頁
單片機音樂播放器課程設(shè)計總結(jié)_第3頁
單片機音樂播放器課程設(shè)計總結(jié)_第4頁
單片機音樂播放器課程設(shè)計總結(jié)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘 要本文將介紹一種以89C51型單片機為基礎(chǔ)元件設(shè)計的自動音樂播放器。在當(dāng)今這個科技高速發(fā)展的時代,生活節(jié)奏的加快,人們長期處于工作、學(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)生不同頻率的方波

2、,驅(qū)動蜂鳴器發(fā)出不同音調(diào)的音樂,再利用延遲來控制發(fā)音時間的長短。把樂譜轉(zhuǎn)化成相應(yīng)的定時常數(shù)就可以從發(fā)音設(shè)備中演奏出悅耳動聽的音樂。這種控制電路結(jié)構(gòu)簡單,可讀性高,應(yīng)用性強;軟件程序適應(yīng)范圍廣,對于不同的音樂只需要改變相應(yīng)的定時常數(shù)即可。關(guān)鍵詞:單片機;音樂播放器;C語言。目 錄緒 論1第1章 音樂盒的設(shè)計總體方案2第2章 硬件電路設(shè)計32.1 總體設(shè)計框圖32.2 時鐘電路32.3 復(fù)位電路32.4 選曲按鍵電路32.5 音頻發(fā)生及放大電路4第3章 軟件程序設(shè)計53.1單片機發(fā)聲概述53.2 程序流程圖63.3 音樂的產(chǎn)生7第4章 KEIL仿真軟件的應(yīng)用8第5章 調(diào)試與故障分析95.1 軟件程

3、序調(diào)試95.2 硬件電路調(diào)試9總 結(jié)10致 謝11參考文獻12附錄1:原理圖13附錄2:源程序14緒 論單片機,更確切地說應(yīng)稱為作微控制器,是20世紀(jì)70年代中期發(fā)展起來的一種面向控制的大規(guī)模集成電路模塊,其特點是功能強、體積小、可靠性高、價格低廉。它一面世便在工業(yè)控制、數(shù)據(jù)采集、智能儀表化、機電一體化、家用電器等領(lǐng)域得到了廣泛應(yīng)用,極大地提高了這些領(lǐng)域的技術(shù)水平和自動化程度。因此,單片機的開發(fā)應(yīng)用已成為高科技和工程領(lǐng)域的一項重大課題。本文將介紹一種以89C51型單片機為基礎(chǔ)元件設(shè)計的自動音樂播放器。在當(dāng)今這個科技高速發(fā)展的時代,生活節(jié)奏的加快,人們長期處于工作、學(xué)習(xí)壓力過大的狀態(tài),對于調(diào)節(jié)心

4、理壓力而言音樂對于每一個人都十分重要,由此音樂播放器在國內(nèi)已經(jīng)開始普及。校園里的上下課的鈴聲,宿舍內(nèi)早晨的起床號聲音,都由以前枯燥刺耳的鈴音轉(zhuǎn)變成了好聽的音樂,公路、廣場中的計時裝置也逐漸開始采用音樂來充當(dāng)鈴聲。此裝置不僅為人們?nèi)粘I畹挠嫊r提供了方便,同時也為目前快節(jié)奏的生活帶來了樂趣。本次設(shè)計以89C51單片機為基礎(chǔ),利用單片機編成技術(shù)對芯片進行功能設(shè)定,實現(xiàn)音樂的播放。同時,利用單片機的定時器中斷,在單片機內(nèi)部產(chǎn)生所需要的音樂頻率,并通過音頻功率放大器將音頻信號放大,通過蜂鳴器連續(xù)播放一段音樂。此設(shè)計通過多次測試,音樂聲音宏亮清晰,節(jié)拍正常,達(dá)到預(yù)期效果。本文將圍繞基于單片機的自動音樂播

5、放器,介紹一些關(guān)于單片機的基礎(chǔ)知識、音樂播放器的制作原理及方法(其中包括了音樂編程原理)、定時器的設(shè)定,以及仿真軟件(Keil、Proteus)的使用方法。第1章 音樂盒的設(shè)計總體方案單片機音樂播放器控制系統(tǒng)結(jié)構(gòu)簡單,環(huán)節(jié)較少,因此,單片機音樂播放器包括LED彩燈、數(shù)碼管的顯示。除了播放音樂有按鍵外,其余的硬件組成大體相同;對于單片機音樂播放器聲音的讀出除了蜂鳴器以外,還要配置合適的放大器播放出響亮的聲音。單片機按鍵電路復(fù)位電路晶振電路發(fā)聲電路時鐘電路電源電路圖 1-1 結(jié)構(gòu)總圖單片機音樂播放器電路板向著小型化、低功耗、抗千擾、低成本、實用功能方向發(fā)展。因此在對單片機的選擇趨向于容量適中、功能

6、豐富、性能可靠、價格低的元件。因此本設(shè)計中應(yīng)用最為廣泛的MCS-51系列8位單片機8051。第2章 硬件電路設(shè)計2.1 總體設(shè)計框圖 80c51單片機揚聲器歌曲制按鈕電源復(fù)位晶振時鐘鐘圖 2-1 總設(shè)計圖2.2 時鐘電路 圖 2-2 時鐘電路2.3 復(fù)位電路 圖 2-3 復(fù)位電路2.4 選曲按鍵電路 圖 2-4 選曲電路其中P3.2 播放暫停, P1.2上一首歌,P3.5下一首歌。2.5 音頻發(fā)生及放大電路圖 2-5音頻發(fā)生及放大電路利用STC89C51的I/O口產(chǎn)生一定頻率的方波脈沖,通過LM386功放電路驅(qū)動喇叭發(fā)出不同的音調(diào)從而演湊樂曲。第3章 軟件程序設(shè)計 3.1單片機發(fā)聲概述一般來說

7、,單片機不像其他專業(yè)樂器那樣能奏出多種音色的聲音,即不包含相應(yīng)幅度的諧振頻率。單片機演奏的音樂基本都是單音頻率。因此單片機演奏音樂比較簡單,只需能清楚“音調(diào)”和“節(jié)拍”兩個概念即可。 音調(diào)表示一個音符唱多高的頻率。 節(jié)拍表示一個音符唱多長的時間。 知道了一個音符的頻率后,便可以讓單片機發(fā)出相應(yīng)頻率的振蕩信號,從而產(chǎn)生相應(yīng)的音符聲音。通過單片機的定時器進行定時中斷,在中斷服務(wù)程序中將單片機上完結(jié)單片機I/O口來回置高電平或者是低電平的,從而讓揚聲器發(fā)出聲音。通過節(jié)拍計算出每個音符所需要的時間,采用循環(huán)延時的方法來實現(xiàn)控制一個音符唱多長的時間,從而構(gòu)成一首完整的音樂。

8、音調(diào)主要由聲音的頻率決定。對一定強度的純音,音調(diào)隨頻率的升降而升降;對一定頻率的純音、低頻純音的音調(diào)隨響度增加而下降,高頻純音的音調(diào)卻隨響度增加而上升。  以標(biāo)準(zhǔn)高音A的頻率F=440HZ,其對應(yīng)的周期為: T=1/F=1/440=2272us 因此需要在單片機I/O端口輸出周期為T=2272us的方波脈沖,也就是t=T/2=2272/2=1136us 也就是說,單片機上定時器的中斷出發(fā)時間為1136us。如果單片機采用定時器為工作方式1,它以振蕩器的十二分頻信號為計數(shù)脈沖。設(shè)外接晶振的振蕩器頻率為f,則定時器的預(yù)置初始值有以下公式來確定:&#

9、160;Temp = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC) TH = Temp /256 TL = Temp %2563.2 程序流程圖 開始初始化堆棧初始化音樂輸出口及按鈕 暫停/播放鍵是否按下上一曲鍵是否按下,并且在開機后有一次按下暫停/播放鍵根據(jù)當(dāng)前狀態(tài)播放相應(yīng)歌曲的某個音符按鍵處理是否下一曲鍵是否按下,并且在開機后有一次按下暫停/播放鍵按鍵處理是 否按鍵處理是 否開機后是否按下過暫停/播放鍵是 按鍵處理否3.3 音樂的產(chǎn)生 一

10、首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機來產(chǎn)生不同的頻率非常方便,我們可以利用單片機的定時/計數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當(dāng)計時終止后就將P1.0反相,然后重復(fù)計時再反相。就可在P1.0引腳上得到此頻率的脈沖。利用AT89C51的內(nèi)部定時器使其工作計數(shù)器模式(MODE1)下,改變計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同

11、音階,例如,頻率為523Hz,其周期T1/5231912s,則半周期為1912/2=956s,因此只要令計數(shù)器計時956s,每計數(shù)956次時將I/O反相,就可得到中音DO(523Hz)則初始值為65535-956 = 64579 = 0xFC43。計數(shù)脈沖值與頻率的關(guān)系式(如式3-1所示)是:Nfi÷2÷fr                      

12、60;  (3-1)式中,N是計數(shù)值;fi是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr是想要產(chǎn)生的頻率。其計數(shù)初值T的求法如下:T65536N65536fi÷2÷fr    例如:設(shè)K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計數(shù)值。    T65536N65536fi÷2÷fr655361000000÷2÷fr65536500000/fr    低音DO的T

13、65536500000/26263627    中音DO的T65536500000/52364580    高音DO的T65536500000/104665059   第4章 KEIL仿真軟件的應(yīng)用硬件與軟件的設(shè)計一般都要分別借助一些軟件,如我們通常用作電路設(shè)計與制版的Protel,MCS-51程序開發(fā)工具KEIL等。Keil C51 uVision2集成開發(fā)環(huán)境是基于80C51內(nèi)核的軟件開發(fā)平臺,支持工程建立、程序的編譯與鏈接、軟件仿真、硬件仿真、目標(biāo)代碼的生成等功能。Keil C51編譯器在產(chǎn)生代碼的

14、準(zhǔn)確性和效率方面達(dá)到了較高的水平。 與大多數(shù)集成開發(fā)環(huán)境類似,Keil C51集成開發(fā)環(huán)境也是用工程的方法來管理文件,在一個工程文件中源程序(C51程序、匯編程序)、頭文件等都可以進行統(tǒng)一管理。 安裝運行KEIL51,使用KEIL的開發(fā)工具進行項目開發(fā)過程,與其他軟件開發(fā)項目的過程基本上相同:創(chuàng)建C 語言或匯編語言的源程序。編譯或匯編源文件。糾正源文件中的錯誤。從編譯器和匯編器連接目標(biāo)文件。測試連接的應(yīng)用程序。第5章 調(diào)試與故障分析 5.1 軟件程序調(diào)試 本次設(shè)計的軟件部分由音樂播放程序組成。關(guān)于音樂播放程序的調(diào)試,我首先采用Preteus軟件來仿真,但是該仿真軟件中沒有喇

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

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

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

18、工作的能力,更重要的是了解了一個電子產(chǎn)品的設(shè)計流程,為將來投入工作增加了寶貴的經(jīng)驗,奠定了堅實的基礎(chǔ)。(4)提高了自己查找資料的能力。在設(shè)計過程中,我碰到了一些暫時無法解決的問題,于是我通過上網(wǎng)查閱和圖書館借閱資料,或是通過與老師同學(xué)交流一步步地解決了。從中我懂得了我們這個專業(yè)的知識面相當(dāng)廣泛,我們需要不斷通過各種途徑更新自己的知識,不斷充實自己,同時要懂得與他人交流意見,積極聽取別人的建議,懂得不斷學(xué)習(xí)的重要性。致 謝在棗莊學(xué)院的求學(xué)生涯在師長、親友的大力支持下,走得辛苦卻也收獲滿囊,在論文即將付梓之際,思緒萬千,心情久久不能平靜。 偉人、名人為我所崇拜,可是我更急切地要把我的敬意和贊美獻給

19、一位平凡的人,我的導(dǎo)師。我不是您最出色的學(xué)生,而您卻是我最尊敬的老師。您治學(xué)嚴(yán)謹(jǐn),學(xué)識淵博,思想深邃,視野雄闊,為我營造了一種良好的精神氛圍。授人以魚不如授人以漁,置身其間,耳濡目染,潛移默化,使我不僅接受了全新的思想觀念,樹立了宏偉的學(xué)術(shù)目標(biāo),領(lǐng)會了基本的思考方式,從論文題目的選定到論文寫作的指導(dǎo),經(jīng)由您悉心的點撥,再經(jīng)思考后的領(lǐng)悟,常常讓我有“山重水復(fù)疑無路,柳暗花明又一村”。感謝我的爸爸媽媽,焉得諼草,言樹之背,養(yǎng)育之恩,無以回報,你們永遠(yuǎn)健康快樂是我最大的心愿。在論文即將完成之際,我的心情無法平靜,從開始進入課題到論文的順利完成,有多少可敬的師長、同學(xué)、朋友給了我無言的幫助,在這里請接

20、受我誠摯謝意!最后再一次感謝所有在創(chuàng)新設(shè)計中曾經(jīng)幫助過我的良師益友和同學(xué),以及在設(shè)計中被我引用或參考的論著的作者。參考文獻1 鄭郁正.單片機原理及應(yīng)用.四川大學(xué)出版社,20032 譚浩強.C程序設(shè)計(第二版).清華大學(xué)出版社,19993 王曉君.安國臣等. MCS51及兼容單片機原理與選型. 北京-電子工業(yè)出版社, 20034 李啟炎. Protel 99SE應(yīng)用教程. 上海-同濟大學(xué)出版社 2005.25 胡燁, 姚鵬翼, 江思敏. Protel 99 SE電路設(shè)計與仿真教程. 北京-機械工業(yè)出版社, 20066 張義和,陳敵北。例說8051。北京:人民郵電出版社,20067 張洪潤,張亞凡

21、。單片機原理及應(yīng)用。清華大學(xué)出版社,20048 AT89C51 DATA SHEEP Philips Semiconductors 1999.dec9Yang. Y., Yi. J., Woo, Y.Y., and Kim. B.: Optimum design for linearityand efficiency of microwave Doherty amplifier using a new loadmatching technique, Microw. J., 2001, 44, (12), pp. 203610 Vizimuller, P.: RF design guide-sy

22、stems, circuits, and equations (ArtechHouse, Boston, MA, 1995)附錄1:原理圖附錄2:源程序#include<reg51.h>#define sound_amount 5 /歌曲的數(shù)量sbit play_up=P13; /上一首歌sbit play_down=P35; /下一首歌sbit pause=P32; /播放暫停sbit speaker=P10; /無源蜂鳴器unsigned char timer0h,timer0l,time;/timer0h,timer0l為定時器T0的高低位初值,time為對應(yīng)的節(jié)拍時間uns

23、igned 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 music_play(void); /播放歌曲/每三個數(shù)字,代表一個音符/第一個數(shù)字是音符的數(shù)值1234

24、567之一(第幾個音),代表哆來咪發(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,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3

25、, 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,2,1, 7,1,2, 5,1,2, 6,1,6, 0,0,0 ;/發(fā)如雪unsigned char

26、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, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1, 5,2,1, 3

27、,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,2,1, 5,2,1, 5,2,1, 5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,1

28、, 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,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1, 3,2,

29、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,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1

30、,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,1,2, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 7,1,1, 1

31、,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,1, 5,1,2, 5,1,1, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 4,1,

32、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,1,2, 1,1,1, 2,1,1, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 5,1,2, 3,

33、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;/最浪漫的事unsigned char code song8= 5,1,1, 6,1,1, 1,2,1, 6,1,2

34、, 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,1, 6,1,1, 5,1,1, 6,1,2, 1,2,1, 6,1,3, 1,2,1, 6,1,1, 5,1,

35、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,/1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, /高

36、音 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, /高音 234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16; /超高音 12

37、34567 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_enable=1;/允許播放elseplay_enable=play_enable; speaker=1;while

38、(!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;num=0; /從頭開始播放if(music_num=(sound_amount+1)music_num=1; d

39、elayms(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延時子程序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)高低TL

溫馨提示

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

評論

0/150

提交評論