音樂流水燈產(chǎn)品設(shè)計報告_第1頁
音樂流水燈產(chǎn)品設(shè)計報告_第2頁
音樂流水燈產(chǎn)品設(shè)計報告_第3頁
音樂流水燈產(chǎn)品設(shè)計報告_第4頁
音樂流水燈產(chǎn)品設(shè)計報告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

-2-音樂流水燈產(chǎn)品設(shè)計報告項目名稱:音樂流水燈院校:漳州職業(yè)技術(shù)學(xué)院系別:計算機(jī)工程系班級:10嵌入式2班小組成員:吳為超、林情、薛萌日期:2012年12月 摘要 本作品是一種基于AT89S52單片機(jī)音樂播放并控制彩燈的設(shè)計。它實現(xiàn)單片機(jī)演奏音樂,并且使LED彩燈隨音符頻率的不同而閃爍發(fā)光。本作品以AT89S52單片機(jī)作為主控核心,通過利用三極管來放大電流,單片機(jī)控制蜂鳴器播放音樂。利用編程實現(xiàn)在有4塊LED8X8點陣屏上實現(xiàn)閃爍,根據(jù)用戶需求可以編寫若干種亮燈模式.例如左右閃爍,隔幾個亮滅,蜂鳴器可以根據(jù)用戶需求改寫編程播放各種音樂。該設(shè)計方案設(shè)計及其簡單,典型的89S52單片機(jī),燈光花樣多,播放各種類型的音樂,具有體積小、價格低、低能耗等優(yōu)點。在美麗的都市夜晚,彩燈的循環(huán)亮滅,播放動人的音樂,襯托出美麗的氛圍,音樂流水燈具有更廣闊的發(fā)展天地。 關(guān)鍵字:AT89S52單片機(jī);8X8LED點陣屏;音樂AbstractThisproductionisadesignwhichisbasedonAT89S52SCMmusicplayandcontrollantern.ItmakesSCMplaymusicandtheLEDlightsflashwiththedifferentfrequencyofnotes.AT89S52SCMisdesignedasthecontrolcenterforthework.TheworkusestriodetomagnifythecurrentandSCMtocontrolbuzzertoplaymusic.Theworkusesprogramtoflashinfour8X8dot-matrixLCDscreen.Severalkindsoflightmodelcouldbeadaptedaccordingusers’needs,forexample,flashingaround,lightingonandoffeveryseverallanterns.Thebuzzercanbeadaptedaccordingtouserrequirementstoplayavarietyofmusic.Thisdesignproposalisverysimpleandhastypical89S52SCM,whichcanplayvariousmusic.Itpossessessomeoutstandingadvantages,forexample,asmallsize,lowpriceandlowpowerconsumptionandsoon.Inthebeautifulurbannights,itcouldcreatebeautifulatmospherewiththeon-and-offlightsandpleasingmusic.Theoutlookoftheflowingmusiclightisbright.Keyword:AT89S52singlechip;8X8dot-matrixLCDscreen;Music目錄摘要 -1-第一章緒論 -3-1.1引言 -3-1.2設(shè)計方案 -3-第二章系統(tǒng)總體方案介紹 -4-2.1系統(tǒng)組成框圖 -4-2.2音樂流水燈的功能結(jié)構(gòu)圖 -4-第三章硬件設(shè)計 -5-3.1總體設(shè)計框圖 -5-3.2LED顯示電路設(shè)計與原理 -5-3.3硬件電路圖及功能 -5-第四章軟件設(shè)計 -6-4.1 音調(diào)、節(jié)拍以及編碼的確定方法 -6-4.1.1音調(diào)的確定 -6-4.1.2節(jié)拍的確定 -8-4.1.3編碼 -8-4.2軟件程序設(shè)計 -9-4.2.1程序流程圖及相應(yīng)代碼塊 -9-第五章測試結(jié)果 -16-5.1.總體運行圖 -16-附錄程序源代碼及注釋 -17-第一章緒論1.1引言現(xiàn)當(dāng)今單片機(jī)的應(yīng)用無處不在.利用單片機(jī)控制音樂播放也多不勝舉.音樂芯片也相當(dāng)之多,而利用單片機(jī)存儲音樂,控制播放最為廣泛.它有功能多﹑價格優(yōu)﹑外圍電路簡單的特點,備受音樂愛好者及音樂芯片制造商的青昧.用89S52單片機(jī)及少數(shù)外圍電路控制MUSIC播放,就可以產(chǎn)生美妙的音樂,又有流水燈設(shè)計即顯得美觀大方又經(jīng)濟(jì)實惠。隨著社會經(jīng)濟(jì)的飛速發(fā)展,人們在追求物質(zhì)文明的同時,更加注重精神文明的追求。音樂給人帶來的意義就是追求完美,用完美帶給所有人無上的快樂和享受。現(xiàn)代人的生活離不開音樂,音樂已成為人類日常文化生活中不可或缺的部分。研究表明,音樂可以開發(fā)兒童的智力,甚至植物在優(yōu)美的音樂環(huán)境中也會生長得更好。雖說現(xiàn)在有各式各樣的音樂播放器,而且隨著科學(xué)技術(shù)的發(fā)展功能已經(jīng)很全面了的,體積更加小巧,攜帶更加方便,設(shè)計更加人性化,但任何的設(shè)計都是在不斷地研究中得到改進(jìn)的,因此有必要對音樂的播放控制進(jìn)行研究和學(xué)習(xí),而且對于以后電子設(shè)計有極大的裨益。1.2設(shè)計方案 本設(shè)計基于AT89S52系列單片機(jī)的音樂流水燈,利用按鍵切換演奏出不同的樂曲。蜂鳴器發(fā)出某個音調(diào),與之相對應(yīng)的LED亮起。使用兩個按鍵,一個用來切換歌曲,另一個切換8X8LED點陣屏的變化花樣。1)電路有兩種工作模式:演奏音樂模式和花樣燈模式。演奏音樂模式:演奏完整的一首的歌曲,8X8LED點陣屏隨著音樂變化?;訜裟J剑?X8LED點陣屏變化出各種花樣。2)按下按鍵1進(jìn)入演奏音樂模式,再按切換歌曲,共兩首歌曲。3)按下按鍵2進(jìn)入花樣燈模式,再按切換LED花樣,共五種花樣。第二章系統(tǒng)總體方案介紹2.1系統(tǒng)組成框圖 音樂流水燈的系統(tǒng)結(jié)構(gòu)以AT89S52單片機(jī)位控制核心,加上2個按鍵、時鐘復(fù)位電路、蜂鳴器、LED模塊組成。單片機(jī)負(fù)責(zé)接收按鍵的輸入,根據(jù)輸入控制音樂播放曲目和音樂花樣燈的顯示樣式以及蜂鳴器發(fā)音。系統(tǒng)組成框圖如圖2.1所示。圖2.1系統(tǒng)組成框圖2.2音樂流水燈的功能結(jié)構(gòu)圖 音樂流水燈的功能結(jié)構(gòu)如圖2.2所示。Key1負(fù)責(zé)切換播放歌曲,播放歌曲共2首,分別是千年之戀和寂寞沙洲冷。Key2負(fù)責(zé)切換LED顯示花樣,顯示花樣共五種。圖2.2音樂流水燈功能結(jié)構(gòu)圖第三章硬件設(shè)計3.1總體設(shè)計框圖圖3.1總體設(shè)計框圖3.2LED顯示電路設(shè)計與原理LED顯示電路是由4個8X8LED點陣屏組成,LED接到單片機(jī)的P1口,并通過74LS154芯片譯碼從而控制32條LED線路且用ULN2003芯片取反,使其形成通路達(dá)到發(fā)光的效果。3.3硬件電路圖及功能總體硬件電路實現(xiàn)功能如下,如圖3.4所示電路中用P3.2、P3.3控制按鍵。P1.0~P1.7控制LED。P2.7控制蜂鳴器。電路為11.0952MHZ晶振頻率工作,起振電路中C1、C2均為30PF。圖3.4硬件電路圖第四章軟件設(shè)計在本程序中設(shè)置了兩個標(biāo)志——count1和count2,分別初始化為1和0。按鍵1使得count1在1和2之間切換,按鍵2使得count2在1~4之間切換。程序檢測count1的值,count1等于1時播放第一首歌曲,等于2時播放第二首。另一方面根據(jù)count2的值來切換LED的花樣。count1和count2的值是互斥的,設(shè)置count1等于1、2時,count2同時設(shè)置為0;設(shè)置count2等于1~4時,count1也同時設(shè)置為0。4.1 音調(diào)、節(jié)拍以及編碼的確定方法一般說來,單片機(jī)演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能像電子琴那樣能奏出多種音色的聲音。因此單片機(jī)奏樂只需弄清楚兩個概念即可,也就是“音調(diào)”和節(jié)拍表示一個音符唱多長的時間。4.1.1音調(diào)的確定不同音高的樂音是用C、D、E、F、G、A、B來表示,這7個字母就是音樂的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來米發(fā)梭拉西”的讀音,這是唱曲時樂音的發(fā)音,所以叫“音調(diào)”,即Tone。把C、D、E、F、G、A、B這一組音的距離分成12個等份,每一個等份叫一個“半音”。兩個音之間的距離有兩個“半音”,就叫“全音”。在鋼琴等鍵盤樂器上,C–D、D–E、F–G、G–A、A–B兩音之間隔著一個黑鍵,他們之間的距離就是全音;E–F、B–C兩音之間沒有黑鍵相隔,它們之間的距離就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上﹟號或者b號的叫變化音。﹟叫升記號,表示把音在原來的基礎(chǔ)上升高半音,b叫降記音,表示在原來的基礎(chǔ)上降低半音。例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294Hz)的一倍。 1)要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用定時器計時這半個周期時間,每當(dāng)計時到后就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。 2)利用AT89C51的內(nèi)部定時器使其工作在計數(shù)器模式MODE1下,改變計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。 此外結(jié)束符和休止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。 3)例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計數(shù)器計時956us/1us=956,在每次技術(shù)956次時將I/O反相,就可得到中音DO(523Hz)。 計數(shù)脈沖值與頻率的關(guān)系公式如下: N=Fi2Fr N:計算值; Fi:內(nèi)部計時一次為1us,故其頻率為1MHz;其計數(shù)值的求法如下:T=65536-N=65536-Fi2Fr例如:設(shè)K=65536,F(xiàn)=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的計算值T=65536-N=65536-Fi2Fr=65536-10000002Fr=65536-500000/Fr低音DO的T=65536-500000/262=63627低音DO的T=65536-500000/523=64580低音DO的T=65536-500000/1047=65059C調(diào)各音符頻率與計數(shù)值T的對照表如表4.1所示。表4.1C調(diào)各音符頻率與計數(shù)值T的對照表低音頻率T參數(shù)中音頻率T參數(shù)高音頻率T參數(shù)Do2621908229Do523956115Do10465757Do﹟2771805217Do﹟554903108Do﹟11095454Re2941701204Re587852102Re11755151Re﹟3111608193Re﹟62280497Re﹟12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa﹟3701351162Fa﹟74067681Fa﹟14804141So3921276153So78463877So15683838So﹟4151205145So﹟83160272So﹟16613636La4401136136La88056868La17603434La﹟4641078129La﹟93253664La﹟18653232Si4941012121Si98850661Si197630304.1.2節(jié)拍的確定若要構(gòu)成音樂,光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動),而且可以調(diào)節(jié)各個音的快滿度?!肮?jié)拍”,即Beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實0.5s,則1/4拍為0.125s。至于1拍多少s,并沒有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點,有些人慢一點,只要聽的悅耳就好。音持續(xù)時間的長短即時值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。一首音樂是由許多不同的音符組成的,而每個音符對應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對應(yīng)的延時,構(gòu)成音樂。了解音樂的一些基礎(chǔ)知識,我們可知產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂。對于單片機(jī)來說,產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機(jī)的定時/計數(shù)器來產(chǎn)生這樣的方波頻率信號。因此,需要弄清楚音樂中的音符和對應(yīng)的頻率,以及單片機(jī)定時計數(shù)的關(guān)系。表4.2節(jié)拍與節(jié)拍碼對照節(jié)拍碼節(jié)拍數(shù)節(jié)拍碼節(jié)拍數(shù)11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍42/1拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍A2又1/2拍A1又1/4拍C3拍C1又1/2拍F3又3/4拍每個音符使用1個字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,圖5.2為節(jié)拍碼的對照。如果1拍為0.4秒,1/4拍實0.1秒,只要設(shè)定延遲時間就可求得節(jié)拍的時間。假設(shè)1/4拍為1DELAY,則1拍應(yīng)為4DELAY,以此類推。所以只要求得1/4拍的DELAY時間,其余的節(jié)拍就是它的倍數(shù),如圖5.3為1/4和1/8節(jié)拍的時間設(shè)定。表4.31/4和1/8節(jié)拍的時間設(shè)定曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/4125毫秒調(diào)4/462毫秒調(diào)3/4187毫秒調(diào)3/494毫秒調(diào)2/4250毫秒調(diào)2/4125毫秒4.1.3編碼doremifasolasi分別編碼為1~7,重音do編為8,重音re編為9,停頓編為0。播放長度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個十六分音符,編為4,其它的播放時間以此類推。音調(diào)作為編碼的高4位,而播放時間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個編碼。以0xff作為曲譜的結(jié)束標(biāo)志。舉例1:音調(diào)do,發(fā)音長度為兩拍,即二分音符,將其編碼為0x18。舉例2:音調(diào)re,發(fā)音長度為半拍,即八分音符,將其編碼為0x22歌曲播放的設(shè)計。先將歌曲的簡譜進(jìn)行編碼,儲存在一個數(shù)據(jù)類型為unsignedchar的數(shù)組中。程序從數(shù)組中取出一個數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時器0,使之定時操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得到延時時間,接著調(diào)用軟件延時。表4.4簡譜對應(yīng)的簡譜碼、T值、節(jié)拍數(shù)簡譜發(fā)音簡譜碼T值節(jié)拍碼節(jié)拍數(shù)5低音SO16426011/4拍6低音LA26440022/4拍7低音TI36452433/4拍1中音DO46458041拍2中音RE56468451又1/4拍3中音MI66477761又1/2拍4中音FA76482082拍5中音SO864898A2又1/2拍6中音LA964968C3拍7中音TIA65030F3又3/4拍1高音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF652174.2軟件程序設(shè)計4.2.1程序流程圖及相應(yīng)代碼塊主程序流程圖圖4.1主程序流程圖主程序代碼:main(){ ucharx,w,timeLed,ad=0; //, count1=0;//流水燈無花樣 count2=1;//唱第一首歌// P34=0;//選取矩陣鍵盤的一列 EA=1;//開總中斷 EX0=1;//開外部中斷0 IT0=1;//外部中斷0下降沿觸發(fā)方式 EX1=1;//開外部中斷1 IT1=1;//外部中斷1下降沿觸發(fā)方式 TMOD=0x01;//定時器0工作在方式1 TH0=0; TL0=0; ET0=1; while(1) { if(count1!=0) { switch(count1) { case1: for(w=0;w<23;w++) { for(timeLed=0;timeLed<100;timeLed++) {for(x=0;x<=ad;x++) { //duan=1; P1=huayang1[w][x]; //duan=0; if(count1!=1) break; } } if(w<7) ad++; if(w>14) ad--; if(w==22) ad=0; } ad=0; break; case2: for(w=0;w<23;w++) { for(x=0;x<=ad;x++) { //duan=1; P1=huayang1[w][x]; //duan=0; delay1(300); if(count1!=2) break; } if(w<7) ad++; if(w>14) ad--; if(w==22) ad=0; } ad=0; break; case3: for(w=22;w>=0;w--) { for(timeLed=0;timeLed<100;timeLed++) {for(x=0;x<=ad;x++) { //duan=1; P1=huayang1[w][x]; //duan=0; if(count1!=3) break; } } if(w<8) ad--; if(w>15) ad++; if(w==0) ad=0; } ad=0; break; case4: for(x=0;x<8;x++) { //duan=1; P1=huayang4[x]; beep(); delay1(300); //duan=0; if(count1!=4) break; } break; } } else { song(); delay1(1000); } } }播放音樂子程序流程圖:圖4.2播放音樂子程序流程圖播放音樂子程序代碼:voidsong(){ uinttemp; ucharjp;//jp是簡譜 i=0; while(1) { if(count2==0) { break; } if(count2==1) //選曲 temp=qnzl[i]; if(count2==2) temp=jmszl[i]; if(temp==0xff) break; jp=temp/16;//取數(shù)的高4位 //duan=1;//不知何物 P1=yinyue[jp];//將音樂轉(zhuǎn)化成相應(yīng)的LED檔? //duan=0; if(jp!=0) { timeh=cuzhi[jp*2]; timel=cuzhi[jp*2+1]; } else { TR0=0; fm=1;//關(guān)蜂鳴器 } delay_led(temp);//取數(shù)的低4位 TR0=0; //唱完一個音停10MS fm=1; delay1(10); TR0=1; i++; } TR0=0; fm=1; }延時程序代碼:voiddelay_led(uinttemp){ uintx,y; for(x=temp%16;x>0;x--) for(y=19000/18;y>0;y--){ if(temp/16==0x00){ P1=P1+0X10; P1=(P1/0X10)*0X10+0X01; } if(temp/16==0x01){ P1=P1+0X10; P1=(P1/0X10)*0X10+0X0F; } if(temp/16==0x02){ P1=P1+0X10; P1=(P1/0X10)*0X10+0X0E; } if(temp/16==0x03){ P1=P1+0X10; P1=(P1/0x10)*0X10+0X0D; }if(temp/16==0x04){ P1=P1+0X10; P1=(P1/0X10)*0X10+0X0C; }if(temp/16==0x05){ P1=P1+0X10; P1=(P1/0X10)*0X10+0X0B; } if(temp/16==0x06){ P1=P1+0X10; P1=(P1/0x10)*0X10+0X0A; } if(temp/16==0x07){ P1=P1+0X10; P1=(P1/0x10)*0X10+0X09; } if(temp/16==0x08){ P1=P1+0X10; P1=(P1/0x10)*0X10+0X08; } if(temp/16==0x09){ P1=P1+0X10; P1=(P1/0X10)*0X10+0X7; } if(temp/16==0x0A){ P1=P1+0X10; P1=(P1/0X10)*0x10+0x06; } }}voiddelay(uintz) //延時165MS,即十六分音符{ uintx,y; for(x=z;x>0;x--) for(y=19000;y>0;y--);}voiddelay1(uintz) //延時1MS{ uintx,y; for(x=z;x>0;x--) for(y=112;y>0;y--);}第五章測試結(jié)果 5.1.總體運行圖圖5.1系統(tǒng)總體運行圖附錄程序源代碼及注釋#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint//sbitduan=P2^6;sbitkey1=P3^2;//按key1可切換花樣sbitkey2=P3^3;//按key2可切換歌曲sbitfm=P2^1;//蜂鳴器連續(xù)的IO口sbitP34=P3^4;//矩陣鍵盤的一列ucharcodehuayang1[23][8]={{0x00},{0x10,0x01}, {0x20,0x11,0x02}, {0x30,0x21,0x12,0x03}, {0x40,0x31,0x22,0x13,0x04}, {0x50,0x41,0x32,0x23,0x14,0x05}, {0x60,0x51,0x42,0x33,0x24,0x15,0x06}, {0x70,0x61,0x52,0x43,0x34,0x25,0x16,0x07}, {0x88,0x71,0x62,0x53,0x44,0x35,0x26,0x17}, {0x98,0x89,0x72,0x63,0x54,0x45,0x36,0x27}, {0xA8,0x99,0x8A,0x73,0x64,0x55,0x46,0x37}, {0xB8,0xA9,0x9a,0x8b,0x74,0x65,0x56,0x47}, {0xc8,0xb9,0xaa,0x9b,0x8c,0x75,0x66,0x57}, {0xd8,0xc9,0xba,0xab,0x9c,0x8d,0x76,0x67}, {0xe8,0xd9,0xca,0xbb,0xac,0x9d,0x8e,0x77}, {0xf8,0xe9,0xda,0xcb,0xbc,0xad,0x9e,0x8f}, {0xf9,0xea,0xdb,0xcc,0xbd,0xae,0x9f}, {0xfa,0xeb,0xdc,0xcd,0xbe,0xaf}, {0xfb,0xec,0xdd,0xce,0xbf}, {0xfc,0xed,0xde,0xcf}, {0xfd,0xee,0xdf}, {0xfe,0xef}, {0xff}};///花樣1/*ucharcodehuayang1[]={0x110,0x01};*/ucharcodehuayang2[23][8]={{0x00},{0x10,0x01}, {0x20,0x11,0x02}, {0x30,0x21,0x12,0x03}, {0x40,0x31,0x22,0x13,0x04}, {0x50,0x41,0x32,0x23,0x14,0x05}, {0x60,0x51,0x42,0x33,0x24,0x15,0x06}, {0x70,0x61,0x52,0x43,0x34,0x25,0x16,0x07}, {0x88,0x71,0x62,0x53,0x44,0x35,0x26,0x17}, {0x98,0x89,0x72,0x63,0x54,0x45,0x36,0x27}, {0xA8,0x99,0x8A,0x73,0x64,0x55,0x46,0x37}, {0xB8,0xA9,0x9a,0x8b,0x74,0x65,0x56,0x47}, {0xc8,0xb9,0xaa,0x9b,0x8c,0x75,0x66,0x57}, {0xd8,0xc9,0xba,0xab,0x9c,0x8d,0x76,0x67}, {0xe8,0xd9,0xca,0xbb,0xac,0x9d,0x8e,0x77}, {0xf8,0xe9,0xda,0xcb,0xbc,0xad,0x9e,0x8f}, {0xf9,0xea,0xdb,0xcc,0xbd,0xae,0x9f}, {0xfa,0xeb,0xdc,0xcd,0xbe,0xaf}, {0xfb,0xec,0xdd,0xce,0xbf}, {0xfc,0xed,0xde,0xcf}, {0xfd,0xee,0xdf}, {0xfe,0xef}, {0xff}};ucharcodehuayang3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0, 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};charcodehuayang4[]={0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0};ucharcount1;//花樣標(biāo)志 ucharcount2;//歌曲標(biāo)志 uchartimeh,timel,i;//簡譜//編程規(guī)則:字節(jié)高位是簡譜,低位是持續(xù)時間,//代表多少個十六分音符//1-7代表中央C調(diào),8-E代表高八度,0代表停頓//最后的0是結(jié)束標(biāo)志ucharcodeqnzl[]={ //千年之戀0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,//前奏0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,//竹林的燈火到過的沙漠0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,//七色的國度不斷飄逸風(fēng)中0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,//有一種神秘灰色的旋渦0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,//將我卷入了迷霧中0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,//看不清的雙手0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,//一朵花傳來誰經(jīng)過的溫柔0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,//穿越千年的傷痛0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,//只為求一個結(jié)果0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,//你留下的輪廓指引我0x42,0x63,0x83,0x83,0x91,0x91,//黑夜中不寂寞0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76,//穿越千年的哀愁0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,//是你在盡頭等我0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,//最美麗的感動會值得0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff//結(jié)束標(biāo)志//用一生守候};ucharcodejmszl[]={//寂寞沙洲冷0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,//自你走后心憔悴0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14,//白色油桐風(fēng)中紛飛0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28,//落花似人有情這個季節(jié)0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52,//河畔的風(fēng)放肆拼命地吹0x51,0x51,0x31,0x32,0x31,0x32,0x81,0x72,0x63,//不斷撥弄離人的眼淚0x62,0x71,0x81,0x72,0x61,0x61,0x52,0x31,0x21,0x32,0x51,0x54,//那樣濃烈的愛再也無法給0x22,0x12,0x11,0x12,0x11,0x12,0x12,0x14,0x26,0x32,0x26,//傷感一夜一夜0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,//當(dāng)記憶的線纏繞過往支離破碎0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34,//是慌亂占據(jù)了心扉 0x31,0x81,0x81,0x81,0x61,0x91,0x82,//有花兒伴著蝴蝶0x51,0x51,0x51,0x51,0x31,0x61,0x53,//孤雁可以雙飛 0x21,0x11,0x21,0x11,0x22,0x11,0x21,0x26,//夜深人靜獨徘徊0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x52,//當(dāng)幸福戀人寄來紅色分享喜悅0x31,0x31,0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56,//閉上雙眼難過頭也不敢回0x32,0x32,0x81,0x81,0x81,0x81,0x91,0x81,0x61,0x81,0x61,0x51,0x31,0x51,0x34,//仍然撿盡寒枝不肯安歇微帶著后悔0x21,0x31,0x51,0x31,0x21,0x11,0x61,0x21,0x16,//寂寞沙洲我該思念誰0xff};//簡譜音調(diào)對應(yīng)的定時器初值//適合11.0592M的晶振ucharcodecuzhi[]={ 0xff,0xff,//占位 0xFC,0x8E,//中央C調(diào)1-7 0xFC,0xED, 0xFD,0x43, 0xFD,0x6A, 0xFD,0xB3, 0xFD,0xF3, 0xFE,0x2D, 0xFE,0x47, //高八度1-7 0xFE,0x76, 0xFE,0xA1, 0xFE,0xC7, 0xFE,0xD9, 0xFE,0xF9, 0xFF,0x16 };ucharyinyue[]={0x01,0x8f,0x8e,0x8d,0x8c,0x8b,0x8a,0x89,0x88,0x07,0x06};//將音調(diào)轉(zhuǎn)化為對應(yīng)的LED樣式voiddelay1(uintz); //延時1MSvoiddelay(uintz); //延時165MS,即十六分音符voidsong();voidbeep();//蜂鳴器叫一聲voiddelay_led(uintz);main(){ ucharx,w,timeLed,ad=0; //, count1=0;//流水燈無花樣 count2=1;//唱第一首歌// P34=0;//選取矩陣鍵盤的一列 EA=1;//開總中斷 EX0=1;//開外部中斷0 IT0=1;//外部中斷0下降沿觸發(fā)方式 EX1=1;//開外部中斷1 IT1=1;//外部中斷1下降沿觸發(fā)方式 TMOD=0x01;//定時器0工作在方式1 TH0=0; TL0=0; ET0=1; while(1) { if(count1!=0) { switch(count1) { case1: for(w=0;w<23;w++) { for(timeLed=0;timeLed<100;timeLed++) {for(x=0;x<=ad;x++) { //duan=1; P1=huayang1[w][x]; //duan=0; if(count1!=1) break; } } if(w<7) ad++; if(w>14) ad--; if(w==22) ad=0; } ad=0; break; case2: for(w=0;w<23;w++) { for(x=0;x<=ad;x++) { //duan=1; P1=huayang1[w][x]; //duan=0; delay1(300); if(count1!=2) break; } if(w<7) ad++; if(w>14) ad--; if(w==22) ad=0; } ad=0; break; case3: for(w=22;w>=0;w--) { for(timeLed=0;timeLed<100;timeLed++) {for(x=0;x<=ad;x++) { //duan=1; P1=huayang1[w][x]; //duan=0; if(count1!=3) break; } } if(w<8) ad--; if(w>15) ad++; if(w==0) ad=0; } ad=0; break; case4: for(x=0;x<8;x++) { //duan=1; P1=huayang4[x]; beep(); delay1(300); //duan=0; if(count1!=4) break; } break; } } else { song(); delay1(1000); } } }voidint0()interrupt0{ EA=0;//關(guān)總中斷 delay1(1);//去抖 if(key1==0) { count2=0;//不讓蜂鳴器唱歌 TR0=0; co

溫馨提示

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

評論

0/150

提交評論