如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
简易电子琴的设计一.设计目的设计一个简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符,并且能具备自动播放功能。使用元件:AT89C51,喇叭,按键,三极管等。(1).能够实现基本的琴键功能即每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置通过程序来控制,使蜂鸣器发著不同频率的声音,声音延迟延迟一段时间,等到按键放开后,声音停止。然后再继续扫描,看是否有键按下,如此循环下去,即实现基本的琴键功能。(2).能够实现通过按键自动播放歌曲的功能在键盘上设置一个功能键,按下之后会根据功能键跳转到自动播放歌曲的程序,来播放相应的歌曲。本次设计硬件部分的设计由周桂龙同学负责,软件部分的设计则由周彬负责。二.系统设计2.1最小系统单片机:本次设计使用单片机芯片AT89C51,AT89C51的工作特性:·内含4KB的FLASH存储器檫写次数1000次;·内含128字节的RAM;·具有32根可编程I/O线;·具有2个16位编程定时器·具有6个中断源,5个中断矢量,2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有1个数据指针DPTR;·具有可编程3级程序锁定位;·AT89C51的工作电源为5(1±0.2)V且典型值为5V;·AT89C51最高工作频率为24MHZ;·AT89C51的编程频率为3~24MHZ,编程启动电流和启动电压分别为1mA、5或12V。图(1)2.2硬件设计51单片机的P2口连接8个按钮开关,作为电子琴的琴键键盘,喇叭接与P1.0口,用两个NPN型的三极管组成放大电路来驱动喇叭播放音乐。P3.0口作为自动音乐播放控制口,连接一个按钮开关,当按下该按钮时,喇叭自动播放歌曲。系统总框图如图(2)所示。图(2)2.3软件设计(1)主程序(弹奏程序)主程序的功能是给寄存器赋初值,判断播放键是否按下,即P3.0是否为0,按下则转入播放子程序,若没按下则进入弹奏程序,判断有无键盘按下,即读取P2口的状态,有则播放相应的音调。主程序流程图如图(3)所示。音调实际上是有固定周期的信号,每个音调的频率都是固定的。因此只要计算出每个音的频率就可以产生相应的声音。在弹奏程序中利用查表法,根据表(1)将开关状态转换成延时子程序的执行次数,而延迟子程序是为了产生音频的半周期,其延时时间等于(10A+2)us。另外,按钮开关S1的键值取1,S2的键值取2……依次类推。若按下S1的话,则读取表格中的第一个数据,即ACC=95,执行一次延时子程序,其半周期约为0.95ms,执行2次则为1.9ms,其频率为526Hz,大概是中音的Do。其他键也是一样的算法。延时程序如下:DELAY:NOP;1usMOVR4,#3;1usDJNZR4,$;2*R7usDJNZ22H,DELAY;2usRET;2us上面程序的时间延迟为:t=A*(1+1+2*R4+2)+2=A*(1+1+2*3+2)+2=(10A+2)us初始化P3.0为0?开始YN读入P2口状态RRCACY=0?YESRRCA依R1读取音阶驱动喇叭延时NOCY=0?N0NOYES图(3)主程序流程图表(1)按键音阶参数S1中音Do95S2中音Re85S3中音Mi76S4中音Fa71S5中音So64S6中音La57S7中音Si50S8高音Do48(2)播放子程序播放子程序流程图如图(4)所示。此次所要演奏的音乐是《生日快乐》,将乐谱简化成音谱,如下所示。|DODOREDO|FAMI|DODOREDO|SOFA||DODODO^LA|FAMIRE^|SISILAFA|SOFA|再根据表(2),将THx与TLx的值带入音谱,如下所示。第一小节:252,68,252,68,252,173,252,68第二小节:253,52,253,10第三小节:252,68,252,68,252,173,252,68第四小节:253,131,253,52第五小节:252,68,252,68,252,34,253,200第六小节:253,52,253,10,254,87第七小节:254,6,254,6,253,200,253,52第八小节:253,131,253,52,0将结果填入程序里的TONE表格。紧接着制作节拍表格,同样从简谱里,写出其拍子数,如下:|1/2、1/2、1、1|1、2|1/2、1/2、1、1|1、2||1/2、1/2、1、1|1