單片機(jī)課程設(shè)計(jì)_基于89C51的數(shù)字音樂(lè)盒設(shè)計(jì).doc
《單片機(jī)課程設(shè)計(jì)_基于89C51的數(shù)字音樂(lè)盒設(shè)計(jì).doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《單片機(jī)課程設(shè)計(jì)_基于89C51的數(shù)字音樂(lè)盒設(shè)計(jì).doc(33頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、課程設(shè)計(jì)單片機(jī)系統(tǒng)課程設(shè)計(jì)成績(jī)?cè)u(píng)定表設(shè)計(jì)課題基于89C51的數(shù)字音樂(lè)盒設(shè)計(jì)設(shè)計(jì)學(xué)院名稱(chēng): 電氣工程學(xué)院專(zhuān)業(yè)班級(jí):學(xué)生姓名:學(xué)號(hào):指導(dǎo)教師:設(shè)計(jì)地點(diǎn) :設(shè)計(jì)時(shí)間 :指導(dǎo)教師意見(jiàn):成績(jī): 簽名: 年 月 日33單片機(jī)系統(tǒng)課程設(shè)計(jì)課程設(shè)計(jì)名稱(chēng):基于89C51的數(shù)字音樂(lè)盒設(shè)計(jì) 專(zhuān)業(yè)班級(jí):學(xué)生姓名:學(xué)號(hào):指導(dǎo)教師:課程設(shè)計(jì)地點(diǎn):課程設(shè)計(jì)時(shí)間: 單片機(jī)系統(tǒng) 課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名專(zhuān)業(yè)班級(jí)學(xué)號(hào)題目課題性質(zhì)工程設(shè)計(jì)課題來(lái)源自擬指導(dǎo)教師主要內(nèi)容(參數(shù))利用89C52設(shè)計(jì)數(shù)字音樂(lè)盒的控制系統(tǒng),實(shí)現(xiàn)以下功能:1按下開(kāi)始鍵或停止鍵后能夠自動(dòng)播放或停止音樂(lè);2按下選擇鍵可以切換曲目;3LCD顯示當(dāng)前播放的曲目標(biāo)號(hào)和播放
2、時(shí)間;4蜂鳴器發(fā)出某個(gè)音調(diào),與之相對(duì)應(yīng)的LED亮起;任務(wù)要求(進(jìn)度)第1-2天:熟悉課程設(shè)計(jì)任務(wù)及要求,查閱技術(shù)資料,確定設(shè)計(jì)方案。第3-4天:按照確定的方案設(shè)計(jì)單元電路。要求畫(huà)出單元電路圖,元件及元件參數(shù)選擇要有依據(jù),各單元電路的設(shè)計(jì)要有詳細(xì)論述。第5-6天:軟件設(shè)計(jì),編寫(xiě)程序。第7-8天:實(shí)驗(yàn)室調(diào)試。第9-10天:撰寫(xiě)課程設(shè)計(jì)報(bào)告。要求內(nèi)容完整、圖表清晰、文理流暢、格式規(guī)范、方案合理、設(shè)計(jì)正確。主要參考資料1 張迎新單片微型計(jì)算機(jī)原理、應(yīng)用及接口技術(shù)(第2版)M北京:國(guó)防工業(yè)出版社,20042 譚浩強(qiáng)。C語(yǔ)言程序設(shè)計(jì)(第二版),北京:清華大學(xué)出版社,1991.3中國(guó)電子網(wǎng)http:/www
3、.21IC.com4 康華光,模擬電子技術(shù)基礎(chǔ)(第四版)武漢:華中理工大學(xué)出版社,1999.審查意見(jiàn)系(教研室)主任簽字: 年月日目錄引言51 概述52 系統(tǒng)總體方案設(shè)計(jì)52.1硬件組成52.2.方案論證。62.3音樂(lè)盒的功能圖用框圖表示73硬件電路設(shè)計(jì)73.1單片機(jī)電路73.2 晶振電路83.3復(fù)位電路83.4鍵盤(pán)83.5蜂鳴器電路93.6 LCD液晶電路93.7電源電路104 軟件設(shè)計(jì)104.1 音調(diào)、節(jié)拍、及編碼的設(shè)置104.1.1音調(diào)104.1.2節(jié)拍的確定124.2144.3播放音樂(lè)子程序流程圖(包含了鍵盤(pán)掃描)154.4定時(shí)器0中斷服務(wù)子程序框圖:155,調(diào)試165.1 檢查硬件連
4、接165.2 檢查軟件系統(tǒng)165.2.1165.2.2165.3測(cè)試結(jié)果175.3.1整體運(yùn)行圖175.3.2LED燈運(yùn)行圖186 總結(jié)187參考文獻(xiàn)18附錄A19附錄B20引言在電子信息技術(shù)飛速發(fā)展的今天,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,它不僅推動(dòng)了社會(huì)的進(jìn)步,而且為我們的生活帶來(lái)了諸多的便利。由于人們生活質(zhì)量的提高,人們對(duì)視覺(jué)、聽(tīng)覺(jué)方面的享受提出了越來(lái)越高的要求。小小的音樂(lè)盒可以給人們帶來(lái)美好的回憶,提高人們的精神文化享受。傳統(tǒng)音樂(lè)盒多是機(jī)械型的,體積笨重,發(fā)音單調(diào),可以選擇的曲目較為單一。本文設(shè)計(jì)的音樂(lè)盒是以單片機(jī)為核心元件的電子式音樂(lè)盒,它體積小,重量輕,可以隨心添加自己喜歡的音
5、樂(lè),外觀效果多彩,使用方便,并且具有一定的商業(yè)價(jià)值。1概述本音樂(lè)盒的設(shè)計(jì)是以AT89C52芯片的電路為基礎(chǔ),外部以蜂鳴器作為發(fā)音器件,共同組成了音樂(lè)演奏控制器的硬件電路,通過(guò)軟件程序來(lái)控制單片機(jī)內(nèi)部的定時(shí)器使單片機(jī)I/O口發(fā)出相應(yīng)頻率的脈沖來(lái)驅(qū)動(dòng)蜂鳴器發(fā)出某個(gè)音調(diào),與之相對(duì)應(yīng)的LED亮起,從而演奏出優(yōu)美動(dòng)聽(tīng)的音樂(lè)。利用按鍵切換演奏出不同的樂(lè)曲,并可以在LCD上顯示當(dāng)前曲目序號(hào)和時(shí)間。用戶(hù)可以按照自己的喜好選擇音樂(lè)并將其轉(zhuǎn)化成機(jī)器碼存入單片機(jī)的存儲(chǔ)器中。對(duì)于不同型號(hào)的單片機(jī)只需要相應(yīng)的改變一下地址和I/O管腳即可。該軟、硬件系統(tǒng)具有很好的通用性,很高的實(shí)際使用價(jià)值,為單片機(jī)DIY制作者和音樂(lè)愛(ài)好
6、者具有一定的借鑒作用。2 系統(tǒng)總體方案設(shè)計(jì)2.1硬件組成按照數(shù)字是音樂(lè)盒對(duì)控制系統(tǒng)的技術(shù)要求,控制系統(tǒng)的硬件應(yīng)包括以下幾部分:(1)控制器。作為控制系統(tǒng)的核心,可以采用主流的51單片機(jī),MSP430,或處理性能更為優(yōu)越的ARM來(lái)合理控制各個(gè)器件有條不紊的運(yùn)行。(2)樂(lè)曲選擇器??梢圆捎冒存I或者觸摸屏來(lái)切換相應(yīng)的曲目。(3)音頻輸出器件。做為音樂(lè)盒的發(fā)聲設(shè)備,可以用蜂鳴器通過(guò)它可以將音樂(lè)代碼轉(zhuǎn)變?yōu)橐纛l信號(hào)發(fā)出來(lái)。(4)人機(jī)交互界面??梢赃\(yùn)用LED或LCD在歌曲播放過(guò)程中用來(lái)對(duì)歌曲信息進(jìn)行監(jiān)控顯示,反饋給使用者相應(yīng)的信息。硬件方框圖圖2-1-12.2.方案論證。本次設(shè)計(jì)以低成本,靈活方便為原則,所
7、以控制器選用主流的51系列單片機(jī),考慮到51內(nèi)部?jī)?chǔ)存空間的限制,故選用容量為51兩倍的AT89C52單片機(jī)作為總控制器,共有以下兩套方案可供選擇:方案一:以AT89C52單片機(jī)作為總控制器,以機(jī)械鍵盤(pán)作為樂(lè)曲選擇器,以蜂鳴器作為音頻輸出設(shè)備,以LCD1602液晶作為人機(jī)交互界面。 方案二:以AT89C52單片機(jī)作為總控制器,以機(jī)械鍵盤(pán)作為樂(lè)曲選擇器,以蜂鳴器作為音頻輸出設(shè)備,以LED數(shù)碼管作為人機(jī)交互界面。由于數(shù)碼管顯示內(nèi)容的單一,操作較為繁瑣且難以滿(mǎn)足大眾對(duì)主流時(shí)尚的需要,所以選用較為流行的顯示效果良好的1620液晶作為人機(jī)交互界面,最終確定方案一作為制作方案??傮w方案圖:圖2-2-12.3
8、音樂(lè)盒的功能圖用框圖表示音樂(lè)盒的功能結(jié)構(gòu)如圖2.2所示。Start_pause鍵負(fù)責(zé)開(kāi)始播放和暫停歌曲,播放歌曲共3首,分別是和兩只老虎和鈴兒響叮當(dāng)。Up鍵負(fù)責(zé)切換上一首曲目,down鍵用來(lái)切換下一首曲目。圖2-3-13硬件電路設(shè)計(jì)3.1單片機(jī)電路微控制器采用AT89C52。AT89C52是美國(guó)ATMEL公司生產(chǎn)的與MCS-51系列單片機(jī)完全兼容的高性能CMOS 8位單片機(jī),MCS-51系列單片機(jī)以其推出時(shí)間早、配套資源豐富、開(kāi)發(fā)手段完善、性?xún)r(jià)比高等特點(diǎn)而得到了廣泛的應(yīng)用,是單片機(jī)的主流品種。AT89C52的內(nèi)部資源主要包括:與MCS-51 系列完全兼容的高性能8位CPU;8K字節(jié)可重復(fù)編程的
9、Flash存儲(chǔ)器;256字節(jié)的SRAM;4個(gè)8位的并行口,共32條I/O口線(xiàn);3個(gè)16位的定時(shí)器/計(jì)數(shù)器;6個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí)的中斷系統(tǒng);一個(gè)全雙工的串行口;內(nèi)部振蕩器。3.2 晶振電路單片機(jī)的正常工作是在時(shí)鐘的作用下完成的,晶振選用11.0592M的。圖3-2-13.3復(fù)位電路復(fù)位電路是為了在某些情況下需要單片機(jī)恢復(fù)到初始運(yùn)行條件下而設(shè)計(jì)的,只要給RESET端大約10US的高電平,單片機(jī)就可以有效復(fù)位。圖3-3-13.4鍵盤(pán)該鍵盤(pán)電路是為了能夠更好地對(duì)音樂(lè)盒進(jìn)行控制,選擇和切換曲目,開(kāi)始和終止曲目,10K的上拉電阻保證鍵在沒(méi)按下時(shí),I/O口輸出為高電平,鍵按下時(shí)防止按鍵杯燒壞。圖3-4
10、-13.5蜂鳴器電路蜂鳴器作為音樂(lè)盒的發(fā)聲設(shè)備,當(dāng)I/O口數(shù)出一個(gè)低電平時(shí),蜂鳴器能夠發(fā)聲,PNP三極管用來(lái)放大輸出電流,從而來(lái)驅(qū)動(dòng)蜂鳴器。圖3-5-13.6 LCD液晶電路LCD液晶顯示電路用來(lái)進(jìn)行人機(jī)交互,對(duì)1602的操作通過(guò)P0口發(fā)送數(shù)據(jù)來(lái)實(shí)現(xiàn)。圖3-6-1圖3-6-23.7電源電路通過(guò)變壓器將220V交流變?yōu)?V,再通過(guò)整流,濾波,穩(wěn)壓電路實(shí)現(xiàn)單片機(jī)可以使用的電源,其中LM7805使穩(wěn)壓電源。圖3-7-14 軟件設(shè)計(jì)4.1 音調(diào)、節(jié)拍、及編碼的設(shè)置4.1.1音調(diào)音調(diào)的確定不同音高的樂(lè)音是用C、D、E、F、G、A、B來(lái)表示,這7個(gè)字母就是音樂(lè)的音名,它們一般依次唱成DO、RE、MI、FA
11、、SO、LA、SI,即唱成簡(jiǎn)譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來(lái)米發(fā)梭拉西”的讀音,這是唱曲時(shí)樂(lè)音的發(fā)音,所以叫“音調(diào)”。每個(gè)音調(diào)都有它固有的頻率。如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294 Hz)的一倍。1)要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)這半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈
12、沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O腳上得到此頻率的脈沖。2)利用AT89C52的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。此外結(jié)束符和休止符可以分別用代碼00H和FFH來(lái)表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。3)例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每次計(jì)數(shù)956次時(shí)將I/O反相,就可得到中音DO(523Hz)。計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:N=Fi2FrN:計(jì)算值;Fi:內(nèi)部計(jì)時(shí)一次為1us,故
13、其頻率為1MHz;其計(jì)數(shù)值的求法如下:T=65536-N=65536-Fi2Fr例如:設(shè)K=65536,F(xiàn)=1000000=Fi=1MHz,求低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的計(jì)算值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=650594) C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表如表4.1所示。表4.1 C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)
14、照表低音頻率T參數(shù)中音頻率T參數(shù)高音頻率T參數(shù)Do2621908229Do523956115Do10465757Do2771805217Do554903108Do11095454Re2941701204Re587852102Re11755151Re3111608193Re62280497Re12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa3701351162Fa74067681Fa14804141So3921276153So78463877So15683838So4151205145So8316
15、0272So16613636La4401136136La88056868La17603434La4641078129La93253664La18653232Si4941012121Si98850661Si197630304.1.2節(jié)拍的確定若要構(gòu)成音樂(lè),光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂(lè)具有旋律(固定的律動(dòng)),而且可以調(diào)節(jié)各個(gè)音的快慢度。音持續(xù)時(shí)間的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示。休止符表示暫停發(fā)音,一排的時(shí)間并不確定,一般是400500MS,本次設(shè)計(jì)選擇一拍的時(shí)間是500MS。一首音樂(lè)是由許多不同的音符組成的,而每個(gè)音符對(duì)應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對(duì)應(yīng)的延時(shí),構(gòu)成
16、音樂(lè)。對(duì)于單片機(jī)來(lái)說(shuō),產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機(jī)的定時(shí)/計(jì)數(shù)器來(lái)產(chǎn)生這樣的方波頻率信號(hào)。因此,需要弄清楚音樂(lè)中的音符和對(duì)應(yīng)的頻率,以及單片機(jī)定時(shí)計(jì)數(shù)的關(guān)系。表4.2節(jié)拍與節(jié)拍碼對(duì)照節(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拍每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,圖4.2為節(jié)拍碼的對(duì)照。如果1拍為0.4秒,1/4拍實(shí)0.1秒,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間。假設(shè)1/4
17、拍為1DELAY,則1拍應(yīng)為4DELAY,以此類(lèi)推。所以只要求得1/4拍的DELAY時(shí)間,其余的節(jié)拍就是它的倍數(shù),如圖5.3為1/4和1/8節(jié)拍的時(shí)間設(shè)定。表4.3 1/4和1/8節(jié)拍的時(shí)間設(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毫秒編碼do re mi fa so la si分別編碼為17,重音do編為8,重音re編為9,停頓編為0。播放長(zhǎng)度以十六分音符為單位(在本程序中為125ms),一拍即四分音符等于4個(gè)十六分音符,編為4,其它的播放時(shí)間以此類(lèi)推。音調(diào)作為編碼的高4位,而播放時(shí)間作為低4位,如
18、此音調(diào)和節(jié)拍就構(gòu)成了一個(gè)編碼。以0 xff作為曲譜的結(jié)束標(biāo)志。舉例1:音調(diào)do,發(fā)音長(zhǎng)度為兩拍,即二分音符,將其編碼為0 x18。舉例2:音調(diào)re,發(fā)音長(zhǎng)度為半拍,即八分音符,將其編碼為0 x22歌曲播放的設(shè)計(jì)。先將歌曲的簡(jiǎn)譜進(jìn)行編碼,儲(chǔ)存在一個(gè)數(shù)據(jù)類(lèi)型為unsignedchar 的數(shù)組中。程序從數(shù)組中取出一個(gè)數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時(shí)器0,使之定時(shí)操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得到延時(shí)時(shí)間,接著調(diào)用軟件延時(shí)。表4.4 簡(jiǎn)譜對(duì)應(yīng)的簡(jiǎn)譜碼、T值、節(jié)拍數(shù)表4.4簡(jiǎn)譜發(fā)音簡(jiǎn)譜碼T值節(jié)拍碼節(jié)拍數(shù)5低音SO16426011/4拍6低音LA26440022
19、/4拍7低音TI36452433/4拍1中音DO46458041拍2中音RE56468451又1/43中音MI66477761又1/24中音FA76482082拍5中音SO864898A2又1/26中音LA964968C3拍7中音TIA65030F3又3/41高音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF652174.2本設(shè)計(jì)主程序較為簡(jiǎn)單,流程圖如下:圖4-2-14.3播放音樂(lè)子程序流程圖(包含了鍵盤(pán)掃描)圖4-3-14.4定時(shí)器0中斷服務(wù)子程序框圖: 圖4-4-15調(diào)試5.1 檢查硬件連接在PROTUES檢查各硬件管腳是否連接正確,線(xiàn)路邏
20、輯是否正確,例如:晶振電路的連接,復(fù)位電路是否設(shè)計(jì)正確.5.2 檢查軟件系統(tǒng)5.2.1根據(jù)系統(tǒng)的原理結(jié)構(gòu)檢查各流程圖是否正確,再根據(jù)流程圖來(lái)檢查程序是否也正確。5.2.2將所有程序組織起來(lái),在軟件環(huán)境下運(yùn)行,檢查程序是否正確。通過(guò)對(duì)硬件和軟件系統(tǒng)的認(rèn)真檢查,反復(fù)測(cè)試,如果沒(méi)有出現(xiàn)問(wèn)題即可把源程序編譯成HEX文件裝載到單片機(jī)中,對(duì)硬件進(jìn)行仿真。5.3測(cè)試結(jié)果由于開(kāi)發(fā)板上1602液晶遮擋住了LED燈,所以附上兩張圖5.3.1整體運(yùn)行圖圖5-3-15.3.2LED燈運(yùn)行圖圖5-3-26 總結(jié)經(jīng)過(guò)幾天的緊張工作,終于把本次設(shè)計(jì)完成了,總體下來(lái),其中有苦有樂(lè)。比較喜歡電子制作的我,在這次設(shè)計(jì)當(dāng)中讓我學(xué)到
21、了很多。在大二寒假期間自學(xué)了一點(diǎn)單片機(jī)編程,我想對(duì)本次的設(shè)計(jì)也帶來(lái)了一定的幫助。剛拿到題目,我很高興,因?yàn)槲乙恢倍枷胱鲆粋€(gè)屬于我自己的制作,由于學(xué)習(xí)較為繁忙就遲遲沒(méi)有親自動(dòng)起手來(lái),正好借著這次機(jī)會(huì),讓我對(duì)自己的動(dòng)手能力和自己所學(xué)有了一個(gè)很好地鍛煉和檢測(cè)的機(jī)會(huì)。由于音樂(lè)知識(shí)較為薄弱,所以在起初又感覺(jué)無(wú)從下手,在上網(wǎng)查找了與音樂(lè)相關(guān)的信息之后,我突然有了一點(diǎn)思路,就開(kāi)始了我自己的制作之路。剛開(kāi)始一切都很順利,就在編寫(xiě)按鍵控制1602液晶切換曲目、暫停和開(kāi)始音樂(lè)的時(shí)候耽誤了好久。剛開(kāi)始是按鍵總是沒(méi)有反應(yīng),1602無(wú)法顯示按鍵的切換,經(jīng)過(guò)一番查找終于找到了原因,原來(lái)在給1602寫(xiě)數(shù)據(jù)顯示的時(shí)候字符的編
22、碼地址出現(xiàn)了錯(cuò)誤。之后當(dāng)按下暫停鍵之后液晶上沒(méi)有及時(shí),但是歌曲去一直在唱,剛開(kāi)始找不到原因,就一直檢查按鍵的掃描程序,但始終沒(méi)有結(jié)果,最后,當(dāng)我把鍵盤(pán)的掃描程序放到歌曲的循環(huán)子程序當(dāng)中后,突然能夠正常運(yùn)行了,我感到很開(kāi)心,再經(jīng)過(guò)一系列的檢測(cè)與調(diào)試,最后終于能夠演奏我自己寫(xiě)進(jìn)去的音樂(lè)了,一個(gè)屬于我的設(shè)計(jì)就完成了。通過(guò)本次設(shè)計(jì)使我的動(dòng)手能力有了一定的提高,更鍛煉了我的編程能力,分析問(wèn)題和解決問(wèn)題的能力,真的給了我很大的幫助,可以說(shuō)是,本次設(shè)計(jì)收貨良多。 7參考文獻(xiàn)1)譚浩強(qiáng)。C語(yǔ)言程序設(shè)計(jì)(第二版),北京:清華大學(xué)出版社,1991.2)張維新。單片微型計(jì)算機(jī)原理應(yīng)用及接口技術(shù)(第二版),北京,國(guó)防
23、工業(yè)出版社,2009.3)單片機(jī)播放音樂(lè)原理,百度文庫(kù)http:/ 康華光,模擬電子技術(shù)基礎(chǔ)(第四版)武漢:華中理工大學(xué)出版社,1999.5)千年之戀簡(jiǎn)譜http:/ uint unsigned int #define uchar unsigned charsbit wela=P27;sbit dula=P26;sbit beep=P23;sbit up=P31; /曲目上一曲選擇鍵sbit start_pause=P32; /曲目開(kāi)始和停止鍵sbit down=P33; /曲目下一曲選擇鍵sbit lcden=P34;sbit rs=P35;sbit rd=P37;void write_sh
24、ijian(uchar,uchar);uchar shi,ge,fen,miao;uchar timeh,timel,i;uchar num=0,count=0;uchar code table0= xianzaiqumu:0 ;uchar code table1= 00:00 ;uchar yinyue=0 xff,0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f,0 x0,0 x0;/將音調(diào)轉(zhuǎn)化為對(duì)應(yīng)的LED樣式uchar code chuzhi= 0 xff,0 xff,/占位 0 xFC,0 x8E,/中央C調(diào)1-7 0 xFC,0 xED
25、, 0 xFD,0 x43, 0 xFD,0 x6A, 0 xFD,0 xB3, /用于產(chǎn)生不同的音調(diào)的定時(shí)器中裝的初值 0 xFD,0 xF3, 0 xFE,0 x2D, 0 xFE,0 x47,/高八度1-7 0 xFE,0 x76, 0 xFE,0 xA1, 0 xFE,0 xC7, 0 xFE,0 xD9, 0 xFE,0 xF9, 0 xFF,0 x16 ;uchar code qumu1= /千年之戀0 x12,0 x22,0 x34,0 x84,0 x74,0 x54,0 x38,0 x42,0 x32,0 x22,0 x42,0 x34,0 x84,0 x72,0 x82,0
26、x94,0 xA8,0 x08,/前奏0 x32,0 x31,0 x21,0 x32,0 x52,0 x32,0 x31,0 x21,0 x32,0 x62,/竹林的燈火 到過(guò)的沙漠 0 x32,0 x31,0 x21,0 x32,0 x82,0 x71,0 x81,0 x71,0 x51,0 x32,0 x22,/七色的國(guó)度 不斷飄逸風(fēng)中 0 x32,0 x31,0 x21,0 x32,0 x52,0 x32,0 x31,0 x21,0 x32,0 x62,/有一種神秘 灰色的旋渦 0 x32,0 x31,0 x21,0 x32,0 x83,0 x82,0 x71,0 x72,0 x02,/
27、將我卷入了迷霧中 0 x63,0 xA1,0 xA2,0 x62,0 x92,0 x82,0 x52,/看不清的雙手 0 x31,0 x51,0 x63,0 x51,0 x63,0 x51,0 x63,0 x51,0 x62,0 x82,0 x7C,0 x02,/一朵花傳來(lái)誰(shuí)經(jīng)過(guò)的溫柔 0 x61,0 x71,0 x82,0 x71,0 x62,0 xA2,0 x71,0 x76,/穿越千年的傷痛 0 x61,0 x71,0 x82,0 x71,0 x62,0 x52,0 x31,0 x36,/只為求一個(gè)結(jié)果 0 x61,0 x71,0 x82,0 x71,0 x62,0 xA3,0 x73,
28、0 x62,0 x53,/你留下的輪廓 指引我 0 x42,0 x63,0 x83,0 x83,0 x91,0 x91,/黑夜中不寂寞 0 x61,0 x71,0 x82,0 x71,0 x62,0 x0A2,0 x71,0 x76,/穿越千年的哀愁 0 x61,0 x71,0 x82,0 x71,0 x62,0 x52,0 x31,0 x36,/是你在盡頭等我 0 x61,0 x71,0 x82,0 x71,0 x62,0 xA3,0 x73,0 x62,0 x53,/最美麗的感動(dòng) 會(huì)值得 0 x42,0 x82,0 x88,0 x02,0 x74,0 x93,0 x89,0 xff/結(jié)束標(biāo)
29、志/用一生守候;uchar code qumu2=/兩只老虎0 x14,0 x24,0 x34,0 x14,0 x14,0 x24,0 x34,0 x14,/兩只老虎 兩只老虎0 x34,0 x44,0 x54,0 x54,0 x34,0 x44,0 x54,0 x54,/跑得快 跑得快0 x52,0 x51,0 x61,0 x52,0 x51,0 x41,0 x34,0 x14,/一只沒(méi)有眼睛0 x52,0 x51,0 x61,0 x52,0 x51,0 x41,0 x34,0 x14,/一直沒(méi)有尾巴0 x14,0 x54,0 x14,0 x14,0 x14,0 x54,0 x14,0 x1
30、4,/真奇怪 真奇怪0 xff;uchar code qumu3=/鈴兒響叮當(dāng)0 x32,0 x32,0 x34,0 x34,0 x34,0 x32,0 x52,0 x12,0 x21,0 x21,0 x34,0 x04,/叮叮當(dāng),叮叮當(dāng),鈴兒響叮當(dāng)0 x44,0 x42,0 x41,0 x42,0 x32,0 x32,0 x31,0 x31,0 x52,0 x32,0 x22,0 x12,0 x52,0 x52,0 x02,/我們滑雪多快樂(lè), 我們沖破大風(fēng)雪0 x52,0 x52,0 x32,0 x22,0 x12,0 x62,0 x22,0 x64,/我們坐在雪橇上0 x62,0 x42,
31、0 x32,0 x32,0 x22,0 x62,0 x04,0 x52,0 x52,0 x42,0 x22,0 x34,0 x04,0 x52,/奔馳過(guò)田野, 歡笑又歌唱0 x52,0 x32,0 x22,0 x12,0 x54,0 x52,0 x04,0 x52,0 x32,0 x22,0 x12,0 x64,0 x04,/鈴聲響叮當(dāng) 我們精神多歡暢0 x62,0 x42,0 x32,0 x22,0 x52,0 x02,0 x52,0 x52,0 x62,0 x52,0 x42,0 x22,0 x14,0 x04,/今晚滑雪多塊了, 把滑雪歌兒唱0 xff;void delay1(uint
32、z)/延時(shí)125MS,即十六分音符uint x,y;for(x=z;x0;x-)for(y=14350;y0;y-);void delay2(uchar z)/延時(shí)1m秒uchar x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_common(uchar common)/LCD寫(xiě)命令rs=0;P0=common;delay2(5);lcden=1;delay2(5);lcden=0;void write_data(uchar dat)/LCD寫(xiě)數(shù)據(jù)rs=1;P0=dat;delay2(5);lcden=1;delay2(5);lcden=0;void
33、 init()/初始化函數(shù)uchar i,j;rd=0;TH0=0; /定時(shí)器T0和定時(shí)T1初始化TL0=0;TH1=(65535-10000)/256;TL1=(65535-10000)%256;EA=1;ET0=1;ET1=1;TMOD=0 x01;TMOD=0 x10;TR0=0;TR1=1;wela=1;/LCD初始化wela=0;dula=1;dula=0;lcden=0;write_common(0 x38);write_common(0 x0c);write_common(0 x06);write_common(0 x01);write_common(0 x80);for(i=0
34、;i16;i+)write_data(table0i);delay2(10);write_common(0 x80+0 x40);for(j=0;j16;j+)write_data(table1j);void key_scan() /鍵盤(pán)掃描函數(shù)if(up=0)delay2(5);if(up=0)num+;if(num=4)num=0;miao=0;fen=0;while(!up);write_common(0 x80+13);write_data(0 x30+num);elseif(down=0)delay2(5);if(down=0)num-;miao=0;fen=0;if(num=-1)
35、num=3; while(!down);write_common(0 x80+13);write_data(0 x30+num);elseif(start_pause=0)delay2(5);if(start_pause=0)count+;while(!start_pause);if(count=1)TR1=1;/啟動(dòng)定時(shí)器1elseTR1=0;count=0;void timer1() interrupt 3 /定時(shí)器1中斷服務(wù)程序 TH1=(65535-10000)/256;TL1=(65535-10000)%256; count+;if(count=100)count=0;miao+;i
36、f(miao=60)miao=0;fen+;if(fen=60)fen=0; void timer0() interrupt 1 /定時(shí)器T0用于產(chǎn)生各種音調(diào)TH0=timeh;TL0=timel;beep=beep;void write_shijian(uchar dizhi,uchar date) /曲目時(shí)間計(jì)時(shí)顯示shi=date/10;ge=date%10;write_common(0 x80+0 x40+dizhi);write_data(0 x30+shi);write_data(0 x30+ge); void song() /歌曲子函數(shù)uint temp;uchar jianpu
37、;/jianpu是簡(jiǎn)譜i=0;while(1)if(num=0)/復(fù)位后液晶顯示write_shijian(8,0);write_shijian(5,0);elsewrite_shijian(8,miao); write_shijian(5,fen);key_scan(); if(num=0)break;if(num=1)/選擇曲目temp=qumu1i;while(!count )/ 如果鍵按下start_pause鍵,開(kāi)始或暫停當(dāng)前的曲目key_scan();TR0=0;beep=1;if(count)break;if(num=2)/選擇曲目temp=qumu2i;while(!count
38、 )/ 如果鍵按下start_pause鍵,開(kāi)始或暫停當(dāng)前的曲目key_scan();TR0=0;beep=1;if(count)break;if(num=3)/選擇曲目temp=qumu3i;while(!count )/ 如果鍵按下start_pause鍵,開(kāi)始或暫停當(dāng)前的曲目key_scan();TR0=0;beep=1;if(count)break;if(temp=0 xff)/如果為終止符,結(jié)束曲目break;jianpu=temp/16; /取數(shù)的高4位P1=yinyuejianpu;/將取出的音符對(duì)應(yīng)的碼值送到P1口,使P1口的二極管對(duì)應(yīng)發(fā)光if(jianpu!=0)timeh=chuzhijianpu*2; /取出對(duì)應(yīng)的簡(jiǎn)譜碼timel=chuzhijianpu*2+1;TR0=1;elseTR0=0;beep=1;delay1(temp%16); /取數(shù)的低4位TR0=0;beep=1;delay2(10);/取出每個(gè)音符后延時(shí)10m秒 TR0=1; i+;TR0=0;beep=1;void main()/主函數(shù)init();while(1)song();/唱歌子函數(shù)
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)圖形的運(yùn)動(dòng)(三)-1課件
- 供應(yīng)鏈管理方法
- 2019最新青島版數(shù)學(xué)一年級(jí)上冊(cè)第三單元《走進(jìn)花果山-10以?xún)?nèi)的加減法》(信息窗6)課件
- 第四章勞動(dòng)中的心理、生理狀態(tài)對(duì)安全的影響
- 201x九年級(jí)物理上冊(cè)-雙休作業(yè)八(新版)教科版課件
- 課件:項(xiàng)目一-電子商務(wù)物流系統(tǒng)規(guī)劃
- 【人教版】2012-2013學(xué)年九年級(jí)(全一冊(cè))數(shù)學(xué)小復(fù)習(xí):第27章相似復(fù)習(xí)課件
- 消化腺(全英文)課件
- 小學(xué)語(yǔ)文資源五年級(jí)上冊(cè)課件《落花生》課件第一課時(shí)
- 納米材料的基本效應(yīng)課件
- 分析化學(xué)概論-課件
- 沉浸式光影解決方案課件
- 第六講加固Windows操作系統(tǒng)安全ppt課件
- 民主選舉投出理性一票ppt課件
- 高二數(shù)學(xué)選修正態(tài)分布推薦實(shí)用全套PPT