基于单片机的简易电子琴的设计与实现
2014-07-18章丹
章丹
摘要:电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。该文的主要内容是用8253芯片为核心控制元件,设计一个简易电子琴。通过按动STAR ES598PCI单板机的G6区的1~7号键,使用单板机上的8255A芯片进行音调的选择,由8253芯片控制产生不同频率的方波,输出到单板机上D1区的蜂鸣器,使其对应于G6区的1~7号键由低到高发出1~7的音阶,并由8255A芯片控制8253芯片的工作状态,使其能够控制蜂鸣器的发声与否,从而实现简易电子琴的演奏功能。同时,也可以通过事先设置好的“乐谱”回放一段音乐,实现简易电子琴的回放功能以及对用户演奏过的一段音乐进行重放功能。用户可以通过DOS界面下的菜单对电子琴的回放和重放或是演奏功能进行选择。
关键词:电子琴;单片机;8253芯片
中图分类号:TP313 文献标识码:A 文章编号:1009-3044(2014)13-3179-03
Design and Implementation of Simple Microcontroller Based Keyboard
ZHANG Dan
(Hefei University, Hefei 230601, China)
Abstract: The keyboard is a combination of modern electronic music technology and the product is a new type of keyboard instrument. It plays an important role in modern music , SCM has a powerful control functions and flexible programming features, it has been integrated into the modern people's lives , become an irreplaceable part . The main content of this paper is to use 8253 as the core control elements , the design of a simple flower . By pressing the number keys 1-7 STAR ES598PCI SBC G6 zone , 8255A chips on a single board computer for tone selection control 8253 generates a square wave of different frequencies , the output of the SBC to bee region D1 buzzer to make it correspond to the G6 District No. 1 to 7 keys issued from low to high scale of 1 to 7 , 8253 by the 8255A chip to control the working status of the chip so that it can control the buzzer sound or not, thus achieve simple keyboard playing capabilities. Meanwhile , you can also pre-set " score " a piece of music playback , playback achieve simple keyboard and the user had to play a piece of music for playback function. DOS user interface via the menu next to the keyboard to play or replay and replay function selection.
Key words: Keyboard ; SCM ; 8253
1 解决问题方法及思路
1.1硬件部分
电子琴的主要的器件有一个并行接口8255和一个8253定时器。输入部分主要是由8个按键和一个并行接口8255组成。8个按键一端接地,另一端接到8255的A口输入,并且通过一个电阻接到+5V。因此,在按键不按下时,从8255A口输入的是高电平,当开关按下时,输入的则是低电平,这样通过低电平触发,既方便也对芯片起保护作用。当不同的开关按下时,从A口输入就对应一个8位的数据。通过软件检测输入的数据,然后给8253送相应频率的计数值。
电子琴以8253的2号计数器为核心。系统初始化时,2号计数器工作在“方波发生器”方式,CPU通过对定时器的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,写入顺序为先低后高,端口61H的最低位控制通道2门控的开断,,CLK2为1MHZ,当计数初值为3E8H时,OUT2输出的方波大约为1000 HZ,经过简单的滤波之后,送至蜂鸣器。改变2号计数器的计数初值就可以使蜂鸣器发出不同频率的声音。
在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。
芯片8255A的A口工作于基本输入方式下。G6区的1~7号按键(S29~S36)直接连接到8255A芯片的A口中,用于控制芯片8253的2号计数器的计数初值,从而使8253芯片能够对于不同的按键产生与其相对应的方波频率。从定时器输出的方波信号,经功率放大和滤波后驱动蜂鸣器。endprint
芯片8255A的C口工作于基本输出方式下。8255A芯片的C口的引脚PC0连接至8253芯片2号计数器的GATE引脚上,只有当PC0输出高电平至GATE引脚时,8253芯片的2号计数器才正常工作,产生方波,从而使蜂鸣器发出有规则的声音。反之则不会产生任何频率方波,那么蜂鸣器也就不会发出任何的声音。通过8255A芯片对8253芯片的控制来达到对蜂鸣器的是否发声的控制。
在设计过程中,采用独立编址时,用地址线的高位部分和控制信号(如RD、WR、M/IO)进行组合产生 I/O接口电路的片选信号(CS),用地址线的低位部分直接连到 I/O接口芯片实现端口的选择。在此采用的是译码器译码,经过74LS138译码后,Y2输出作为8253的片选信号(CS),即其端口地址为40H~43H。Y3输出作为8255的片选信号(CS),即其端口地址为60H~63H。
1.2 软件部分
程序设计有DOS下的功能选择界面,当用户选择演奏时,程序根据G6区1~7号按键输入到8255A芯片A口中的8位二进制数进行判断并将对应的计数初值存入8253 芯片2号计数器中,由8253芯片根据计数初值产生相应的频率,输出到D1区的CTRL口中,从而使蜂鸣器发出有规律的乐声。当用户选择回放功能时,程序会根据事先设计好的“乐谱”进行演奏,其工作原理与用户演奏的工作原理相同,只是程序进行频率判断的数据不是由用户实时输入,而是根据“乐谱”中存有的数据进行音阶的判断并对8253芯片2号计数器的计数初值进行修改。
就整个电路而言,接好电路后,通过软件编程不断地采集从8255口中输入的信号数据,由于已知开关未按下时的数据,通过比较检测到的数据和这个数据就可以判断是否有开关接通,若没有开关接通,则程序就通过8255A的C口PC0输出低电平,这样8253芯片的2号计数器将不会工作,蜂鸣器接受到固定的电平,将不会发声。只要有开关按下,程序就会采集到一个不同的数据,由于这个数据会不同于未按下按钮时A口的数据,此时程序会修改8255A的C口输出数据,使PC0输出高电平,这样8253的2号计数器即开始正常工作,根据A口输入的数据与事先编好的表对应,得到一个计数值,把这个计数值送给8253的通道2,8253的通道2工作的方式3下,这样就可以产生满足频率要求的发声方波。这个方波经驱动放大就可以使扬声器发出相应的声音。
设计“乐谱”时,数据段设置两张表,一张为频率表,将与音符对应的频率值依次写入表中,另一张为时间表,依次存放每个音符的单位时间。当然,频率表和时间表的表项要一一对应,不能错位,频率表的最后一个表项为0,作为重复演奏或者是停止演奏的标志。当用户选择回放功能后,程序会修改8255A的C口输出数据,使PC0输出高电平,这样8253的2号计数器即开始正常工作,程序依次取出频率表中的频率值,装换成计数初值写入8253的2号计数器,再依次取出时间表中的单位时间和调试参数N相乘即可得到延时时间,也就是单个音符的演奏持续时间。8253的2号计数器在这两个数据的控制下发出有规律的方波信号至蜂鸣器,蜂鸣器即开始演奏“乐谱”。在频率表的最后会有一个特殊符号,当程序检测到这个特殊符号时,将会修改8255A的C口输出数据,使PC0输出低电平,这样8253的2号计数器即停止工作,蜂鸣器也就停止发出声音,此时回放结束。
2 硬件设计
2.1 芯片8253在本设计中的作用
芯片8253在本实验中主要用于输出规定频率的方波,控制蜂鸣器发出规定频率的声音。
8253A是一种可编程的定时器/计数器芯片,它可用于计数、分频、定时器等的方面。当其工作于“方波发生器”工作方式下,可以从OUT引脚得到对称的方波输出。当装入的计数值N为偶数时,则前N/2计数过程中,OUT为高电平;后N/2计数过程中OUT为低电平,计数过程连续进行。若N为奇数,则(N+1)/2计数过程中,OUT保持高电平;而(N-1)/2计数期间,OUT为低电平。当GATE信号为低电平时,强迫OUT输出高电平。当GATE为高电平时,OUT输出对称方波。在产生方波过程中,若装入新的计数值,本次计数完成后,以新的计数值开始下一轮的计数。
使用8253芯片的2号计数器,将其设置为“方波发生器”的工作方式,修改其计数初值,即可在8253芯片的OUT2引脚得到不同频率的方波。将不同频率的方波输出到蜂鸣器便可以使其发出不同音阶的乐声。
2.2 8255A在本设计中的作用
芯片8255A在本实验中主要用于接收1~7号按键的输入,控制蜂鸣器的开关和8253芯片的正常工作。8255是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、B口和C口。三个端口都可以作为输入端口或输出端口。A口有三种工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。
使用8255A芯片的A口,将其设置为基本输入工作方式,通过A口的8位数据线连接G6区的8位按键数据线,接收用户的输入。使用8255A芯片的C口,将其设置为基本输出工作方式,通过PC0输出线连接到芯片8253的GATE2口,使其2号计数器正常工作,从而控制蜂鸣器的发声与否。
由于蜂鸣器本身在输入端含有放大电路,所以无需考虑8253输出给蜂鸣器的驱动电流和电压的大小,只须保证其输出的驱动电流和电压位于蜂鸣器电路的输入有效范围内即可。
2.3 蜂鸣器在本设计中的作用
在本实验中,蜂鸣器用作将8253产生的不同频率装换为不同的音调的声音。当输入端输入一定频率的方波时,在RC震荡电路的作用下,蜂鸣器会发出一定频率的声音。
2.4二进制开关在本设计中的作用
在本实验中,二进制开关用于输入不同的数值,确定频率。二进制开关为输入器件,通过电平的不同输入不同的二进制数。endprint
3 控制程序设计思路说明
程序采用模块化设计,分为主程序,回放功能模块,演奏功能模块,菜单模块,发音模块,延时模块,重放模块等。菜单模块用于显示用户菜单,供用户选择电子琴的功能以及显示当前电子琴的功能状态。回放功能模块用于从“乐谱”中读取数据,并装换为计数初值传给8253的2号计数器。演奏模块则用于接收用户的按键输入,判断音阶然后传递规定的计数初值给计数器。发音模块则用于控制蜂鸣器的发声与否,使其能够根据8253提供的方波频率发声或停止发声。在程序编写过程中,会对各个功能模块的功能进行进一步的改进和功能细分,不排除进行模块之间的功能合并和分割。
4 上机调试过程
4.1硬件调试
在各个硬件芯片之间的连接调试中,需要注意的是连接的可靠性。由于设计的连线方案也并不复杂,在硬件的调试过程中连线方面并没有出现接错现象。在硬件的调试过程中遇到的主要的问题是8253和8255A芯片的片选信号到底应该由单板机接线板上的哪些接口给出。8253的片选信号由接线板上的CS5给出,8255A的片选信号由CS1给出。由于单板机上的蜂鸣器构造不同于一般常见的发音蜂鸣器,导致在测试蜂鸣器时,虽然给蜂鸣器的方波频率为标准的发音频率,但发出的声音却不令人满意。因此对每一个音阶所需要的频率,都需要进行实际的测试与调整,最终得到比较满意的音质效果。
4.2软件调试
软件的调试中,主要集中在程序的人机交互方面和回放功能的实现上。为了能达到一个良好的人机交互效果,设计了一个在DOS界面下的选择菜单,通过用户对菜单项的选择来调用程序中的相应功能模块。在程序的初期设计阶段,采用模块化的设计思想,各个功能之间互相独立互不干扰。这种方案容易忽视寄存器的初值问题。当调用完一个功能模块后,由于忽略了对寄存器的善后处理,未对使用过的相关寄存器进行初始化,造成调用其它模块时的寄存器初值错误,使整个的实验出现错误。由此可见,在对程序的不断完善过程中,遇到的问题,需要通过大量的测试将其解决。
对于程序的回放功能,笔者将频率与节拍分开进行存储,设立一个频率表和一个延时表,通过程序对这两个表中一一对应的数据进行读取,来实现蜂鸣器的演奏。
4.3联机调试
实验过程对8255A芯片只是使用了A口和C口,B口空闲,因此在调试的过程中,笔者利用G6区的LED灯,连接至8255A的B口,将B口设为输出,通过添加相应的程序模块,实现了对于每个开关都有相应的LED灯对其指示的功能,在演奏模式下,当按下一个开关时,其对应的LED灯即亮起;在回放模式下,程序读到何种频率,其对应开关的LED指示灯即亮起。当进行其它的操作时,也会有相应的指示信号亮起。同时,在联机调试的过程中,笔者也最大程度地完善程序的人机交互界面,使其更易使用。
4.4调试结果及问题的提出
当程序开始运行时,会在屏幕上先显示2秒的欢迎界面,所有LED灯会闪烁一次,然后进入菜单选择界面,由用户通过键盘输入选项。当用户输入错误,则会提示用户输入出错并回到菜单选择界面。当用户选择正确时,所有的LED灯也会闪烁一次。当用户选择演奏模式时,屏幕出现提示信息。当用户按下1~7号开关时,蜂鸣器会发出对应频率的声音,并亮起对应的LED灯。当用户按下0号开关,可以返回选择菜单。当用户选择回放功能时,屏幕出现提示信息,系统自动播放乐曲,并根据当前演奏的音符亮起对应LED灯,此时按1~7号开关无反应,按0号开关终止回放并回到菜单。当用户选择退出时,所有LED灯会闪烁一次,屏幕会显示2秒的再见界面,程序终止。
程序设计的仍然比较简单,只能实现7个音符的演奏和回放以及重放功能,若有可能,可以扩展至更广的音域。
程序提供的功能也很单一,还可以添加记录演奏功能,并可以对记录下的乐谱进行回放。
如果可能,可以将蜂鸣器更改为喇叭,这样的话程序在实现电子琴的功能时能够提供更为优秀的音质表现以及更多功能实现的可能。
5 结束语
本文通过对STAR ES598PCI单板机的G6区的1~7号键操作,使用单板机上的8255A芯片进行音调的选择,由8253芯片控制产生不同频率的方波,输出到蜂鸣器,使其对应于不同的开关由低到高发出1~7的音阶,从而实现简易电子琴的演奏功能。同时,也可以通过事先设置好的“乐谱”回放一段音乐,实现简易电子琴的回放功能和重放功能。通过简单的人机交互,实现电子琴的全部功能,达到良好的使用效果。
参考文献:
[1] 孙万麟. 基于AT89C51单片机的电子琴设计[J].电脑知识与技术,2010(20).
[2] 黄亮.基于AT89C2051单片机的电子琴电路的设计[J].电子制作,2006(05).
[3] 盛青松.基于AT89C51可弹奏电子琴的设计[J].科技信息,2010(32).
[4] 张晓朋.基于DSP的琴音分析系统[D].郑州大学,2006.endprint
3 控制程序设计思路说明
程序采用模块化设计,分为主程序,回放功能模块,演奏功能模块,菜单模块,发音模块,延时模块,重放模块等。菜单模块用于显示用户菜单,供用户选择电子琴的功能以及显示当前电子琴的功能状态。回放功能模块用于从“乐谱”中读取数据,并装换为计数初值传给8253的2号计数器。演奏模块则用于接收用户的按键输入,判断音阶然后传递规定的计数初值给计数器。发音模块则用于控制蜂鸣器的发声与否,使其能够根据8253提供的方波频率发声或停止发声。在程序编写过程中,会对各个功能模块的功能进行进一步的改进和功能细分,不排除进行模块之间的功能合并和分割。
4 上机调试过程
4.1硬件调试
在各个硬件芯片之间的连接调试中,需要注意的是连接的可靠性。由于设计的连线方案也并不复杂,在硬件的调试过程中连线方面并没有出现接错现象。在硬件的调试过程中遇到的主要的问题是8253和8255A芯片的片选信号到底应该由单板机接线板上的哪些接口给出。8253的片选信号由接线板上的CS5给出,8255A的片选信号由CS1给出。由于单板机上的蜂鸣器构造不同于一般常见的发音蜂鸣器,导致在测试蜂鸣器时,虽然给蜂鸣器的方波频率为标准的发音频率,但发出的声音却不令人满意。因此对每一个音阶所需要的频率,都需要进行实际的测试与调整,最终得到比较满意的音质效果。
4.2软件调试
软件的调试中,主要集中在程序的人机交互方面和回放功能的实现上。为了能达到一个良好的人机交互效果,设计了一个在DOS界面下的选择菜单,通过用户对菜单项的选择来调用程序中的相应功能模块。在程序的初期设计阶段,采用模块化的设计思想,各个功能之间互相独立互不干扰。这种方案容易忽视寄存器的初值问题。当调用完一个功能模块后,由于忽略了对寄存器的善后处理,未对使用过的相关寄存器进行初始化,造成调用其它模块时的寄存器初值错误,使整个的实验出现错误。由此可见,在对程序的不断完善过程中,遇到的问题,需要通过大量的测试将其解决。
对于程序的回放功能,笔者将频率与节拍分开进行存储,设立一个频率表和一个延时表,通过程序对这两个表中一一对应的数据进行读取,来实现蜂鸣器的演奏。
4.3联机调试
实验过程对8255A芯片只是使用了A口和C口,B口空闲,因此在调试的过程中,笔者利用G6区的LED灯,连接至8255A的B口,将B口设为输出,通过添加相应的程序模块,实现了对于每个开关都有相应的LED灯对其指示的功能,在演奏模式下,当按下一个开关时,其对应的LED灯即亮起;在回放模式下,程序读到何种频率,其对应开关的LED指示灯即亮起。当进行其它的操作时,也会有相应的指示信号亮起。同时,在联机调试的过程中,笔者也最大程度地完善程序的人机交互界面,使其更易使用。
4.4调试结果及问题的提出
当程序开始运行时,会在屏幕上先显示2秒的欢迎界面,所有LED灯会闪烁一次,然后进入菜单选择界面,由用户通过键盘输入选项。当用户输入错误,则会提示用户输入出错并回到菜单选择界面。当用户选择正确时,所有的LED灯也会闪烁一次。当用户选择演奏模式时,屏幕出现提示信息。当用户按下1~7号开关时,蜂鸣器会发出对应频率的声音,并亮起对应的LED灯。当用户按下0号开关,可以返回选择菜单。当用户选择回放功能时,屏幕出现提示信息,系统自动播放乐曲,并根据当前演奏的音符亮起对应LED灯,此时按1~7号开关无反应,按0号开关终止回放并回到菜单。当用户选择退出时,所有LED灯会闪烁一次,屏幕会显示2秒的再见界面,程序终止。
程序设计的仍然比较简单,只能实现7个音符的演奏和回放以及重放功能,若有可能,可以扩展至更广的音域。
程序提供的功能也很单一,还可以添加记录演奏功能,并可以对记录下的乐谱进行回放。
如果可能,可以将蜂鸣器更改为喇叭,这样的话程序在实现电子琴的功能时能够提供更为优秀的音质表现以及更多功能实现的可能。
5 结束语
本文通过对STAR ES598PCI单板机的G6区的1~7号键操作,使用单板机上的8255A芯片进行音调的选择,由8253芯片控制产生不同频率的方波,输出到蜂鸣器,使其对应于不同的开关由低到高发出1~7的音阶,从而实现简易电子琴的演奏功能。同时,也可以通过事先设置好的“乐谱”回放一段音乐,实现简易电子琴的回放功能和重放功能。通过简单的人机交互,实现电子琴的全部功能,达到良好的使用效果。
参考文献:
[1] 孙万麟. 基于AT89C51单片机的电子琴设计[J].电脑知识与技术,2010(20).
[2] 黄亮.基于AT89C2051单片机的电子琴电路的设计[J].电子制作,2006(05).
[3] 盛青松.基于AT89C51可弹奏电子琴的设计[J].科技信息,2010(32).
[4] 张晓朋.基于DSP的琴音分析系统[D].郑州大学,2006.endprint
3 控制程序设计思路说明
程序采用模块化设计,分为主程序,回放功能模块,演奏功能模块,菜单模块,发音模块,延时模块,重放模块等。菜单模块用于显示用户菜单,供用户选择电子琴的功能以及显示当前电子琴的功能状态。回放功能模块用于从“乐谱”中读取数据,并装换为计数初值传给8253的2号计数器。演奏模块则用于接收用户的按键输入,判断音阶然后传递规定的计数初值给计数器。发音模块则用于控制蜂鸣器的发声与否,使其能够根据8253提供的方波频率发声或停止发声。在程序编写过程中,会对各个功能模块的功能进行进一步的改进和功能细分,不排除进行模块之间的功能合并和分割。
4 上机调试过程
4.1硬件调试
在各个硬件芯片之间的连接调试中,需要注意的是连接的可靠性。由于设计的连线方案也并不复杂,在硬件的调试过程中连线方面并没有出现接错现象。在硬件的调试过程中遇到的主要的问题是8253和8255A芯片的片选信号到底应该由单板机接线板上的哪些接口给出。8253的片选信号由接线板上的CS5给出,8255A的片选信号由CS1给出。由于单板机上的蜂鸣器构造不同于一般常见的发音蜂鸣器,导致在测试蜂鸣器时,虽然给蜂鸣器的方波频率为标准的发音频率,但发出的声音却不令人满意。因此对每一个音阶所需要的频率,都需要进行实际的测试与调整,最终得到比较满意的音质效果。
4.2软件调试
软件的调试中,主要集中在程序的人机交互方面和回放功能的实现上。为了能达到一个良好的人机交互效果,设计了一个在DOS界面下的选择菜单,通过用户对菜单项的选择来调用程序中的相应功能模块。在程序的初期设计阶段,采用模块化的设计思想,各个功能之间互相独立互不干扰。这种方案容易忽视寄存器的初值问题。当调用完一个功能模块后,由于忽略了对寄存器的善后处理,未对使用过的相关寄存器进行初始化,造成调用其它模块时的寄存器初值错误,使整个的实验出现错误。由此可见,在对程序的不断完善过程中,遇到的问题,需要通过大量的测试将其解决。
对于程序的回放功能,笔者将频率与节拍分开进行存储,设立一个频率表和一个延时表,通过程序对这两个表中一一对应的数据进行读取,来实现蜂鸣器的演奏。
4.3联机调试
实验过程对8255A芯片只是使用了A口和C口,B口空闲,因此在调试的过程中,笔者利用G6区的LED灯,连接至8255A的B口,将B口设为输出,通过添加相应的程序模块,实现了对于每个开关都有相应的LED灯对其指示的功能,在演奏模式下,当按下一个开关时,其对应的LED灯即亮起;在回放模式下,程序读到何种频率,其对应开关的LED指示灯即亮起。当进行其它的操作时,也会有相应的指示信号亮起。同时,在联机调试的过程中,笔者也最大程度地完善程序的人机交互界面,使其更易使用。
4.4调试结果及问题的提出
当程序开始运行时,会在屏幕上先显示2秒的欢迎界面,所有LED灯会闪烁一次,然后进入菜单选择界面,由用户通过键盘输入选项。当用户输入错误,则会提示用户输入出错并回到菜单选择界面。当用户选择正确时,所有的LED灯也会闪烁一次。当用户选择演奏模式时,屏幕出现提示信息。当用户按下1~7号开关时,蜂鸣器会发出对应频率的声音,并亮起对应的LED灯。当用户按下0号开关,可以返回选择菜单。当用户选择回放功能时,屏幕出现提示信息,系统自动播放乐曲,并根据当前演奏的音符亮起对应LED灯,此时按1~7号开关无反应,按0号开关终止回放并回到菜单。当用户选择退出时,所有LED灯会闪烁一次,屏幕会显示2秒的再见界面,程序终止。
程序设计的仍然比较简单,只能实现7个音符的演奏和回放以及重放功能,若有可能,可以扩展至更广的音域。
程序提供的功能也很单一,还可以添加记录演奏功能,并可以对记录下的乐谱进行回放。
如果可能,可以将蜂鸣器更改为喇叭,这样的话程序在实现电子琴的功能时能够提供更为优秀的音质表现以及更多功能实现的可能。
5 结束语
本文通过对STAR ES598PCI单板机的G6区的1~7号键操作,使用单板机上的8255A芯片进行音调的选择,由8253芯片控制产生不同频率的方波,输出到蜂鸣器,使其对应于不同的开关由低到高发出1~7的音阶,从而实现简易电子琴的演奏功能。同时,也可以通过事先设置好的“乐谱”回放一段音乐,实现简易电子琴的回放功能和重放功能。通过简单的人机交互,实现电子琴的全部功能,达到良好的使用效果。
参考文献:
[1] 孙万麟. 基于AT89C51单片机的电子琴设计[J].电脑知识与技术,2010(20).
[2] 黄亮.基于AT89C2051单片机的电子琴电路的设计[J].电子制作,2006(05).
[3] 盛青松.基于AT89C51可弹奏电子琴的设计[J].科技信息,2010(32).
[4] 张晓朋.基于DSP的琴音分析系统[D].郑州大学,2006.endprint