51单片机蜂鸣器音乐代码
时间: 2023-07-02 22:10:32 浏览: 346
以下是一个简单的51单片机蜂鸣器音乐代码示例:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
// 音符频率定义
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
// 延时函数
void DelayMs(uint ms)
{
uint i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 114; j++);
}
// 播放音符
void PlayNote(uint note, uint duration)
{
uint i;
uint period = 1000000 / note; //计算周期
uint delay = period / 2; //计算延时时间
uint cycles = duration * note / 1000; //计算循环次数
for (i = 0; i < cycles; i++)
{
P1 = 0x00; //输出高电平
DelayMs(delay);
P1 = 0x01; //输出低电平
DelayMs(delay);
}
}
// 主函数
void main()
{
uchar i;
while (1)
{
// 播放音乐
PlayNote(NOTE_C4, 200);
PlayNote(NOTE_D4, 200);
PlayNote(NOTE_E4, 200);
PlayNote(NOTE_F4, 200);
PlayNote(NOTE_G4, 200);
PlayNote(NOTE_A4, 200);
PlayNote(NOTE_B4, 200);
// 停顿一秒
DelayMs(1000);
}
}
```
在上面的代码示例中,我们定义了一些常量来表示不同的音符频率,然后通过 `PlayNote()` 函数来播放不同的音符。在主函数中,我们可以通过调用 `PlayNote()` 函数来播放一段旋律,并且通过调用 `DelayMs()` 函数来控制每个音符之间的时间间隔。