![音樂發(fā)生器的設(shè)計與實現(xiàn)重點_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/18e9cfd6-ef7f-40bb-8245-b5d34bbf2045/18e9cfd6-ef7f-40bb-8245-b5d34bbf20451.gif)
![音樂發(fā)生器的設(shè)計與實現(xiàn)重點_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/18e9cfd6-ef7f-40bb-8245-b5d34bbf2045/18e9cfd6-ef7f-40bb-8245-b5d34bbf20452.gif)
![音樂發(fā)生器的設(shè)計與實現(xiàn)重點_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/18e9cfd6-ef7f-40bb-8245-b5d34bbf2045/18e9cfd6-ef7f-40bb-8245-b5d34bbf20453.gif)
![音樂發(fā)生器的設(shè)計與實現(xiàn)重點_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/18e9cfd6-ef7f-40bb-8245-b5d34bbf2045/18e9cfd6-ef7f-40bb-8245-b5d34bbf20454.gif)
![音樂發(fā)生器的設(shè)計與實現(xiàn)重點_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/18e9cfd6-ef7f-40bb-8245-b5d34bbf2045/18e9cfd6-ef7f-40bb-8245-b5d34bbf20455.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗課程名稱:監(jiān)測控制系統(tǒng)應(yīng)用 實驗五實驗項目名稱:音樂發(fā)生器的設(shè)計與實現(xiàn) 實驗成績: 實驗者: 專業(yè)班級: 電信130 班 同組者: 111 實驗日期: 周四34節(jié)課 一實驗內(nèi)容掌握單片機(jī)片內(nèi)定時器應(yīng)用設(shè)計技巧,會確定定時器的時間常數(shù),能夠進(jìn)行定時器的初始化編程。掌握利用微處理器設(shè)計音樂發(fā)生器的方法二探究內(nèi)容1.利用定時器產(chǎn)生特定的頻率信號,設(shè)計一個音樂發(fā)生器,可以循環(huán)播放音樂,候選樂曲3首。2.用按鍵選擇播放哪一首音樂。有音樂播放的啟停鍵。3.用8個LED燈隨節(jié)拍閃爍(選做)4擴(kuò)展內(nèi)容(選做),用7個按鍵分別產(chǎn)生音階1、2、3、4、5、6、7,按一下鍵,即產(chǎn)生一個節(jié)拍的相應(yīng)音符,也就是設(shè)計
2、電子琴。3 實驗設(shè)計:1.設(shè)計要求具體任務(wù):(1)設(shè)計一個音樂發(fā)生器,候選音樂有三種,K1可啟動停止音樂,K2用于選擇音樂段;(2)用proteous仿真電路,保證設(shè)計的正確性;(3) 基于開發(fā)板完成實物制作。2. 探究內(nèi)容:(1)如何利用音階計算定時器的時間常數(shù)?(2)音樂聲音的洪亮穩(wěn)定如何保證?(3)節(jié)拍如何實現(xiàn)?3、 實驗設(shè)計:1.設(shè)計音樂發(fā)生器的基本任務(wù)的基本任務(wù):(1)研究產(chǎn)生音階1、2、3、4、5、6、7的方法,計算7個音階對應(yīng)的時間常數(shù)(2)設(shè)計產(chǎn)生單首樂曲循環(huán)的軟件,調(diào)試后下載到開發(fā)板(3) 設(shè)計產(chǎn)生3首樂曲的音樂發(fā)生器,用按鍵選擇循環(huán)的單曲,調(diào)試后下載到開發(fā)板,運行。2.相關(guān)
3、知識介紹 2.3 音階對應(yīng)頻率計數(shù)初值的計算單片機(jī)的振蕩頻率為fosc12MHz ,通過定時器T0溢出后對P3.0口取反產(chǎn)生方波,故定時器溢出時間為1/2f 。由: , 則定時初值為:以音階“1”為例:f523 Hz,則T1/f 定時初值:用同一方法可求出其它音階所對應(yīng)的頻率定時初值,將其制表放在程序中,通過查表向定時器T0裝入所要求的定時初值,即可產(chǎn)生某一音階所對應(yīng)的頻率的方波信號。C調(diào)的音階及其頻率、在單片機(jī)中的定時初值對應(yīng)如下: 四原理圖1.音樂播放器原理圖因為開發(fā)板上面的蜂鳴器為無源蜂鳴器,所以設(shè)計時要適應(yīng)開發(fā)板的情況進(jìn)行設(shè)計。K1、K2按鍵用來進(jìn)行上一曲和下一曲的選擇,K3為暫停/開
4、始按鍵,P2.0接蜂鳴器,P1口接LED燈,用LED燈顯示節(jié)拍。2.電子琴原理圖上面七個鍵按下分別發(fā)出哆嘞咪發(fā)嗦啦嘻的音,第八個按鍵選擇音調(diào)的高低。最下面的按鍵用來控制使用和暫停。五實驗結(jié)果音樂播放器仿真和實物都能正常的播放音樂,并且能夠?qū)崿F(xiàn)上一曲、下一曲的選擇,并且有暫停和播放的功能,電子琴也能夠正常發(fā)音,可以演奏音樂。六、結(jié)果分析及總結(jié)(1)如何利用音階計算定時器的時間常數(shù)?單片機(jī)的振蕩頻率為fosc12MHz ,通過定時器T0溢出后對P3.0口取反產(chǎn)生方波,故定時器溢出時間為1/2f 。由: , 則定時初值為:以音階“1”為例:f523 Hz,則T1/f 定時初值:用同一方法可求出其它音
5、階所對應(yīng)的頻率定時初值,將其制表放在程序中,通過查表向定時器T0裝入所要求的定時初值,即可產(chǎn)生某一音階所對應(yīng)的頻率的方波信號。(2)節(jié)拍如何實現(xiàn)?取樂曲節(jié)拍的長度為0.4s ,即1拍0.4s ,由定時器T1控制延時。設(shè)置定時器T1的定時中斷T50ms ,采用定時方式1。由:,則定時初值X3C0BH因此1拍0.4s8*50ms,即通過定時器T1的定時中斷8次,產(chǎn)生8*50ms的定時,就可以滿足1節(jié)拍的定時要求。以此類推,通過定時中斷N次,可產(chǎn)生N*50ms的定時以滿足1/4拍、1/2拍、1拍、2拍等不同節(jié)拍的定時要求。由此可知,節(jié)拍值只能是整數(shù)值。(3)音樂聲音的洪亮穩(wěn)定如何保證?這里的“源”不
6、是指電源。而是指震蕩源。 也就是說,有源蜂鳴器內(nèi)部帶震蕩源,所以只要一通電就會叫。 而無源內(nèi)部不帶震蕩源,所以如果用直流信號無法令其鳴叫。必須用2K5K的方波去驅(qū)動它。 此次設(shè)計初,由于沒意識到蜂鳴器驅(qū)動分為有源驅(qū)動和無源驅(qū)動,在使用網(wǎng)上的樂譜和相應(yīng)的函數(shù)設(shè)計音樂播放器時,不能正確產(chǎn)生音樂,后來查資料才發(fā)現(xiàn)有無源和有源之分,有源和無源蜂鳴器的發(fā)聲原理不同,故其樂譜會有所不同。 樂譜可以放在一個樂譜表中,通過查表來實現(xiàn)音樂的播放,要想循環(huán)播放一首歌,可以加一句查詢語句,因為一條語句的執(zhí)行時間非常短,對樂曲的演奏沒有影響,在判斷樂曲播放完后,繼續(xù)回到樂曲開始,便可實現(xiàn)循環(huán)播放。附錄:音樂播放器程序
7、#include<reg52.h> /*- 硬件端口定義-*/sbit SPK=P20; /定義音樂輸出端口sbit key1=P32; /定義按鍵 用于 暫停sbit key2=P33; /定義按鍵 用于 切換unsigned char W=0,T;/用于選擇音樂unsigned char Timer0_H,Timer0_L,Time;void delay5ms(void) /誤差 0us unsigned char a,b; for(b=185;b>0;b-) for(a=12;a>0;a-);void delay500ms(void) /誤差 0us unsign
8、ed char a,b,c; for(c=205;c>0;c-) for(b=116;b>0;b-) for(a=9;a>0;a-);/世上只有媽媽好 數(shù)據(jù)表音譜,高中低音,音長code unsigned char MUSIC102= 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
9、,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 ;/送別 數(shù)據(jù)表音譜,高中低音,音長code unsigned char MUSIC1174=5,2,2,3,2,1,5,2,1,1,3,4, 6,2,2,1,3,2,5,2,4,5,2,2,1,2,1,2,2,1,3,2,2,2,2,1,1,2,1, 2,2,8,5,2,2,3,2,1,5,2,1,1,3,3,7,2,1, 6,2,2,1,3,2,5,2,4, 5,2,2, 2,2,1, 3,2,1,4,2,3, 7,1,1, 1,2,8, 6,2,2,1,3,2,1,3,
10、4, 7,2,2,6,2,1,7,2,1, 1,3,4,6,2,1,7,2,1,1,3,1,6,2,1,6,2,1, 5,2,1, 3,2,1,1,2,1, 2,2,8, 5,2,2,3,2,1,5,2,1, 1,3,3,7,2,1,6,2,2,1,3,2,5,2,4, 5,2,2,2,2,1,3,2,1,4,2,3,7,1,1, 1,2,8 ;/新年好 數(shù)據(jù)表音譜,高中低音,音長code unsigned char MUSIC290=1,2,1,1,2,1,1,2,2,5,1,2,3,2,1,3,2,1,3,2,2,1,2,2,1,2,1,3,2,1,5,2,2,5,2,2,4,2,1,3,
11、2,1,2,2,4, 2,2,1,3,2,1,4,2,2,4,2,2, 3,2,1,2,2,1,3,2,2,1,2,2, 1,2,1,3,2,1,2,2,2,5,1,2, 7,1,1,2,2,1,1,2,4 ;/童年 數(shù)據(jù)表音譜,高中低音,音長code unsigned char MUSIC3423=5,1,1,5,1,1,3,1,1,5,1,2,3,1,1,5,1,2, 6,1,1,6,1,1,1,2,1,6,1,2,6,1,1,1,2,2, 2,2,1,2,2,1,3,2,1,2,2,2,5,1,1,6,1,1,5,1,1, 1,2,1,1,2,1,5,1,1,1,2,1,1,2,1,1,
12、2,2,1,2,1, 1,2,1,5,1,2,1,2,1,6,1,1,5,1,1,3,1,1, 2,1,1, 1,1,2,3,1,1,5,1,1,5,1,2,5,1,1,3,1,1, 6,1,1, 6,1,1,1,2,1,6,1,1,6,1,1,6,1,1,6,1,1,5,1,1, 1,2,2,1,2,1,1,2,1,1,2,1,6,1,1,1,2,1,6,1,1, 5,1,2,0,2,1,3,1,1,6,1,1,1,2,1,6,1,1,5,1,1, 3,1,1,2,1,1,3,1,1,5,1,1,5,1,2,5,1,1,3,1,1, 6,1,1,6,1,1,1,2,1,6,1,1,6,1,1
13、,6,1,1,6,1,1,5,1,1, 1,2,2,1,2,1,1,2,1,1,2,1,6,1,1,6,1,1,1,2,1, 2,2,2,0,2,1,5,1,1,2,2,1,5,2,1,2,2,2, 5,2,1,5,2,2,5,2,1,5,2,1,5,2,1,3,2,1,2,2,1, 1,2,1,1,2,2,6,1,1,6,1,1,1,2,1,6,1,1,1,2,1, 2,2,1, 2,2,1,2,2,1,2,2,1,2,2,1,1,2,1,3,2,1,2,2,1, 2,2,8,3,2,1,3,2,2,3,2,1,3,2,2,2,2,2, 1,2,1,1,2,2,1,2,1,2,2,1,1,2
14、,1,6,1,1,5,1,1, 5,1,1,5,1,2,5,1,1,6,1,1,5,1,1,2,2,1,3,2,1, 1,2,8, 1,2,1,5,1,2,1,2,1,6,1,1,5,1,1,3,1,1, 2,1,1, 1,2,6,0,2,2 ;/ 音階頻率表 高八位code unsigned char FREQH=0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF
15、, ; /1,2,3,4,5,6,7,8,i / 音階頻率表 低八位code unsigned char FREQL=0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;/1,2,3,4,5,6,7,8,i/*- uS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0255 這里使用晶
16、振12M,精確延時請使用匯編,大致延時 長度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0255 這里使用晶振12M,精確延時請使用匯編-*/void DelayMs(unsigned char t) while(t-) /大致延時1mSDelayUs2x(245);DelayUs2x(245); /*- 節(jié)拍延時函數(shù) 各調(diào)1/4節(jié)拍時間: 調(diào)4/4 125ms 調(diào)2/4 250m
17、s 調(diào)3/4 187ms-*/void delay(unsigned char t) unsigned char i;for(i=0;i<t;i+) DelayMs(250); TR0=0;/*- 定時器0中斷-*/void TIM0_ISR() interrupt 1TR0=0; SPK=!SPK;TH0=Timer0_H;TL0=Timer0_L;TR0=1;/*- 歌曲處理函數(shù)-*/void Song()TH0=Timer0_H;/賦值定時器時間,決定頻率TL0=Timer0_L;TR0=1; /打開定時器delay(Time); /延時所需要的節(jié)拍 /*- 主函數(shù)-*/void
18、led(unsigned char a);void main(void)unsigned int i;unsigned char k;TMOD|=0x01; /置定時器0工作方式1EA=1; /打開全局中斷ET0=1; /打開 定時器0 中斷EX0=1;/打開 外部中斷0 中斷IT0=1;/設(shè)置為下降沿中斷EX1=1;/打開 外部中斷1 中斷IT1=1;/設(shè)置為下降沿中斷PX1=1;/設(shè)置 外部中斷1 為高優(yōu)先級while(1) /i=0;if(W=0) T=W; for(i=0;i<100;i=i+3) /音樂數(shù)組長度 ,唱完從頭再來led(MUSICi); k=MUSICi+7*MU
19、SICi+1-1;/去音符振蕩頻率所需數(shù)據(jù) Timer0_H=FREQHk; Timer0_L=FREQLk; Time=MUSICi+2; /節(jié)拍時長 / i=i+3; Song();if(T!=W)break; if(W=1) T=W; for(i=0;i<174;i=i+3) /音樂數(shù)組長度 ,唱完從頭再來led(MUSIC1i); k=MUSIC1i+7*MUSIC1i+1-1;/去音符振蕩頻率所需數(shù)據(jù) Timer0_H=FREQHk; Timer0_L=FREQLk; Time=MUSIC1i+2; /節(jié)拍時長 / i=i+3; Song();if(T!=W)break; if
20、(W=2) T=W; for(i=0;i<90;i=i+3) /音樂數(shù)組長度 ,唱完從頭再來led(MUSIC2i); k=MUSIC2i+7*MUSIC2i+1-1;/去音符振蕩頻率所需數(shù)據(jù) Timer0_H=FREQHk; Timer0_L=FREQLk; Time=MUSIC2i+2; /節(jié)拍時長 / i=i+3; Song();if(T!=W)break; if(W=3) T=W; for(i=0;i<423;i=i+3) /音樂數(shù)組長度 ,唱完從頭再來led(MUSIC3i); k=MUSIC3i+7*MUSIC3i+1-1;/去音符振蕩頻率所需數(shù)據(jù) Timer0_H=F
21、REQHk; Timer0_L=FREQLk; Time=MUSIC3i+2; /節(jié)拍時長 / i=i+3; Song();if(T!=W)break; / 頻譜函數(shù)void led(unsigned char a)switch(a)case 0:P1=0xff;break;case 1:P1=0x7f;break;case 2:P1=0x7e;break;case 3:P1=0x7c;break;case 4:P1=0x78;break;case 5:P1=0x70;break;case 6:P1=0x60;break;case 7:P1=0x40;break;case 8:P1=0x00;
22、break;/外部中斷0 中斷服務(wù)程序用于暫停void zhongduan0() interrupt 0 delay5ms();/按鍵去抖if(!key1)while(!key1);/松手檢測while(key1&&T=W);/檢測按鍵是否按下delay5ms();/按鍵去抖while(key1&&T=W);/檢測按鍵是否按下while(!key1&&T=W);/松手檢測/外部中斷1 中斷服務(wù)程序void zhongduan1() interrupt 2 delay5ms();/按鍵去抖if(!key2)if(W=3)W=0;elseW+;whi
23、le(!key2);/松手檢測delay500ms();電子琴程序#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int/*子函數(shù)聲明*/void Run();void PlayKey();void KeyScan();void KeyScan1();/*手動彈奏按鍵定義*/sbit Beep=P10;sbit key1=P20;sbit key2=P21;sbit key3=P22;sbit key4=P23;sbit key5=P24;sbi
24、t key6=P25;sbit key7=P26;sbit key8=P27;/*播放模式下按鍵定義*/sbit s3=P35;/暫停/播放鍵uchar Th0,Tl0;uchar key=0;/按鍵代號uchar yinfu,jiepai,i,j,m;uchar gaodi=0;uchar flag=0;/暫停、開始uchar num;/全局變量uchar s1num;/暫停/播放鍵按下的次數(shù)/歌曲音符/*uchar code MusicCode=0xfc,0x0b,0xfc,0x43,0xfc,0xab,0xfd,0x08,0xfd,0x33,0xfd,0x81,0xfd,0xc7,0xf
25、e,0x05,0xfe,0x21,0xfb,0x8f,0xfb,0x03;*/uchar code MusicCode=0xfc,0x44,0xfc,0xac,0xfd,0x09,0xfd,0x34,0xfd,0x82,0xfd,0xc8,0xfe,0x06,0xfb,0x04,0xfb,0x90,0xfc,0x0c,0xfe,0x22,0xf9,0x5b,0xfa,0x15;/按鍵音符uchar code KeyCode=0xf8,0x8b,0xf9,0x5b,0xfa,0x14,0xfa,0x66,0xfb,0x03,0xfb,0x8f,0xfc,0x0b,/*低音*/0xfc,0x43,
26、0xfc,0xab,0xfd,0x08,0xfd,0x33,0xfd,0x81,0xfd,0xc7,0xfe,0x05,/*中音*/0xfe,0x21,0xfe,0x55,0xfe,0x84,0xfe,0x99,0xfe,0xc0,0xfe,0xe3,0xff,0x02/*高音*/;/*使能中斷*/void interrupt0() interrupt 0 /外部終端0flag=flag;/*曲目選擇外部中斷*/void interrupt1() interrupt 2/外部終端1flag1=1;/*延時子程序*/void delay_1ms(uint i) uint k,x; for(x=0
27、;x<i;x+) for(k=0;k<110;k+); /*手動彈奏按鍵掃描子程序*/void KeyScan() if(key8=0)/如果P2.2=0 delay_1ms(5); if(key8=0) /while(!key8)gaodi+; if(gaodi>2) gaodi=0; else if(key1=0) delay_1ms(5); if(key1=0) while(!key1); key=1; else if(key2=0) delay_1ms(5); if(key2=0) while(!key2); key=2; else if(key3=0) delay_1ms(5); if(key3=0) while(!key3); key=3; else
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專家顧問聘用合同范文
- 2025年中醫(yī)藥大數(shù)據(jù)項目提案報告模板
- 2025年懷化市住宅租賃合同示范
- 2025年植樹用地租賃合同模板
- 2025年電熱設(shè)備:電熱管項目立項申請報告范文
- 2025年產(chǎn)權(quán)交易所項目轉(zhuǎn)讓服務(wù)協(xié)議
- 2025年中等教育助學(xué)貸款合同范本
- 2025年衛(wèi)生用品采購合同
- 2025年天然級復(fù)盆子酮項目申請報告模稿
- 2025年企業(yè)信息技術(shù)保密協(xié)議管理
- (完整版)陸河客家請神書
- 2025年教科版新教材科學(xué)小學(xué)一年級下冊教學(xué)計劃(含進(jìn)度表)
- 集團(tuán)專利管理制度內(nèi)容
- 2025年中國社會科學(xué)院世界歷史研究所科研人員招聘4人歷年高頻重點提升(共500題)附帶答案詳解
- 小散工程施工安全培訓(xùn)
- 《中國地方戲曲簡介》課件
- 《消費者心理與行為分析》第五版 課件全套 肖澗松 單元1-10 消費者心理與行為概述 - 消費者購買決策與購后行為
- 信息系統(tǒng)運行管理員(基礎(chǔ)知識、應(yīng)用技術(shù))合卷軟件資格考試(初級)試題與參考答案(2024年)
- 延安研學(xué)活動方案
- 2024年高考政治必修三《政治與法治》??疾牧项}考點梳理匯編
- 體檢報告電子版
評論
0/150
提交評論