发几首《裸奔三部曲》最后一节用到的音乐,自己照谱子做的,大家品评一下
请注意,添加进去请申明数组。原函数要改一下,我发现放到最后数组会溢出,还有些有休止符的音乐无法完美支持。
在这里0,0作为音乐结束,30作为休止符。
以下为本人修改过的函数
void Sing(int index) //index 用来选择歌曲
{
unsigned char Temp1,Temp2;
unsigned int Addr=0;
int freq;
Addr=0;
while(1){
switch (index)
{
case 11:
Temp1=SONG1;
Temp2=SONG1;
break;
case 12:
Temp1=SONG2;
Temp2=SONG2;
break;
case 13:
Temp1=SONG3;
Temp2=SONG3;
break;
case 14:
Temp1=SONG4;
Temp2=SONG4;
break;
case 15:
Temp1=SONG5;
Temp2=SONG5;
break;
default:
return;
}
if (Temp1==0)
{
rGPBCON &= ~3; //set GPB0 as output
rGPBCON |= 1; //结束,跳出循环
rGPBDAT &= ~1;
Uart_Printf("\n\tOver!\n");
break;
}
switch ( Temp1) {
case 01: freq=260; break;
case 02: freq=294; break;
case 03: freq=328; break;
case 04: freq=347; break;
case 05: freq=390; break;
case 06: freq=438; break;
case 07: freq=490; break;
case 11: freq=520; break;
case 12: freq=581; break;
case 13: freq=657; break;
case 14: freq=694; break;
case 15: freq=781; break;
case 16: freq=892; break;
case 17: freq=1000; break;
case 21: freq=1041; break;
case 22: freq=1190; break;
case 23: freq=1315; break;
case 24: freq=1388; break;
case 25: freq=1562; break;
case 26: freq=1785; break;
case 27: freq=1923; break;
case 30: rGPBCON &= ~3; //set GPB0 as output
rGPBCON |= 1; //休止符关蜂鸣器
rGPBDAT &= ~1;
goto delay; //这里用了goto,赶时间,没有大调整
default: freq='e';break;
}
Buzzer_Freq_Set0( freq );
delay: Delay(192*Temp2);
Uart_Printf("%d,%d, ",Temp1,Temp2);
if(Temp2==8||Temp2==6||Temp2==12||Temp2==4){
Uart_Printf("\n");
}
if(Addr>440){//440,此为数字数据个数
Addr=0;
Uart_Printf("\n\n");
}
}
}
unsigned char SONG1[] ={ //Das Deutschlandlied
11,6,12,2,13,4,12,4,14,4,13,4,12,2,7,2,11,4,16,4,15,4,14,4,13,4,12,4,13,2,11,2,15,8,
11,6,12,2,13,4,12,4,14,4,13,4,12,2,7,2,11,4,16,4,15,4,14,4,13,4,12,4,13,2,11,2,15,8,
12,4,13,4,12,2,7,2,5,4,14,4,13,4,12,2,7,2,5,4,15,4,14,4,13,6,13,2,14,4,14,2,15,2,15,8,
21,6,17,2,17,2,16,2,15,4,16,6,15,2,15,2,14,2,13,4,12,6,13,1,14,1,15,2,16,2,14,2,12,2,11,4,13,2,12,2,11,8,
21,6,17,2,17,2,16,2,15,4,16,6,15,2,15,2,14,2,13,4,12,6,13,1,14,1,15,2,16,2,14,2,12,2,11,4,13,2,12,2,11,8,
0,0,
};
unsigned char SONG2[] ={ //Gods save the king
11,4,11,4,12,4,7,6,12,2,12,4,13,4,13,4,14,4,13,6,12,2,11,4,12,4,11,4,7,4,11,4,
11,2,12,2,13,2,14,2,15,4,15,4,15,4,15,6,14,2,13,4,14,4,14,4,14,4,14,6,13,2,12,4,
13,4,14,2,13,2,12,2,11,2,13,6,14,2,15,4,16,2,14,2,13,4,12,4,11,12,
0,0,
};
unsigned char SONG3[] ={ //The star-spangled banner
15,3,13,1,11,4,13,4,15,4,21,4,21,4,23,3,22,1,21,4,13,4,14,4,15,8,15,2,15,2,23,6,22,2,21,4,17,8,16,3,17,1,21,4,21,4,15,4,13,4,11,4,
15,3,13,1,11,4,13,4,15,4,21,4,21,4,23,3,22,1,21,4,13,4,14,4,15,8,15,2,15,2,23,6,22,2,21,4,17,8,16,3,17,1,21,4,21,4,15,4,13,4,11,4,
23,2,23,2,23,4,24,4,25,4,25,8,24,2,23,2,22,4,23,4,24,4,24,8,24,2,24,2,23,6,23,2,21,4,17,4,16,3,17,1,21,4,13,4,14,4,15,8,
15,2,15,2,21,4,21,4,21,2,17,2,16,4,16,4,16,4,22,4,24,2,23,2,22,2,21,2,21,4,17,4,
15,2,15,2,21,6,22,2,23,2,24,2,25,8,21,2,22,2,23,6,24,2,22,4,21,8,
0,0,
};
unsigned char SONG4[] ={ //挥剑问情
13,2,12,2,13,4,13,2,12,2,13,4,13,2,12,2,13,2,16,2,15,2,13,2,12,4,11,2,12,2,13,4,13,2,12,2,13,4,13,2,12,2,13,2,21,2,16,2,15,2,13,4,
13,2,15,2,16,4,16,2,21,2,16,4,15,2,13,2,12,8,12,4,11,2,12,2,13,4,13,2,15,2,13,4,13,2,11,2,12,8,12,4,
13,2,12,2,13,4,13,2,12,2,13,4,13,2,12,2,13,2,16,2,15,2,13,2,12,4,13,2,15,2,16,6,21,2,16,6,21,2,15,2,16,2,21,2,17,2,
16,2,15,2,13,2,15,2,16,8,16,4,13,2,15,2,16,8,16,4,13,2,15,2,16,2,21,2,16,4,16,8,15,8,13,4,15,4,16,6,21,2,15,4,13,4,12,8,
15,4,12,4,13,6,16,2,15,4,12,4,13,8,12,4,13,2,12,2,11,8,11,4,12,2,11,2,6,4,11,4,12,4,13,4,15,4,16,4,13,6,11,2,12,8,
13,4,15,4,16,6,21,2,15,4,13,4,12,8,15,4,12,4,13,6,16,2,15,4,13,4,15,8,16,4,21,4,22,8,16,8,15,8,16,4,21,4,23,4,22,4,21,4,15,4,16,4,
0,0,
};
unsigned char SONG5[] ={ //命起涟漪
6,2,13,2,12,2,11,2,7,4,5,4,6,6,5,2,3,8,30,2,5,2,6,2,13,2,12,3,12,1,11,2,12,2,12,2,13,2,13,8,30,4,
6,2,13,2,12,2,11,2,7,4,5,4,6,8,5,8,6,2,3,2,6,2,3,2,7,8,12,2,6,2,12,2,6,2,13,8,13,2,16,2,16,2,13,2,12,2,15,2,15,2,12,2,
11,2,12,2,12,2,13,2,7,6,5,2,6,2,13,2,13,2,16,2,15,4,11,4,11,2,12,2,12,8,30,4,
12,2,13,2,15,2,12,2,30,2,12,2,12,2,12,2,12,2,11,2,13,2,13,2,13,8,11,2,12,2,12,2,12,2,16,2,16,2,16,2,16,2,
16,2,15,2,16,2,13,2,13,8,12,2,13,2,15,2,12,2,30,2,12,2,12,2,12,2,12,2,11,2,13,2,12,2,12,2,11,1,6,1,6,4,
12,2,13,2,12,2,6,2,6,4,13,2,12,2,12,2,5,2,5,4,6,8,6,16,
0,0,
}; 哈哈,多谢楼主!
谢谢了,非常好,谢谢分享
页:
[1]