《三个按键选择三首不同的音乐播放〖AT89S52单片机入门教程〗》由会员分享,可在线阅读,更多相关《三个按键选择三首不同的音乐播放〖AT89S52单片机入门教程〗(6页珍藏版)》请在金锄头文库上搜索。
1、第27课,三个按键选择三首不同的音乐播放,一个键停止播放 这一课我们用4个按键来控制播放音乐。3每个键播放一首音乐, # /包括一个52标准内核的头文件 _7; /喇叭输出脚 10; 1= ; 2= ; 3= ; 4= ; ; /在中断中装载的,及输出频率对照表 6*2= 0,1 /0 0,1# 0,2 0,2# 0,3 0,4 0,4# 0,5 0,5# 0,6 0,6# 0,7 0,0# /13 0,0# /15 0,0,0# /18 0,0# /20 0,0# /22 0,01 01# 02 02# 03 04 04# 05 05# 06 06# 07 /35 ; /定时中断0,用于产生
2、唱歌频率 H0= /调入预定时值 /取反音乐输出 /* /音乐符号串解释函数 /入口:要解释的音乐符号串,输出的音调串,输出的时长串 i,i1,j; +/;/音长 =0,12,14,16,17,19,21,23; /i=0,;) ; /高低=0 ;/半音=0 ;/音长1拍 *(i)=|) | (*(i)= ) i+; /拍子间隔和一个空格过滤 (i) ,: 12;i+;/低音 : 2;i+; /高音 (i)=0) /遇到0结束 *(0; /加入结束标志0 *(0; j=*(i)i+; /取出基准音 j=j+(*(i) #: /有半音i+;j+; -: /有一个音节加长 4; i+; _: /有
3、一个音节缩短 2; i+; .: /有一个加半拍 ; i+; *(j; /记录音符 *(+; /* /奏乐函数 /入口:要演奏的音乐符号串 i,c,j=0; n; 12; /音调缓冲 12; /音长缓冲 /解释音乐符号串 ; i=0;i!=0;i+) /逐个符号演奏 i*2; /取出对应的定时值送给T0 i*2+1; c=0;ci;c+) /按照音长延时 n=0;n32000;n+); !|(!|(!|(!,立即退出播放 ; ; n=0;n500;n+); /音符间延时 ; ; /仙剑 = |3_3_3_2_3-|2_3_2_2_,6,6_,7_|12_1_,7,6_,5_|,6 _6_5_5
4、_22_3_|45_4_32_1_| 67_6_55_3_|56_5_32_3_|3 26_6_6-|16_6_66_7_|17_6_76_7_| 67_6_55_3_|57_6_76_7_|3 26_6_6-|16_6_66_7_| ; = 5,7_|_| _5_5 2_3_|25_| 6_5_52.,6_,71_2_|1; /世上只有妈妈好 = 16_5_6-|35_6_53_2_|1_,6_5_3_2-| 21-|_1_|,5; /三个按键选择三首不同的音乐播放,一个键停止播放 0 /使用定时器0的16位工作模式 0; 1; /定时器0中断 1; /打开总中断 ) /播放音乐 /播放音乐 /播放音乐 在奏乐函数里我们加上了: !|(!|(!|(!,立即退出播放 ; 这是为了在正在播放音乐的时候也可以检测到按键,并且停止播放音乐,立即去处理下一步的工作。 请编译,运行。我们可以看到,按下播放仙剑,按键3分别播放其他音乐,按部音乐都停止播放了。特殊注意的是,每次按键发生时,音乐都是立即停止了,再开始播放另一首音乐。这就是上面插入的代码的效果。 作业: 加上在每个按键按下时,对应亮一个一个按键按下时,就亮着另一个灯。4个按键,对应四个灯。以便知道刚刚按下的是第几个键,播放的是第几首音乐。