c51蜂鸣器音乐程序
时间: 2023-08-13 19:07:32 浏览: 189
下面是一个简单的基于c51单片机的蜂鸣器音乐程序:
```c
#include <reg51.h>
// 定义蜂鸣器控制端口
sbit buzzer = P2^3;
// 定义音符频率值
#define C4 261
#define D4 294
#define E4 329
#define F4 349
#define G4 392
#define A4 440
#define B4 494
#define C5 523
// 定义节拍时间
#define T4 500
#define T8 250
#define T16 125
// 声明函数
void play(int note, int duration);
void main() {
// 播放音乐
play(C4, T4);
play(D4, T4);
play(E4, T4);
play(F4, T4);
play(G4, T4);
play(A4, T4);
play(B4, T4);
play(C5, T4);
}
// 播放音符函数
void play(int note, int duration) {
int i, cycle;
cycle = 1000000 / (note * 2);
for (i = 0; i < duration / cycle; i++) {
buzzer = 1;
DelayUs(cycle);
buzzer = 0;
DelayUs(cycle);
}
}
// 微秒级延时函数
void DelayUs(unsigned int us) {
unsigned int i;
while (us--) {
for (i = 0; i < 12; i++);
}
}
```
这个程序会依次播放简单的音乐。其中, `play()` 函数用于播放一个音符,接收两个参数,第一个是音符的频率,第二个是该音符的持续时间。程序中的 `main()` 函数中依次调用 `play()` 函数来播放每个音符。
需要注意的是,这个程序需要你连接一个蜂鸣器到单片机的 P2.3 端口上才能正常运行。同时,由于单片机的计时精度有限,音乐的节拍时间可能会有些误差。
阅读全文