51单片机音乐代码晴天
时间: 2024-04-14 11:25:09 浏览: 18
51单片机是一种常用的微控制器,可以用于嵌入系统的开发。下面是一个简单的51单片机音乐代码示例,实现了播放《晴天》这首歌曲的功能:
```c
#include <reg51.h>
// 定义音符频率
#define C4 262
#define D4 294
#define E4 330
#define F4 349
#define G4 392
#define A4 440
#define B4 494
// 定义音符时长
#define W 1000 // 全音符
#define H 500 // 二分音符
#define Q 250 // 四分音符
#define E 125 // 八分音符
// 延时函数
void delay(unsigned int t) {
unsigned int i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
// 发声函数
void beep(unsigned int freq, unsigned int duration) {
unsigned int i, t;
t = 1000000 / freq;
t = t / 2;
for (i = duration / t; i > 0; i--) {
P1 = ~P1; // P1口取反,产生方波
delay(t);
}
}
void main() {
while (1) {
// 晴天-周杰伦
beep(E4, Q);
beep(E4, Q);
beep(F4, E);
beep(G4, Q);
beep(G4, Q);
beep(F4, E);
beep(E4, Q);
beep(D4, Q);
beep(C4, H);
beep(E4, Q);
beep(E4, Q);
beep(F4, E);
beep(G4, Q);
beep(G4, Q);
beep(F4, E);
beep(E4, Q);
beep(D4, Q);
beep(C4, H);
beep(C4, Q);
beep(D4, Q);
beep(E4, Q);
beep(C4, Q);
beep(A4, Q);
beep(G4, E);
beep(E4, Q);
beep(E4, Q);
beep(F4, E);
beep(G4, Q);
beep(G4, Q);
beep(F4, E);
beep(E4, Q);
beep(D4, Q);
beep(C4, H);
delay(2000); // 延时2秒
}
}
```
这段代码使用了51单片机的GPIO口产生方波来发声,通过调用`beep`函数来播放不同的音符。你可以将这段代码下载到51单片机开发板上运行,即可听到《晴天》这首歌曲。