一.硬件方案
本设计以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
}
}
}
}
全套资料下载地址: