用单片机驱动蜂鸣器的演奏说明.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用单片机驱动蜂鸣器的演奏说明

用单片机驱动蜂鸣器演奏的方法说明 音的产生是由于物体的振动,通过单片机供电来控制蜂鸣器振动来发声。 单片机IO口通过高低电平快速切换形成频率可以驱动蜂鸣器发音。这样蜂鸣器就会以不同的音调“鸣响”。这里主要理解“音调”和“节拍”两个概念。 音调 表示一个音的频率是多少。即就是音的高低。在钢琴上,中央C所在音阶的A,(C D E F G A B)A的频率作为基准频率,440Hz。同时,需要知道如果f2 = f1*2,则称f2是f1的高八度,即f2和f1的音名相同,高度高了一个音阶。按照钢琴12平均律,将一个音阶的音均分成12份,那么每一个对应的音都可以计算出确定的频率了。 注意!八度音指频率加倍,将八度音分为12等份,是分为12个等比级数。f2=f1*2,且f1*=f2,可以计算,这个等比数列的比值是q===1.05946. 为了实现不同音的频率,需要单片机通过定时器不停的产生中断,实现管脚电平反转,来产生相应频率。这时定时器装载初始值如何计算呢?以标准A为例,A(f=440Hz),T=1/f=1/440=0=2272.73us,即单片机管脚要输出周期为2272.73us或者f=440Hz的方波。通过单片机定时中断来实现反转的话,考虑单片机定时器装载数值为多少才能形成2272us的定时中断呢? 假设系统时钟8MHz,则x/8MHz=2272.73us,x = 18181.1818... x取整数18181,即定时器应装载18181,才能产生440Hz的频率。 对应参考表格FIG1. FIG 1. 节拍 音乐的调号和节拍被表示成 1=C或者1=G,其中的C,或者G或者位于“=”之后的其他音名表示的意思是,以这个音名作为基础,唱作do。其后紧跟的类似一个分数的标识符,是说明该旋律以“1/分母”的时长为一个节拍,一个小结内有“分子”个拍子。而拍子就是只一个音的时值,也就是这个音要被唱或者演奏维持多长时间。那么问题是,音乐的每一个节拍的具体时长是多少呢?答案是根据每首曲子要求的速度来定。曲子会标注一个演奏速度,如60拍/分钟,90拍/分钟,指的是每分钟60拍,或者90拍,及1拍=1/60min, 1拍=1/90mini。 在单片机上控制音符的时值,就可以通过延时或者中断定时实现。 我们定好基本延时程序,16分音符为基本延长时间,则8分音符调用两次,4分音符调用4次,2分音符调用8次,全音符调用16次。每一个音的长度都是16分音符的整数倍。因而可以得到表: 1/16---1delay,2/16---2delay,3/16---3delay,···,64/16--64delay 我们在分析乐谱时候,看到每个音的时值,就能得到这个音相对于基本延时音的整数倍。 驱动原理 在弄清楚乐谱的节拍和音调两个概念之后,我们就可以来实现单片机播放音乐的基本原理了。 将一首乐谱中每一个音和这个音的时长,分别装载到两个字节中,那一整首乐谱有n多个依次出现的音符的音频率和对应时长组成的二维数组((音频率1)(时长1)),((音频率2)(时长2)),···,对了,用0x00表示休止符. M[][] = { {0x00 , 0xff }, //第一个音符 {}, {}, {},//第四个音符 } 举例,为了写出如下乐曲对应的数组,我们就要分析下,下面的乐谱以C大调,用到了g(), a(), c1(1), d1(2), e1(3), g1(5), a1(6), c2() 其音频率为196,220,262,294,330,392,440,523.再对其顺序的每个音符的时值做以计算,得到整个曲子的二维数组,a[0][0]装载频率,a[0][1]装载时值。 unsigned int m[59][2] = { {330,16}, {330,8}, {392,8}, {440,8}, {523,8}, {523,8}, {440,8}, {392,16}, {392,8}, {440,8}, {392,32}, {392,16}, {392,16}, {392,16}, {330,8}, {392,8}, {440,16}, {440,16}, {392,32}, {330,16}, {294,8}, {330,8}, {392,16}, {330,8}, {294,8}, {262,16}, {262,8}, {294,8}, {262,32}, {330,8}, {294,8}, {262,8}, {330,8}, {294,16}, {0,8}, {330,8}, {392,16}, {440,8}, {523,8}, {392,32}, {294,16}, {330,8}, {392,8},

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档