3.7.4 利用单片机实现音乐的节拍
2025年09月21日
3.7.4 利用单片机实现音乐的节拍
除了音符以外,节拍也是音乐的关键组成部分。
节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现。如果1/4拍的延时设为0.4 s,则1拍的延时是1.6 s。只要知道1/4拍的延时时间,其余的节拍延时时间就是它的倍数。
声音的频谱范围为几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,若再利用延时程序控制“高”、“低”电平的持续时间,就能改变输出频率,从而改变音调。
一个音符对应一个频率,通过扬声器,就可以发出这个音符的声音。将一段乐曲的音符对应频率的方波依次送到扬声器,就可以演奏出这段乐曲。利用定时器控制单片机的I/O引脚输出方波,将相应的一种频率的计数初值写入计数器,就可以产生对应频率的方波。计算初值的方法为
计数初值=输入时钟÷输出频率
例如,输入时钟采用1 MHz,要得到800 Hz的频率,计数初值即为1000000÷800。音符与频率对照关系如表3.11所示。对于每一个音符的演奏时间,可以通过软件延时来处理。首先确定单位延时时间程序(根据CPU频率的不同而有所变化),然后确定每个音符发音的相对时间需要几个单位时间,就调用几次延时子程序即可。
表3.11 音符与频率对照关系 (单位:Hz)