目录
具体实现功能
设计介绍
51单片机简介
资料内容
原理图和PCB(AD19)
仿真实现(protues8.7)
程序(Keil5)
全部资料
资料获取
具体实现功能
具体功能:
单片机内置8首歌曲,按键可以上一曲,下一曲,开始或暂停。
仿真/实物演示视频:
51单片机音乐盒
设计介绍
51单片机简介
51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。
本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。
资料内容
原理图(AD19)
本系统原理图设计采用Altium Designer19,具体如图。
注1:请使用Altium Designer19直接打开资料中的工程文件(资料中已说明打开方式)!
注2:此设计需按照原理图制作实物,不可直接烧录到任何开发板中运行(需要修改程序)!
仿真实现(protues8.7)
本设计利用protues8.7软件实现仿真设计,具体如图。
注1:请使用protues8.7直接打开资料中的工程文件(资料中已说明打开方式)!
注2:由于仿真软件限制,仿真设计和实物设计无法百分百对应!!
程序(Keil5)
本设计利用KEIL5软件实现程序设计。
主函数如下:
//////////////// 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 } } } }程序运行结果如图:
注:请使用KEIL C51直接打开资料中的工程文件(资料中已说明打开方式)!
全部资料
全部资料包括原理图(AD19)、程序(Keil5)、protues仿真(protues8.7)、设计报告(仅供参考)、仿真视频、开发资料、仿真视频、单片机最小系统介绍等,全网最全!资料内容如下图所示!!
资料获取
https://docs.qq.com/doc/DT1dDaG1VamdkV2N4