欢迎来到天天文库
浏览记录
ID:39118902
大小:109.50 KB
页数:3页
时间:2019-06-25
《单片机控制蜂鸣器唱歌的原理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。1)音调的确定音调就是我们常说的音高。它是由频率来确定的!我们可以查出各个音符所对应的相应的频率,那么现在就需要我们来用51来发出相应频率的声音!我们常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音
2、,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例:A的频率f=440Hz,其对应的周期为:T=1/f=1/440=2272μs那么,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t=T/2=2272/2=1136μs,也就是清零、置位在一个周期内完成.这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定:t=12*(TALL–THL)/f0式中TALL=
3、216=65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:TH=THL/256=(TALL–t*f0/12)/256TL=THL%256=(TALL–t*f0/12)%256将t=1136μs代入上面两式(注意:计算时应将时间和频率的单位换算一致)即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的时器高低计数器的予置初值为:TH440Hz=(65536–1136*12/12)/256=FBHTL440Hz=(65536–1136*12/12)%256=90H就这样,我们通过延时,发出了我们所需
4、要的频率以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示:2)节拍的确定在一张乐谱中,我们经常会看到这样的表达式,如1=C(4/4)、1=G(3/4)……等等,这里1=C(4/4),1=G(3/4)表示乐谱的曲调,和我们前面所谈的音调有很大的关联,4/4、3/4就是用来表示节拍的。以3/4为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。其中1、2为一拍,3、4、5为一拍,6为一拍共三拍。1、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的
5、一半,即为八分音符长,6的时长为四分音符长。一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms。
此文档下载收益归作者所有