学期项目文件课件_第1页
学期项目文件课件_第2页
学期项目文件课件_第3页
学期项目文件课件_第4页
学期项目文件课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

简易电子琴组员:柳一江、姜小通、张华恩、郭晶晶、王欢、朱敏口号:只要团结一心!Nothingisimpossible

简易电子琴组员:柳一江、姜小通、张华恩、郭晶晶、王欢、朱敏1学期项目选题的依据(摘要)电子琴做为电子乐器的一种,可以模仿很多种音色,甚至可以奏出常规乐器无法发出的声音。由于它音域较宽,和声丰富。而且表现力极其丰富。所以它是现代电声乐器中不可缺少的一部分。我们对于电子琴如何实现其功能感到好奇,为了验证书本上所学的知识,所以我们做了一个基于单片机的简易电子琴,并实现了电子琴基本功能。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。学期项目选题的依据(摘要)电子琴做为电子乐器的一种,可以模仿2目录方案论证系统设计功能模块介绍发声原理及程序流程图调试步骤总结参考文献目录方案论证3方案论证

方案一:用可控硅制作电子琴,将220V交流电经变压器降压,再经过滤波,整形获得+13.5V直流电压,将单向可控硅SCR和电阻、电容组成驰张振荡器电路。但该方案制作成本高且复杂。故不采用。

方案二:采用AT89C52单片机进行控制,但由于AT89C52在属于低档的单片机,已经面临淘汰,且仿真器价格昂贵,不易擦除。故不采用。方案三:采用两个555集成定时器组成简易电子琴,整个电路由主振荡器,颤音振荡器,扬声器和琴键按钮等部分组成。由于555产生的信号不稳定且精度不高。故不采用。方案四:采用采用AT89S52单片机进行控制,以AT89S52单片机为核心控制元件,与键盘、蜂鸣器等模块组成核心主控制模块,在主控模块上设有16个按键和蜂鸣器。程序易擦除,比较方便。根据以上比较可知应采用四种方案方案论证方案一:用可控硅制作电子琴,将220V交流电经变压4系统设计本电子琴系统主要包括AT89S52单片机,4x4键盘,发声模块,数码管显示单元,系统框图如图1所示。4x4键盘复位电路晶振12MHZ

AT89S52数码管显示单元发声模块电源电路图1系统设计本电子琴系统主要包括AT89S52单片机,4x4键盘5三、功能模块介绍

3.1时钟电路分析(单片机的晶振电路)此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89S52内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容CX1和CX2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为30pF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。单片机的18,19脚接外部晶体振荡器。三、功能模块介绍

3.1时钟电路分析(单片机的晶振电路)63.2复位电路的论证和分析AT89S52的复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路,当时钟频率选用12MHz时,C取10μF,Rs约为100Ω,Rk约为10KΩ。实际上为了方便,我们的硬件电路里面单片机的9脚RST直接接高电位,电源接通后复位3.2复位电路的论证和分析AT89S52的复位是由外部的复位73.3音频放大电路音频放大电路(图2)的选用对电子琴的音色及音量具有决定性的作用。本设计发声模块主要采用LM386,LM386是一种音频集成功放,具有自身功耗低,电压增益可调整,电源电压范围大,外接元件少和总谐波失真小等优点。广泛应用于录音机和收音机之中。LM386内部电路原理图(图3)所示与通用型集成运放相类似,它是一个三级放大电路第一级为差分放大电路T1和T3T2和T4分别构成复合管作为差分放大电路的放大管T5和T6组成镜像电流源作为T1和T2的有源负载T3和T4信号从管的基极输入,T2管的集电极输出为双端输入单端输出差分电路,使用镜像电流源作为差分放大电路有源负载可使单端输出电路的增益近似等于双端输出电容的增益第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。二极管D1和D2为输出级提供合适的偏置电压可以消除交越失真。引脚2为反相输入端,引脚3为同相输入端。电路由单电源供电故为OTL电路。输出端引脚5应外接输出电容后再接负载。电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈使整个电路具有稳定的电压增益。3.3音频放大电路音频放大电路(图2)的选用对电子琴的音色8图2音频放大器电路图3LM386内部电路原理图图2音频放大器电路图3LM386内部电路原理图93.4键盘模块当按键较多时会占用更过的控制器端口,为减少对端口的占用,本设计采用4×4矩阵键盘(图4),键盘矩阵行线连接P2.0~P2.3,列线连接P2.4~P2.7,扫描过程如下:程序首先判断是否有键按下,为判断16个按键中是否有键按下,程序首先在4条行线上放置4个0,即在P2端口输出0XF0,如果有任一按键按下,则4条列线上必有一位为0.如果已有键按下,则判断按键所在行、列位置,并返回按键序号。代码中行扫描码初值为0xFE,通过将该值循环右移,可对P2.0~P2.3对应的4行逐行发送0,每次发送扫描码后即判断高4位的4个1中是否有0出现,如果出现0说明按键在该行上,这时可将发送的低4位于读取的高4位取反,也就是P2取反,这样P2中将出现2个1,其余位均变为0,2个1分别处在低4位和高4位中,高低4位中1所处的位置各有4种可能,共有16种可能,对应十六个不同的按键,根据取反后的值查询键盘矩阵按键特征码表,即可得到按键序号。3.4键盘模块当按键较多时会占用更过的控制器端口,为减少对10图44x4键盘图44x4键盘113.5供电电路采用9v直流供电,分出两个电源,9v直接供给音频发大电路,另一部分经7805稳压到5v然后供给单片机。3.5供电电路采用9v直流供电,分出两个电源,9v直接供给12四.发声原理即程序流程图4.1音乐发声原理因此我们只要把一首歌曲的音阶对应频率关系弄正确,即可利用AT89S52的内部定时器使其工作计数器模式MODE1下改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。表1.作品采用的音符频率与简谱码对应表四.发声原理即程序流程图4.1音乐发声原理13音符频率(Hz)简谱码音符频率(Hz)简谱码低音mi33064021中音fa69864820低音fa34964103中音so78464898低音so39264260中音la88064968低音la44064400中音xi98865030低音xi49464524高音do104665058中音do52364580高音re117565110中音re58764684高音mi131865157中音mi65964777高音fa139765178音符频率(Hz)简谱码音符频率(Hz)简谱码低音mi3306144.2音乐发声程序框图(图5)

图5音乐发声程序框4.2音乐发声程序框图(图5)

图5音乐发声程序框15六、总结6.1课程设计心得及体会:通过这次单片机课程设计,我弄懂了不少课本上的知识,还扩展了一些课本没有的知识,再通过去图书馆查阅资料,很好的完成了这次课程设计。首先在课程设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机在各方面的应用。了解了单片机方面的先进技术,这些都为我的未来的学习指明了方向。我的课程设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。虽然本次课程设计的硬件焊接工序对大二焊接了一年的我来说不算什么难事,但是在焊接过程中我没有半点马虎,对电路的分析在指导老师卢毓俊老师的帮助下更是步步深入。在软件方面,因为程序的编写都是我的弱项,所以我是先从网上找来类似的程序模板,然后借助各方面的资料对程序的每一步进行分析,按题目的需求进行修改,最终才得到我现在的程序方案。六、总结6.1课程设计心得及体会:166.2不足之处1.可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度。

2.音色不可调,只有一种波形的频率输出。可以在外围电路设计滤波电路,接在不同的输出口,通过软件实现不同端口的输出,从而接入不同的滤波电路,输出不同的波形,从而获得不一样的音色。3.不能以和弦形式演奏,只能单个键按下输出单个的音阶。4.由于没有足够的设计经验,本次选用的按键不易按下,所以导致演奏时不够流畅。6.2不足之处1.可弹奏的音符数较少,只能在一定范围内满足用17电路原理图电路原理图18源程序

项目:可演奏电子琴//------------------------------------------------------//在键盘矩阵上模拟演奏电子琴,数码管显示按键号//------------------------------------------------------#include<reg51.h>#defineucharunsighedchar#defineuintunsighedint

//共阳数码管编号ucharcodeDSY_Table[]={0xc0,0xf9,0xa4,0xb0,0x,0x99,0x92,0x82,0xf8,0x80,//0、1、2、3、4、5、6、7、80x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//9、A、B、C、D、E、F、-//各音符对应的延时uintcodeTone_Delay_Table[]={64021,64103,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65110,65157,65178};sbitBEEP=P3^0;//蜂鸣器ucharKeyNo;//按键序号//------------------------------------------------------//延时//------------------------------------------------------voidDelayMS(ucharx){uchari;while(x--)for(i=0;i<120;i++);}源程序项目:可演奏电子琴19P1=0xF0;DelayMS(2);//按键后11110000将变成xxxx0000,x中1个为0,3个仍为1//下面的表达式会将高四位移至低四位,并将其中唯一的0变为1,其余的为0Tmp=(P1>>4)^)0x0F;//对0~3行分别附加起始值0,4,8,12switch(Tmp){case1:k+=0;break;case2:k+=4;break;case4:k+=8;break;case8:k+=12;break;default:return;}KeyNo=k;}//------------------------------------//键盘矩阵扫描子程序//------------------------------------voidkey_Scan(){ucharTmp,k;//高四位置0,放入四行P1=0x0F;DelayMS(2);//按键后00001111将变成0000xxxx,x中1个为0,3个仍为1//下面的异或操作会把3个1变成0,唯一的0变成1Tmp=P1^0x0F;//判断按键发生于0~3列的那一项Switch(Tmp){case1:k=0;break;case2:k=1;break;case4:k=2;break;case8:k=3;break;default:return;//无键按下}//低四位置0,放入四列P1=0xF0;//-------------------20

//----------------------------//定时器0中断程序,不同频率的声音由该中断产生//---------------------------------voidPlay_Tone()interrupt1{TH0=Tone_Delay_Table[KeyNo]/256;TH0=Tone_Delay_Table[KeyNo]%256;BEEP=~BEEP;}//--------------------------------------------//主程序//--------------------------------------------voidmain(){P0=0xBF;//初始显示“-”TMOD=0x01;IE=0x82;while(1){P1=0xF0; //发送扫描码if(p1!=0xF0)//如果有键按下{Keys_Scan();//扫描键盘矩阵P0=DSY_Table[KeyNo];//显示按键TR0=1;//启动定时器,根据KeyNo发音}else{TR0=0; //停止播放}DelayMS(2);}} //---------------------------21实物图实物图22元器件清单元器件清单23故障排除将单片机烧录好后板子焊好后,接上5V稳压源,发现板子没有工作。我们接上示波器观察ALE脚的输出,为1/6Fosc频率这说明单片机的正常工作,至少有能保证我们的晶振电路也是正常的。老师说软件到硬件的实现是一个很复杂的过程,没有人一下子就仿真成功就可以立马调出板子,第一次焊好就能正常的可能性为零,要我们从中发现故障的可能性。老师说:既然你们的故障,不是出自单片机上,那么你们好好看看输出输到蜂鸣器(负载的波形)我们先把单片机的P3.0接到示波器观察其波形。每次按钮的按下,我们能看到一个不同频率从低到高的电压的电压变化的波形,说明送往蜂鸣器的两端都没有反映排除了焊接上的虚焊和引脚之间的短路发现电路还是驱动不起来,看起来应该是输出的功率不够故障排除将单片机烧录好后24一开始所采用的电路图一开始所采用的电路图25增加了三极管驱动电路在老师的指导下改进的电路增加了三极管驱动电路在老师的指导下改进的电路26电路调试电路调试27市场调查名称:AT89C51单价:1.6元

名称:电解电容单价:1.00元名称:瓷介电容单价:0.25元名称:数码管单价:2元市场调查名称:AT89C528名称:晶振单价:0.8元名称:碳膜电阻单价:0.3元名称:晶振单价:0.8元名称:碳膜电阻29项目体会通过对电路的实际操作。既能提高我们的动手。也让我们可以更加的熟悉数字电路!这样对两者之间都一种促进!堪称双赢!1、更深入的了解了单片机的程序及电路操作。2、一定要每人参与到项目中,了解项目需求,明确项目进度计划。3、工作计划很重要,当排好计划后,工作就会有条不紊的进行。4、在项目中沟通很重要。5、项目拓展。要知其然还要知其所以然。6、多花点心思在项目上,只要努力,没有什么不可能的。项目体会通过对电路的实际操作。既能提高我们的动手。也让我们可30学期项目文件课件31简易电子琴组员:柳一江、姜小通、张华恩、郭晶晶、王欢、朱敏口号:只要团结一心!Nothingisimpossible

简易电子琴组员:柳一江、姜小通、张华恩、郭晶晶、王欢、朱敏32学期项目选题的依据(摘要)电子琴做为电子乐器的一种,可以模仿很多种音色,甚至可以奏出常规乐器无法发出的声音。由于它音域较宽,和声丰富。而且表现力极其丰富。所以它是现代电声乐器中不可缺少的一部分。我们对于电子琴如何实现其功能感到好奇,为了验证书本上所学的知识,所以我们做了一个基于单片机的简易电子琴,并实现了电子琴基本功能。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。学期项目选题的依据(摘要)电子琴做为电子乐器的一种,可以模仿33目录方案论证系统设计功能模块介绍发声原理及程序流程图调试步骤总结参考文献目录方案论证34方案论证

方案一:用可控硅制作电子琴,将220V交流电经变压器降压,再经过滤波,整形获得+13.5V直流电压,将单向可控硅SCR和电阻、电容组成驰张振荡器电路。但该方案制作成本高且复杂。故不采用。

方案二:采用AT89C52单片机进行控制,但由于AT89C52在属于低档的单片机,已经面临淘汰,且仿真器价格昂贵,不易擦除。故不采用。方案三:采用两个555集成定时器组成简易电子琴,整个电路由主振荡器,颤音振荡器,扬声器和琴键按钮等部分组成。由于555产生的信号不稳定且精度不高。故不采用。方案四:采用采用AT89S52单片机进行控制,以AT89S52单片机为核心控制元件,与键盘、蜂鸣器等模块组成核心主控制模块,在主控模块上设有16个按键和蜂鸣器。程序易擦除,比较方便。根据以上比较可知应采用四种方案方案论证方案一:用可控硅制作电子琴,将220V交流电经变压35系统设计本电子琴系统主要包括AT89S52单片机,4x4键盘,发声模块,数码管显示单元,系统框图如图1所示。4x4键盘复位电路晶振12MHZ

AT89S52数码管显示单元发声模块电源电路图1系统设计本电子琴系统主要包括AT89S52单片机,4x4键盘36三、功能模块介绍

3.1时钟电路分析(单片机的晶振电路)此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89S52内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容CX1和CX2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为30pF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。单片机的18,19脚接外部晶体振荡器。三、功能模块介绍

3.1时钟电路分析(单片机的晶振电路)373.2复位电路的论证和分析AT89S52的复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路,当时钟频率选用12MHz时,C取10μF,Rs约为100Ω,Rk约为10KΩ。实际上为了方便,我们的硬件电路里面单片机的9脚RST直接接高电位,电源接通后复位3.2复位电路的论证和分析AT89S52的复位是由外部的复位383.3音频放大电路音频放大电路(图2)的选用对电子琴的音色及音量具有决定性的作用。本设计发声模块主要采用LM386,LM386是一种音频集成功放,具有自身功耗低,电压增益可调整,电源电压范围大,外接元件少和总谐波失真小等优点。广泛应用于录音机和收音机之中。LM386内部电路原理图(图3)所示与通用型集成运放相类似,它是一个三级放大电路第一级为差分放大电路T1和T3T2和T4分别构成复合管作为差分放大电路的放大管T5和T6组成镜像电流源作为T1和T2的有源负载T3和T4信号从管的基极输入,T2管的集电极输出为双端输入单端输出差分电路,使用镜像电流源作为差分放大电路有源负载可使单端输出电路的增益近似等于双端输出电容的增益第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。二极管D1和D2为输出级提供合适的偏置电压可以消除交越失真。引脚2为反相输入端,引脚3为同相输入端。电路由单电源供电故为OTL电路。输出端引脚5应外接输出电容后再接负载。电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈使整个电路具有稳定的电压增益。3.3音频放大电路音频放大电路(图2)的选用对电子琴的音色39图2音频放大器电路图3LM386内部电路原理图图2音频放大器电路图3LM386内部电路原理图403.4键盘模块当按键较多时会占用更过的控制器端口,为减少对端口的占用,本设计采用4×4矩阵键盘(图4),键盘矩阵行线连接P2.0~P2.3,列线连接P2.4~P2.7,扫描过程如下:程序首先判断是否有键按下,为判断16个按键中是否有键按下,程序首先在4条行线上放置4个0,即在P2端口输出0XF0,如果有任一按键按下,则4条列线上必有一位为0.如果已有键按下,则判断按键所在行、列位置,并返回按键序号。代码中行扫描码初值为0xFE,通过将该值循环右移,可对P2.0~P2.3对应的4行逐行发送0,每次发送扫描码后即判断高4位的4个1中是否有0出现,如果出现0说明按键在该行上,这时可将发送的低4位于读取的高4位取反,也就是P2取反,这样P2中将出现2个1,其余位均变为0,2个1分别处在低4位和高4位中,高低4位中1所处的位置各有4种可能,共有16种可能,对应十六个不同的按键,根据取反后的值查询键盘矩阵按键特征码表,即可得到按键序号。3.4键盘模块当按键较多时会占用更过的控制器端口,为减少对41图44x4键盘图44x4键盘423.5供电电路采用9v直流供电,分出两个电源,9v直接供给音频发大电路,另一部分经7805稳压到5v然后供给单片机。3.5供电电路采用9v直流供电,分出两个电源,9v直接供给43四.发声原理即程序流程图4.1音乐发声原理因此我们只要把一首歌曲的音阶对应频率关系弄正确,即可利用AT89S52的内部定时器使其工作计数器模式MODE1下改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。表1.作品采用的音符频率与简谱码对应表四.发声原理即程序流程图4.1音乐发声原理44音符频率(Hz)简谱码音符频率(Hz)简谱码低音mi33064021中音fa69864820低音fa34964103中音so78464898低音so39264260中音la88064968低音la44064400中音xi98865030低音xi49464524高音do104665058中音do52364580高音re117565110中音re58764684高音mi131865157中音mi65964777高音fa139765178音符频率(Hz)简谱码音符频率(Hz)简谱码低音mi3306454.2音乐发声程序框图(图5)

图5音乐发声程序框4.2音乐发声程序框图(图5)

图5音乐发声程序框46六、总结6.1课程设计心得及体会:通过这次单片机课程设计,我弄懂了不少课本上的知识,还扩展了一些课本没有的知识,再通过去图书馆查阅资料,很好的完成了这次课程设计。首先在课程设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机在各方面的应用。了解了单片机方面的先进技术,这些都为我的未来的学习指明了方向。我的课程设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。虽然本次课程设计的硬件焊接工序对大二焊接了一年的我来说不算什么难事,但是在焊接过程中我没有半点马虎,对电路的分析在指导老师卢毓俊老师的帮助下更是步步深入。在软件方面,因为程序的编写都是我的弱项,所以我是先从网上找来类似的程序模板,然后借助各方面的资料对程序的每一步进行分析,按题目的需求进行修改,最终才得到我现在的程序方案。六、总结6.1课程设计心得及体会:476.2不足之处1.可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度。

2.音色不可调,只有一种波形的频率输出。可以在外围电路设计滤波电路,接在不同的输出口,通过软件实现不同端口的输出,从而接入不同的滤波电路,输出不同的波形,从而获得不一样的音色。3.不能以和弦形式演奏,只能单个键按下输出单个的音阶。4.由于没有足够的设计经验,本次选用的按键不易按下,所以导致演奏时不够流畅。6.2不足之处1.可弹奏的音符数较少,只能在一定范围内满足用48电路原理图电路原理图49源程序

项目:可演奏电子琴//------------------------------------------------------//在键盘矩阵上模拟演奏电子琴,数码管显示按键号//------------------------------------------------------#include<reg51.h>#defineucharunsighedchar#defineuintunsighedint

//共阳数码管编号ucharcodeDSY_Table[]={0xc0,0xf9,0xa4,0xb0,0x,0x99,0x92,0x82,0xf8,0x80,//0、1、2、3、4、5、6、7、80x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//9、A、B、C、D、E、F、-//各音符对应的延时uintcodeTone_Delay_Table[]={64021,64103,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65110,65157,65178};sbitBEEP=P3^0;//蜂鸣器ucharKeyNo;//按键序号//------------------------------------------------------//延时//------------------------------------------------------voidDelayMS(ucharx){uchari;while(x--)for(i=0;i<120;i++);}源程序项目:可演奏电子琴50P1=0xF0;DelayMS(2);//按键后11110000将变成xxxx0000,x中1个为0,3个仍为1//下面的表达式会将高四位移至低四位,并将其中唯一的0变为1,其余的为0Tmp=(P1>>4)^)0x0F;//对0~3行分别附加起始值0,4,8,12switch(Tmp){case1:k+=0;break;case2:k+=4;break;case4:k+=8;break;case8:k+=12;break;default:return;}KeyNo=k;}//------------------------------------//键盘矩阵扫描子程序//------------------------------------voidkey_Scan(){ucharTmp,k;//高四位置0,放入四行P1=0x0F;DelayMS(2);//按键后00001111将变成0000xxxx,x中1个为0,3个仍为1//下面的异或操作会把3个1变成0,唯一的0变成1Tmp=P1^0x0F;//判断按键发生于0~3列的那一项Switch(Tmp){case1:k=0;break;case2:k=1;break;case4:k=2;break;case8:k=3;break;default:return;//无键按下}//低四位置0,放入四列P1=0xF0;//-------------------51

//----------------------------//定时器0中断程序,不同频率的声音由该中断产生//---------------------------------voidPlay_Tone(

温馨提示

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

评论

0/150

提交评论