编写一个51单片机播放两只老虎的程序
时间: 2023-08-14 13:03:27 浏览: 95
以下是一个基于51单片机的播放两只老虎的程序:
```c
#include <reg52.h>
// 定义每个音符的频率
#define C4 0x9C // 261.6 Hz
#define D4 0x8C // 293.7 Hz
#define E4 0x7C // 329.6 Hz
#define F4 0x6C // 349.2 Hz
#define G4 0x5C // 392.0 Hz
#define A4 0x4C // 440.0 Hz
#define B4 0x3C // 493.9 Hz
// 定义每个音符的时间
#define BEAT_1 500
#define BEAT_2 1000
#define BEAT_3 1500
// 定义两只老虎的音符序列
int tiger_notes[] = {C4, C4, D4, D4, E4, E4, C4, C4, D4, D4, E4, E4, E4, F4, F4, E4, E4, D4, D4, C4, C4, E4, E4, F4, F4, G4, G4, E4, E4, F4, F4, G4, G4, G4, A4, A4, G4, G4, F4, F4, E4, E4, C4, C4, G4, G4, A4, A4, B4, B4, C4, C4, C4, C4, G4, G4, A4, A4, B4, B4, C4, C4, C4, C4, G4, G4, A4, A4, G4, G4, F4, F4, E4, E4, C4, C4};
int tiger_beats[] = {BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_2, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_2, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_3, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_1, BEAT_2};
void delay(int ms) {
int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 120; j++) {
// do nothing
}
}
}
void play_music() {
int i;
for (i = 0; i < sizeof(tiger_notes) / sizeof(int); i++) {
TH0 = (65536 - tiger_notes[i]) / 256;
TL0 = (65536 - tiger_notes[i]) % 256;
TR0 = 1;
delay(tiger_beats[i]);
TR0 = 0;
delay(10);
}
}
void main() {
TMOD = 0x01; // 定时器0工作在模式1
TH0 = 0;
TL0 = 0;
while (1) {
play_music();
delay(3000); // 播放完毕后停顿3秒
}
}
```
该程序使用定时器0来控制播放的音符和时间,使用`delay()`函数来控制每个音符的播放时间和音符之间的停顿时间。在`main()`函数中,程序会循环播放两只老虎的音符序列,并在每次播放结束后停顿3秒,以便重新开始播放。请注意,该程序中的音符频率和时间都是根据实际情况进行调试的,您可以根据自己的需要进行修改。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)