📄 音乐播放.c
字号:
#include"at89x51.h"
sbit Speaker=P1^0;
//全局变量
unsigned char a,b;
//C调音阶,节拍表,其中2,4,8分别代表延时100ms,200ms,400ms
unsigned char code Scale_Rhythms[][3]={
0xf8,0x8b,2,0xf9,0x5b,2,0xfa,0x14,2,0xfa,0x66,2,0xfb,0x03,2,0xfb,0x8f,2,0xfc,0x0b,2,
0xf8,0x8b,4,0xf9,0x5b,4,0xfa,0x14,4,0xfa,0x66,4,0xfb,0x03,4,0xfb,0x8f,4,0xfc,0x0b,4,
0xf8,0x8b,8,0xf9,0x5b,8,0xfa,0x14,8,0xfa,0x66,8,0xfb,0x03,8,0xfb,0x8f,8,0xfc,0x0b,8,
0xfc,0x43,2,0xfc,0xab,2,0xfd,0x08,2,0xfd,0x33,2,0xfd,0x81,2,0xfd,0xc7,2,0xfe,0x05,2,
0xfc,0x43,4,0xfc,0xab,4,0xfd,0x08,4,0xfd,0x33,4,0xfd,0x81,4,0xfd,0xc7,4,0xfe,0x05,4,
0xfc,0x43,8,0xfc,0xab,8,0xfd,0x08,8,0xfd,0x33,8,0xfd,0x81,8,0xfd,0xc7,8,0xfe,0x05,8,
0xfe,0x21,2,0xfe,0x55,2,0xfe,0x84,2,0xfe,0x99,2,0xfe,0xc0,2,0xfe,0xe3,2,0xff,0x02,2,
0xfe,0x21,4,0xfe,0x55,4,0xfe,0x84,4,0xfe,0x99,4,0xfe,0xc0,4,0xfe,0xe3,4,0xff,0x02,4,
0xfe,0x21,8,0xfe,0x55,8,0xfe,0x84,8,0xfe,0x99,8,0xfe,0xc0,8,0xfe,0xe3,8,0xff,0x02,8,};
//音乐数据表
unsigned char code Music[]={
18,18,35,36,37,31,37,35,36,36,35,19,35,35,35,35,
18,18,35,36,37,30,31,39,35,38,30,39,29,30,30,29,
36,36,36,37,37,39,56,41,33,40,40,39,32,33,41,33,
32,37,37,37,37,38,31,39,40,39,31,30,36,36,20,13,
12,18,19,35,35,35,35,56,56,40,40,38,32,40,40,41,
34,34,41,33,32,37,37,37,37,56,56,40,40,38,32,40,
40,19,12,12,40,31,30,36,36,36,36,18,18,35,36,37,
31,37,28,28,36,29,36,29,28,19,19,19,19,20,20,20,
12,18,40,39,29,29,38,31,38,30,29,35,35,35,35,64,};
//主函数
void main()
{
EA=ET0=TR0=TR1=ET1=1;
TMOD=0x11;
TH1=0x3c;
TL1=0xb0;
TH0=Scale_Rhythms[Music[a]][0];
TL0=Scale_Rhythms[Music[a]][1];
b=Scale_Rhythms[Music[a]][2];
while(1);
}
//0中断程序,控制频率
void Time0() interrupt 1 using 0
{
TH0=Scale_Rhythms[Music[a]][0];
TL0=Scale_Rhythms[Music[a]][1];
Speaker=~Speaker;
}
//1中断程序,控制节拍,每50ms中断一次
void Time1() interrupt 3 using 1
{
TH1=0x3c;
TL1=0xb0;
b--;
if(b==0)
{
a++;
b=Scale_Rhythms[Music[a]][2];
}
if(Music[a]==64)//64为结束符号
{
a=0;
b=Scale_Rhythms[Music[a]][2];
}
}
/*说明(乐谱与音乐数据映射表)
1/=/.>>0 2/=/.>>1 3/=/.>>2 4/=/.>>3 5/=/.>>4 6/=/.>>5 7/=/.>>6
1/-/.>>7 2/-/.>>8 3/-/.>>9 4/-/.>>10 5/-/.>>11 6/-/.>>12 7/-/.>>13
1/.>>14 2/.>>15 3/.>>16 4/.>>17 5/.>>18 6/.>>19 7/.>>20
1/=>>21 2/=>>22 3/=>>23 4/=>>24 5/=>>25 6/=>>26 7/=>>27
1/->>28 2/->>29 3/->>30 4/->>31 5/->>32 6/->>33 7/->>34
1>>35 2>>36 3>>37 4>>38 5>>39 6>>40 7>>41
./1/=>>42 ./2/=>>43 ./3/=>>44 ./4/=>>45 ./5/=>>46 ./6/=>>47 ./7/=>>48
./1/->>49 ./2/->>50 ./3/->>51 ./4/->>52 ./5/->>53 ./6/->>54 ./7/->>55
./1>>56 ./2>>57 ./3>>58 ./4>>59 ./5>>60 ./6>>61 ./7>>62
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -