历史上的今天
今天是:2024年10月12日(星期六)
2021年10月12日 | 基于51单片机的音乐盒设计
2021-10-12 来源:eefocus
一.硬件方案
本设计以51单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C语言进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动蜂鸣器发出不同音调的音乐,再利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳动听的音乐。
主要由51单片机+最小系统+LM386功放电路+喇叭+LED指示灯模块+按键模块;如图:

二.设计功能
(1)采用外部加功放电路,LM386芯片驱动喇叭,构成音乐演奏器的硬件电路;
(2)内置8首歌曲;
(3)四个按键功能:单独的是复位按键,上一曲、开始/暂停、下一曲;
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

四.软件设计
(1)程序流程图

(2)主程序源码
void main(void)
{
TMOD=0x11; //T0 T1 均在工作方式1
ET0=1; //T0开中断
EA=1; //CPU开中断
while(1)
{
music_play(); //根据当前状态播放相应歌曲的某个音符
if(!pause) //暂停键处理
{
delayms(5);
if(!pause)
{
if(music_num==0) //music_num=0只有在刚开机,且未按下暂停键时存在,表示刚开机时的状态,按下后从第一首开始播放
{
music_num=1; //歌曲序号置1
num=0; //从头播放
play_enable=1; //允许播放
}
else
{
play_enable=~play_enable;
speaker=1;
}
while(!pause) //若按着暂停键不放手时的处理
{
if(play_enable==0){} //如果是暂停,则显示时间不变//(暂停时play_enable==0)
}
}//暂停键处理结束
}//while结束
if((!play_up)&&(music_num!=0)) //上一首按键
{
delayms(5);
if((!play_up)&&(music_num!=0))
{ speaker=1;
music_num-=1;//歌曲编号减一
if(music_num<=0)
music_num=8;
num=0; //从头开始播放
if(music_num==(sound_amount+1))
music_num=1;
delayms(500);//歌曲切换时延时0.5S
}
}
if((!play_down)&&(music_num!=0))
{
delayms(5);
if((!play_down)&&(music_num!=0))
{ speaker=1;
music_num+=1;//歌曲编号加一
if(music_num>=9)
music_num=1;
num=0; //从头开始播放
if(music_num==0)
music_num=sound_amount;
delayms(500);//歌曲切换时延时0.5S
}
}
}
}
下一篇:基于51单片机的无线防盗报警器
史海拾趣
|
火电厂的供电系统并不是连续而且恒定的,大型设备的启停、开关操作,电气工作段上负载长时间较大,故障情况下电气工作段的切换都会影响电力的正常供应,对计算机和微处理器产生干扰或破坏。 我公司的自动化程度较高,其设计安装采用的人机接口 ...… 查看全部问答> |
|
我使用g_hHook = QASetWindowsJournalHook(WH_JOURNALRECORD, MouseProc, &msg);返回成功了 LRESULT MouseProc(int nCode, WPARAM wParam, LPARAM lParam) { NKLOG(L\"that\'s it!!\"); ...… 查看全部问答> |
|
联络一切对BIOS与引导区技术感兴趣的人士,注重理论与实践的结合,交流技术资料与实践心得,对重要贡献者给予现金等奖励!当 前以80X86为主要探究方向!… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:28 编辑 昨晚再此分贴下看到一个广告,说是NI- Multisim11免费,点击后就看到了下载路径,试探着花了2个小时下载了300多M的安装文件,安装了10多分钟,运行时还是提示要么注册,要么输入20位的认证码!而解压 ...… 查看全部问答> |
|
【我给XILINX资源中心做贡献】FPGA设计指南:器件、工具和流程 FPGA设计指南:器件、工具和流程 很好的书籍 内容简介 本书用简洁的语言向读者展示了什么是FPGA、FPGA如何工作、如何对FPGA编程以及FPGA设计中遇到的各种概念、器件和工具,如传统的基于 HDL/RTL的仿真和逻辑综合 ...… 查看全部问答> |
|
单片机C语言程序设计实训100例(基于8051+Proteus仿真) 听说有人要“单片机C语言程序设计实训100例(基于8051+Proteus仿真)”分享给需要的人了,希望对你们有点帮助。… 查看全部问答> |




