单片机一闪一闪亮晶晶蜂鸣器音乐代码
时间: 2023-07-09 17:21:56 浏览: 197
以下是一个简单的单片机一闪一闪亮晶晶蜂鸣器音乐代码,使用的是8051单片机和KEIL C编译器:
```c
#include <reg52.h> // 引入reg52.h头文件
// 定义音符频率
#define C 523
#define D 587
#define E 659
#define F 698
#define G 784
#define A 880
#define B 988
// 定义延时函数
void delay(unsigned int i)
{
while(i--);
}
// 定义蜂鸣器函数
void buzzer(unsigned int freq, unsigned int duration)
{
unsigned int i;
unsigned int t = 1000000 / freq; // 计算每个蜂鸣器周期的时间
unsigned int n = duration / t; // 计算蜂鸣器周期数
while(n--)
{
P1 = 0x01; // 设置P1.0为高电平,蜂鸣器响起
for(i = 0; i < 200; i++)
{
delay(t / 400); // 延时半个周期
}
P1 = 0x00; // 设置P1.0为低电平,蜂鸣器停止响
for(i = 0; i < 200; i++)
{
delay(t / 400); // 延时半个周期
}
}
}
void main()
{
while(1)
{
// 一闪一闪亮晶晶,先闪3次
P2 = 0x00; // 设置P2口为低电平
delay(1000); // 延时1s
P2 = 0xff; // 设置P2口为高电平
delay(1000); // 延时1s
P2 = 0x00; // 设置P2口为低电平
delay(1000); // 延时1s
P2 = 0xff; // 设置P2口为高电平
delay(1000); // 延时1s
P2 = 0x00; // 设置P2口为低电平
delay(1000); // 延时1s
P2 = 0xff; // 设置P2口为高电平
delay(1000); // 延时1s
// 播放音乐
buzzer(C, 500); // 播放C音符,持续500ms
delay(500); // 延时500ms
P2 = 0x00; // 设置P2口为低电平,LED灯亮起
buzzer(D, 500); // 播放D音符,持续500ms
delay(500); // 延时500ms
P2 = 0xff; // 设置P2口为高电平,LED灯熄灭
buzzer(E, 500); // 播放E音符,持续500ms
delay(500); // 延时500ms
P2 = 0x00; // 设置P2口为低电平,LED灯亮起
buzzer(F, 500); // 播放F音符,持续500ms
delay(500); // 延时500ms
P2 = 0xff; // 设置P2口为高电平,LED灯熄灭
buzzer(G, 500); // 播放G音符,持续500ms
delay(500); // 延时500ms
P2 = 0x00; // 设置P2口为低电平,LED灯亮起
buzzer(A, 500); // 播放A音符,持续500ms
delay(500); // 延时500ms
P2 = 0xff; // 设置P2口为高电平,LED灯熄灭
buzzer(B, 500); // 播放B音符,持续500ms
delay(500); // 延时500ms
P2 = 0x00; // 设置P2口为低电平,LED灯亮起
}
}
```
代码中先让LED灯闪烁3次,然后通过调用`buzzer`函数来播放一段简单的音乐,并在播放过程中让LED灯一闪一闪。其中,`P2`口用于控制LED灯的亮灭,`buzzer`函数用于控制蜂鸣器的响声和停止。