51单片机蜂鸣器音乐
时间: 2023-07-02 16:08:20 浏览: 50
51单片机通过控制蜂鸣器可以发出不同的音乐,下面给出一个简单的例子:
```c
#include <reg52.h> // 51单片机头文件
sbit beep = P1^5; // 定义蜂鸣器控制引脚
void delay(unsigned int t) // 延时函数,单位为毫秒
{
unsigned int i, j;
for(i=0; i<t; i++)
for(j=0; j<120; j++);
}
void main()
{
unsigned char i;
unsigned char music[] = {0x02, 0x04, 0x05, 0x04, 0x02, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x02, 0x07, 0x07, 0x05, 0x05, 0x04, 0x04, 0x02, 0x02, 0x07, 0x05, 0x04, 0x02, 0x01, 0x02, 0x02}; // 音乐数据,每个元素代表一个音符的编号,可以自己定义不同的音乐
while(1)
{
for(i=0; i<sizeof(music); i++) // 播放音乐
{
switch(music[i])
{
case 0x01: beep = 1; delay(150); beep = 0; delay(150); break; // 发出1号音符
case 0x02: beep = 1; delay(300); beep = 0; delay(150); break; // 发出2号音符
case 0x04: beep = 1; delay(600); beep = 0; delay(150); break; // 发出4号音符
case 0x05: beep = 1; delay(1200); beep = 0; delay(150); break; // 发出5号音符
case 0x07: beep = 1; delay(2400); beep = 0; delay(150); break; // 发出7号音符
}
}
delay(2000); // 停顿2秒
}
}
```
在这个例子中,我们通过P1口的第5个引脚控制蜂鸣器。定义了一个音乐数据,每个元素代表一个音符的编号,其中1、2、4、5、7分别代表不同的音符。然后在主函数中循环播放音乐,并在每个音符后停顿一段时间。