單片機(jī)音樂盒_第1頁
單片機(jī)音樂盒_第2頁
單片機(jī)音樂盒_第3頁
單片機(jī)音樂盒_第4頁
單片機(jī)音樂盒_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)課程設(shè)計(jì)課題: 數(shù)字音樂盒系 別: 電氣信息工程學(xué)院專 業(yè): 電氣工程及其自動(dòng)化姓 名: 學(xué) 號(hào):成 績(jī): 2016年 1 月 5日目錄1、 設(shè)計(jì)目的32、 設(shè)計(jì)要求33、 總體設(shè)計(jì)44、 部分電路設(shè)計(jì)6 1.時(shí)鐘電路6 2.復(fù)位電路6 3.選曲電路6 4.音頻發(fā)生及放大電路7 5.液晶顯示電路75、 音樂的產(chǎn)生86、 整體電路圖9 KEIL51的使用107、 設(shè)計(jì)總結(jié)118、 參考文獻(xiàn)11附錄1 源程序12附錄2所用元件清單211、 設(shè)計(jì)目的21世紀(jì),電子技術(shù)獲得了飛速的發(fā)展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,有力地推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高,同時(shí)也使

2、現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。目前,單片機(jī)正朝著高性能和多品種方向發(fā)展趨勢(shì)將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面發(fā)展。單片機(jī)應(yīng)用的重要意義還在于它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在已能用單片機(jī)通過軟件方法來實(shí)現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,

3、廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。隨著科學(xué)技術(shù)的進(jìn)步和社會(huì)的發(fā)展,人類所接觸的信息也在不斷增加并且日益復(fù)雜。面對(duì)浩如煙海的信息,人們已經(jīng)能夠利用計(jì)算機(jī)等工具高效準(zhǔn)確地對(duì)之進(jìn)行處理,但要想將處理完的信息及時(shí),清晰地傳遞給別人,還必須通過尋求更加卓越的顯示技術(shù)來實(shí)現(xiàn)。單片機(jī)技術(shù)與液晶顯示技術(shù)的結(jié)合,使信息傳輸交流向著智能可視化方向迅速發(fā)展。隨著人類社會(huì)的發(fā)展,人們對(duì)視覺、聽覺方面的享受提出了越來越高的要求。小小的音樂盒可以給人們帶來美好的回憶,提高人們的精神文化享受。傳統(tǒng)音樂盒多是機(jī)械型的,體積

4、笨重,發(fā)音單調(diào),不能實(shí)現(xiàn)批量生產(chǎn)。本文設(shè)計(jì)的音樂盒是以單片機(jī)為核心元件的電子式音樂盒,體積小,重量輕,能演奏和旋音樂,功能多,外觀效果多彩,使用方便,并具有一定的商業(yè)價(jià)值。二、設(shè)計(jì)要求本設(shè)計(jì)是以STC89C51芯片的電路為基礎(chǔ),外部加上放音設(shè)備,以此來實(shí)現(xiàn)音樂演奏控制器的硬件電路,通過軟件程序來控制單片機(jī)內(nèi)部的定時(shí)器使其演奏出優(yōu)美動(dòng)聽的音樂。用戶可以按照自己的喜好選擇音樂并將其轉(zhuǎn)化成機(jī)器碼存入單片機(jī)的存儲(chǔ)器中。對(duì)于不同型號(hào)的單片機(jī)只需要相應(yīng)的改變一下地址即可。該軟、硬件系統(tǒng)具有很好的通用性,很高的實(shí)際使用價(jià)值,為廣大的單片機(jī)和音樂愛好者提供了很好的借鑒。數(shù)字音樂盒要求:1、 利用I/O口產(chǎn)生一

5、定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音階,從而演奏樂曲;2、 播放樂曲,最少儲(chǔ)存三首樂曲,每首不少于三十秒;3、采用LCD顯示;4、開機(jī)時(shí)有英文歡迎字符,播放時(shí)顯示歌曲序號(hào)(或名稱);5、可通過功能鍵選擇樂曲,暫停,播放;三、總體設(shè)計(jì) 傳統(tǒng)的音樂盒多是機(jī)械音樂盒,其工作原理是通過齒輪帶動(dòng)一個(gè)帶有鐵釘?shù)蔫F桶轉(zhuǎn)動(dòng),鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機(jī)械式的音樂盒體積比較大,比較笨重,且發(fā)音單調(diào)。水、灰塵等外在因素,容易使內(nèi)部金屬發(fā)音條變形,從而造成發(fā)音跑調(diào)。另外,機(jī)械音樂盒放音時(shí)為了讓音色穩(wěn)定,必須放平不能動(dòng)搖,而且價(jià)格昂貴,不能實(shí)現(xiàn)大批量生產(chǎn)。 本文設(shè)計(jì)的音樂盒,是基于單片機(jī)設(shè)

6、計(jì)制作的電子式音樂盒。與傳統(tǒng)的機(jī)械式音樂盒相比更小巧,音質(zhì)更優(yōu)美且能演奏和弦音樂。電子式音樂盒動(dòng)力來源是電池,制作工藝簡(jiǎn)單,可進(jìn)行批量生產(chǎn),所以價(jià)格便宜?;趩纹瑱C(jī)制作的電子式音樂盒,控制功能強(qiáng)大,可根據(jù)需要選歌,使用方便。根據(jù)存儲(chǔ)容量的大小,可以盡可能多的存儲(chǔ)歌曲。 一般說來,單片機(jī)演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。因此單片機(jī)奏樂只需弄清楚兩個(gè)概念即可,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個(gè)音符唱多高的頻率,節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。在音樂中所謂“音調(diào)”,其實(shí)就是我們常說的“音高”。在音樂中常把中央C上方的A音定為標(biāo)準(zhǔn)音高

7、,其頻率f=440Hz。當(dāng)兩個(gè)聲音信號(hào)的頻率相差一倍時(shí),也即f2=2f1時(shí),則稱f2比f1高一個(gè)倍頻程, 在音樂中1(do)與,2(來)與正好相差一個(gè)倍頻程,在音樂學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度音內(nèi),有12個(gè)半音。以1i八音區(qū)為例,12個(gè)半音是:11、12、22、23、34、44,45、5一5、56、66、67、7i。這12個(gè)音階的分度基本上是以對(duì)數(shù)關(guān)系來劃分的。如果我們只要知道了這十二個(gè)音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。知道了一個(gè)音符的頻后,怎樣讓單片機(jī)發(fā)出相應(yīng)頻率的聲音呢?一般說來,常采用的方法就是通過單片機(jī)的定時(shí)器定時(shí)中斷,將單片

8、機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機(jī)發(fā)出不同頻率的聲音,我們只需將定時(shí)器予置不同的定時(shí)值就可實(shí)現(xiàn)??傮w設(shè)計(jì)框圖 :80c51單片機(jī)揚(yáng)聲器歌曲控制按鈕電源復(fù)位晶振時(shí)鐘液晶顯示電路圖 2-1 總設(shè)計(jì)圖四、各部分電路設(shè)計(jì)1. 時(shí)鐘電路 圖 2-2 時(shí)鐘電路2.復(fù)位電路 圖 2-3 復(fù)位電路3. 選曲電路 圖 2-4 選曲電路其中P3.2 播放暫停, P1.2上一首歌,P3.5下一首歌。4. 音頻發(fā)生及放大電路圖 2-5音頻發(fā)生及放大電路利用STC89C51的I/O口產(chǎn)生一定頻率的方波脈沖,通過LM386功放電路驅(qū)動(dòng)喇叭發(fā)出不同的音調(diào)從而演湊樂曲。

9、5. 液晶顯示電路圖 2-5音頻發(fā)生及放大電路LCD1602顯示當(dāng)前播放的音樂名,音樂序號(hào)。五、音樂的產(chǎn)生單片機(jī)12MHZ晶振,高中低音符與計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如表3-1所示表 3-1 音符頻率表音符頻率(HZ)簡(jiǎn)譜碼(T值)音符頻率(HZ)簡(jiǎn)譜碼(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#3706

10、4185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 61

11、86565268中 4 FA69864820高 7 SI196765283程序中的全局變量FREQL和FREQL就是音符頻率表,分別為數(shù)據(jù)的高8位和低8位,如下:unsigned char code FREQH= 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,/低音1、2、3、4、5、6、7 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC,/中音1、2、3、4、5、6、70xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,/高音1、2、3、4、5、6、7 0xFE, 0xFE, 0xFE, 0x

12、FE, 0xFE, 0xFE, 0xFF/超高音1、2、3、4、5、6、7; unsigned char code FREQL=0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,/低音1、2、3、4、5、6、70x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B,/中音1、2、3、4、5、6、70x8F, 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,/高音1、2、3、4、5、6、70x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16/超高音1、2、3、4、5、6、7;FREQH和F

13、REQL中分別為數(shù)據(jù)的高8位和第8位,分別用來初始化TH0、TL0。音樂的音拍,一個(gè)節(jié)拍為單位(C調(diào))(如表3-2所示)表3-2 曲調(diào)值表曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3/494ms調(diào)2/4250ms調(diào)2/4125ms六、整體電路圖KEIL51的應(yīng)用 硬件與軟件的設(shè)計(jì)一般都要分別借助一些軟件,如我們通常用作電路設(shè)計(jì)與制版的Protel,MCS-51程序開發(fā)工具KEIL等。Keil C51 uVision2集成開發(fā)環(huán)境是基于80C51內(nèi)核的軟件開發(fā)平臺(tái),支持工程建立、程序的編譯與鏈接、軟件仿真、硬件仿真、目標(biāo)代碼的生成等功能。Keil C5

14、1編譯器在產(chǎn)生代碼的準(zhǔn)確性和效率方面達(dá)到了較高的水平。 與大多數(shù)集成開發(fā)環(huán)境類似,Keil C51集成開發(fā)環(huán)境也是用工程的方法來管理文件,在一個(gè)工程文件中源程序(C51程序、匯編程序)、頭文件等都可以進(jìn)行統(tǒng)一管理。 安裝運(yùn)行KEIL51,使用KEIL的開發(fā)工具進(jìn)行項(xiàng)目開發(fā)過程,與其他軟件開發(fā)項(xiàng)目的過程基本上相同:創(chuàng)建C 語言或匯編語言的源程序。編譯或匯編源文件。糾正源文件中的錯(cuò)誤。從編譯器和匯編器連接目標(biāo)文件。測(cè)試連接的應(yīng)用程序。仿真電路7、 設(shè)計(jì)總結(jié)通過本次課程設(shè)計(jì),使我學(xué)到了許多書本上無法學(xué)到的知識(shí),也使我深刻體會(huì)到單片機(jī)技術(shù)應(yīng)用領(lǐng)域的廣泛。不僅讓我對(duì)學(xué)過的單片機(jī)知識(shí)有

15、了很多的鞏固,同時(shí)也對(duì)單片機(jī)這一門課程產(chǎn)生了更大的興趣。在本次課程設(shè)計(jì)過程中,我在網(wǎng)絡(luò)上查找有關(guān)本設(shè)計(jì)的各硬件的資料為本次課程設(shè)計(jì)提供了一定的幫助。  在做課程設(shè)計(jì)的初期階段,難度很大,沒有頭緒。通過在圖書館里、網(wǎng)上查閱資料,和同學(xué)們交流,攻克了課程設(shè)計(jì)中的道道難題。本次設(shè)計(jì)我們能合作完成,算是有了很大的收獲??偟母惺苡幸韵聨追矫妫?#160; 1) 鞏固了課本上的知識(shí)。對(duì)單片機(jī)有了更為深入的了解,對(duì)一個(gè)課題如何畫流程圖,編程序等,有了一定的認(rèn)識(shí)。    2) 在本次課程設(shè)計(jì)中,我進(jìn)一步加強(qiáng)了自己的動(dòng)手能

16、力和運(yùn)用專業(yè)知識(shí)的能力,從中學(xué)習(xí)到如何去思考和解決問題,以及如何靈活地改變方法去實(shí)現(xiàn)設(shè)計(jì)方案。  3)  智能化技術(shù)對(duì)當(dāng)今人們生活的重要性。這次做課程設(shè)計(jì)的經(jīng)歷也使我受益匪淺。讓我知道做任何事情都應(yīng)腳踏實(shí)地,刻苦努力地去做。只有這樣,才能做好。  在這次課程設(shè)計(jì)中,我既鞏固了專業(yè)知識(shí),又學(xué)到了在智能化設(shè)計(jì)過程中的許多流程和該注意的事項(xiàng),增強(qiáng)了電子產(chǎn)品開發(fā)的意識(shí)。本次經(jīng)歷將是我在大學(xué)時(shí)期很好的一次實(shí)踐和鍛煉機(jī)會(huì)。八、參考文獻(xiàn)1 鄭郁正.單片機(jī)原理及應(yīng)用.四川大學(xué)出版社,20032 譚浩強(qiáng).C程序設(shè)計(jì)(第二版).清華大學(xué)出版社,19993

17、 王曉君.安國(guó)臣等. MCS51及兼容單片機(jī)原理與選型. 北京-電子工業(yè)出版社, 20034 李啟炎. Protel 99SE應(yīng)用教程. 上海-同濟(jì)大學(xué)出版社 2005.25 胡燁, 姚鵬翼, 江思敏. Protel 99 SE電路設(shè)計(jì)與仿真教程. 北京-機(jī)械工業(yè)出版社, 20066 張義和,陳敵北。例說8051。北京:人民郵電出版社,20067 張洪潤(rùn),張亞凡。單片機(jī)原理及應(yīng)用。清華大學(xué)出版社,20048 AT89C51 DATA SHEEP Philips Semiconductors 1999.dec9Yang. Y., Yi. J., Woo, Y.Y., and Kim. B.: O

18、ptimum 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-systems, circuits, and equations (ArtechHouse, Boston, MA, 1995)附錄1:源程序/51單片機(jī)音樂播放器程序/共三個(gè)按鍵:上一曲、一下曲、播放暫停/注意:按鍵必須按下約1S才有相應(yīng)

19、動(dòng)作,播放完一首歌曲無按鍵按下時(shí)順序播放/#include<REG52.H>sbit play_up=P13; /上一首歌sbit play_down=P35; /下一首歌sbit pause=P32; /播放暫停sbit speaker=P10; /無源蜂鳴器sbit RS=P25;sbit RW=P26;sbit EN=P27;/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

20、=0表示剛開機(jī)時(shí)的狀態(tài),num是查找歌曲數(shù)據(jù)表的地址unsigned int num;unsigned char code list816="Yan Hua Yi Leng "," Fa Ru Xue "," Jian Dan Ai ","Zhi You Mama Hao"," Dang Ni Gu Dan ","XiangJian XiaoLu"," Song Bie ","Lang Man De Shi "signed int fr

21、e; /對(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 song(void); /演奏一個(gè)音符void music_play(void); /播放歌曲/每三個(gè)數(shù)字,代表一個(gè)音符/第一個(gè)數(shù)字是音符的數(shù)值1234567之一(第幾個(gè)音),代表哆來咪發(fā)./第二個(gè)數(shù)字是0123之一,代表低音中音高音超高音(第幾個(gè)八度)/第三個(gè)數(shù)字是時(shí)間長(zhǎng)度,以半拍為單位,樂曲數(shù)據(jù)表的結(jié)尾是

22、三個(gè)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個(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è)半拍; /. 5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 1,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2

23、,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ì)想起誰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, 1,2,2, 1,2,1, 6,2,1, 1,2,2, 7,1,1, 6,1,1, 7,1,2, 3,2,2, 7,1,2, 7,1,3, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 5,1,2, 2,2

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

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

26、, 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; /*lcd1602程序*/ void delay1ms(unsigned int ms)/延時(shí)1毫秒(不夠精確的) unsigned int i,j; for(i=0;i<ms;i+) for(j=0;j<100;j+); void wr_com(unsigned char com)/寫指令/ delay1ms(1); RS=0; RW=0; EN=0; P0=com; delay1ms(1); EN=0; delay1ms(1); EN=

27、1; void wr_dat(unsigned char dat)/寫數(shù)據(jù)/ delay1ms(1); RS=1; RW=1; EN=1; P0=dat; delay1ms(1); EN=0; delay1ms(1); EN=1; void lcd_init()/初始化設(shè)置/delay1ms(15);wr_com(0x01); wr_com(0x38);delay1ms(5);wr_com(0x0c);wr_com(0x06);void init_play() wr_com(0x80+40+4); wr_dat('W'); wr_dat('E'); wr_dat

28、('L'); wr_dat('C'); wr_dat('O'); wr_dat('M'); wr_dat('E'); wr_dat('!'); void display(unsigned char i) unsigned char j; wr_com(0x80); wr_dat(i+0x30); wr_dat(':'); wr_com(0xc0); for(j=0;j<16;j+) wr_dat(listi-1j); void main(void)TMOD=0x11; /T0

29、T1 均在工作方式1ET0=1; /T0開中斷EA=1; /CPU開中斷 lcd_init();init_play();while(1)music_play();/根據(jù)當(dāng)前狀態(tài)播放相應(yīng)歌曲的某個(gè)音符if(!pause)/暫停鍵處理delayms(5);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;/允許播放display(1);if(play_enable)wr_com(0x86);wr_dat(

30、'P'); wr_dat('L');wr_dat('A');wr_dat('Y');wr_dat(' ');elseplay_enable=play_enable; speaker=1;if(play_enable)wr_com(0x86);wr_dat('P'); wr_dat('L');wr_dat('A');wr_dat('Y');wr_dat(' ');if(!play_enable)wr_com(0x86);wr_dat(&#

31、39;P'); wr_dat('A');wr_dat('U');wr_dat('S');wr_dat('E');while(!pause) /若按著暫停鍵不放手時(shí)的處理if(play_enable=0) /如果是暫停,則顯示時(shí)間不變/(暫停時(shí)play_enable=0) /暫停鍵處理結(jié)束/while結(jié)束if(!play_up)&&(music_num!=0) /上一首按鍵delayms(5);if(!play_up)&&(music_num!=0) speaker=1;music_num-=

32、1;/歌曲編號(hào)減一if(music_num<=0)music_num=8;num=0; /從頭開始播放display(music_num);delayms(500);/歌曲切換時(shí)延時(shí)0.5Sif(!play_down)&&(music_num!=0)delayms(5);if(!play_down)&&(music_num!=0) speaker=1;music_num+=1;/歌曲編號(hào)加一if(music_num>=9)music_num=1;num=0; /從頭開始播放display(music_num);delayms(500);/歌曲切換時(shí)延

33、時(shí)0.5S void delayms(unsigned int t) /MS延時(shí)子程序unsigned int i,j;for(i=0;i<t;i+)for(j=0;j<123;j+);void delay(unsigned char t) /延時(shí)子函數(shù),控制發(fā)音的時(shí)間長(zhǎng)度,每個(gè)節(jié)拍0.4Sunsigned char t1;unsigned long t2;for(t1=0;t1<t;t1+) /嵌套循環(huán), 共延時(shí)t個(gè)半拍 for(t2=0;t2<8000;t2+) /延時(shí)期間, 可進(jìn)入T0中斷去發(fā)音 ; TR0=0; /關(guān)閉T0, 停止發(fā)音void timer0(vo

34、id) interrupt 2 /T0中斷程序,控制發(fā)音的音調(diào)speaker=!speaker;/輸出方波, 發(fā)音TH0=timer0h; /下次的中斷時(shí)間,這個(gè)時(shí)間控制音調(diào)高低TL0=timer0l; void song(void) /演奏一個(gè)音符TH0=timer0h; /控制音調(diào)TL0=timer0l;TR0=1; /啟動(dòng)T0, 由T0輸出方波發(fā)音delay(time); /每個(gè)音符的演奏時(shí)間/void music_play(void)/播放相應(yīng)歌曲的某個(gè)音符if(music_num=1)&&(play_enable=1)fre=song1num+8*song1num+1

35、-1;/第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQHfre; /從數(shù)據(jù)表中讀出頻率數(shù)值,實(shí)際上是定時(shí)的時(shí)間長(zhǎng)度 timer0l=FREQLfre; time=song1num+2; /讀出時(shí)間長(zhǎng)度數(shù)值 num+=3;if(fre<0)/判斷歌曲的結(jié)束位,結(jié)束后轉(zhuǎn)到下一首num=0; /下一首從頭播放music_num=2;display(2); song(); /發(fā)出一個(gè)音符/if(music_num=2)&&(play_enable=1) fre=song2num+8*song2num+1-1;timer0h=FREQHfre; timer0l=FREQLfre; time=song2num+2; num+=3;if(fre<0)num=0;music_num=3;display(3); song();/if(music_num=3)&&(play_enable=1) fre=song3num+8*song3num+1-1;timer0h=FREQHfre; timer0l=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論