毕业设计-电子琴设计:毕业设计心得体会3000摘要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。该设计主要由键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。本设计采用AT89S51单片机为核心控制元件,利用定时器,发出不同频率的脉冲,脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,可构成我们想要的音乐。该系统通过调试运行、仿真验证,基本实现了设计目标。关键词:单片机;按键;电子琴;音阶目录1课题描述12问题分析和任务定义22.1问题分析22.2任务定义33概要设计44硬件电路设计55程序设计65.1主程序流程图65.2子程序流程图65.3程序代码76电路仿真146.1仿真软件146.2仿真电路147调试、测试与结果分析157.1调试157.2测试157.3结果分析158总结16参考文献171课题描述一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们所想要的音乐了,对于单片机,可以利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。本次设计主要应用AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,通过软硬件设计,模式转换按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴,通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现用户自编歌曲。开发环境:DICE-51仿真开发系统,Proteus仿真软件,Keil环境2问题分析和任务定义2.1问题分析本次设计主要通过对AT89C51的基本认识,利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。在设计时应用4*4行列式键盘扫描,由P3口实现,其中P3.0-P3.3接C0-C3,P3.4-P3.7接L0-L3。如图2.1所示:图2.14*4行列式键盘扫描利用AT89S51的内部定时器使其工作在计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,计数脉冲值与频率的关系式是:N=fi÷2÷fr。关系式中N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下:T=65536-N=65536-fi÷2÷fr。单片机12MHZ晶振高、中、低音符与单片机计数T0相关的计数值如表2.2所示:音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628#4FA#7406 48 60#1DO#27763731中5SO78464898低2RE29463835#5SO#83164934#2RE#31163928中6LA88064968低3M33064021#693264994低4FA34964103中7SI98865030#4FA#37064185高1DO104665058低5SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#646664463高3M131865157低7SI49464524高4FA139765178中1DO52364580#4FA#148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#62264732高6LA176065252中3M65964777#6186565268中4FA69864820高7SI196765283下面是为这个音符建的表,可以使单片机通过查表的方式,方便的获得相应的数据,低音0-19之间,中音在20-39之间,高音在40-59之间TABLE:DW0,63628,63835,64021,64103,64260,64400,64524,0,0DW0,63731,63928,0,64185,64331,64463,0,0,0DW0,64580,64684,64777,64820,64898,64968,65030,0,0DW0,64633,64732,0,64860,64934,64994,0,0,0DW0,65058,65110,65157,65178,65217,65252,65283,0,0DW0,65085,65134,0,65198,65235,65268,0,0,0DW02.2任务定义(1)在操作过程中应满足以下要求:①电子琴设有16个按键,通过软硬件设计,模式转换按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴;②利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,可以发出不同的音调;③使数字键1、2、3、4、5、6、7作为电子琴键,按下数字键发出相应的音调,PB0作为定时器门控信号,OUT1发出音频信号,驱动喇叭。④通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现用户自编歌曲;(2)该系统在使用过程中,应该实现以下基本功能:①按要求连接电路图,当按下数字键1、2、3、4、5、6、7时可以发出相应的音调;②通过不同的数字键组合,可以自编曲目;③利用protues仿真软件,装载程序,实现对电子琴的仿真。3概要设计本次课程设计主要采用AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,利用定时器可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,可以发出不同的音调。在操作过程中,通过选择不同的按键,来发出不同的音调,从而实现用户自编曲目。设计中主要包含以下几个模块:(1)键盘扫描程序实现主要采用4*4行列式键盘进行扫描,选择不同的按键,可以发出不同的音调。实现过程中主要应用下列代码:MOVR4,#00H;初值赋给R4ANLA,#0FH;屏蔽行信号XRLA,#0FH;取出列信号JZNOKEY2;判断有无按键LCALLDELY10MS;有按键延时后再扫描MOVA,P3;读取扫描结果CPLP1.0;找到按键,计算键值(2)定时器1中断服务程序实现定时器主要将从码表中取得的高位和低位字节值分别赋给TH0、TH1,然后通过P1.0口实现输出频率。实现过程中主要应用以下代码:MOVDPTR,#TABLE;从TABLE处取相对高位字节值MOVCA,@A+DPTR;MOVP0,AMOVA,KEYBUF;*2操作MOVB,#2MULABMOVTEMP,AMOVDPTR,#TABLE1;从TABLE处取相对低位字节值MOVCA,@A+DPTR;MOVSTH0,A;将高位字节值赋给STH0和TH0MOVTH0,AINCTEMPMOVA,TEMPMOVCA,@A+DPTRMOVSTL0,A;将低位字节值赋给STH0和TH0MOVTL0,ASETBTR0;启动TR04硬件电路设计电子琴设计硬件电路图,如图4.1所示:图4.1电子琴设计硬件电路图5程序设计5.1主程序流程图本次课程设计实现了一个以AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,通过按键,实现用户自编曲目的简易电子琴。主程序流程图如图5.1所示:图5.1电子琴设计主程序流程图5.2子程序流程图(1)键盘扫描程序流程图本次设计采用4*4行列式键盘扫描,通过按下不同按键,产生不同的音调,实现用户编曲。键盘扫描程序流程图如图5.2所示:图5.2键盘扫描流程图(2)音频脉冲产生程序流程图要产生音频脉冲,只要算出某一音频半周期的时间然后利用T0定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相,就可在P1.0引脚上得到此频率的脉冲。音频脉冲产生程序流程图如图5.3所示:图5.3音频脉冲产生程序流程图5.3程序代码CODESEGMENT;DZQ.ASMASSUMECS:CODE,DS:CODEKEYBUFEQU30HSTH0EQU31HSTL0EQU32HTEMPEQU33HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVTMOD,#01HSETBET0SETBEAWAIT:MOVP3,#0FFHCLRP3.4MOVA,P3ANLA,#0FHXRLA,#0FHJZNOKEY1LCALLDELY10MSMOVA,P3ANLA,#0FHXRLA,#0FHJZNOKEY1MOVA,P3ANLA,#0FHCJNEA,#0EH,NK1MOVKEYBUF,#0LJMPDK1NK1:CJNEA,#0DH,NK2MOVKEYBUF,#1LJMPDK1NK2:CJNEA,#0BH,NK3MOVKEYBUF,#2LJMPDK1NK3:CJNEA,#07H,NK4MOVKEYBUF,#3LJMPDK1NK4:NOPDK1:MOVA,KEYBUFMOVDPTR,#TABLEMOVCA,@A+DPTRMOVP0,AMOVA,KEYBUFMOVB,#2MULABMOVTEMP,AMOVDPTR,#TABLE1MOVCA,@A+DPTRMOVSTH0,AMOVTH0,AINCTEMPMOVA,TEMPMOVCA,@A+DPTRMOVSTL0,AMOVTL0,ASETBTR0DK1A:MOVA,P3ANLA,#0FHXRLA,#0FHJNZDK1ACLRTR0NOKEY1:MOVP3,#0FFHCLRP3.5MOVA,P3ANLA,#0FHXRLA,#0FHJZNOKEY2LCALLDELY10MSMOVA,P3ANLA,#0FHXRLA,#0FHJZNOKEY2MOVA,P3ANLA,#0FHCJNEA,#0EH,NK5MOVKEYBUF,#4LJMPDK2NK5:CJNEA,#0DH,NK6MOVKEYBUF,#5LJMPDK2NK6:CJNEA,#0BH,NK7MOVKEYBUF,#6LJMPDK2NK7:CJNEA,#07H,NK8MOVKEYBUF,#7LJMPDK2NK8:NOPDK2:MOVA,KEYBUFMOVDPTR,#TABLEMOVCA,@A+DPTRMOVP0,AMOVA,KEYBUFMOVB,#2MULABMOVTEMP,AMOVDPTR,#TABLE1MOVCA,@A+DPTRMOVSTH0,AMOVTH0,AINCTEMPMOVA,TEMPM。