51单片机无源蜂鸣器音乐编程实战:从乐理到《小星星》完整实现
1. 无源蜂鸣器音乐编程基础
在嵌入式开发中,无源蜂鸣器因其成本低廉、音调可控的特性,常被用于简单音乐播放功能。与有源蜂鸣器不同,无源蜂鸣器需要外部提供特定频率的方波信号才能发声。这种特性使得我们可以通过编程精确控制音高和节奏。
无源蜂鸣器工作原理 :
- 无内部振荡电路,依赖外部脉冲驱动
- 发声频率与输入方波频率直接相关
- 音高由频率决定,音量由占空比调节
// 基本驱动示例
sbit Buzzer = P2^5; // 假设蜂鸣器连接P2.5
void playTone(unsigned int frequency, unsigned long duration) {
unsigned long period = 1000000 / frequency; // 计算周期(μs)
unsigned long cycles = duration * 1000 / period;
for(unsigned long i=0; i<cycles; i++) {
Buzzer = ~Buzzer;
delay_us(period/2); // 半周期延时
}
Buzzer = 0; // 关闭蜂鸣器
}
2. 音乐编程的乐理基础
要将乐谱转换为单片机代码,需要理解以下几个音乐要素:
音高与频率对应关系 :
| 音符 | 频率(Hz) | 音符 | 频率(Hz) |
|---|---|---|---|
| C4 |

&spm=1001.2101.3001.5002&articleId=162742853&d=1&t=3&u=629a1cc6a2954b4089d28308351147ce)
1万+

被折叠的 条评论
为什么被折叠?



