51单片机电子音乐的代码
时间: 2023-11-08 08:04:20 浏览: 93
以下是一个简单的51单片机电子音乐的代码,其中包括了几个简单的音乐片段。
```c
#include <reg51.h> //51单片机头文件
#define uint unsigned int //定义无符号整数类型
#define uchar unsigned char //定义无符号字符类型
//各个音符频率
#define DO 0x3f
#define RE 0x45
#define MI 0x4e
#define FA 0x51
#define SOL 0x5b
#define LA 0x64
#define SI 0x71
//延时函数
void delay(uint xms)
{
uint i, j;
for (i = xms; i > 0; i--)
for (j = 112; j > 0; j--);
}
//主函数
void main()
{
uchar i, j;
while (1)
{
//播放儿歌《小星星》
for (i = 0; i < 2; i++)
{
P1 = 0xfe; //输出低电平
for (j = 0; j < 16; j++) //循环播放16个音符
{
P0 = DO; //发出DO音
delay(100); //延时一段时间
P0 = DO; //发出DO音
delay(100);
P0 = SOL; //发出SOL音
delay(100);
P0 = SOL; //发出SOL音
delay(100);
P0 = LA; //发出LA音
delay(100);
P0 = LA; //发出LA音
delay(100);
P0 = SOL; //发出SOL音
delay(1000); //延时一段时间
}
}
//播放《欢乐颂》
P1 = 0xfd; //输出低电平
for (i = 0; i < 2; i++)
{
P0 = MI; //发出MI音
delay(400);
P0 = MI; //发出MI音
delay(400);
P0 = FA; //发出FA音
delay(400);
P0 = SOL; //发出SOL音
delay(400);
P0 = SOL; //发出SOL音
delay(400);
P0 = FA; //发出FA音
delay(400);
P0 = MI; //发出MI音
delay(800);
P0 = DO; //发出DO音
delay(400);
P0 = DO; //发出DO音
delay(400);
P0 = SI; //发出SI音
delay(400);
P0 = LA; //发出LA音
delay(400);
P0 = LA; //发出LA音
delay(400);
P0 = SI; //发出SI音
delay(400);
P0 = DO; //发出DO音
delay(800);
}
//播放《天空之城》
P1 = 0xfb; //输出低电平
for (i = 0; i < 2; i++)
{
P0 = SOL; //发出SOL音
delay(400);
P0 = SOL; //发出SOL音
delay(400);
P0 = LA; //发出LA音
delay(400);
P0 = LA; //发出LA音
delay(400);
P0 = DO; //发出DO音
delay(400);
P0 = DO; //发出DO音
delay(400);
P0 = SOL; //发出SOL音
delay(800);
P0 = LA; //发出LA音
delay(400);
P0 = LA; //发出LA音
delay(400);
P0 = SI; //发出SI音
delay(400);
P0 = SOL; //发出SOL音
delay(400);
P0 = FA; //发出FA音
delay(400);
P0 = FA; //发出FA音
delay(400);
P0 = MI; //发出MI音
delay(800);
}
}
}
```
注意:以上代码只是一个简单的示例,实际的音乐代码会更加复杂,需要根据具体需求来编写。此外,音乐播放需要使用外部音箱等设备,需要进行相应的硬件连接。