写一段51单片机蜂鸣器音乐的C语言代码
时间: 2023-09-22 20:08:24 浏览: 268
基于51单片机蜂鸣器发声的 C语言程序
好的,以下是一段51单片机蜂鸣器音乐的C语言代码,能够演奏一首简单的《小星星》:
```c
#include <reg51.h>
// 定义蜂鸣器连接的引脚
sbit Buzzer_Pin = P1^0;
// 定义延时函数
void Delay(unsigned int Count)
{
unsigned int i;
for(i = 0; i < Count; i++)
{
// 1ms 延时
TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x66;
TR0 = 1;
while(TF0 == 0);
TR0 = 0;
TF0 = 0;
}
}
// 主函数
void main()
{
unsigned char i;
unsigned int Music[] = { // 音符频率数组
262, 294, 330, 262, 262, 294, 330, 262,
330, 349, 392, 330, 349, 392, 392, 440,
392, 349, 330, 262, 392, 440, 392, 349,
330, 262, 262, 196, 262, 262, 294, 262,
330, 349, 392, 330, 349, 392, 392, 440,
392, 349, 330, 262, 392, 440, 392, 349,
330, 262, 262, 196, 262, 262, 294, 262,
330, 392, 440, 494, 392, 440, 494, 523
};
unsigned char Music_Time[] = { // 音符时长数组
4, 4, 8, 4, 4, 8, 4, 4,
4, 4, 8, 4, 4, 8, 4, 4,
4, 4, 8, 4, 4, 8, 4, 4,
4, 4, 8, 4, 4, 8, 4, 4,
4, 4, 8, 4, 4, 8, 4, 4,
4, 4, 8, 4, 4, 8, 4, 4,
4, 4, 8, 4, 4, 8, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4
};
while(1)
{
for(i = 0; i < 64; i++)
{
if(Music[i] != 0)
{
// 演奏音符
Buzzer_Pin = 1;
Delay(Music_Time[i] * 50);
Buzzer_Pin = 0;
Delay(10); // 音符之间的间隔
}
else
{
// 结束演奏
break;
}
}
// 延时一段时间再重新演奏
Delay(500);
}
}
```
以上代码中,我们定义了一个音符频率数组和一个音符时长数组,分别表示演奏的音符和它们的时长。在主函数中,我们使用一个循环来遍历这两个数组,并根据数组中的数值来控制蜂鸣器演奏声音。
希望这个代码能够帮助到你,如果有任何问题,欢迎随时提出!
阅读全文