c51单片机蜂鸣器歌曲
时间: 2023-07-24 16:16:26 浏览: 228
我可以为您提供一个简单的c51单片机蜂鸣器歌曲示例程序,您可以根据需要进行修改。
```c
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P1^5; //定义蜂鸣器控制引脚
//定义简单的音符和节拍
uchar code song[]={
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x01, //音符
0x01,0x02,0x03,0x04,0x04,0x05,0x06,0x01, //音符
0x03,0x03,0x04,0x05,0x06,0x06,0x07,0x01, //音符
0x05,0x06,0x07,0x01,0x02,0x03,0x02,0x01, //音符
0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x04, //音符
0x05,0x05,0x06,0x06,0x07,0x07,0x01,0x01, //音符
0x02,0x02,0x03,0x03,0x04,0x04,0x05,0x05, //音符
0x06,0x06,0x07,0x07,0x01,0x01,0x02,0x02, //音符
0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06, //音符
0x07,0x07,0x01,0x01,0x02,0x02,0x03,0x03, //音符
0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07, //音符
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, //音符
};
uchar code time[]={
1,1,1,1,1,1,2,1, //节拍
1,1,1,1,1,1,2,1, //节拍
1,1,1,1,1,1,2,1, //节拍
1,1,1,1,1,1,2,1, //节拍
1,1,1,1,1,1,1,1, //节拍
1,1,1,1,1,1,2,1, //节拍
1,1,1,1,1,1,1,1, //节拍
1,1,1,1,1,1,2,1, //节拍
1,1,1,1,1,1,1,1, //节拍
1,1,1,1,1,1,2,1, //节拍
1,1,1,1,1,1,1,1, //节拍
1,1,1,1,1,1,1,1, //节拍
};
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uchar i,j;
while(1)
{
for(i=0;i<72;i++) //循环播放歌曲
{
for(j=0;j<time[i];j++) //根据节拍播放音符
{
beep=0;
delay(song[i]*10);
beep=1;
delay(1);
}
delay(10); //每个音符之间的间隔
}
}
}
```
这个示例程序使用了一个简单的歌曲,可以通过修改 `song[]` 和 `time[]` 数组来播放不同的歌曲。同时,根据需要还可以修改每个音符的持续时间和间隔时间。
阅读全文