用51单片机写一个蜂鸣器播放音乐的代码
时间: 2023-05-24 08:01:15 浏览: 2571
以下是一个用51单片机实现蜂鸣器播放音乐的基本代码:
#include <reg51.h>
#define beep P1_5 //蜂鸣器连接的引脚
void delay(unsigned int t) //延时函数
{
unsigned int i, j;
for(i = t; i > 0; i--)
for(j = 110; j > 0; j--);
}
void play(int note, int duration) //播放指定音符
{
int period = 1000000 / note; //计算音符周期
int pulse = period / 2; //计算半个周期的脉宽
while(duration > 0) //持续一定时间
{
beep = 1; //输出高电平
delay(pulse); //延时半个周期
beep = 0; //输出低电平
delay(pulse); //延时半个周期
duration -= period; //减去一个周期的时间
}
delay(20); //延时一段时间,以避免相邻音符重叠
}
void main()
{
while(1) //不断循环播放音乐
{
play(261, 500); //播放 "中音C" 音符 500ms
play(294, 500); //播放 "D" 音符 500ms
play(330, 500); //播放 "E" 音符 500ms
play(349, 500); //播放 "F" 音符 500ms
play(392, 500); //播放 "G" 音符 500ms
play(440, 500); //播放 "A" 音符 500ms
play(494, 500); //播放 "B" 音符 500ms
play(523, 1000); //播放 "高音C" 音符 1000ms
delay(500); //延时一段时间,以避免循环过快
}
}