欢迎来到天天文库
浏览记录
ID:11023911
大小:1.28 MB
页数:22页
时间:2018-07-09
《蜂鸣器与音乐编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、蜂鸣器与音乐编程一、体验蜂鸣器演奏音乐没有亲自体验过自己导出的代码可以让蜂鸣器奏乐的人,怎么会想着会有学习音乐编程的冲动呢。在向下进行之前,小编在这希望即将走向热爱音乐编程道路上的朋友将下面附录1中的代码复制粘贴,然后烧写到开发板中,体验一把音乐编程的快乐。二、认识蜂鸣器奏乐原理其实,这个也没有必要,因为我学习音乐编程的过程中也没有走这个过程,不过原因呢是我小时候学过一段时间的乐理知识,现在有那么一点印象。假如你没有我那么好的音乐功底(呵呵,开个玩笑,我也只是低等玩家),没关系,告诉你捷径,看好了-----
2、--跳过此部分。我们都知道,音调和音调的时长是音符的主要特征,通过产生不同的音调和音调的时长可以奏出不同的音符来。然后一个个音符串联在一起就可以产生美妙的音乐来了。音调主要由声音的频率决定,通过单片机给蜂鸣器不同的音频脉冲来产生不同的音调。要产生音频脉冲,只要算出某一音频的周期(周期=1/频率),然后将此周期除以2即为半周期的时间。利用单片机的定时器工作在计数模式MODE1下,设定TH0和TL0的值以产生这半个周期,每当计时到达时就将输出脉冲的I/O(即接蜂鸣器的那个管脚)反相,然后重复计时此半个周期再对I
3、/O反相,就可以在I/O引脚上得到此频率的脉冲。如果没有必要进行精确的计时,可以用for循环空语句来粗略计时即可(本文选用此法)。当单片机使用11.0592Mhz的晶振时,for(i=0;i<115;i++);这个空循环延时约为1ms;当晶振选用12Mhz时,可使用for(i=0;i<125;i++);这个空循环来延时1ms。在这个空循环外头再进行一次循环就可以实现延时若干ms。首先介绍蜂鸣器的发声原理。如: 下面附上不同音调所对应的频率表: 一、准备相关基础知识假如你只是想体验一把让自己的开发板唱歌,那你
4、在这里可以找到好几个完整源码。假如你是想让自己掌握音乐编程,那你必须具备以下小编认为的能力:1、开发板初级使用能力2、使用框架的能力3、细心、认真、耐心以上三种能力,让你在往下的学习中可以掌握音乐编程的其中之一的方法。二、蜂鸣器奏出音符音调(完整实例)#include#defineucharunsignedchar#defineuintunsignedintsbitfmq=P3^6;voiddelay(uinta){ucharb;while(a--){for(b=0;b<115;b++);
5、}}voidyanzou(uchari,uintpai){uchart;uintj;for(j=0;j6、64yanzou(147,196);//1拍高音5中音73低音147yanzou(131,220);//1拍高音6中音65低音131yanzou(116,247);//1拍高音7中音58低音116delay(250);yanzou(110,262);//1拍高音1中音110低音220yanzou(98,293);//1拍高音2中音98低音196yanzou(87,330);//1拍高音3中音87低音175yanzou(82,349);//1拍高音4中音82低音164yanzou(73,392);//1拍高音7、5中音73低音147yanzou(65,440);//1拍中音6yanzou(58,494);//1拍中音7delay(250);yanzou(55,524);//1拍高音1中音110低音220yanzou(49,587);//1拍高音2中音98低音196yanzou(44,660);//1拍高音3中音87低音175yanzou(41,698);//1拍高音4中音82低音164yanzou(37,784);//1拍高音5中音73低音147yanzou(33,880);//1拍高音6中音65低音131yanz8、ou(29,984);//1拍高音7中音58低音116delay(250);}}一、编程框架设置框架一:#include#defineucharunsignedchar#defineuintunsignedintsbitfmq=P3^6;voiddelay(uinta){ucharb;while(a--){for(b=0;b<115;b++);}}voidyanzou(uchari,uintpa
6、64yanzou(147,196);//1拍高音5中音73低音147yanzou(131,220);//1拍高音6中音65低音131yanzou(116,247);//1拍高音7中音58低音116delay(250);yanzou(110,262);//1拍高音1中音110低音220yanzou(98,293);//1拍高音2中音98低音196yanzou(87,330);//1拍高音3中音87低音175yanzou(82,349);//1拍高音4中音82低音164yanzou(73,392);//1拍高音
7、5中音73低音147yanzou(65,440);//1拍中音6yanzou(58,494);//1拍中音7delay(250);yanzou(55,524);//1拍高音1中音110低音220yanzou(49,587);//1拍高音2中音98低音196yanzou(44,660);//1拍高音3中音87低音175yanzou(41,698);//1拍高音4中音82低音164yanzou(37,784);//1拍高音5中音73低音147yanzou(33,880);//1拍高音6中音65低音131yanz
8、ou(29,984);//1拍高音7中音58低音116delay(250);}}一、编程框架设置框架一:#include#defineucharunsignedchar#defineuintunsignedintsbitfmq=P3^6;voiddelay(uinta){ucharb;while(a--){for(b=0;b<115;b++);}}voidyanzou(uchari,uintpa
此文档下载收益归作者所有