简易电子琴(刘磊).doc_第1页
简易电子琴(刘磊).doc_第2页
简易电子琴(刘磊).doc_第3页
简易电子琴(刘磊).doc_第4页
简易电子琴(刘磊).doc_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录第1章 概述2第2章 系统总体方案选择与说明3第3章 系统硬件电路设计框图与工作原理41、频率、声音的实现和产生:42键盘的方案选择:53、关于键盘的抖动问题的分析和解决:54、放大电路分析:75、时钟电路分析:76、复位电路的论证和分析:8第4章 软件设计及调试9总结10附录A 程序清单12附录B 系统硬件电路原理图27第1章 概述单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机(single chipmicrocomputer).它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果.单片机应用系统可以分为:(1)最小应用系统是指能维持单片机运行的最简单配置的系统。这种系统成本低廉,结构简单,常构成一些简单的控制系统,如开关状态的输入/输出控制等。片内有ROM/EPROM的单片机,其最小应用系统即为配有晶振,复位电路,电源的单个单片机.片内无ROM/EPROM的单片机,其最小应用系统除了外部配置晶振,复位电路,电源外,还应外接EPROM或EEPROM作为程序存储器用.(2)最小功耗应用系统是指为了保证正常运行,系统的功耗最小.(3)典型应用系统是指单片机要完成工业测控功能所必须的硬件结构系统。 本设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。利用定时器可发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的脉冲,本设计中按键一次,会发出50个脉冲,松开后随之延时10个脉冲,但在延时的10个脉冲期间继续检测键盘,若此时又有键被按下,若被按下的仍为原键则声音不变,否则键盘会译出被按下的另一个键的音调。 第2章 系统总体方案选择与说明 系统整体安排如下:1 按下K1键发出1的声音。2 按下K2键发出2的声音。3 按下K3键发出3的声音。4 按下K4键发出4的声音。5 按下K5键发出5的声音。6 按下K6键发出6的声音。7 按下K7键发出7的声音。8 按下K8键发出的声音。9 单片机可采用AT89C51、AT89C52、AT89S52、fosc=12MHz。10 时钟电路,复位电路的设计。11 8051单片机根据不同的琴键产生不同的乐曲音符,并经过信号放大,由喇叭放出。系统整体方案如图所示:琴键 电路放大电路P1.0P0.0|P0.7单片机时钟电路复位电路第3章 系统硬件电路设计框图与工作原理硬件系统原理图如下页图:1、频率、声音的实现和产生: 单片机的频率和声音输出的原理是,利用琴键控制定时器的开中断和闭中断,即实现发音和闭音。在此期间再通过对定时器的定时时间进行控制来产生不同频率的方波,驱动嗡宁器发出不同音阶的声音。把C调中相应琴键对应的音符变换为定常数,作为数据表格存放在存储器中。由程序查表得到定时常数,用以控制定时器产生方波的频率。当下一个琴键按下时,再查下此琴键所对应音符的定时常数。依次进行下去,就可以演奏出自己所要的歌曲。 用定时器T0方式0来产生琴键对应音符的频率的方波,由P1.0输出驱动嗡宁器。单片机所用的晶振的频率为6MHz,琴键所对应音符、频率及定时常数三者之间的对应关系如下所示。C调音符71234567频率(Hz)494524588660698784880988半周期(ms)1.010.950.850.760.720.640.570.51定时值FE07FE25FE57FE84FE98FEC0FEE3FF012键盘的方案选择: 此系统琴键输入是通过独立式键盘来完成的。由于8051单片机的八位I/O口足以能实现控制C调各音阶的输出,并且独立式键盘的编程容易易懂,结构简单,实现起来方便,而且每个按键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,所以采用独立式键盘。P0.0P0.7 口分别对应琴键17输入,如下图所示。P1.0|P1.78051 3、关于键盘的抖动问题的分析和解决: 当用手按下一个键时,如图3所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。键按下前沿抖动后沿抖动闭合稳定图4 键抖动信号波形延迟10ms的程序为: MOV R1, #100 ;执行次数为1D1: MOV R2, #98 ;执行次数为100 NOP ;执行次数为100D2: DJNZ R2, D2 ;执行次数为10098 DJNZ R1, D1 ;执行次数为48 延迟时间与指令执行时间有密切的关系。在使用6MHz晶振时,一个机器周期为 0.5s,执行一条MOV指令时间为0.5s, 执行一条DJNZ指令时间为1s。则实际延迟时间=10.5+1000.5+1000.5+100981+981=99.98510ms。 4、放大电路分析:放大电路输出原理图 此部分的放大电路简单容易实现。可以采用一个小功率PNP型硅管9012,利用“分压偏置式工作点稳定直流通路”,达到了对静态工作点的稳定。分压电阻分别选择1K和5.5K。蜂鸣器一端接+5V电压,一端接晶体管的发射极。由P1.0输出预定的方波,加到晶体管进行放大,再输出到嗡宁器,很好的实现了频率、声音的转换。 5、时钟电路分析: 此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。MCS-51内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容CX1和CX2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为6 MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。图6为复位电路的原理图。 复位电路原理图MSC-51片内振荡电路图 时钟电路原理图6、复位电路的论证和分析: MS-51的复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路,如图7所示。当时钟频率选用6MHz时,C取22F,Rs约为200,Rk约为1K。 第4章 软件设计及调试程序开始 延迟10ms读P0口的状态关闭定时器,进行下一次琴键识别Y再读P0口的状态判断是否是抖动N启动定时器T0判断是几号琴键,并跳转到相应的程序查表得相应琴键的定时初值重装定时器T0处值对P1.0求反中断返回Y等待中断,并判断此次琴键是否被释放中断程序流程图 主程序流程图总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次微机原理(基于单片机)课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近两个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。通过这次课程设计,我不仅加深了对单片机理论的理解,将理论好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进之功能不断完善,成为真己的东西。 设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。 俗话说“好的开始是成功的一半”。说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。 软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。 当然,这其中也有很多问题,第一、不够细心比如由于粗心大意错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师那里我学得到很多实用的知识,再次表示感谢!同时,对给过我帮助的所有同学和周老师再次表示忠心的感谢!附录A 程序清单KEYBUF EQU 30HSTH0 EQU 31HSTL0 EQU 32HTEMP EQU 33HSPKEQU P3.7; 蜂鸣器所在端口ORG 0000HLJMP STARTORG 000BHLJMP INT_T0 ;弹奏乐曲程序 ORG 001BH LJMP INT_T1START: MOV P1,#55H MOV TMOD,#11HSETB ET0 SETB ET1SETB EA ; 以下为扫描程序 AGAIN: ACALL SAOMIAO JB P3.3,AGAIN ACALL MUSIC;-手动弹奏乐曲-SAOMIAO:MOV P2,#0FFHCLR P2.2;从第三行开始扫描MOV A,P2ANL A,#0F0H ;屏蔽低四位XRL A,#0F0HJZ NOKEY1 ;判断是否有键按下,没有就跳转LCALL DELY10MSMOV A,P2 ;消除抖动和干扰ANL A,#0F0HXRL A,#0F0HJZ NOKEY1MOV A,P2 ;确定有键按下以后的处理ANL A,#0F0HCJNE A,#0E0H,NK1 ;是否为第三行第一列的键被按下MOV KEYBUF,#0;保存列号 MOV P0,#20H ;8 LJMP DK1NK1: CJNE A,#0D0H,NK2MOV KEYBUF,#1 MOV P0,#0A0H ;9LJMP DK1NK2: CJNE A,#0B0H,NK3MOV KEYBUF,#2 MOV P0,#60HLJMP DK1 ;ANK3: CJNE A,#070H,NK4MOV KEYBUF,#3 MOV P0,#25H ;BLJMP DK1NK4: NOPDK1: ;第三行的处理MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P1,AMOV A,KEYBUFMOV B,#2 ;Table1以字保存,所以散转MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,A ;送入高字节MOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,A ;送入低字节MOV TL0,ASETB TR0DK1A: MOV A,P2 ;判断按键是否松开ANL A,#0F0HXRL A,#0F0HJNZ DK1ACLR TR0NOKEY1: ;从第二行开始扫描MOV P2,#0FFHCLR P2.1MOV A,P2ANL A,#0F0HXRL A,#0F0HJZ NOKEY2LCALL DELY10MSMOV A,P2ANL A,#0F0HXRL A,#0F0HJZ NOKEY2MOV A,P2ANL A,#0F0HCJNE A,#0E0H,NK5MOV KEYBUF,#4 MOV P0,#0E1H ;4LJMP DK2NK5: CJNE A,#0D0H,NK6MOV KEYBUF,#5 MOV P0,#0A4H ;5LJMP DK2NK6: CJNE A,#0B0H,NK7MOV KEYBUF,#6 MOV P0,#24H ;6LJMP DK2NK7: CJNE A,#070H,NK8MOV KEYBUF,#7 MOV P0,#0EAH ;7LJMP DK2NK8: NOPDK2:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P1,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK2A: MOV A,P2ANL A,#0F0HXRL A,#0F0HJNZ DK2ACLR TR0NOKEY2: ;从第一行开始扫描MOV P2,#0FFHCLR P2.0MOV A,P2ANL A,#0F0HXRL A,#0F0HJZ NOKEY3LCALL DELY10MSMOV A,P2ANL A,#0F0HXRL A,#0F0HJZ NOKEY3MOV A,P2ANL A,#0F0HCJNE A,#0E0H,NK13MOV KEYBUF,#8 MOV P0,#28H ;0LJMP DK4NK13: CJNE A,#0D0H,NK14MOV KEYBUF,#9 MOV P0,#0EBH ;1LJMP DK4NK14: CJNE A,#0B0H,NK15MOV KEYBUF,#10 MOV P0,#32H ;2LJMP DK4NK15: CJNE A,#070H,NK16MOV KEYBUF,#11 MOV P0,#0A2H ;3LJMP DK4NK16: NOPDK4:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P1,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK4A: MOV A,P2ANL A,#0F0HXRL A,#0F0HJNZ DK4ACLR TR0NOKEY3: RET;-音乐选取播放-MUSIC: MOV SP,#50H MOV TH1,#0D8H MOV TL1,#0EFH MOV P2,#0FFHCLR P2.0MOV A,P2ANL A,#0F0HXRL A,#0F0H LCALL DELY10MSMOV A,P2ANL A,#0F0HXRL A,#0F0HMOV A,P2ANL A,#0F0H CJNE A,#0E0H,NEXT1 ;若按下键0就执行音乐1的播放 SONG1:MOV A,P2 ANL A,#0F0H XRL A,#0F0H JNZ SONG1;松开按键 MOV DPTR,#DAT1 ;表头地址送DPTR ACALL MUSIC1 SJMP SONG1 NEXT1:CJNE A,#0D0H,NEXT2 ;若按下键1就执行音乐1的播放 SONG2: MOV A,P2 ANL A,#0F0H XRL A,#0F0H JNZ SONG2;松开按键 MOV DPTR,#DAT2 ;表头地址送DPTR ACALL MUSIC1 SJMP SONG2 NEXT2:CJNE A,#0B0H,MUSIC ;若按下键2就执行乐曲弹奏 BAKE:NOP ACALL SAOMIAO JB P3.3,BAKE SJMP MUSIC RET;-歌曲播放执行程序-MUSIC1: L1: MOV 21H,#00H MOV 22H,#00H MOV P2,0FFH CLR P2.0 MOV A,P2 JNB ACC.4,AA1 SETB 21H.7 JNB ACC.5,AA1 SETB 22H.7 AA1: MOV A,P2 ANL A,#0F0H XRL A,#0F0H JNZ AA1 JNB 21H.7,MUSIC JNB 22H.7,MUSIC NOP MOV 20H,#00H ;中断计数器清0 MOV B,#00H ;表序号清0 CLR A MOVC A,A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,L5 LJMP L3L5: NOP MOV R6,A INC DPTR MOV A,B MOVC A,A+DPTR ;取节拍代码 ADD A,#5 ;调整节奏 MOV R7,A MOV P1,A ;送P1口显示节拍 SETB TR1 ;启动计数L2: NOP CPL P3.7 MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,L2 ;中断计数器(20H)=R7否? MOV 20H,#00H ;等于,则取下一代码 INC DPTR LJMP L1L3: NOP CLR TR1 ;休止100毫秒 MOV R2,#0DHL4: NOP MOV R3,#0FFH LCALL DEL DJNZ R2,L4 INC DPTR LJMP L1END0: NOP MOV R2,#64H ;歌曲结束,延时1秒后继续L6: MOV R3,#00H LCALL DEL DJNZ R2,L6 RET ;-一秒延时程序-DEL: NOPDEL3: MOV R4,#02HDEL4: NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP;-十毫秒延时程序-DELY10MS:MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;-定时器中断程序-INT_T1: INC 20H ;中断计数器加1 MOV TH1,#0D8H MOV TL1,#0EFH ;12M晶振,形成10毫秒中断 RETIINT_T0:MOV TH0,STH0MOV TL0,STL0CPL P3.7RETI;-发音数据区-TABLE: DB 07EH,0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H DB 0F6H,0F5H,0F4H,0F3H,0F2H,0F1H,0F0H,0EFHTABLE1: DW 62628,63835,64021,64103 ;低音部分 DW 64580,64684,64777,64820 ;中音部分 DW 65030,65058,65110,65157 ;高音部分DAT1: DB 28H,22H,22H,22H,22H,22H,28H,11H,22H,11H,22H,85H,28H,22H,33H,22H DB 33H,22H,3CH,11H,33H,11H,33H,85H,28H,22H,22H,22H,22H,22H,1EH,22H DB 22H,84H,2EH,22H,28H,22H,22H,22H,2EH,11H,28H,11H,2EH,84H,28H,22H DB 33H,22H,33H,22H,3CH,11H,28H,11H,28H,64H,43H,11H,3CH,11H,28H,22H DB 33H,22H,33H,22H,3CH,11H,28H,11H,28H,85H,28H,220H,2DH,11H,2DH,11H DB 2DH,22H,33H,11H,3CH,11H,28H,11H,2DH,11H,2EH,22H,2EH,43H,43H,22H DB 22H,11H,22H,11H,2EH,11H,28H,33H,33H,85H,1AH,22H,1AH,22H,28H,22H DB 22H,22H,22H,43H,28H,22H,2EH,22H,33H,22H,33H,22H,1EH,22H,22H,22H DB 22H,85H,1EH,22H,1EH,22H,1EH,22H,33H,22H,33H,64H,3CH,11H,33H,11H DB 22H,22H,2EH,11H,28H,11H,2EH,11H,28H,11H,28H,11H,2EH,11H,2EH,85H DB 1AH,22H,1AH,22H,28H,22H,22H,22H,22H,64H,28H,11H,2EH,22H,33H,22H DB 33H,22H,1EH,22H,22H,22H,22H,85H,28H,22H,33H,11H,33H,11H,33H,22H DB 3CH,22H,28H,11H,2EH,11H,2EH,22H,2EH,43H,43H,11H,43H,11H,22H,11H DB 22H,11H,2EH,11H,28H,33H,33H,85H,00HDAT2:DB 18H, 30H, 1CH, 10HDB 20H, 40H, 1CH, 10HDB 18H, 10H, 20H, 10HDB 1CH, 10H, 18H, 40HDB 1CH, 20H, 20H, 20HDB 1CH, 20H, 18H, 20HDB 20H, 80H, 0FFH,20HDB 30H, 1CH, 10H, 18HDB 20H, 15H, 20H, 1CHDB 20H, 20H, 20H, 26HDB 40H, 20H, 20H, 2BHDB 20H, 26H, 20H, 20HDB 20H, 30H, 80H, 0FFHDB 20H, 20H, 1CH, 10HDB 18H, 10H, 20H, 20HDB 26H, 20H, 2BH, 20HDB 30H, 20H, 2BH, 40HDB 20H, 20H, 1CH, 10HDB 18H, 10H, 20H, 20HDB 26H, 20H, 2BH, 20HDB 30H, 20H, 2BH, 40HDB 20H, 30H, 1CH, 10HDB 18H, 20H, 15H, 20HDB 1CH, 20H, 20H, 20HDB 26H, 40H, 20H, 20HDB 2BH, 20H, 26H, 20HDB 20H, 20H, 30H, 80HDB 20H, 30H, 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论