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