一.硬件设计
本设计的硬件主要由51单片机最小系统(AT89C51/52、AT89S51/52、STC89C51/52均通用)、LED指示灯、LM386功率放大电路、喇叭、按键电路等构成。
二.设计功能
- 本设计内置8首歌曲,按键可以上一曲,下一曲,开始或暂停。电位器可以调节音量。采用LM386功放电路,最大可提供0.5W音频功能。
- 本设计一共由4个按键;单独按键为系统的复位按键;其他三个按键分别为:上一曲、开始/暂停、下一曲。
三.设计原理图
(1)LM386功率放大电路
音频的产生主要由STC89C51的I/O口产生一定频率的方波脉冲,通过LM386功放电路驱动喇叭发出不同的音调从而演凑乐曲。功率放大电路如下:
(2)整体原理图
整体原理主要是通过控制51单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳动听的音乐。
四.程序设计文章来源:https://www.toymoban.com/news/detail-504249.html
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
}
}
}
}
链接:https://pan.baidu.com/s/11dPDA4LHyH8J-Vxg89Fp8Q
提取码:vvin文章来源地址https://www.toymoban.com/news/detail-504249.html
到了这里,关于51单片机的音乐盒设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!