1、基于单片机的简单电子琴设计本科毕业论文论文题目:基于单片机的简单电子琴设计 学 院: 电子工程学院 专 业: 电子信息工程 毕业届别: 姓 名: 指导教师: 职 称: 目录1引言12 总体设计22.1 设计目的与要求22.2 电子琴系统的组成22.3 系统设计框图33 详细设计43.1 硬件设计43.2 硬件简介53.2.1 AT89C51简介53.2.2 LED数码管103.3整体程序处理流程图设计113.4矩阵式键盘的识别和显示与设计123.4.1矩阵式键盘的结构与工作原理123.4.2矩阵式键盘的按键识别方法133.4.3键盘接口必须具有的4个基本功能153.5音乐播放设计163.5.1
2、音乐发声原理163.5.2音乐播放流程图183.5.3放歌子程序流程图184实现联调204.1 Proteus 简介204.2 keil 简介204.3利用keil与Proteus进行的调试215 总结与展望23参考文献25Abstract:.26致谢27附录A:程序设计28附录B 印制电路板(PCB)设计3436基于单片机的简单电子琴设计 摘要:电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文主要对使用单片机设计简易电子琴进行了分析与设计,并介绍了基于
3、单片机电子琴的系统硬件组成。该文设计是一种基于AT89C51的简单音乐发生器,利用单片机技术、键盘和一组发光二极、SPEARK等实现原理图设计,并用C51语言进行键盘识别程序设计和音频脉冲输出程序的设计。经过软件和硬件的联调,并仿真出来。该音乐发生器不仅能通过键盘弹奏出来简单的乐曲,而且不弹奏时按播放键可以播放内置音乐,音调和节拍都由单片机控制实现。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词:单片机;键盘;扬声器;电子琴1引言单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格
4、低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。虽然单片机出现的历史并不长,但发展十分迅猛,在集成度、功能、速度、可靠性、应用领域等全方位向更高水平发展。目前单片机已用于工业控制、机电一体化设备、仪器仪表、信号处理、现代兵器、交通能源、商用设备、医疗设备及家用电器等各个领域,随着单片机性能的不断提高,它的应用将会更加广泛。单片机技术发展非常快,及时掌握最新的单片机技术,在条件允许的情况下,尽可能地利用最新的单片机技术来研制其应用系统,再利用单片机体积小、价格低、功能强等特点,以保证所设计的产品在未来的一
5、段时间内仍具生命力。在生活和生产的各个领域中,凡是有自动控制要求的地方都会有单片机的身影出现;从简单到复杂,从空中、地面到地下,凡是能想象到的地方几乎都有使用单片机的需求。现在,尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目,因此,单片机的应用大有可以想象和拓展的空间。单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证安全等。但是,单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。从前必须由
6、模拟电路或数字电路实现的大部分控制功能,现在已能使用单片机通过软件(编程序)方法实现了。这种以软件取代硬件并能提高系统性能的控制系统“软化”技术,称之为微控制技术。微控制技术是一种全新的概念,是对传统控制技术的一次革命。随单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,它在现代音乐扮演着重要的角色,简易电子琴系统就是以单片机为主要元器件设计的一个简易电子琴。这只是单片机应用的一个点,由点及面,希望可以更好的了解和应用单片机技术。 之所以以单片机设计简易的电子琴为选题,目的在于从日常生活能接触到的细微处着手,通过理论与
7、实践的结合,更明确自己的所学所用,也在实践中发现理论的不足,对目前日益广泛应用的单片机有了更加理性化和感性化的认识,使理论和实践跟家很好的结合。 通过单片机设计简易电子琴这个选题,更深层次的了解了单片机技术,以前只是有理论,实践的机会不是很多,在做单片机设计简易电子琴这个选题的过程中,更加熟练的掌握了一些单片机芯片的应用,也解决了很多以前理论和实践脱节的问题,可谓对单片机的认识有了一个小的飞跃。本文的主要内容是用AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。并且主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统
8、硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。2 总体设计2.1 设计目的与要求本系统分为两个部分,一个是音乐播放,另一个就是电子琴弹奏。 关于声音的处理,使用单片机C语言,利用定时器来控制频率,而每个音符的符号只存在定义的表中。具体要求如下: 1.要求达到电子琴的基本功能,可以用弹奏出简单的乐曲。 2.用键盘作出电子琴的按键,每一个键代表一个音符。 3.各音符按一定的顺序排列,必须符合电子琴的按键排列顺序。 4.固定音乐播放由按键控制:“播放”按键,“弹奏/停止”按键。 5.弹奏电
9、子琴时能播放出准确的声音,不弹奏时可以播放内置音乐。2.2 电子琴系统的组成单片机因体积小、功能强、价格低廉而得到广泛应用。AT89C51单片机设计微型电子琴的方法,仅需AT89C51最小系统,扩展一组矩阵键盘,再接一组发光二极管用来指示电子琴的工作状态。本系统分为两个部分,一个是音乐的播放,另一个就是电子琴的弹奏。音乐播放部分:音乐实际上是有固定周期的信号。本文介绍用AT89C51的两个定时器(如T0,T1)控制,在P3.7脚上输出方波周期信号,产生乐音,通过矩阵键盘按键产生不同的音符,由此操作人员可以随心所欲的弹奏自己所喜爱的乐曲,当不想弹奏时通过按播放键可以演奏事先存放在单片机中的几首简
10、单的曲子。当歌曲演奏完时,通过按复位键便可回到初始状态,这样就做出了一台简易电子琴。由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。乐曲中,每一音符对应着固定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。电子琴弹奏部分:实际上就是把每个按键所对应的值
11、经过处理后发给单片机,再在单片机内把数字当作指针指向所对应的音符。2.3 系统设计框图该系统通过电子琴按键随意键入所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。通过这样可以不断的弹奏音乐。该设计由嵌入式电路,按键电路,LED显示电路和两个功能键组成,通过功能键可以选择播放音乐。其主要模块由五个部分组成,具体关系如下图2-1所示。51单片机AT89C51功能选择键 (弹奏/播放)4X4矩阵式键盘LED显示音频图2-1 电子琴的主模块上图即为此次设计中的电子琴的硬件结构图,我们运用单片机的最小系统。3 详细设计3.1 硬件设计 本设计采用AT89
12、C51作为主控部件,扩展一组4*4矩阵键盘,再接一组发光二极管,LED显示器和SPEARK,再接两个按键,一个用于播放内置音乐,一个用于用户弹奏与复位。电路原理图如下图3-1所示。图3-1系统板硬件连线3.2 硬件简介3.2.1 AT89C51简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输
13、出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3-2所示: 图3-2 AT89C51管脚图(1)AT89C51的主要特性与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路(2)8051单片机内
14、部结构图图3-3 8051单片机内部结构图(3)主要管脚说明VCC:供电电压。 GND:接地。 MCS-51单片机有4个双向的8位I/O口P0-P3。在无片外存储器的系统中,这4个I/O口的每一位都可以作为准双向通用I/O口使用。在有片外存储器的系统中,P2口作为地址的高8位,P0口作为地址的低8位和双向数据总线。P0口: P0口的位内部结构如图3-4所示。它由一个输出锁存器、两个三态输入缓冲器和输出驱动及控制电路组成。它既可作为I/O口,又可作为地址/数据总线。本设计中它只作为I/O口使用。作为输出口使用时,内部控制端发0电平使与门输出为0,场效应管T1截止,此时多路开关MUX与锁存器的端接
15、通。内部数据加在锁存器D端,当CL端的写脉冲出现后,与内部总线相连的D端数据取反后出现在端,经场效应管T2反向出现在P0的引脚上。当作输入口时,读脉冲将图中下方的三态输入缓冲器打开,这样端口上的数据经缓冲器送至内部总线。图中上方的缓冲器并不直接读端口引角上的数据,而是读锁存器Q端的数据,Q端与引角上的数据是一致的。VCCP0.x锁存器读锁存器地址/数据控制D读引脚 写锁存器内部总线QQMUXT2T1CL图3-4 P0口的位结构P1口:P1口的位内部结构如图3-5所示。P1口是通用I/O准双向静态端口,输出的信息有锁存。P1端口与P0端口的主要区别在于,P1端口用内部上拉电阻代替了场效应管T1,
16、且输出信息仅来自内部总线。若输出时D端的数据为1,T截止输出为1;若D端数据为0,则T导通,引脚输出为低电平。当作输入使用时,必须向锁存器写1,使场效应管截止,才可以作输入用。 P1端口是单片机中唯一仅有单功能的I/O端口,输出信号锁存在端口上,故又称为通用静态端口。VCCP1.x锁存器读锁存器D读引脚写锁存器内部总线QQT内部上拉电阻CL图3-5 P1口的位结构P2口:P2口的位内部结构如图3-6所示。和P1口比较,P2口多了转换控制部分。当P2口作通用I/O口使用时,多路开关MUX连接锁存器的Q端,构成一个准双向口。当系统扩展片外程序存储器时,P2端口就用来周期性地输出从外存中取指令的高8
17、位地址(A8-A15),此时MUX在CPU的控制下切换到与内部地址总线相连。因地址信号是不间断的,此时P2口就不能用作I/O端口使用了。VCCP2.x锁存器读锁存器地址控制D读引脚写锁存器内部总线QQMUXT内部上拉电阻CL图3-6 P2口的位结构P3口:P3口的位内部结构如图3-7 所示。和P1口比较,P3口增加了一个与非门和一个缓冲器,使其各端口线有两种功能选择。当处于第一功能时,第二输出功能线为1,此时输出与P1口相同,内部总线信号经锁存器和场效应管输出。当作输入时,“读引角”信号有效,下面的三态缓冲器打开(增加的一个为常开),数据通过缓冲器送到CPU内部总线。当处于第二功能时,锁存器由
18、硬件自动置1,使与非门对第二功能信号畅通。此时,“读引脚”信号无效,左下的三态缓冲器不通,引脚上的第二输入功能信号经右下的的缓冲器送入“第二功能输入端”。VCCP3.x锁存器读锁存器第二输出功能D读引脚写锁存器内部总线QT内部上拉电阻第二输入功能CL图3-7 P3口的位结构用AT89C51的并行口P0接44矩阵键盘,以P0.0P0.3作输入线,以P0.4P0.7作输出线;在数码管上显示每个按键的“0F”序号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。复位电路如下图3-8所示。图3-8 复位电路XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTA
19、L2:来自反向振荡器的输出。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。构成的内部时钟电路如下图3-9所示。图3-9 内部时钟电路3.2.2 LED数码管(1)数码管如图3-8 所示: 图3-8数码管(如图3-8所示)使用条件:1)、段及小数点上加限流电阻2)、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定3)、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA.峰值电流 100mA数码管使用注意事项说明:1)、数码管表面不要用手触摸,不要用手去弄引角;2)、焊接温度:度;焊接时间:3)、表面有保护膜的产品,可以在
20、使用前撕下来。(2)数码管的驱动方式:数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。主要用动态驱动。动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。3.3整体程序处理流程图设计初始化键盘扫描延时有无键按下有无键按下查表所得的数据送入P0,P3.7根据键值查表选择查表法功能选择键键值矩阵键盘键值根据当
21、前状态识别按键YYNN图3-103.4矩阵式键盘的识别和显示与设计3.4.1矩阵式键盘的结构与工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线
22、所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。具体的识别方法如下所述。3.4.2矩阵式键盘的按键识别方法37BF扫描信号输入X0X1X2X3210654A98EDC读取按键状况Y3Y2Y1Y0图3-11(4*4键盘)确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图2-4所示键盘,介绍过程如下。1、判断键盘中有无键按下 将全部行线Y0
23、-Y3置高电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。整个工作可分为4个阶段,说明如下:(1)在第一阶段,主要目的是判断3,2,1及0键有没有按下。首先将1110B信号送入X3,X2,X1,X0,也就是只有X0为低电平,其它各行均为高电平。接着读取Y3,Y2,Y1,Y0的状况。若Y3,Y2,Y1,Y0为1110,表示0键被按下。若Y3,Y2,Y1,Y0为1101,表示1键被按下。若Y3,Y2,Y1,Y0为1011,表示2键被按下。若Y3,Y2,Y1,Y0为0111,表示3
24、键被按下。若Y3,Y2,Y1,Y0为1111,表示0,1,2,3都没被按下,进入第二阶段。(2)在第二阶段,主要目的是判断键7,6,5,4有没有按下,首先将1101B信号送入X3,X2,X1,X0,也就是只有X1为低电平,接着读取Y3,Y2,Y1,Y0的状态。若Y3,Y2,Y1,Y0为1110,表示4键被按下。若Y3,Y2,Y1,Y0为1101,表示5键被按下。若Y3,Y2,Y1,Y0为1011,表示6键被按下。若Y3,Y2,Y1,Y0为0111,表示7键被按下。若Y3,Y2,Y1,Y0为1111,表示7,6,5,4都没按下,进入第三阶段。(3)在第三阶段,主要目的是判断键B,A,9,8有没有
25、按下,首先将1011B信号送入X3,X2,X1,X0,也就是只有X2为低电平,接着读取Y3,Y2,Y1,Y0的状态。若Y3,Y2,Y1,Y0为1110,表示8键被按下。若Y3,Y2,Y1,Y0为1101,表示9键被按下。若Y3,Y2,Y1,Y0为1011,表示A键被按下。若Y3,Y2,Y1,Y0为0111,表示B键被按下。若Y3,Y2,Y1,Y0为1111,表示8,9,A,B都没按下,进入第四阶段。(4)在第四阶段,主要目的是判断键F,E,D,C有没有按下,首先将0111B信号送入X3,X2,X1,X0,也就是只有X3为低电平,接着读取Y3,Y2,Y1,Y0的状态。若Y3,Y2,Y1,Y0为1
26、110,表示C键被按下。若Y3,Y2,Y1,Y0为1101,表示D键被按下。若Y3,Y2,Y1,Y0为1011,表示E键被按下。若Y3,Y2,Y1,Y0为0111,表示F键被按下。若Y3,Y2,Y1,Y0为1111,表示C,D,E,F都没按下,进入第一阶段,从新开始,继续扫描。2、判断闭合键所在的位置,在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。对应的程序设计为:/* 键扫描函数 */uchar
27、 getkey(void)uchar scancode,tmpcode;if (P0&0xf0)=0xf0)return(0);scancode = 0xfe;while(scancode&0x10)!=0)/ 逐行扫描P0 = scancode;/ 输出行扫描码if (P0&0xf0)!=0xf0)/ 本行有键按下tmpcode = (P0&0xf0)|0x0f;/* 返回特征字节码,为1的位即对应于行和列 */return(scancode)+(tmpcode);else scancode = (scancode0;i-);(2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又
28、有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。对应
29、的程序设计为:/* 外部中断0 ,这里是弹唱按键*/void EX0_INT() interrupt 0 FY=0; LED1=1; LED2=0; /* 外部中断1 ,这里是播放按键*/void EX1_INT() interrupt 2 FY=1; LED1=0; LED2=1; (4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。对应的程序设计为:/* 音符与计数值对应表 */uint code tab= 63628,63835,64021,64103,64260,64400,64524, 64580,64684,647
30、77,64820,64898,64968,65030, 65058,65110,65157,65178,65217,65252,65283,65085 ;3.5音乐播放设计3.5.1音乐发声原理音乐发声原理:一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时的半周期时
31、间,每当计时终止后就将P3.7反相,然后重复计时再反相。就可在P3.7引脚上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式是:Nfi2fr式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi2fr例如:设K65536,
32、fi1MHz,求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。 T65536N65536fi2fr6553610000002fr 65536500000/fr低音DO的T65536500000/26263628中音DO的T65536500000/52364580高音DO的T65536500000/104665058 6我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据。单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表3-1所示:表3-1 音符频率表音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低 1 DO2626362
33、8中 5 SO78464898低 2 RE29463835中 6 LA88064968低 3 M33064021中 7 SI98865030低 4 FA 34964103高 1 DO104665058低 5 SO39264260高 2 RE117565110低 6 LA44064400高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580高 5 SO156865217中 2 RE58764684高 6 LA176065252中 3 M65964777高 7 SI196765283中 4 FA69864820# 1 DO#1109650
34、85音乐的音拍,一个节拍为单位(C调),如下表3-2所示。表3-2 曲调值表曲调值曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。73.5.2音乐播放流程图 T0中断入口置TH0,TL0的初值P3.7取反中断返回图3-12音乐播放流程图3.5.3放歌子程序流程图T0初始化读取键值根据键值查表按位取值是否结束恢复初始条件延时再循环Y音符值送入T0读取节拍数延时启
35、动T0计数P3.7取反T0停止计数位值加1N节拍时间到到N图3-12放歌子程序流程图4实现联调4.1 Proteus 简介Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。该软件的特点: 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 目前支持的单
36、片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC。4.2 keil 简介单片机开发中除必要的硬件外,同样离不开软件,汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码, Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支
37、持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。应用Keil软件进行单片机软件调试有以下步骤:1. 建立一个工程项目。选择芯片,确定选项。2. 建立C源文件。3. 用项目管理器生成各种应用文件。4. 检查并修改原文件中的错误。5. 编程操作。4.3利用keil与Proteus进行的调试使用步骤:1. 打开keil,建立工程,输入程序2. 编译和
38、生成hex文件,如图4-1所示图4-1图4-2 利用keil进行编译3. 打开Proteus,设计硬件电路图,见图4-3图4-3 硬件电路图4. 导入hex文件,见图4-4图4-4将鼠标置于电路图中AT89C51器件上,右击后再左击,弹出图4-4中的对话框,在红线框中导入dzq.hex文件。5. 点击面板左下角的,开始调试5 总结与展望将程序导入AT89C51芯片,调试成功后,可任意弹奏自己想要的旋律。本课题通过用单片机设计简易电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想
39、要表达的音乐。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。通过这次课程设计,我感觉收获了很多:首先,通过实践,加深对单片机系列知识及其系统的认识。这个设计题目并不是新的,但从中能体现到一个系统开发设计的过程,足于让我们受益。第二,通过设计学习到了很多软件的使用。本次设计,软件部分用到了protues进行硬件设计,用kei
40、l进行程系编译。同时感谢我们的聂老师教育了我们单片机相关知识。 本设计的不足之处在于设计时很好的实现复位电路的设计,未能焊制电路板实物,本设计还可以扩展其他功能,比如记忆功能,即可以存储弹奏者所弹奏的音乐且保存,待弹奏完后播放给弹奏者听。还可以做得更加娱乐一点,增加一些彩灯使彩灯随着音调变化而产生不同的样式。 参考文献1 张靖武,周灵彬.单片机系统的PROTEUS设计与仿真M.北京:电子工业出版社,2007.4,195206.2 谢维成,杨加国. 单片机原理与应用及C51程序设计M.北京:清华大学出版社,2006.8,1224.3 张义和,王敏男,袁彩霞.例说51单片机(C语言版)M.北京:人
41、民邮电出版社,2008.4,268302.4 周坚.单片机C语言轻松入门 M.北京:北京航空航天大学出版社,2006.7,153161.5 朱清惠,张凤蕊.Protues教程电子线路设计、制板与仿真M.北京:清华大学出版社,2008.9,4652,332362.6 周琛晖.基于 AT89S51单片机的电子琴设计J .中国矿业大学计算机学院,江苏徐州(221008).7 韩改宁.基于AT89C52实现简单音乐发生器J .咸阳师范学院计算机科学系.陕西成阳(712000).8 Chen Tianzhou,Zbao Yi,Hu WeAssigning program to cache-aware s
42、cratchpad concerning the influence of the whole embedded sys- tem CNetworking,Architecture,and StoragesIEEE Conf of International Workshop on Aug2006,5.9 4 M Verma,S Steinke,P MarwedelData for maximal scratchpad usageC.Proeeedings of the 2003 conference on Asia South Pacific design automation,2003,7
43、783.The designs of A simple Electronic keyboard Based on SCM (Electronic and Information Engineering ,Grade 2006, College of Information Science and Technology ,Gansu Agricultural University,)Abstract:Electronic organ is a modern electronic music technology and the product is a new type of keyboard instruments. It played an important role in modern music. SCM has powerful con