《电子琴设计3.doc》由会员分享,可在线阅读,更多相关《电子琴设计3.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、简易电子琴的设计一. 设计目的 设计一个简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符,并且能具备自动播放功能。使用元件:AT89C51,喇叭,按键,三极管等。(1).能够实现基本的琴键功能即每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置通过程序来控制,使蜂鸣器发著不同频率的声音,声音延迟延迟一段时间,等到按键放开后,声音停止。然后再继续扫描,看是否有键按下,如此循环下去,即实现基本的琴键功能。(2).能够实现通过按键自动播放歌曲的功能在键盘上设置一个功能键,按下之后会根据功能键跳转到自动播放歌曲的程序,来播放相应的歌曲。 本次设计硬件部分的设计由周桂龙同学负责,软
2、件部分的设计则由周彬负责。二系统设计2.1最小系统单片机:本次设计使用单片机芯片AT89C51,AT89C51的工作特性:内含4KB的FLASH存储器檫写次数1000次; 内含128字节的RAM;具有32根可编程I/O线;具有2个16位编程定时器 具有6个中断源,5个中断矢量,2级优先权的中断结构;具有1个全双工的可编程串行通信接口;具有1个数据指针DPTR;具有可编程3级程序锁定位;AT89C51的工作电源为5(10.2)V且典型值为5V;AT89C51最高工作频率为24MHZ;AT89C51的编程频率为324MHZ,编程启动电流和启动电压分别为1mA、5或12V。 图(1)2.2硬件设计5
3、1单片机的P2口连接8个按钮开关,作为电子琴的琴键键盘,喇叭接与P1.0口,用两个NPN型的三极管组成放大电路来驱动喇叭播放音乐。P3.0口作为自动音乐播放控制口,连接一个按钮开关,当按下该按钮时,喇叭自动播放歌曲。系统总框图如图(2)所示。图(2)2.3软件设计(1)主程序(弹奏程序)主程序的功能是给寄存器赋初值,判断播放键是否按下,即P3.0是否为0,按下则转入播放子程序,若没按下则进入弹奏程序,判断有无键盘按下,即读取P2口的状态,有则播放相应的音调。主程序流程图如图(3)所示。音调实际上是有固定周期的信号,每个音调的频率都是固定的。因此只要计算出每个音的频率就可以产生相应的声音。在弹奏
4、程序中利用查表法,根据表(1)将开关状态转换成延时子程序的执行次数,而延迟子程序是为了产生音频的半周期,其延时时间等于(10A+2)us。另外,按钮开关S1的键值取1,S2的键值取2依次类推。若按下S1的话,则读取表格中的第一个数据,即ACC=95,执行一次延时子程序,其半周期约为0.95ms,执行2次则为1.9ms,其频率为526Hz,大概是中音的Do。其他键也是一样的算法。延时程序如下:DELAY: NOP ;1us MOV R4,#3 ;1us DJNZ R4,$ ;2*R7us DJNZ 22H,DELAY ;2us RET ;2us上面程序的时间延迟为:t= A*(1+1+2*R4+
5、2)+2 = A*(1+1+2*3+2)+2= (10A+2)us 初始化P3.0为0?开始YN读入P2口状态RRC ACY=0? YESRRC A依R1读取音阶驱动喇叭延时 NOCY=0? N0 NO YES 图(3)主程序流程图表(1)按键音阶参数S1中音Do95S2中音Re85S3中音Mi76S4中音Fa71S5中音So64S6中音La57S7中音Si50S8高音Do48(2)播放子程序播放子程序流程图如图(4)所示。此次所要演奏的音乐是生日快乐,将乐谱简化成音谱,如下所示。DO DO RE DO FA MI DO DO RE DO SO FA DO DO DOLA FA MI RESI
6、 SI LA FA SO FA 再根据表(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表格。紧接着制作节拍表格,同样从简谱里,写出其拍
7、子数,如下:1/2、1/2、1、1 1、2 1/2、1/2、1、1 1、2 1/2、1/2、1、1 1、1、1 1/2、1/2、1、1 1、2 再根据表(3),将中断此处带入音谱,将结果填入程序里的BEAT表格。当播放按键按下时,就可以自动播放音乐了。如下:4、4、8、8 8、16 4、4、8、8 8、16 4、4、8、8 8、8、8 4、4、8、8 8、16 播放程序入口初 始 化载入音阶载入节拍 节拍结束? NO音乐结束? YES NO YES返回图(4)播放子程序流程图表(2)音符频率(HZ) 音符频率(HZ)低1DO262# 4 FA#740#1DO#277中 5 SO784低2RE2
8、94# 5 SO#831#2 RE#311中 6 LA880低 3 M330# 6932低 4 FA349中 7 SI988# 4 FA#370高 1 DO1046低 5 SO392# 1 DO#1109# 5 SO#415高 2 RE1175低 6 LA440 # 2 RE#1245# 6466高 3 M1318低 7 SI494高 4 FA1397中 1 DO523# 4 FA#1480# 1 DO#554高 5 SO1568中 2 RE587# 5 SO#1661# 2 RE#622高 6 LA1760中 3 M659# 61865中 4 FA698高 7 SI1967表 (3)拍数中断
9、次数拍数中断次数拍数中断次数1/811/241又1/4101/423/461又1/2123/8318216(3)音调中断子程序一首完整的曲子有音调和节拍组合而成,音调的频率是固定的,在音调中断子程序中,是利用定时器定时的方式来产生频率的,不同与演奏程序中的查表方式。音调中断子程序流程图如图(5)所示。返回显示程序入口关闭TIMER0驱动喇叭填入TIMER0定时值启动TIMER0图(5) 音调中断子程序(4)节拍中断子程序节拍有快有慢,拍子越短节奏越快,拍子越长节奏越慢。此处用定时器中断的方法产生节拍,节拍子程序流程图如图(6)所示。采用mode1,定时值初值设为62500,若要产生1/2拍的长
10、度,则执行4次中断,产生3/4拍的长度,则执行6次中断,依次类推。显示程序入口分别打开各位控R5!=0? YES ! ! NO指定定时时间启动TIMER0指定定时时间启动TIMER0返回图(6)节拍中断子程序三仿真与调试根据功能需求与电路结构编写程序,然后将该程序用Keil软件对程序进行调试,再将调试正确的程序用烧录器烧进AT89C51芯片中,讲芯片安装到连接好的电路中,进行实际的弹奏和播放操作。调试如图(7)所示。调试步骤:打开Keil软件,新建一个工程,在工程中载入一个后缀为.ASM的源程序文件,将编写好的程序写入。进行调试仿真,排除错误,最终产生一个正确的.HEX文件,将电脑连接到烧录器
11、,选择该.HEX文件,将目标程序写入芯片。图(7)四课程小结通过这一周的紧张工作,终于完成了简易电子琴的设计,这个课程设计使我受益匪浅,他不仅使我对软件设计更加熟练,更使我了解了硬件设计的整个流程,并且加深了我对新型单片机这门课内容的理解,扩充了我的知识面。这个课程设计也培养了我们的耐心和毅力,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,由于这个课程设计也使我积累了一些经验,相信这些经验在我以后的学习工作中会有很大的作用。五参考文献单片机原理及其应用 范力旻编著 电子工业出版社51系列单片机设计实列 楼然苗 李光飞编著 北航出版社例说8051 张义合 陈敌北编著 人
12、民邮电出版社 单片机实用技术问答 谢宜仁主编 人民邮电出版社8051单片机实践与应用吴金茂 沈庆阳 郭庭吉编著 清华大学出版社 单片机原理及其接口技术(第二版) 胡汗才编著 北京大学出版社电子琴原理及电路 徐明远,徐多闻上海科学技术文献出版社电子琴原理使用与维修 刘启武,刘启文电子工业出版社附录1:元件清单序号名称代号型号数量1贴片电容C1 C230pF22贴片电容C310uF13贴片电容C40.1uF14贴片电容C50.47uF15贴片电阻R11K16贴片电阻R210K17电解电容 C61000uF18电解电容 C7470uF19发光二极管 10晶振11.0592M111扬声器IC38112
13、电阻R3R101K813 电阻R112K114三极管V1V38550215按键S1S88附录2:总体原理图附录3:实物图附录4:程序BASE EQU -62500 ORG 0000H JMP START ORG 000BH JMP TONE_INT ORG 001BH JMP BEAT_INTSTART: MOV P3,#0FFH;主程序 MOV P2,#0FFH MOV A,P3 CJNE A,#0FEH,TANZOU JMP INITIALTANZOU: MOV A,P2;弹奏程序 SETB CY MOV R0,#8 MOV R1,#0LOOP: RRC A JNC SOUND INC R
14、1 DJNZ R0,LOOP JMP STARTSOUND: MOV DPTR,#TIMES MOV A,R1 MOVC A,A+DPTR MOV 22H,A CPL P1.0 CALL DELAY MOV A,22H CPL P1.0 CALL DELAY JMP STARTDELAY: NOP MOV R4,#3 DJNZ R4,$ DJNZ 22H,DELAY NOP NOP RETINITIAL:MOV TMOD,#11H;播放子程序 MOV IE,#10001010B MOV SP,#70H CLR F0 MOV R7,#0 MOV R6,#0LOAD_TONE:MOV DPTR,#
15、TONE;载入音阶 MOV A,R7 MOVC A,A+DPTR JNZ CONTINUE MOV R6,#0 MOV R7,#0 JMP LOAD_TONECONTINUE:MOV 20H,A MOV TH0,A INC R7 MOV A,R7 MOVC A,A+DPTR MOV 21H,A MOV TL0,A INC R7 SETB TR0LOAD_BEAT:MOV DPTR,#BEAT;载入节拍 MOV A,R6 MOVC A,A+DPTR MOV R5,A MOV TH1,#HIGH(BASE) MOV TL1,#LOW(BASE) SETB TR1 JNB F0,$ CLR F0 J
16、MP LOAD_TONETONE_INT:CLR TR0;音阶中断子程序 CPL P1.0 MOV A,20H MOV TH0,A MOV A,21H MOV TL0,A SETB TR0 RETIBEAT_INT:CLR TR1;节拍中断子程序 DJNZ R5,AGAIN CLR TR0 SETB F0 JMP EXIT1AGAIN: MOV TH1,#HIGH(BASE) MOV TL1,#LOW(BASE) SETB TR1EXIT1: RETITIMES: DB 95,85,76,71,64,57,50,48TONE: ;音阶表DB 252,68,252,68 DB 252,173,252,68DB 253,52,253,10DB 252,68,252,68 DB 252,173,252,68DB 253,131,253,52DB 252,68,252,68 DB 252,34,253,200 DB 253,52,253,10DB 254,87DB 254,6,254,6DB 253,200,253,52DB 253,131,253,52,0BEAT: ;节拍表 DB 4,4,8,8 DB 8,16DB 4,4,8,8DB 8,16DB 4,4,8,8DB 8,8,8DB 4,4,8,8DB 8,16,0 END 20