c语言 无源蜂鸣器演奏小星星
时间: 2023-06-21 09:23:50 浏览: 77
以下是C语言实现无源蜂鸣器演奏小星星的程序示例:
```c
#include <reg52.h> //需要引用单片机头文件
sbit buzzer = P1^5; //定义无源蜂鸣器所在的IO口
void delay(int time) //延时函数
{
int i, j;
for(i = time; i > 0; i--)
for(j = 110; j > 0; j--); //110 是一个经验值,可以根据实际情况进行调整
}
void main()
{
int notes[] = {262, 262, 392, 392, 440, 440, 392, 0,
349, 349, 330, 330, 294, 294, 262, 0,
392, 392, 349, 349, 330, 330, 294, 0,
392, 392, 349, 349, 330, 330, 294, 0,
262, 262, 392, 392, 440, 440, 392, 0,
349, 349, 330, 330, 294, 294, 262, 0}; //小星星的音符
int beats[] = {4, 4, 4, 4, 4, 4, 2, 2,
4, 4, 4, 4, 4, 4, 2, 2,
4, 4, 4, 4, 4, 4, 2, 2,
4, 4, 4, 4, 4, 4, 2, 2,
4, 4, 4, 4, 4, 4, 2, 2,
4, 4, 4, 4, 4, 4, 2, 2}; //小星星的节拍
int i;
for(i = 0; i < 48; i++) //循环演奏小星星的音符
{
if(notes[i] == 0) //如果是休止符,则延时节拍时间
{
delay(beats[i] * 100);
}
else //否则发出对应的音符
{
buzzer = 1; //IO口输出高电平,使无源蜂鸣器发出声音
delay(500 / notes[i]); //延时一段时间,控制音符的音调和持续时间
buzzer = 0; //IO口输出低电平,使无源蜂鸣器停止发声
delay(beats[i] * 50); //再次延时一段时间,控制音符之间的间隔时间
}
}
}
```
请将上述程序下载到单片机中运行,即可听到演奏小星星的声音。如需修改曲谱,可以按照示例中的格式进行调整。