
音乐与灯光共舞
简介
“倾听音乐的流动,感受光影的韵律——音乐与灯光共舞“ 基于51单片机实现音乐盒和流水灯的结合,LED灯可跟随音乐节奏进行闪烁,同时还具有一键切歌、音量可调等功能。
简介:“倾听音乐的流动,感受光影的韵律——音乐与灯光共舞“ 基于51单片机实现音乐盒和流水灯的结合,LED灯可跟随音乐节奏进行闪烁,同时还具有一键切歌、音量可调等功能。开源协议
:Public Domain
(未经作者授权,禁止转载)描述
基本功能
- 上电后默认流水灯状态,蜂鸣器不发声;
- 按下切换键后开始蜂鸣器演奏音乐,同时LED灯跟随音乐节奏进行交替闪烁;
- 播放过程中按下暂停键可实现音乐的暂停与播放;
- 按下切换键可以实现切歌。
原理图

PCB设计


部分代码
主函数:
unsigned char state;
void main()
{
EX_Init();
InitialSound();
while(1)
{
switch(state)
{
case 0:
TR0 =0;
TR1 =0;
LED1();
break;
case 1:
P1 = 0xff;
Play(Music_QHC,4,2,185);
break;
case 2:
P1 = 0xff;
Play(Music_AT,4,2,480);
break;
case 3:
P1 = 0xff;
Play(Music_GZQS,8,2,305);
break;
default:
break;
}
}
}
外部中断:
sbit Pause = P3^2; //定义输出管脚sbit Shift = P3^3; //定义输出管脚
void EX_Init(){ IT0 = 1; IT1 = 1; EX0 = 1; EX1 = 1;}
void EX0_ISR() interrupt 0 //暂停按键功能{ if(Pause == 0) { DelayXms(10); if(Pause == 0) { TR0 =~TR0; TR1 =~TR1; }while(Pause == 0); } }
void EX1_ISR() interrupt 2 //切换按键功能{ DelayXms(10); if(Shift == 0) { state++; if(state == 4) state = 0; } }
LED跟随音乐:
unsigned int LED_Time;
void BeepTimer0(void) interrupt 1 //音符发生中断{ BeepIO = !BeepIO; TH0 = Sound_Temp_TH0; TL0 = Sound_Temp_TL0; LED_Time++; if(LED_Time == 200) { LED_Time = 0; P1 = ~P1; P1 = _irol_(P1, LED_Temp/100%10); }}
实物展示说明




注意事项
- 需使用micro usb或type-c进行供电;
- 建议先焊接贴片的type-c座,避免被其他直插元器件挡住;
- 右侧多留出来的2.54排针为既为备用电源接口,又可配合P3.0和P3.1端子进行烧录;
- 旋转电位器可对音量进行调节,但音量过大时易产生刺耳的噪声;
- 代码中需进行按键消抖处理,虽然在proteus仿真中没问题,但在实际使用中仍有小概率会按键失灵。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论