51单片机数字音乐盒代码示例
时间: 2023-12-15 14:05:48 浏览: 307
以下是一个简单的51单片机数字音乐盒的代码示例:
```
#include <reg51.h> // 包含51单片机头文件
// 定义IO口
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;
sbit beep = P2^3;
// 定义全局变量
unsigned char musicIndex = 0; // 当前播放的音乐编号
// 声明函数
void delay(unsigned int time);
void playMusic(unsigned char music);
void main()
{
while(1)
{
if(key1 == 0) // 按下按键1
{
musicIndex = 1;
playMusic(musicIndex);
}
else if(key2 == 0) // 按下按键2
{
musicIndex = 2;
playMusic(musicIndex);
}
else if(key3 == 0) // 按下按键3
{
musicIndex = 3;
playMusic(musicIndex);
}
else if(key4 == 0) // 按下按键4
{
musicIndex = 4;
playMusic(musicIndex);
}
else // 没有按键按下
{
beep = 0; // 关闭蜂鸣器
}
}
}
void delay(unsigned int time)
{
unsigned int i, j;
for(i = 0; i < time; i++)
{
for(j = 0; j < 125; j++);
}
}
void playMusic(unsigned char music)
{
switch(music)
{
case 1:
beep = 1; // 打开蜂鸣器
delay(500); // 播放500ms
beep = 0; // 关闭蜂鸣器
break;
case 2:
beep = 1; // 打开蜂鸣器
delay(1000); // 播放1000ms
beep = 0; // 关闭蜂鸣器
break;
case 3:
beep = 1; // 打开蜂鸣器
delay(1500); // 播放1500ms
beep = 0; // 关闭蜂鸣器
break;
case 4:
beep = 1; // 打开蜂鸣器
delay(2000); // 播放2000ms
beep = 0; // 关闭蜂鸣器
break;
default:
break;
}
}
```
这段代码使用了4个按键控制播放不同的音乐,每个音乐的播放时间不同。当按下按键后,会调用`playMusic()`函数播放相应的音乐。要注意的是,需要将蜂鸣器连接到P2.3口。
阅读全文