九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

單片機(jī)課程設(shè)計(jì)報(bào)告簡易音樂播放器

上傳人:仙*** 文檔編號:84858267 上傳時間:2022-05-04 格式:DOC 頁數(shù):35 大?。?7KB
收藏 版權(quán)申訴 舉報(bào) 下載
單片機(jī)課程設(shè)計(jì)報(bào)告簡易音樂播放器_第1頁
第1頁 / 共35頁
單片機(jī)課程設(shè)計(jì)報(bào)告簡易音樂播放器_第2頁
第2頁 / 共35頁
單片機(jī)課程設(shè)計(jì)報(bào)告簡易音樂播放器_第3頁
第3頁 / 共35頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《單片機(jī)課程設(shè)計(jì)報(bào)告簡易音樂播放器》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī)課程設(shè)計(jì)報(bào)告簡易音樂播放器(35頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、. .第一章 前言伴隨著科技的開展和時代的進(jìn)步,人們對生活質(zhì)量的要求也越來越高,由以前簡單的追求溫飽和物質(zhì)財(cái)富轉(zhuǎn)向更高層面的精神追求!而這一切催生了智能儀器的開展,音樂那么是人們娛樂生活的重要組成局部,目前市場上出現(xiàn)了許許多多的音樂播放器,而人們對播放器的功能需求也越來越廣泛,本文將設(shè)計(jì)一個基于單片機(jī)的音樂播放器,通過對其全面的介紹與分析,讓大家了解音樂播放器的原理!第二章: 簡易音樂播放器的功能和原理說明音樂播放器,可以通過單片機(jī)板子上的數(shù)字按鍵對音樂播放的曲目進(jìn)展控制,并且通過LED燈將播放的音樂加以區(qū)分,在播放音樂的同時點(diǎn)亮LED燈,讓人知道現(xiàn)在正在播放的音樂曲目,從而實(shí)現(xiàn)簡單的音樂播放

2、功能!表1 需求分析名稱簡易音樂播放器目的實(shí)現(xiàn)簡單的特定音樂播放功能輸入單片機(jī)板子上的數(shù)字按鍵輸出揚(yáng)聲器,LED燈功能(1) 接收按鍵開關(guān)的信號,并將信號送入單片機(jī)(2) 處理得到的結(jié)果通過LED信號燈進(jìn)展顯示,并通過揚(yáng)聲器播放音樂(3) 可以播放4首程序中寫好的音樂性能基于單片機(jī)的揚(yáng)聲器和程序的軟件設(shè)計(jì)功能說明:這次設(shè)計(jì)是依據(jù)單片機(jī)技術(shù)原理,通過硬件電路設(shè)計(jì)以及軟件的編譯而設(shè)計(jì)的一個簡單的音樂播放器,可以通過按鍵選擇播放四首歌曲歌曲自選,只要將想要播放的歌曲的樂譜寫入程序中即可同時點(diǎn)亮相應(yīng)的LED燈,并用它來指示當(dāng)前播放的歌曲序列,只能實(shí)現(xiàn)簡單的音樂播放功能。原理說明:這個音樂播放器主要有晶

3、振電路,復(fù)位電路,LED電路,按鍵電路以及揚(yáng)聲器組成。它利用單片機(jī)產(chǎn)生樂曲音符,再把樂曲音符翻譯成計(jì)算機(jī)音樂語言,接著用單片機(jī)進(jìn)展信息處理,再通過蜂鳴器或喇叭放出音樂。音樂的產(chǎn)生主要是通過單片機(jī)的I/O口輸出上下不同的脈沖信號來控制揚(yáng)聲器發(fā)音。通常利用單片機(jī)的部定時器0,工作在方式1下,再改變計(jì)數(shù)初值TH0和TL0來產(chǎn)生不同頻率。當(dāng)控制歌曲按鍵按下時,按照預(yù)先存放在單片機(jī)中的程序,就會自動判斷鍵值,然后啟動計(jì)數(shù)器,按照程序產(chǎn)生一定頻率的脈沖,接著通過uln2003芯片驅(qū)動揚(yáng)聲器,播放出樂曲。該硬件電路中用P3.0,P3.1,P3.2,P3.3控制四個按鍵,0,1,2,3分別控制四首音樂。P1.

4、0,P1.1,P1.2,P1.3控制四個LED燈,它們分別對應(yīng)四個按鍵,用來顯示正在播放的歌曲,并用P2.3 來控制揚(yáng)聲器,電路為12MHz晶振頻率工作,起振電路中C1 和C2為22pf。第三章:系統(tǒng)硬件電路設(shè)計(jì)1:硬件體系構(gòu)造設(shè)計(jì) 該簡易音樂播放器主要有單片機(jī)核心芯片89C52,LED發(fā)光二極管,揚(yáng)聲器,晶振電路,按鍵電路,復(fù)位電路組成,通過芯片引腳輸出定時器產(chǎn)生的各種固定頻率的方波信號,然后在經(jīng)由揚(yáng)聲器產(chǎn)生各種頻率的聲音。另外,該方案使用的是單片機(jī)板子的部振蕩電路,89C52芯片的X1,X2引腳外接石英晶體。它的系統(tǒng)組成如下列圖。晶體振蕩電路89C52芯片復(fù)位電路按鍵電路揚(yáng)聲器LED顯示(

5、1) 晶振電路局部晶振的作用是給電路提供工作信號脈沖的,其實(shí)就是單片機(jī)的工作速度。本次設(shè)計(jì)選用12M晶振,那么單片機(jī)的工作速度就是每秒12M。與此同時,也要注意單片機(jī)的工作頻率圍。(2) 復(fù)位電路局部 當(dāng)系統(tǒng)出現(xiàn)問題時可以重置系統(tǒng),解決一些問題(3) LED顯示局部顯示系統(tǒng)在各種不同條件下的狀態(tài)(4) 89C52芯片整個設(shè)計(jì)的核心,接收和處理信號及程序(5) 按鍵電路局部作為系統(tǒng)的輸入(6) 揚(yáng)聲器局部用于發(fā)出不同頻率的音調(diào)形成歌曲2 硬件電路設(shè)計(jì)硬件電路分為單片機(jī)芯片最小系統(tǒng)包括時鐘電路,復(fù)位電路,揚(yáng)聲器電路,按鍵電路和LED電路等(1) 單片機(jī)89C52芯片最小系統(tǒng)設(shè)計(jì)AT89C52是一種

6、低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計(jì)數(shù)器,一個6向量2級中斷構(gòu)造,全雙工串行口,片晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜

7、態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停頓工作,允許RAM、定時器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停頓,直到下一個中斷或硬件復(fù)位為止。它的引腳圖如圖2所示圖2主要性能參數(shù):l 與MCS-51單片機(jī)產(chǎn)品兼容l 8K字節(jié)在系統(tǒng)可編程Flash存儲器l 1000次擦寫周期l 全靜態(tài)操作:0Hz33Hzl 三級加密程序存儲器l 32個可編程I/O口線l 三個16位定時器/計(jì)數(shù)器l 八個中斷源l 全雙工UART串行通道l 低功耗空閑和掉電模式l 掉電后中斷可喚醒l 看門狗定時器l 雙數(shù)據(jù)指針l 掉電標(biāo)識符引腳介紹:VCC :

8、電源GND: 地P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫1時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗(yàn)時,輸出指令字節(jié)。程序校驗(yàn)時,需要外部上拉電阻。P1 口:P1 口是一個具有部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫1時,部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于部電阻的原因,將輸出電流IIL。此外,P

9、1.0和P1.2分別作定時器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入P1.0/T2和時器/計(jì)數(shù)器2的觸發(fā)輸入P1.1/T2EX,具體如下表所示。在flash編程和校驗(yàn)時,P1口接收低8位地址字節(jié)。P2 口:P2 口是一個具有部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P2 端口寫1時,部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于部電阻的原因,將輸出電流IIL。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器例如執(zhí)行MOVX DPTR時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的部上拉發(fā)送1。在使用8位地址如MOVX

10、RI訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的容。在flash編程和校驗(yàn)時,P2口也接收高8位地址字節(jié)和一些控制信號。P3 口:P3 口是一個具有部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫1時,部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于部電阻的原因,將輸出電流P3口亦作為AT89S52特殊功能第二功能使用,如下表所示。在flash編程和校驗(yàn)時,P3口也接收一些控制信號。RST: 復(fù)位輸入。晶振工作時,RST腳持續(xù)2 個機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T狗計(jì)時完成后,RST 腳輸出96 個晶振周期的高電

11、平。特殊存放器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/PROG:地址鎖存控制信號ALE是訪問外部程序存儲器時,鎖存低8 位地址的輸出脈沖。在flash編程時,此引腳PROG也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置1,ALE操作將無效。這一位置1,ALE 僅在執(zhí)行MOVX 或MOVC指令時有效。否那么,ALE 將被微弱拉高。這個ALE 使能標(biāo)志位地址為8E

12、H的SFR的第0位的設(shè)置對微控制器處于外部執(zhí)行模式下無效。PSEN:外部程序存儲器選通信號PSEN是外部程序存儲器選通信號。當(dāng)AT89S52從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,PSEN將不被激活。EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行部程序指令,EA應(yīng)該接VCC。在flash編程期間,EA也接收12伏VPP電壓。XTAL1:振蕩器反相放大器和部時鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。該最小系統(tǒng)包括時鐘電路,復(fù)位電路。在部時鐘電路中,

13、必須在X1和X2引腳兩端跨接石英晶體振蕩器和兩個微調(diào)電容從而形成振蕩電路,按照單片機(jī)的板子C1和C2取的是22pf,而晶振的頻率取值在1.2MHz和12MHz之間。復(fù)位電路就和電腦的重啟局部差不多,當(dāng)電腦使用中出現(xiàn)死機(jī),按下重啟按鈕電腦部的程序從頭執(zhí)行,其中,電容大小為10uf,電阻大小為10K。它在設(shè)計(jì)中電路圖如圖3圖3(2) LED電路設(shè)計(jì)四個LED燈發(fā)光二極管分別由P1.0P1.3控制,播放第一首歌時D0點(diǎn)亮,第二、三首歌時D1、D2點(diǎn)亮,第四首歌時D3亮,電阻的阻值由單片機(jī)板子上的電阻值決定。它的電路原理圖如圖4圖4(3)揚(yáng)聲器電路設(shè)計(jì)由于本設(shè)計(jì)基于單片機(jī)板子,所以揚(yáng)聲器電路取自板子的

14、設(shè)計(jì),將信號通過一個名為uln2003的芯片進(jìn)展放大,并推動揚(yáng)聲器發(fā)出聲音也即音樂。高耐壓、大電流復(fù)合晶體管ULN2003 是高耐壓、大電流復(fù)合晶體管陣列,由七個硅NPN 復(fù)合晶體管組成。它是大電流驅(qū)動陣列,多用于單片機(jī)、智能儀表、PLC,數(shù)字量輸出卡等控制電路中??芍苯域?qū)動繼電器等負(fù)載。在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。還具有電流增益高、工作電壓高、溫度圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動的系統(tǒng)。完全可以用來驅(qū)動揚(yáng)聲器發(fā)聲!它的引腳圖如圖5所示。下附引腳介紹圖5引腳介紹:引腳1:CPU脈沖輸入端,端口對應(yīng)

15、一個信號輸出端。引腳2:CPU脈沖輸入端。引腳3:CPU脈沖輸入端。引腳4:CPU脈沖輸入端。引腳5:CPU脈沖輸入端。引腳6:CPU脈沖輸入端。引腳7:CPU脈沖輸入端。引腳8:接地。引腳9:該腳是部7個續(xù)流二極管負(fù)極的公共端,各二極管的正極分別接各達(dá)林頓管的集電極。用于感性負(fù)載時,該腳接負(fù)載電源正極,實(shí)現(xiàn)續(xù)流作用。如果該腳接地,實(shí)際上就是達(dá)林頓管的集電極對地接通。引腳10:脈沖信號輸出端,對應(yīng)7腳信號輸入端。參考電路接法引腳11:脈沖信號輸出端,對應(yīng)6腳信號輸入端。引腳12:脈沖信號輸出端,對應(yīng)5腳信號輸入端。引腳13:脈沖信號輸出端,對應(yīng)4腳信號輸入端。引腳14:脈沖信號輸出端,對應(yīng)3腳

16、信號輸入端。引腳15:脈沖信號輸出端,對應(yīng)2腳信號輸入端。引腳16:脈沖信號輸出端,對應(yīng)1腳信號輸入端。揚(yáng)聲器電路在設(shè)計(jì)中的電路圖如圖6所示:圖6 4按鍵電路設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)中的人機(jī)對話通道是用戶為了對應(yīng)用系統(tǒng)進(jìn)展干預(yù)以及了解應(yīng)用系統(tǒng)運(yùn)行狀態(tài)所設(shè)置的通道,主要有鍵盤,顯示器等通道接口,為了控制系統(tǒng)的工作狀態(tài)以及向系統(tǒng)中輸入數(shù)據(jù),應(yīng)用系統(tǒng)設(shè)置鍵盤,借助鍵盤向系統(tǒng)輸入程序,置數(shù),送操作命令,控制程序的執(zhí)行等。本設(shè)計(jì)采用4個按鈕來實(shí)現(xiàn)選擇歌曲的播放,電路的連接選用單片機(jī)板子上的電路。0、12、3分別由單片機(jī)引腳P3.0,P3.1,P3.2,P3.3控制,它的設(shè)計(jì)電路圖如圖7所示。圖7第四章: 軟件

17、系統(tǒng)設(shè)計(jì)1:主程序在本設(shè)計(jì)中,主程序是整個軟件模塊的核心,它實(shí)現(xiàn)對程序的初始化以及各個函數(shù)的調(diào)用。void main() uchar key; P2=0; P0=0X00; while(1) key=keyscan(); /調(diào)用鍵盤掃描掃描函數(shù), switch(key) case 0xee:P0=EL0;P1=0xfe; /LED燈D0點(diǎn)亮 yy1(); /播放第一首音樂break; case 0xde:P0=EL1;P1=0xfd;/LED燈D1點(diǎn)亮yy2();/播放第二首音樂break; case 0xbe:P0=EL2;P1=0xfb; /LED燈D2點(diǎn)亮yy3(); /播放第三首音樂

18、break; case 0x7e:P0=EL3;P1=0xf7;/LED燈D3點(diǎn)亮 yy4();/播放第四首音樂 break; 系統(tǒng)構(gòu)造框圖開場系統(tǒng)初始化有鍵按下 否 是2鍵1鍵3鍵0鍵 否 否 否 是 是 是 是播放第四首歌,點(diǎn)亮D3播放第三首歌,點(diǎn)亮D2播放第二首歌,點(diǎn)亮D1播放第一首歌,點(diǎn)亮D0 播放 播放 播放 播放 完畢 完畢 完畢 完畢2:鍵盤掃描程序在主程序中,需要調(diào)用鍵盤掃描程序,該程序可以對鍵盤的鍵值進(jìn)展掃描,確保我們再輸入鍵值后,系統(tǒng)單片機(jī)能夠接收并作出相應(yīng)的處理。uchar keyscan(void) /鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法 uchar cord_h,cord

19、_l;/行列值中間變量 P3=0x0f; /行線輸出全為0 cord_h=P3&0x0f; /讀入列線值 if(cord_h!=0x0f) /先檢測有無按鍵按下 delay(100); /去抖 if(cord_h!=0x0f) cord_h=P3&0x0f; /讀入列線值 P3=cord_h|0xf0; /輸出當(dāng)前列線值 cord_l=P3&0xf0; /讀入行線值 return(cord_h+cord_l);/鍵盤最后組合碼值 return(0xff); /返回該值構(gòu)造框圖:開場有鍵按下延遲100ms 是逐行逐列掃描并確定按鍵的鍵值調(diào)用按鍵相應(yīng)的子程序3:音樂播放函數(shù)該音樂播放函數(shù)包含了音樂

20、播放的規(guī)律,能夠確保音樂按照樂譜播放。void yy1(void) unsigned char k,i; TMOD=1; /置CT0定時工作方式1 EA=1; ET0=1;/IE=0x82 /CPU開中斷,CT0開中斷 while(1) i=0; while(i100) /音樂數(shù)組長度 ,唱完從頭再來 k=sszymmhi+7*sszymmhi+1-1;timer0h=FREQHk;timer0l=FREQLk;time=sszymmhi+2;i=i+3;song(); void yy2(void) unsigned char k,i; TMOD=1; /置CT0定時工作方式1 EA=1; E

21、T0=1;/IE=0x82 /CPU開中斷,CT0開中斷 while(1) i=0; while(i150) /音樂數(shù)組長度 ,唱完從頭再來 k=mldshi+7*mldshi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=mldshi+2; i=i+3; song(); void yy3(void) unsigned char k,i; TMOD=1; /置CT0定時工作方式1 EA=1; ET0=1;/IE=0x82 /CPU開中斷,CT0開中斷 while(1) i=0; while(i150) /音樂數(shù)組長度 ,唱完從頭再來 k=lzlhi+7*l

22、zlhi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=lzlhi+2; i=i+3; song(); void yy4(void) unsigned char k,i; TMOD=1; /置CT0定時工作方式1 EA=1; ET0=1;/IE=0x82 /CPU開中斷,CT0開中斷 while(1) i=0; while(i150) /音樂數(shù)組長度 ,唱完從頭再來 k=srgi+7*srgi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=srgi+2; i=i+3; song(); 4:音樂處理函數(shù)該函數(shù)能夠?qū)σ魳愤M(jìn)

23、展簡單的處理。void song() TH0=timer0h; TL0=timer0l; TR0=1; delay2(time); 5:定時器中斷函數(shù)該函數(shù)可以控制音樂播放后停頓。void t0int() interrupt 1 TR0=0; speaker=!speaker; TH0=timer0h; TL0=timer0l; TR0=1; 6:延時程序void delay1(uint i) /延時函數(shù)while(i-);void delay2(unsigned char t) unsigned char t1; unsigned long t2; for(t1=0;t1t;t1+) for

24、(t2=0;t2 第一首歌:世上只有媽媽好code uchar sszymmh= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 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, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,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 2 第二首歌 美麗的神話code uchar

25、 mldsh= 6,1,2, 3,2,2, 7,1,3, 6,1,1, 1,2,1, 2,2,1, 1,2,1, 3,2,4, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 4,2,1, 3,2,1, 3,2,2, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,4, 1,2,4, 6,1,2, 3,2,2, 2,2,3, 7,1,1, 6,1,8, 6,1,2, 3,2,2, 7,2,3, 7,1,1, 6,1,1, 1,2,1, 2,2,1, 1,2,1, 3,2,4, 6,1,2

26、, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 4,2,1, 3,2,1, 3,2,6, 6,1,2, 6,2,2, 5,2,1, 2,2,1, 3,2,1, 4,2,1, 3,2,2, 2,2,2, 1,2,4, 6,2,2, 2,2,2, 1,2,3, 7,1,1, 6,1,6, 6,1,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 1,2,1, 7,2,2, 5,1,2, 6,1,1, 1,2,1, 2,2,1, 3,2,13 第三首歌 兩只老虎code uchar lzlh= 1,2,2, 2,2,2, 3,2,2, 1,2,2, 1,2,2,

27、 2,2,2, 3,2,2, 1,2,2, 3,2,2, 4,2,2, 5,2,4, 3,2,2, 4,2,2, 5,2,4, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 5,1,2, 1,2,4, 2,2,2, 5,1,2, 1,2,4, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 3,2,2, 4,2,2, 5,2,4, 3,2,2, 4,2,2, 5,2,4, 5,2,1, 6,2,1

28、, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 5,1,2, 1,2,4, 2,2,2, 5,1,2, 1,2,4 ;4第四首歌 生日歌 code uchar srg= 5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4, 5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4, 5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,1, 6,1,1, 4,2,1, 4,2,1, 3,2,2, 1,2,2,

29、 2,2,2, 1,2,4 ;5 音階頻率表 / 音階頻率表 高八位code uchar FREQH= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音階頻率表 低八位code uchar FREQL= 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD

30、8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;六: 系統(tǒng)調(diào)試及總結(jié)硬件電路和軟件程序設(shè)計(jì)完成后,在單片機(jī)上連接好硬件電路,然后將由軟件產(chǎn)生的程序Hex文件拷入單片機(jī)的AT89C51芯片,然后在按鍵面板上選擇按鍵,看能否播放程序中的音樂,同時注意觀察相應(yīng)的LED燈能否點(diǎn)亮,實(shí)驗(yàn)結(jié)果證明設(shè)計(jì)成功。本設(shè)計(jì)沒有考慮到音樂的暫停播放功能,因此選擇按鍵后必須等待音樂全部播放完畢,然后斷開電源再接通電源重新選擇播放的曲目。在程序調(diào)試的

31、過程中,由于編程中出現(xiàn)的一些錯誤,導(dǎo)致軟件的Hex文件一直不能生成,但是經(jīng)過仔細(xì)檢查,最終成功寫好程序。除此之外,在使用PROTEL軟件畫硬件電路時,也由于硬件電路元件的特殊性,遇到了許多困難,無奈多方查詢資料,終于解決問題。另外在編寫樂譜程序也頗為不易,上網(wǎng)查閱了很多資料才根本將一首簡單的音樂C程序代碼編寫出來。總之,雖然調(diào)試過程遇到很多問題,但經(jīng)過集體努力,最終調(diào)試成功。根本實(shí)現(xiàn)設(shè)計(jì)預(yù)定的功能,可以用按鍵控制四首音樂的播放,并在播放的同時點(diǎn)亮了相應(yīng)的LED燈。設(shè)計(jì)成功。附錄一系統(tǒng)硬件電路圖:附錄二系統(tǒng)軟件總程序:*include /包含頭文件,一般情況不需要改動,頭文件包含特殊功能存放器的

32、定義sbit speaker=P23; /定義音樂輸出端口,需要連接到對應(yīng)的喇叭*define uchar unsigned char*define uint unsigned intuchar timer0h,timer0l,time;code uchar sszymmh= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 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, 3,2,1, 5,2,2, 5,2,1, 6,2,1,

33、3,2,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 ; /世上只有媽媽好code uchar mldsh= 6,1,2, 3,2,2, 7,1,3, 6,1,1, 1,2,1, 2,2,1, 1,2,1, 3,2,4, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 4,2,1, 3,2,1, 3,2,2, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,4, 1,2,4, 6,1,2,

34、3,2,2, 2,2,3, 7,1,1, 6,1,8, 6,1,2, 3,2,2, 7,2,3, 7,1,1, 6,1,1, 1,2,1, 2,2,1, 1,2,1, 3,2,4, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 4,2,1, 3,2,1, 3,2,6, 6,1,2, 6,2,2, 5,2,1, 2,2,1, 3,2,1, 4,2,1, 3,2,2, 2,2,2, 1,2,4, 6,2,2, 2,2,2, 1,2,3, 7,1,1, 6,1,6, 6,1,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 1,2,1, 7,2,2,

35、 5,1,2, 6,1,1, 1,2,1, 2,2,1, 3,2,1 ; /美麗的神話code uchar lzlh= 1,2,2, 2,2,2, 3,2,2, 1,2,2, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 3,2,2, 4,2,2, 5,2,4, 3,2,2, 4,2,2, 5,2,4, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 5,1,2, 1,2,4, 2,2,2, 5,1,2, 1,2,4, 1,2,2, 2,2,2, 3,

36、2,2, 1,2,2, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 3,2,2, 4,2,2, 5,2,4, 3,2,2, 4,2,2, 5,2,4, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 5,1,2, 1,2,4, 2,2,2, 5,1,2, 1,2,4 ;/兩只老虎code uchar srg= 5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4, 5,1,1, 5,1,1, 6,1,2, 5,1,2, 2

37、,2,2, 1,2,4, 5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,1, 6,1,1, 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4 ;/生日歌 / 音階頻率表 高八位code uchar FREQH= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,

38、 ; / 音階頻率表 低八位code uchar FREQL= 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;uchar const EL=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71;/0-F/*/

39、* 函數(shù)聲明 */*/ uchar keyscan(void); /鍵盤掃描void delay1(uint i); /演示程序void delay2(unsigned char t);void yy1(void) ; /定義音樂函數(shù)1void yy2(void) ; /定義音樂函數(shù)2void yy3(void) ; /定義音樂函數(shù)3void yy4(void); /定義音樂函數(shù)4 /*/* 主函數(shù) */*/void main() uchar key; P2=0; P0=0X00; while(1) key=keyscan(); /調(diào)用鍵盤掃描, switch(key) case 0xee:P

40、0=EL0;P1=0xfe; /票 yy1();break; case 0xde:P0=EL1;P1=0xfd; yy2();break; case 0xbe:P0=EL2;P1=0xfb;yy3(); break; case 0x7e:P0=EL3; P1=0xf7; yy4(); break; /*/* 鍵盤掃描程序 */*/uchar keyscan(void) /鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法 uchar cord_h,cord_l;/行列值中間變量 P3=0x0f; /行線輸出全為0 cord_h=P3&0x0f; /讀入列線值 if(cord_h!=0x0f) /先檢測有無按鍵按

41、下 delay1(100); /去抖 if(cord_h!=0x0f) cord_h=P3&0x0f; /讀入列線值 P3=cord_h|0xf0; /輸出當(dāng)前列線值 cord_l=P3&0xf0; /讀入行線值 return(cord_h+cord_l);/鍵盤最后組合碼值 return(0xff); /返回該值/*/* 延時程序 */*/void delay1(uint i) /延時函數(shù)while(i-);void delay2(unsigned char t) unsigned char t1; unsigned long t2; for(t1=0;t1t;t1+) for(t2=0;t

42、28000;t2+) ; TR0=0; /*/* 定時器中斷函數(shù) */ /*/void t0int() interrupt 1 TR0=0; speaker=!speaker; TH0=timer0h; TL0=timer0l; TR0=1; /*/*/* 音樂處理函數(shù) */*/void song() TH0=timer0h; TL0=timer0l; TR0=1; delay2(time); /*/ /* 音樂播放函數(shù) */*/ void yy1(void) unsigned char k,i; TMOD=1; /置CT0定時工作方式1 EA=1; ET0=1;/IE=0x82 /CPU開中

43、斷,CT0開中斷 while(1) i=0; while(i100) /音樂數(shù)組長度 ,唱完從頭再來 k=sszymmhi+7*sszymmhi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=sszymmhi+2; i=i+3; song(); void yy2(void) unsigned char k,i; TMOD=1; /置CT0定時工作方式1 EA=1; ET0=1;/IE=0x82 /CPU開中斷,CT0開中斷 while(1) i=0; while(i150) /音樂數(shù)組長度 ,唱完從頭再來 k=mldshi+7*mldshi+1-1; ti

44、mer0h=FREQHk; timer0l=FREQLk; time=mldshi+2; i=i+3; song(); void yy3(void) unsigned char k,i; TMOD=1; /置CT0定時工作方式1 EA=1; ET0=1;/IE=0x82 /CPU開中斷,CT0開中斷 while(1) i=0; while(i150) /音樂數(shù)組長度 ,唱完從頭再來 k=lzlhi+7*lzlhi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=lzlhi+2; i=i+3; song(); void yy4(void) unsigned char k,i; TMOD=1; /置CT0定時工作方式1 EA=1; ET0=1;/IE=0x82 /CPU開中斷,CT0開中斷 while(1) i=0; while(i150) /音樂數(shù)組長度 ,唱完從頭再來 k=srgi+7*srgi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=srgi+2; i=i+3; song(); 參考文獻(xiàn):單片機(jī)原理與接口技術(shù)第3版朝青 編著

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!