用單片機(jī)演奏電子樂(lè)曲專業(yè)課程設(shè)計(jì)方案報(bào)告林星星_第1頁(yè)
用單片機(jī)演奏電子樂(lè)曲專業(yè)課程設(shè)計(jì)方案報(bào)告林星星_第2頁(yè)
用單片機(jī)演奏電子樂(lè)曲專業(yè)課程設(shè)計(jì)方案報(bào)告林星星_第3頁(yè)
用單片機(jī)演奏電子樂(lè)曲專業(yè)課程設(shè)計(jì)方案報(bào)告林星星_第4頁(yè)
用單片機(jī)演奏電子樂(lè)曲專業(yè)課程設(shè)計(jì)方案報(bào)告林星星_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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)介

課程設(shè)計(jì)目標(biāo):我們學(xué)習(xí)了一個(gè)學(xué)期單片機(jī),這次課程設(shè)計(jì)就是以現(xiàn)有基礎(chǔ)和能力,利用此次設(shè)計(jì)加以利用,從而達(dá)成對(duì)所學(xué)知識(shí)鞏固,更深一步了解,面對(duì)一個(gè)電子設(shè)計(jì),應(yīng)對(duì)出系統(tǒng)方案,分析出各個(gè)板塊來(lái),在對(duì)各個(gè)板塊深入具體設(shè)計(jì),優(yōu)異行硬件電路設(shè)計(jì),此時(shí)一定要考慮好要用什么元件、各個(gè)元件具體參數(shù)、是否能實(shí)現(xiàn)應(yīng)有功效,從而得到一個(gè)完整硬件電路。在依據(jù)該電路設(shè)計(jì)出軟件功效模塊、從而完成程序步驟圖,在跟據(jù)程序步驟圖完成程序設(shè)計(jì),并經(jīng)過(guò)反復(fù)調(diào)試、運(yùn)行、更正,直至完成既定功效為止,最終將軟件,硬件結(jié)合進(jìn)行調(diào)試、運(yùn)行,對(duì)其功效進(jìn)行最終測(cè)試,并反復(fù)思索其測(cè)試中碰到對(duì)應(yīng)問(wèn)題原因,并將其一一處理,從而完成此次設(shè)計(jì)試驗(yàn)要求,和此次課程設(shè)計(jì)最終目標(biāo)。本課程設(shè)計(jì)教學(xué)依據(jù)課程教學(xué)綱領(lǐng)要求和單片機(jī)原理和接口試驗(yàn)室建設(shè)所提供條件,安排了單片機(jī)控制系統(tǒng)設(shè)計(jì)課題,從而使我們愈加好地掌握課堂學(xué)習(xí)理論知識(shí),掌握基礎(chǔ)實(shí)踐技能,并能進(jìn)行一定綜合應(yīng)用和探索。經(jīng)過(guò)課程設(shè)計(jì)教學(xué),使我們鞏固和深化已學(xué)理論知識(shí),加強(qiáng)綜合應(yīng)用能力,訓(xùn)練學(xué)生掌握分析問(wèn)題、處理問(wèn)題方法,培養(yǎng)較強(qiáng)動(dòng)手能力和一定單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)和調(diào)試能力。課程設(shè)計(jì)要求:此次課程設(shè)計(jì)要求在一周時(shí)間內(nèi)利用試驗(yàn)室現(xiàn)有條件或自己設(shè)備完成程序編寫和調(diào)試,具體要求以下:1、設(shè)計(jì)題目全部需要進(jìn)行硬件設(shè)計(jì)和軟件設(shè)計(jì),并調(diào)試成功;2、設(shè)計(jì)硬件電路要包含I/O設(shè)備,并使用I/O功效;3、盡可能使用單片機(jī)定時(shí)計(jì)數(shù)器和中止資源4、硬件可使用THDPJ-1/2型單片機(jī)開發(fā)綜合試驗(yàn)箱,也可使用自己硬件電路5、可用C51或匯編語(yǔ)言編程3、設(shè)計(jì)題目分析3.1題目介紹用單片機(jī)演奏電子樂(lè)曲,相當(dāng)于制作一個(gè)帶有錄音播放功效電子琴。電子琴是現(xiàn)代電子科技和音樂(lè)結(jié)合產(chǎn)物,是一個(gè)新型鍵盤樂(lè)器。它在現(xiàn)代音樂(lè)飾演著關(guān)鍵角色,單片機(jī)含有強(qiáng)大控制功效和靈活編程實(shí)現(xiàn)特征,它已經(jīng)溶入現(xiàn)代大家生活中,成為不可替換一部分。此次課程設(shè)計(jì)關(guān)鍵內(nèi)容是用AT89C51單片機(jī)為關(guān)鍵控制元件,設(shè)計(jì)一個(gè)電子琴。以單片機(jī)作為主控關(guān)鍵,和鍵盤、蜂鳴器等模塊組成關(guān)鍵主控制模塊,在主控模塊上設(shè)有16個(gè)彈奏按鍵、1個(gè)播放鍵,1個(gè)暫停鍵和蜂鳴器。該課題則增強(qiáng)了我們對(duì)于4×4矩陣式鍵盤了解和使用能力,在掃鍵,取鍵值,賦值三個(gè)方面進(jìn)行了加強(qiáng)和鞏固。另外也對(duì)存放區(qū)域和空間進(jìn)行了復(fù)習(xí)和使用,加深了我們對(duì)于單片機(jī)內(nèi)部結(jié)構(gòu)認(rèn)知,為我們深入學(xué)習(xí)單片機(jī)提供了更深厚能力。另外,經(jīng)過(guò)實(shí)踐和結(jié)果展示,我們也能在學(xué)習(xí)中取得學(xué)習(xí)愛好,讓我們學(xué)習(xí)充滿了樂(lè)趣。3.2設(shè)計(jì)要求本設(shè)計(jì)是以AT89C51芯片電路為基礎(chǔ),利用蜂鳴器進(jìn)行音樂(lè)播放,而且利用4×4鍵盤進(jìn)行彈奏,并把彈奏音錄入存放單元內(nèi),然后將彈奏音符播放出來(lái)。而且添加了LED指示燈來(lái)區(qū)分模式不一樣。歸納總結(jié)為以下四個(gè)功效:1、能夠播放若干首程序自帶音樂(lè)庫(kù)里歌曲;2、使用4×4矩陣式鍵盤設(shè)計(jì)出16個(gè)音符,隨意彈奏;3、將演奏音符存放到單片機(jī)存放單元中,而且能夠作為音樂(lè)庫(kù)里音樂(lè)播放;4、用LED指示燈來(lái)區(qū)分播放和演奏兩個(gè)功效。4、課程設(shè)計(jì)內(nèi)容4.1總體設(shè)計(jì)4.1.1總體設(shè)計(jì)框架:該系統(tǒng)結(jié)構(gòu)以AT89C51單片機(jī)位控制關(guān)鍵,4*4矩陣鍵盤,加上2個(gè)按鍵、時(shí)鐘復(fù)位電路、蜂鳴器等模塊組成。單片機(jī)負(fù)責(zé)接收按鍵輸入,依據(jù)輸入按鍵所對(duì)應(yīng)音符蜂由鳴器發(fā)音。系統(tǒng)總體組成框圖圖所表示。AT89C51AT89C51單片機(jī)蜂鳴器4X4鍵盤蜂鳴器4X4鍵盤播放鍵播放鍵LED燈顯示LED燈顯示錄音兼演奏鍵錄音兼演奏鍵圖一系統(tǒng)組成框圖4.1.2系統(tǒng)功效模塊:電子琴功效結(jié)構(gòu)圖2所表示。切歌鍵負(fù)責(zé)切換播放歌曲,播放歌曲共4首,分別是千年之戀和寂寞沙冷,七子之歌,感恩心,另外第一首播放為錄音錄入曲調(diào),不想播放能夠再次按播放鍵進(jìn)行四首歌播放。暫定鍵負(fù)責(zé)暫停而且進(jìn)入電子琴?gòu)椬嗄J剑?X4鍵盤,每個(gè)按鍵全部對(duì)應(yīng)這不一樣音調(diào),而且彈奏同時(shí)也把所彈奏曲調(diào)錄入了存放單元里。在區(qū)分不一樣模式上用是LED燈明和滅來(lái)區(qū)分演奏模式和播放模式。切歌鍵切歌鍵演奏鍵播放已存入歌曲,可按切歌鍵進(jìn)播放已存入歌曲,可按切歌鍵進(jìn)行切歌。也能夠把錄入曲調(diào)完整播放出來(lái)利用4X4鍵盤進(jìn)行演奏而且進(jìn)行錄音LED燈亮利用4X4鍵盤進(jìn)行演奏而且進(jìn)行錄音LED燈亮LED燈滅圖二系統(tǒng)功效模塊圖4.1.3程序總步驟:(1)鍵盤掃描程序:檢測(cè)是否有鍵按下,有鍵按下則統(tǒng)計(jì)按下鍵鍵值,并跳轉(zhuǎn)至功效轉(zhuǎn)移程序;無(wú)鍵按下,則返回鍵盤掃描程序繼續(xù)檢測(cè)。(2)功效轉(zhuǎn)換程序:對(duì)檢測(cè)到得按鍵值進(jìn)行判定,是琴鍵則跳轉(zhuǎn)至琴鍵處理程序,是功效鍵則跳轉(zhuǎn)至對(duì)應(yīng)功效程序,我們?cè)O(shè)計(jì)功效程序有兩種,即電子琴?gòu)椬喙πШ妥詣?dòng)播放樂(lè)曲功效。(3)琴鍵處理程序:依據(jù)檢測(cè)到得按鍵值,查詢音律表,給計(jì)時(shí)器賦值,使發(fā)出對(duì)應(yīng)頻率聲音。而且把鍵值對(duì)應(yīng)頻率放入歌曲播放數(shù)組中,等候播放。(4)自動(dòng)播放歌曲程序:檢測(cè)到按鍵按下是自動(dòng)播放歌曲功效鍵后實(shí)施該程序,電子琴會(huì)自動(dòng)播放事先已經(jīng)存放好歌曲,歌曲播放完成以后自動(dòng)返回至鍵盤掃描程序,繼續(xù)等候是否有鍵按下。開始開始鍵盤掃描程序T0初始化并開中止許可T0中止鍵盤掃描程序T0初始化并開中止許可T0中止有鍵按下否有鍵按下否否延時(shí)去抖動(dòng)延時(shí)去抖動(dòng)是識(shí)別按鍵功效識(shí)別按鍵功效是否演是否演奏鍵播放鍵播放鍵是取對(duì)應(yīng)音符碼裝入T0依據(jù)按鍵功效裝入對(duì)應(yīng)音符值到T0取對(duì)應(yīng)音符碼裝入T0依據(jù)按鍵功效裝入對(duì)應(yīng)音符值到T0,而且把對(duì)應(yīng)音符放入存放單元中開啟T0開啟T0開啟T0開啟T0按鍵釋放成功否按鍵釋放成功否按鍵釋放成功否按鍵釋放成功否 T0停止工作T0停止工作T0停止T0停止工作圖三程序總步驟圖4.1.4系統(tǒng)整體電路在電路設(shè)計(jì)上,我們利用是試驗(yàn)室試驗(yàn)箱,用到關(guān)鍵硬件有AT89C51芯片,兩個(gè)獨(dú)立按鍵,一個(gè)LED燈,和4X4鍵盤。整體電路圖以下:1.電路中用P3.2、P3.3控制按鍵。2.P1.0~P1.7控制4*4矩陣鍵盤3.P3.7控制蜂鳴器。4.P2.0控制LED燈明滅圖四系統(tǒng)整體硬件圖各個(gè)部分放大圖片以下:A鍵盤B振蕩電路C復(fù)位電路D功效鍵和蜂鳴器模塊圖五電路模塊4.2具體設(shè)計(jì):4.2.1彈奏錄音模塊:彈奏錄音模塊中我們用到了掃鍵程序keys_scan,鍵值賦值程序keybranch,另外設(shè)定了一個(gè)錄音數(shù)組playmusic[16],可放入對(duì)應(yīng)按鍵對(duì)應(yīng)頻率。再者在這個(gè)模塊中我們用到了定時(shí)器0和其中止,用來(lái)是蜂鳴器鳴叫。補(bǔ)充說(shuō)明在彈奏錄音功效進(jìn)行時(shí)是LED燈是滅。這個(gè)模塊中包含到了多個(gè)函數(shù)參數(shù),如選歌參數(shù)count2,4X4鍵盤接口P1,開啟關(guān)閉定時(shí)器0參數(shù)TR0,錄音可放入音調(diào)數(shù)量cnt。另外還調(diào)用了延遲子函數(shù)delay_ms。彈奏錄音程序步驟:開始開始開中止并許可中止設(shè)定定時(shí)器工作方法開中止并許可中止設(shè)定定時(shí)器工作方法取鍵值取鍵值依據(jù)鍵值查音律,并把按鍵做對(duì)應(yīng)頻率和拍子放入錄音數(shù)組中等候依據(jù)鍵值查音律,并把按鍵做對(duì)應(yīng)頻率和拍子放入錄音數(shù)組中等候給定時(shí)器T0賦值給定時(shí)器T0賦值開始計(jì)時(shí)開始計(jì)時(shí)進(jìn)入中止進(jìn)入中止蜂鳴器發(fā)出對(duì)應(yīng)音調(diào)蜂鳴器發(fā)出對(duì)應(yīng)音調(diào)退出中止退出中止延時(shí)延時(shí)返回鍵盤掃描程序返回鍵盤掃描程序圖六彈奏錄音程序步驟圖4.2.1歌曲播放模塊歌曲播放模塊中我們用到了歌曲播放子程序song,在這個(gè)模塊中我們也用到了定時(shí)器0和其中止,用來(lái)是蜂鳴器鳴叫。補(bǔ)充說(shuō)明在彈奏錄音功效進(jìn)行時(shí)是LED燈是亮。這個(gè)模塊中包含到了多個(gè)函數(shù)參數(shù),如選歌參數(shù)count2,簡(jiǎn)譜參數(shù)jp,另外還有定時(shí)器0初值數(shù)組cuzhi,開啟關(guān)閉定時(shí)器0參數(shù)TR0,錄音可放入音調(diào)數(shù)量cnt。四首歌簡(jiǎn)譜對(duì)應(yīng)四個(gè)數(shù)組分別為ganen,qnzl,jmszl,qizige,和錄音播放數(shù)組playmusic。還調(diào)用了延遲子函數(shù)delay_ms和節(jié)拍時(shí)間函數(shù)delay。自動(dòng)播放歌曲程序步驟:開始開始開中止,設(shè)定定時(shí)器T0工作模式開中止,設(shè)定定時(shí)器T0工作模式取簡(jiǎn)譜碼取簡(jiǎn)譜碼取該音符節(jié)拍碼取該音符節(jié)拍碼返回鍵盤掃描C返回鍵盤掃描Count2=0YN查音律表,給定時(shí)器賦值查音律表,給定時(shí)器賦值開始計(jì)時(shí)開始計(jì)時(shí)進(jìn)入中止進(jìn)入中止蜂鳴器發(fā)出對(duì)應(yīng)音調(diào)蜂鳴器發(fā)出對(duì)應(yīng)音調(diào)退出中止退出中止延時(shí)延時(shí)圖七自動(dòng)播放歌曲程序步驟4.3調(diào)試和測(cè)試:程序調(diào)試過(guò)程:1.檢驗(yàn)試驗(yàn)箱和硬件設(shè)備是否能夠正常使用:我們用試驗(yàn)箱搭了一個(gè)簡(jiǎn)單電路,在軟件上寫了一段很簡(jiǎn)單程序,運(yùn)行后,試驗(yàn)箱正常工作。證實(shí)了試驗(yàn)箱是完好,沒(méi)有損壞,接下來(lái)試驗(yàn)排除了箱子故障問(wèn)題。 2.調(diào)試各個(gè)子程序:我們先把硬件電路在試驗(yàn)箱上搭好,然后再把子程序一個(gè)一個(gè)套進(jìn)去,一個(gè)一個(gè)調(diào)試。首先調(diào)試是基礎(chǔ)電子琴?gòu)椬喙πё映绦?,包含鍵盤掃描程序,賦值程序,延遲程序,和每個(gè)按鍵對(duì)應(yīng)按鍵音播放程序。以后,我們調(diào)試音樂(lè)播放模塊程序,最終把錄音模塊加上去。最終將程序完整化,把整個(gè)程序完整運(yùn)行,看看功效程序是否能夠在整體中正常發(fā)揮作用。4.調(diào)整好程序結(jié)構(gòu),是結(jié)構(gòu)可讀性增強(qiáng),添加合適備注。調(diào)試中出現(xiàn)問(wèn)題和處理方法:?jiǎn)栴}一:在演奏功效實(shí)現(xiàn)時(shí),每個(gè)按鍵音調(diào)有些跑偏了。處理方法:我們?cè)谀壳邦l率值周圍逐一取值試驗(yàn),用最適宜頻率值替換,最終使按鍵音能夠基礎(chǔ)符合標(biāo)準(zhǔn)。問(wèn)題二:在播放功效中,我們放入歌曲簡(jiǎn)譜是從網(wǎng)上直接找出來(lái),在有部分地方音調(diào)就跑了。處理方法:我們自己對(duì)應(yīng)著歌曲簡(jiǎn)譜,把部分錯(cuò)誤地方更正過(guò)來(lái)。問(wèn)題三:這是最大一個(gè)問(wèn)題,錄音功效沒(méi)措施實(shí)現(xiàn),沒(méi)措施把鍵盤對(duì)應(yīng)音調(diào)存入數(shù)組中。處理方法:即使我們到最終也沒(méi)能把這個(gè)問(wèn)題處理,不過(guò)在這個(gè)問(wèn)題上我們想盡了措施。剛開始我們?cè)瓉?lái)計(jì)劃放入ROM中,計(jì)劃放入30h中,不過(guò)沒(méi)有效果。我們也不知道問(wèn)題出在哪里,以后老師提醒我們?cè)趍emory窗口中能夠看到內(nèi)存中是否有東西存入,就能夠判定到底有沒(méi)有存入。很不幸,里面沒(méi)有存入東西。以后我們放入錄音數(shù)組中,計(jì)劃弄成一個(gè)格式和四首已放入簡(jiǎn)譜歌曲一樣數(shù)組,不過(guò)我們?cè)趦?nèi)存中還是沒(méi)有看到。最終一天時(shí)候,我發(fā)覺(jué)偶然有幾次是能夠?qū)戇M(jìn)去,不過(guò)寫進(jìn)去東西不是我們按鍵按下去所對(duì)應(yīng)鍵值,仍然不能寫入。究其原因,可能是硬件內(nèi)部存放單元發(fā)生了問(wèn)題,也可能是軟件問(wèn)題,也可能真是程序問(wèn)題,因?yàn)槲覀兯接邢蓿砸舱鏇](méi)措施處理問(wèn)題,很遺憾啊。設(shè)計(jì)心得和總結(jié):在這次課程設(shè)計(jì)中,我收獲了很多,也更了解單片機(jī)在生活中部分利用,同時(shí)也讓我們收獲了學(xué)習(xí)樂(lè)趣。在設(shè)計(jì)和調(diào)試過(guò)程中我碰到了很多困難,也在這過(guò)程中明白了自己不足,也謝謝老師和同學(xué)幫助。剛開始第一天我是滿懷信心,完成了選題,程序框圖,實(shí)際電路設(shè)計(jì),也在網(wǎng)絡(luò)和書籍上尋求相關(guān)程序范例,部分全部進(jìn)行得很順利,不過(guò)往后,在程序上我碰到了很大問(wèn)題。第二天時(shí)候,多個(gè)子程序和大致主程序已經(jīng)寫好,不過(guò)在錄音功效程序編寫上碰到了很大問(wèn)題,錄音程序在調(diào)試過(guò)程失敗了,不過(guò)也有收獲,基礎(chǔ)功效已經(jīng)能夠?qū)崿F(xiàn),包含演奏和播放和指示燈全部基礎(chǔ)能夠?qū)崿F(xiàn)。第三天我就一直在糾結(jié)程序錄音功效為何會(huì)失敗,我嘗試了多種方法,找了其它同學(xué),不過(guò)還是處理不了問(wèn)題,就這么整整糾結(jié)了一天。第四天時(shí)候,我向老師求救,最終判定為單片機(jī)內(nèi)部RAM里寫不進(jìn)去內(nèi)容,至于為何這還是一個(gè)未知結(jié)論,可能是單片機(jī)硬件問(wèn)題。不過(guò)我們還是沒(méi)措施處理這個(gè)問(wèn)題。第五天時(shí)候,就要進(jìn)入收尾階段了,我們?nèi)匀贿€在奮斗著,很可惜,最終我們也沒(méi)能把錄音功效成功調(diào)試出來(lái)。因?yàn)橐郧白鲈囼?yàn)經(jīng)驗(yàn),所以我們對(duì)大致過(guò)程比較熟悉,可是還是有部分小問(wèn)題不停地出現(xiàn),要不停地進(jìn)行修改,我經(jīng)驗(yàn)太少,能力不夠,對(duì)于出現(xiàn)問(wèn)題,沒(méi)措施找到原因,也沒(méi)措施處理,這一點(diǎn)我很慚愧,有待加強(qiáng)。經(jīng)過(guò)一周課程設(shè)計(jì),我對(duì)于單片機(jī)利用有了一個(gè)新認(rèn)識(shí),同時(shí)也愈加好掌握了KeiluVision該軟件大致使用方法。在不停地學(xué)習(xí)和鞏固中,提升了自學(xué)能力和處理問(wèn)題能力,同時(shí)積累了經(jīng)驗(yàn)。6、提議:從人員數(shù)量上來(lái)說(shuō),每一組人數(shù)過(guò)多了點(diǎn),造成了人力資源浪費(fèi)和部分同學(xué)無(wú)所事事。試驗(yàn)設(shè)備數(shù)量太少,而且全部有不一樣程度損傷,應(yīng)該及早進(jìn)行維修。設(shè)備提供能夠讓每個(gè)同學(xué)全部能獨(dú)立完成課程設(shè)計(jì),讓每個(gè)人全部能在課程設(shè)計(jì)上多多收獲。如在設(shè)備上不能提供,能夠讓每個(gè)人動(dòng)手自己去做一個(gè)簡(jiǎn)單單片機(jī)最小系統(tǒng),這么也能夠加強(qiáng)我們?cè)谟布狭私?。另外,課程設(shè)計(jì)時(shí)間也能夠合適延長(zhǎng),讓我們每個(gè)人能夠獨(dú)立把任務(wù)完成得愈加完善。同時(shí),我們也需要有些人能夠指導(dǎo)和解答,最好能夠配置多個(gè)能力比較強(qiáng)學(xué)長(zhǎng)學(xué)姐幫助我們處理這些困難。假如能夠處理以上問(wèn)題,我相信我們結(jié)果會(huì)愈加讓人滿意。7、評(píng)閱意見老師署名:年月日參考書目:楊居義,《單片機(jī)課程設(shè)計(jì)指導(dǎo)》,清華大學(xué)出版社,北京,-9-1徐懂理,王曼,趙艷,《單片機(jī)原理和接口技術(shù)試驗(yàn)和課程設(shè)計(jì)》,北京大學(xué)出版社,北京,-7-1陳明熒,《8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材》,清華大學(xué)出版社,北京,-4-1《單片機(jī)-電子琴演奏》,10月3日,《畢業(yè)設(shè)計(jì):基于單片機(jī)音樂(lè)演奏系統(tǒng)設(shè)計(jì)或電子琴設(shè)計(jì)》,10月3日,附錄一:簡(jiǎn)譜對(duì)應(yīng)簡(jiǎn)譜碼、T值、節(jié)拍數(shù)簡(jiǎn)譜發(fā)音簡(jiǎn)譜碼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高音SOF65217附錄二:程序#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedintsbitkey1=P3^2;//暫停歌曲進(jìn)入彈奏模式sbitkey2=P3^3;//切歌sbitbell=P3^7;//蜂鳴器sbitLED=P2^0;//燈亮即為歌曲播放模式,反之為電子琴演奏模式ucharcount2=0;//選歌uchartimeh,timel,keynumb,i,d=0,j;intcnt=0;voidsong();ucharplaymusic[16];Uintcodetone_delay_table[]={64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178};//十六音階簡(jiǎn)譜碼ucharcodeqnzl[]={//千年之戀簡(jiǎn)譜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,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,0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,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}; //高四位為音調(diào),低四位為拍子ucharcodejmszl[]={//寂寞沙洲冷簡(jiǎn)譜0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14,0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28,0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52,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,0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34,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,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};ucharcodeqizige[]={ //七子之歌簡(jiǎn)譜0x54,0x32,0x52,0x32,0x54,0x62,0x52,0x32,0x62,0x54,0x14,0x12,0x22,0x34,0x52,0x32,0x02,0x32,0x58,0x52,0x52,0x62,0x52,0x32,0x54,0x52,0x62,0x52,0x82,0x62,0x58,0x14,0x52,0x32,0x22,0x12,0x24,0x32,0x54,0x2,0x22,0x34,0x1f,0x18,0x04,0x54,0xa4,0x92,0x81,0x62,0x52,0x54,0x62,0x64,0x52,0x62,0x81,0xa2,0x82,0x9c,0x02,0x52,0xa4,0x92,0x81,0x62,0x52,0x54,0x62,0x64,0x52,0x64,0xa2,0x92,0x9f,0xa4,0x92,0x81,0x62,0x52,0x54,0x84,0x62,0x52,0x32,0x22,0x14,0x04,0x22,0x32,0x58,0x58,0x04,0x52,0x62,0x8f,0xff};ucharcodeganen[]={//感恩心簡(jiǎn)譜0x12,0x14,0x22,0x32,0x54,0x32,0x84,0x72,0x62,0x54,0x02,0x62,0x62,0x52,0x54,0x12,0x22,0x32,0x28,0x12,0x14,0x22,0x32,0x54,0x32,0x84,0x92,0x82,0x54,0x32,0x24,0x21,0x61,0x54,0x22,0x32,0x12,0x18,0x22,0x24,0x12,0x24,0x11,0x21,0x34,0x32,0x21,0x31,0x34,0x12,0x22,0x22,0x22,0x11,0x21,0x22,0x64,0x52,0x52,0x32,0x38,0x31,0x52,0x51,0x52,0x31,0x51,0x58,0x31,0x82,0x81,0x82,0x31,0x61,0x68,0x62,0x62,0x62,0x51,0x61,0x64,0x61,0x82,0x61,0x9c,0x52,0xa4,0x92,0xa4,0x32,0x84,0x72,0x64,0x62,0x94,0x82,0x94,0x61,0x81,0x92,0x91,0x91,0x92,0x81,0xa1,0xa2,0x92,0x94,0x52,0xa4,0x92,0xa4,0x32,0x84,0x72,0x64,0x52,0x62,0x81,0x81,0x82,0x92,0xa2,0x94,0x82,0x72,0x82,0x88,0xff}; voiddelay_ms(ucharx) //延時(shí)子函數(shù){uchari;while(x--)for(i=0;i<120;i++);}voiddelay(uintz) // 十六分之一拍時(shí)長(zhǎng){uintx,y;for(x=z;x>0;x--)for(y=19000;y>0;y--);}voidbeep() //蜂鳴器叫一聲{uchari;for(i=0;i<50;i++){bell=~bell;delay_ms(1);}bell=1;}voidint0()interrupt0 //外部中止0中止程序{EA=0;delay_ms(1);if(key1==0){count2=0; TR0=0;}EA=1;}voidint1()interrupt2 //外部中止1中止程序{TR0=0;delay_ms(1);if(key2==0){i=0;count2++;TR0=~TR0;if(count2==6)count2=0;}}voidtimer0()interrupt1 //定時(shí)器0中止程序{if(count2==0){TH0=tone_delay_table[keynumb]/256;TL0=tone_delay_table[keynumb]%256;bell=~bell;}if(count2!=0){TH0=timeh;TL0=timel;bell=~bell; }}voidkeys_scan() //掃鍵程序{uchartmp,k; P1=0x0f; delay_ms(2);tmp=(~P1)&0x0f; //取反而且高四位置0switch(tmp) //掃描列{case0x01:k=0;break;case0x02:k=1;break;case0x04:k=2;break; case0x08:k=3;break;default:return;}P1=0xf0; delay_ms(2);tmp=(P1>>4)^0x0f;//低四位換為高四位而且把高四位置0switch(tmp) //掃描行{case0x01:k=k+0;break;case0x02:k=k+4;break;case0x04:k=k+8;break;case0x08:k=k+12;break;default:return;}keynumb=k;}voidkeybranch() //鍵值賦值,賦是十六音階簡(jiǎn)譜{switch(keynumb){case0x00:d=0x14;break;case0x01:d=0x24;break;case0x02:d=0x34;break;case0x03:d=0x44;break;case0x04:d=0x54;break;case0x05:d=0x64;break;case0x06:d=0x74;break;case0x07:d=0x84;break;case0x08:d=0x94;break;case0x09:d=0xa4;break;case0x0a:d=0xb4;break;case0x0b:d=0xc4;break;case0x0c:d=0xd4;break;case0x0d:d=0xe4;break;case0x0e:d=0xf4;break;case0x0f:d=0xff;break;default:d=0xf4;break;}}ucharcod

溫馨提示

  • 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)論