您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 基于51单片机数字音乐盒的设计
基于51单片机音乐盒设计湛俊朱斌杨裕庆1单片机实物设计题目:单片机音乐盒设计班级:K0312416-17姓名:湛俊朱斌杨裕庆学号:K031241705K031241632K031241737基于51单片机音乐盒设计湛俊朱斌杨裕庆2摘要本设计是一个基于STC89C51RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。本音乐盒共有四首歌曲,用4个按键控制。播放歌曲时,蜂鸣器发出某个音调。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。【关键词】STC89C51RC按键蜂鸣器LCD1602液晶基于51单片机音乐盒设计湛俊朱斌杨裕庆3目录前言.................................................................................................................................第一章工作原理..............................................................................................................1.1设计目标...............................................................................................................第二章软件设计与分析...................................................................................................2.1软件设计的组成...................................................................................................2.2各部分软件分析.................................................................................................2.2.1延时165MS,即十六分音符子函数..........................................................2.2.2延时1MS子函数......................................................................................2.2.3定时器0中断子函数..............................................................................2.2.4播放音乐子函数......................................................................................2.5定时器1中断子函数..................................................................................2.6按键扫描子函数.........................................................................................2.2.7主函数.....................................................................................................2.3总源程序............................................................................................................第三章软件仿真..............................................................................................................3.仿真图......................................................................................................................3.1元件清单...............................................................................................................总结.....................................................................................................................................参考文献..............................................................................................................................基于51单片机音乐盒设计湛俊朱斌杨裕庆4第一章工作原理1.1设计目标1.1.1基本功能具体要求是:以单片机为核心,设计一个数字音乐盒:利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少3首乐曲,每首不少于30s)。采用LCD显示信息。a.开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。b.可通过功能键选择乐曲、暂停、播放。基于51单片机音乐盒设计湛俊朱斌杨裕庆5第二章软件设计与分析2.1软件设计的组成该系统由延时165MS,即十六分音符子函数、延时1MS子函数、按键扫描子函数、播放音乐子函数、定时器1中断子函数、定时器0中断子函数、主函数和数据定义这几部分组成。2.2各部分软件分析2.2.1延时165MS,即十六分音符子函数//延时165MS,即十六分音符子函数voiddelay1(uintz){uintx,y;for(x=z;x0;x--)for(y=19000;y0;y--);}2.2.2延时1MS子函数//延时1MS子函数voiddelay2(uintz){uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);基于51单片机音乐盒设计湛俊朱斌杨裕庆6}2.2.3定时器0中断子函数//定时器0中断子函数voidt0()interrupt1//用于产生各种音调{TH0=a;TL0=b;BEEP=~BEEP;}2.2.4播放音乐子函数//播放音乐子函数voidsong(){uinttemp;ucharaa;//aa是简谱c=0;while(1){if(count2==0){break;}if(count2==1)//选曲temp=table1[c];if(count2==2)temp=table2[c];if(count2==3)temp=table3[c];基于51单片机音乐盒设计湛俊朱斌杨裕庆7if(count2==4)temp=table4[c];if(temp==0xff)break;aa=temp/16;//取数的高4位if(aa!=0){a=cuzhi[aa*2];b=cuzhi[aa*2+1];}else{TR1=0;BEEP=1;//关蜂鸣器}delay1(temp%16);//取数的低4位TR1=0;//唱完一个音停10MSBEEP=1;delay2(10);TR1=1;c++;}TR1=0;BEEP=1;}2.2.5定时器1中断子函数//定时器1中断子函数voidt1()interrupt3//用于产生各种音调{基于51单片机音乐盒设计湛俊朱斌杨裕庆8key();}2.2.6按键扫描子函数voidkey(){if(k3==0){delay2(10);if(k3==0){num1++;if(num1==1){TR1=0;aa=count2;count2=0;}if(num1==2){num1=0;count2=aa;TR1=1;}while(!k3);}}if(k4==0){delay2(10);基于51单片机音乐盒设计湛俊朱斌杨裕庆9if(k4==0){TR1=0;count2=0;c=0;write_com(0x01);//清屏write_com(0x80+0);write_date('W');write_com(0x80+1);write_date('e');write_com(0x80+2);write_date('l');write_com(0x80+3);write_date('c');write_com(0x80+4);write_date('o');write_com(0x80+5);write_date('m');write_com(0x80+6);write_date('e');write_com(0x80+7);write_date('');write_com(0x80+8);write_date('t');write_com(0x80+9);write_date('o');write_com(0x80+10);write_date('');write_com(0x80+11);write_date('u');write_com(0x80+12);基于51单片机音乐盒设计湛俊朱斌杨裕庆102.2.7主函数//主函数voidmain(){TMOD=0x10;//定时器0工作在方式1TH1=0;TL1=0;ET1=1;EA=1;//开总中断EX1=1;//开外部中断1IT1=1;//下降沿时触发中断EX0=1;//开外部中断0IT0=1;//下降沿时触发中断count2=0;//唱第一首歌LCD1602_init();while(1)//大循环{song();}}2.3总源程序#includereg51.h//51单片机头文件typedefunsignedcharuchar;typedefunsignedintuint;sbitRS=P2^7;//LCD1602数据/命令选择端(H/L)sbitRW=P2^6;//LCD1602读/写选择端(H/L)sbitE=P2^5;//LCD1602使能信号端基于51单片机音乐盒设计湛俊朱斌杨裕庆11sbitBEEP=P2^0;//蜂鸣器接口sbitk1=P3^2;//下一首sbitk2=P3^3;//上一首sbitk3=P2^1;//播放/暂停sbitk4=P2^2;//复位charcount2;//歌曲标志uchara,b,c,aa,num;ucharnum1,num2;//---------------------------简谱---------------------------------------//编程规则:字节高位是简谱,低位是持续时间,//代表多少个十六分音符//1-7代表中央C调,8-E代表高八度,0代表停顿//最后的0是结束标志ucharcodetable1[]={//千年之恋0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x
本文标题:基于51单片机数字音乐盒的设计
链接地址:https://www.777doc.com/doc-6435084 .html