具有自动乐曲演奏功能的电子琴设计说明
简易电子琴的设计说明

题目: 简易电子琴的设计初始条件:1.运用所学的微机原理和接口技术知识;2.微机原理和接口技术实验室的实验箱设备。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)使用汇编语言设计一个能够用键盘运行的电子琴,(实现一个以上功能):1.弹奏:用户每按一个键盘琴键就弹奏相应的音符;2.演奏:按下键盘上某一个指定的建后自动弹奏预存琴谱功能;3.变调:按下键盘上某一指定键后,再弹奏和演奏时琴键相应的音符频率变高;按下另一指定键后,再弹奏和演奏时琴键相应的音符频率变低;4.严格按照课程设计说明书要求撰写课程设计说明书。
摘要随着电子技术的发展,电子琴很为常见,硬件的设计很费人力与物力,因此软件的应用得到了很好的应用,这个简易电子琴设计采用了软硬件结合的方法完成了任务要求。
应用了8255和8253的芯片,利用CPU,8086达到软硬件结合,从而实现电子琴的弹奏和演奏两种方式的应用。
可以随心所欲控制电子琴是弹奏还是自动演奏。
此电子琴程序实现了:1.弹奏:用户每按一个键盘琴键就弹奏相应的音符;2.演奏:按下键盘上某一个指定的建后自动弹奏预存琴谱功能。
k0为控制键:高电平时自动演奏。
打到低电平时停止演奏。
低电平时可弹奏,K1,K2,K3,K4,K5,K6,K7分别为1,2,3,4,5,6,7目录………………………………………………………………………………………………前言第一章电子琴的设计要求和使用器件1.1 初始条件1.2 电子琴要完成的主要任务1.3 电子琴课设的使用器件1.4 设计方案的确定第二章电子琴的硬件设计2.1 电子琴的硬件框图2.2 8255芯片的资料2.3 8253芯片的资料第三章电子琴的软件设计3.1 程序流程图3.2 发音程序3.3 延时程序3.4 停止发音程序3.5 整体的软件汇编程序第四章电子琴的调试和设计体会4.1 硬件调试4.2 软件调试4.3 设计体会第五章附录5.1 参考文献5.2 乐谱5.3 成绩评定表前言随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。
单片机应用课程设计--简易电子琴设计

delay(5);
if (key1 == 0)
{
key_in_flag = 0;
key_value = 4;
}
}
else
{
key_in_flag = 1;
}
key8 = 1;
key7 = 0;
if (key4 == 0)
{
delay(5);
if (key4 == 0)
{
key_in_flag = 0;
参考文献
[1] 赵鑫,蒋亮,齐兆群.数字电路设计[M].北京机械工业出版社,2005年6月第一版
[2] 苏家健,曹柏荣,汪志锋.单片机原理及应用技术[M].高等教育出版社
[3] 李朝青.单片机原理及接口技术[M].北京:北京航天航空大学出版色,2001
[4] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004
{
key_in_flag = 0;
key_value = 2;
}
}
else
{
key_in_flag = 1;
}
if (key2 == 0)
{
delay(5);
if (key2 == 0)
{
key_in_flag = 0;
key_value = 3;
}
}
else
{
key_in_flag = 1;
}
if (key1 == 0)
方案二: 采用AT89C51单片机进行控制,由于AT89C51不具备ISP功能, 因此Atmel公司已经停产在市面上已经不常见,况且其ROM只有4K在系统将来升级方面没有潜力。
方案三:采用AT89S52单片机进行控制,由于其性价比高,完全满足了本作品智能化的要求,它的内部程序存储空间达到8K,使软件设计有足够的内部使用空间并且方便日后系统升级,使用方便,抗干扰性能提高。
21按键简易电子琴可自动播放乐曲知识讲解

21按键简易电⼦琴可⾃动播放乐曲知识讲解21按键简易电⼦琴可⾃动播放乐曲课程设计报告课程名称:FPGA课程设计(EDA技术及应⽤)题⽬:基于FPGA的简易电⼦琴设计学院:物理与电⼦⼯程学院专业:电⼦信息⼯程班级:学号:学⽣姓名:指导教师:起讫⽇期:1 设计⽬的任务及要求 (5)设计要求(简易电⼦琴的功能) (5)1.1设计⽬的 (5)1.2设计要求 (4)2、设计内容(实现过程) (5)⼀)、设计思路 (2)⼆)、设计实现 (5)1)按键输⼊的判断 (5)A.代码 (6)B.波形仿真图 (6)2)按键去抖动 (6)A.代码 (6)B.波形仿真图 (7)3)⾳乐⾃动播放 (7)A.代码 (7)B.波形仿真图 (9)4)⼆选⼀选择器 (9)A.代码 (9)B.波形仿真图 (9)5)按键的输出 (10)A.代码 (10)B.波形仿真图 (11)6)分频预置数的产⽣ (11)A.代码 (12)B.波形仿真图 (14)7)分频器 (14)A.代码 (14)B.波形仿真图 (16)3、系统仿真与调试 (17)4、结束语(感想和⼼得等) (20)5、主要参考⽂献 (22)基于FPGA的简易电⼦琴设计物理与电⼦⼯程学院电⼦信息⼯程1 设计⽬的任务及要求1简易电⼦琴1)设计⼀个能发出7个⾳阶的系统并能多种模式播放歌曲(歌曲可⾃定,⾄少3⾸)2)利⽤⼀基准脉冲产⽣1,2,3,。
共7个⾳阶信号,进⾏弹奏;3)⽤指⽰灯显⽰节拍;4)*能对弹奏乐曲存储并回放。
1.1设计⽬的1、熟悉VHDL语⾔2、学习电⼦琴的设计,调试,仿真以及对仿真波形的调试1.2设计要求(简易电⼦琴的功能)1、设计⼀个能发出7个⾳阶的系统并能多种模式播放歌曲(歌曲可⾃定,⾄少⾸)2、利⽤⼀基准脉冲产⽣1,2,3,。
共7个⾳阶信号,进⾏弹奏;3、⽤指⽰灯显⽰节拍;4、*能对弹奏乐曲存储并回放。
2、设计内容⼀)、设计思路⼆)、设计实现本设计实现了能发出底、中、⾼三个节拍的7个⾳阶的系统,整个系统共有3⾸歌曲,这三⾸歌曲具有顺序播放和随机切换歌曲的播放功能。
用Quartus II设计电子琴

(音阶发生器仿真图)
3.数控分频模块程序与仿真
--文件名:speaker.vhd。 --功 能:实现数控分频。 --最后修改日期:20004.3.19。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity speaker is Port ( clk1 : in std_logic; tone1 : in integer range 0 to 2047; spks : out std_logic); end speaker; architecture Behavioral of speaker is signal preclk,fullspks:std_logic; begin
(顶层文件仿真图)
2.音阶发生器程序与仿真
--文件名:tone.vhd。 --功能:音阶发生器程序。 --最后修改日期:2004.4.13。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity tone is Port ( index : in std_logic_vector(7 downto 0); code : out std_logic_vector(6 downto 0); high : out std_logic; tone0 : out integer range 0 to 2047); end tone; architecture Behavioral of tone is begin
八音自动播放电子琴设计

八音自动播放电子琴设计首先,我们来介绍一下八音自动播放电子琴的设计原理。
该电子琴通过使用一个专门设计的芯片来控制音色的输出。
这个芯片包含了多个音源,每个音源都能够产生特定的音调。
通过控制这些音源的输出,可以实现不同的音调组合,从而产生各种曲调。
接下来,我们来看一下八音自动播放电子琴的硬件架构。
整个硬件架构通常包括音源模块、控制模块和音箱模块。
音源模块主要负责产生音调,并将其输出给控制模块。
控制模块则负责接收用户的输入指令,并根据指令控制音源模块的输出。
最后,音箱模块负责将产生的声音放大,从而使得音乐可以被听到。
在软件方面,八音自动播放电子琴的设计需要考虑到音调的控制以及音乐的编码。
音调的控制可以通过编程实现,将不同的音调对应到不同的控制指令上。
音乐的编码可以采用MIDI(Musical Instrument Digital Interface)标准,通过将音乐的各个元素进行编码,可以实现对音乐的控制和演奏。
实现八音自动播放电子琴的关键技术主要包括音源的设计和控制模块的编程。
在音源的设计方面,需要考虑到音色的产生和输出。
通常可以采用数字合成技术(Digital Sound Synthesis),通过数学算法模拟不同乐器的音色。
在控制模块的编程方面,需要设计一个用户友好的界面,方便用户选择和控制不同的音调和曲调。
接下来,我们来介绍一下八音自动播放电子琴的使用方法。
用户可以通过控制模块上的按钮选择不同的音调和曲调。
同时,用户也可以通过外部设备(如电脑或手机)将自己编写的音乐文件导入到电子琴中进行演奏。
通过简单的操作,用户就可以轻松地演奏出各种曲调。
总结一下,八音自动播放电子琴是一种能够自动演奏八种不同音调的电子琴。
它的设计原理是通过内置程序以及特殊的装置,实现对音调的控制和演奏。
在硬件方面,需要考虑到音源模块、控制模块和音箱模块的设计和连接。
在软件方面,需要考虑到音调的控制和音乐的编码。
实现八音自动播放电子琴的关键技术包括音源的设计和控制模块的编程。
具有自动乐曲演奏功能的电子琴设计方案

具有自动乐曲演奏功能的电子琴设计方案随着科技的不断发展和社会的进步,市场上的文艺创新产品也愈发多元化且逐渐走向智能化,生产和消费之间的互动因此得到了极大的加强。
在这个背景下,我们提出了一个关于具有自动乐曲演奏功能的电子琴设计方案。
希望今后的音乐爱好者可以通过我们的产品和服务体验到更加智能化、便捷化、高质量化的演奏乐趣。
一、需求分析1.市场需求市场上的电子琴产品品种繁多,大多数具有播放乐曲的功能。
但是有很多人想要自己去创作或演奏一些不常见的乐曲,这些人需要有一个便捷、高质量、多功能的电子琴来演奏他们想要弹奏的乐曲,而不仅仅是基础的乐曲播放功能。
同时,对于一些音乐爱好者来说,由于技术不够精湛或者时间不够充足,实现乐曲演奏的梦想也变得更加困难,因此需要一个能够自动演奏乐曲的电子琴来帮助他们实现自己的音乐梦想。
2.用户需求用户的需求主要包括乐曲库的丰富性、演奏效果的高质量、自动生成乐谱和自动演奏的功能、以及方便的使用操作界面。
尤其是针对一些音乐初学者和爱好者,这些需求更加强烈,他们需要一个可以在几分钟内完成流畅演奏的电子琴,这样就能够节省更多时间去探索音乐的魅力和美妙。
二、产品设计与研发1.硬件设计以STM32系列的芯片为核心,我们设计了一个采用全力敏键盘和G波声源模块的电子琴,相比市面上常见的电子琴硬件方案,我们的设计具有更高的稳定性和更多的扩展性。
采用合理的电路结构,确保整个系统硬件结构紧凑,稳定性好,能满足较高要求的应用场合。
2.软件开发考虑到用户需求,我们开发了自动演奏功能的应用程序,用户可以选择想要演奏的曲目,系统会自动生成该曲目的乐谱并在电子琴上自动演奏。
此外,我们还为用户提供个性化的调节、变调、增强音效等功能,让用户可以根据需求调整乐曲的细节。
3.外观设计我们希望这个电子琴不仅能够在功能上满足用户的需求,同时也能够在外观设计上给用户带来愉悦的体验。
因此我们采用了流线型的设计,外观彰显时尚和高端感,更加符合当代的审美趋势。
具有自动乐曲演奏功能的电子琴设计

具有自动乐曲演奏功能的电子琴设计随着科技的日新月异,电子琴也迎来了越来越多的创新,其中最令人惊叹的创新之一,就是具有自动乐曲演奏功能的电子琴。
这种琴能够自动演奏音符和声音,让人们在享受音乐的同时,也能够省去练习琴技的繁琐过程。
本文将介绍一款具有自动乐曲演奏功能的电子琴的设计。
1. 功能需求:在设计具有自动乐曲演奏功能的电子琴时,需要考虑一些功能需求。
首先,它必须有播放和演奏器件、音频处理器、节拍器和内存芯片等组件。
其次,需要内置大量的音源和音乐,可以存储不同种类和类型的乐曲,包括古典、流行、摇滚等等。
同时,还需要具备练琴和即兴演奏等功能,使得用户在学习和创作过程中能够得到更好的体验。
2. 技术实现:具有自动乐曲演奏功能的电子琴有许多复杂技术实现。
首先,需要使用MIDI(音乐器数字接口)技术,该技术可以将音符信息转换为数字信号。
这个数字信号可以将音符和强度信息传输到音频处理器,从而创建出逼真的声音效果。
其次,内置节拍器能够自动设置节拍、速度和拍子,从而在演奏乐曲时让音乐更加准确和自由漂流。
最后,与智能手机或平板电脑等移动设备进行通信,能够让用户选择所需的歌曲、音质、弹奏风格和速度等,从而实现更加灵活和人性化的交互体验。
3. 设计细节:在设计具有自动乐曲演奏功能的电子琴,需要考虑一些细节和特殊要求。
首先是外观设计,必须使其具有真正的乐器外观和质感,这样才能吸引更多的音乐爱好者。
其次,需要考虑外界噪声和干扰对音乐的影响。
没有了琴师的实时控制,噪音和干扰可能会影响到音乐的演奏。
因此,需要使用先进的降噪技术和其他方法,保证演奏的音乐质量。
最后,这种琴还必须具有大型彩色触摸屏以及易于使用的控制面板,让用户在实际使用时能够更加方便地使用功能和操作。
4. 使用场景:具有自动乐曲演奏功能的电子琴可以广泛应用于家庭、音乐培训、音乐演出、录音室等场景。
无论是爱好者还是专业人士,都能够通过这种琴来满足其音乐需求。
总之,具有自动乐曲演奏功能的电子琴,是一种令人惊叹的技术创新,它不仅能够方便使用者,缩短学习曲线,还能在音乐演奏过程中发掘个人创造力,实现与自我对话。
具有自动乐曲演奏功能的电子琴设计方案

具有自动乐曲演奏功能的电子琴设计方案汇报人:日期:•引言•电子琴硬件设计•电子琴软件设计目录•自动乐曲演奏功能实现•系统测试与优化•结论与展望引言01设计背景与意义设计背景随着现代音乐技术的不断发展,电子琴作为一种流行的乐器,其功能和性能也在不断升级和改进。
然而,目前市场上的电子琴大多只具备基本的音乐播放和弹奏功能,缺乏对自动乐曲演奏的支持,这使得用户在演奏时需要自己手动操作,降低了演奏的乐趣和体验。
设计意义设计一款具有自动乐曲演奏功能的电子琴,可以极大地丰富电子琴的功能和使用体验,使演奏者能够更加轻松、自由地享受演奏的乐趣,提高演奏的便捷性和效率。
同时,该设计还可以为电子琴产业带来新的发展机遇和经济效益。
设计目标:本设计方案旨在研发一款具有自动乐曲演奏功能的电子琴,通过内置的乐曲库和智能演奏系统,实现自动演奏和即兴演奏的智能化、便捷化。
设计内容:本设计主要包含以下内容1. 电子琴内置乐曲库的建设,包含各类风格和类型的乐曲;2. 智能演奏系统的研发,包括音乐识别、乐谱生成、演奏控制等模块;3. 电子琴硬件部分的优化和升级,包括音源、音色、键盘等部分的改进;4. 电子琴软件部分的研发和优化,包括操作系统、用户界面等部分的设计。
设计目标与内容电子琴硬件设计02根据市场需求和功能需求,确定电子琴的总体大小和形状。
琴体大小琴键布局音量调节设计合理的琴键布局,包括白键和黑键的排列和间距,以提供舒适的演奏体验。
设计音量调节按钮或滑块,以便用户可以根据需要调整音量。
030201选择适合的键盘类型,如力度感应键盘或电子键盘,以提供不同的演奏体验。
键盘类型优化键盘的触感,包括按键的行程、力度和反馈,以提供真实的演奏感觉。
键盘触感选择合适的音响系统,包括扬声器和音效芯片,以提供高质量的音频输出。
提供耳机接口,以便用户在不需要外放的情况下使用耳机进行演奏。
音频输出设备设计耳机接口音响系统建立包含各种风格和类型的音乐数据库,以便用户可以选择自己喜欢的音乐进行演奏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
具有自动乐曲演奏功能的电子琴设计先给出设计结果视频: 具有自动乐曲演奏功能的电子琴-视频实录本文为本人于2012年下学期做的EDA数字系统设计,文章详细介绍了“具有自动乐曲演奏功能的电子琴”的FPGA设计原理与方法,使用了ROM存储音符和节拍,矩阵键盘控制整个系统。
一、选题目的电子设计自动化,简称EDA(Electronic Design Automation),发展迅速,应用围日益扩大。
它以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
本文应用VHDL硬件描述语言,以QuartusⅡ8.0为开发工具设计了一个具有自动演奏乐曲功能的电子琴系统,它能将预先存储在ROM中的多首乐曲自动播放出来,并同时显示音符,此外,还具有电子琴弹奏的功能。
选题新颖、实用,趣味性、综合性较强。
二、设计目标1. 采用44矩阵键盘作为:电子琴按键,高、中、低音选择键,自动播放和电子琴弹奏功能选择键,乐曲选择键。
2. 使用ROM存储乐曲,达到只要在其中存储乐曲音符节拍的信息即可自动播放的目的,对乐曲的编码要简单易用。
3. 可自动播放《世上只有妈妈好》、《长亭送别》、《十年》三首歌曲,带选歌和自动循环播放的功能。
4. 实时显示正在播放的音符。
5. 设计要具有模块化,层次化的特点。
6. 波形仿真时采用时序仿真,以更加贴近实际,使系统的实际效果达到最佳。
三、实现方案1. 原理框图具有自动乐曲演奏功能的电子琴系统的原理结构框图如下:图1 硬件系统结构框图图2 软件系统结构框图图3 乐曲自动播放模块结构框图图4 乐曲弹奏模块结构框图2. 设计流程图具有自动乐曲演奏功能的电子琴系统的VHDL程序设计流程图如下图5:图5 程序设计流程图四、设计过程1. 音乐基础知识简谱应该说是一种比较简单易学的音乐记谱法。
它的最大好处是仅用7个阿拉伯数字----1234567,就能将万千变化的音乐曲子记录并表示出来,并能使人很快记住而终身不忘;同时涉及其他的音乐元素也基本可以正确显示。
简谱虽然不是出现在中国,但是好像只有在中国得到非常广泛的传播。
乐音的特性:它由四个方面组成:音高、音值、音量、音色。
音高:由物体在一定的时间震动的次数决定,震动次数多,因则高,反之,则低。
音值:即音的长短,是由音的延续时间的不同而决定的,音的延续时间长,音则长,反之,则短。
音量:即音的强与弱,由震幅的大小决定,震幅大,音则强,反之,则弱。
音色:有发音体的性质决定,发音体的形状及泛音的多少决定音色的不同,例如,小提琴、钢琴等各种乐器的音色都是不同的,在合奏时,人们可清楚地辨认。
乐音体系:在音乐使用中有固定音高的音的总和叫乐音体系。
音级:乐音体系中的各音叫音级,音级有基本音级与变化音级两种。
基本音级:在音乐中经常使用的七个具有独立名称的音叫基本音级。
基本音级的名称用字母或唱名两种方式来标记。
音名:用C、D、E、F、G、A、B来标记基本音级的叫音名,它表示一定的音高,简谱中用1,2,3,4,5,6,7来标记。
唱名:用do、re、mi、fa、sol、la、si作为音级名称的叫唱名。
音符:用以记录音的长短高低的符号叫音符(以符头在谱表上的位置来表示音的高低,以形状表示音的长短,音符有符头、符干、符尾三部分或其中某些部分组成,而在简谱中以1 2 3 4 5 6 7或其上下加点来表示不同音高,以短下划线(_)或横(—)来表示音的长短)。
下面重点介绍组成音乐的两个最基本的要素:每个音符发音的频率及其持续的时间。
1.1 音符和频率的关系乐曲的十二平均律规定:每2 个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。
在2个八度音之间,又可分为12个半音,每2个半音的频率比为。
另外,简谱中的低音6的频率为440Hz,音符7到1之间、3到4之间为半音,其余为全音。
由此可计算出简谱中从低音1至高音7之间每个音符的频率,如下表1所示:表1 简谱中音符与频率的关系1.2表示音乐的长短需要有一个相对固定的时间概念。
简谱里将音符分为全音符、二分音符、四分音符、十六分音符、三十二分音符等,如下表2。
在这几个音符里面最重要的是四分音符,它是一个基本参照度量长度,即四分音符为一拍。
这里一拍的概念是一个相对时间度量单位。
一拍的长度没有限制,可以是1秒也可以是2秒或半秒。
假如一拍是一秒的长度,那么二拍就是两秒;一拍定为半秒的话,两拍就是一秒的长度。
一旦这个基础的一拍定下来,那么比一拍长或短的符号就相对容易了。
正如五线谱的附点一样,数字后方加一点会将音符长度增加一半。
表2 简谱中音符长度半拍四分之一拍三十二分音符八分之一拍2. VHDL程序设计2.1 顶层文件采用原理图输入法设计,其原理图如下:图6 music_player原理图各模块的设计如下。
2.2 音符的编码及音乐的存储2.2.1 音符的编码休止符的编码为:0;音符长度的编码见表2。
音名的编码如下表3所示:表3音名的编码2.2.2 音乐的存储以十进制将音乐分别存储于note_rom和tick_rom两个模块中,前者为音符,后者为音符的长度,下面给出《世上只有妈妈好》的存储过程。
在Quartus II 主窗体中选择Tools—MegaWizard Pluge-In Manager…,弹出如下对话框,单击Next继续。
图7 MegaWizard Pluge-In Manager第一页按下图选择并填入文件名,点击Next。
图8 MegaWizard Pluge-In Manager第二页由于音符编在16到32之间,所以q选为5位即可,容量选为1024个字如下图所示图9 数据和地址宽度的选择在下图中取消“q’output port”前面的勾,点击Next继续。
图10 寄存器信号的选择在下图中,按图示选择并填入note_rom.mif,点击Next继续。
图11 指明ROM初始化文件图12 完成ROM的定制2.2.3 建立ROM初始化文件初始化ROM的数据文件有.mif格式和.hex格式,这里采用.mif格式,可以用文本编辑器编辑,也可以用Quartus II自带的功能产生ROM数据文件。
定制一个512*8的ROM的初始化.mif文件可按下列步骤进行:选择菜单File | New,在对话框中选择Memory Initialization File,然后输入512和8,如下图13(a)所示,点击OK随即打开.mif文件,如下图13(b)所示,然后可在其中输入数据,默认为十进制。
(a)ROM的初始化设置(b)初始化的空的ROM文件图13 ROM初始化2.2.4 在ROM中存储音乐以《世上只有妈妈好》为例,其简谱如下图所示:图14 世上只有妈妈好简谱根据前述对音符的编码规则,可知第一个音为中音6,时值为拍,存储为6和6;再如第二个音符为中音5,时值拍,存储为5和2;又如第五个音符为高音5,时值1拍,存储为21和4。
依此类推,可将整首乐曲存储如下:(a)note_rom.mif文件(b)tick_rom.mif文件图15 世上只有妈妈好简谱在ROM中的存储其它两首乐曲的存储与此类似,且存储在同一个note_rom.mif和tick_rom.mif文件中即可。
3.键盘控制模块3.1扫描及编码矩阵式键盘是一种常见的输入装置,根据其电路连接有共阴极和共阳极两种连接方式,可以采用逐行或逐列扫描法获得按键值。
本文根据实验室提供的共阳极矩阵键盘设计,其示意图如图16所示,定义各功能键如下图17所示,其中1~7对应简谱的1~7音符,H、M、L分别为高、中、低音选择键,AP(Auto Play)为自动播放选择键,EO(Electronic Organ)为电子琴弹奏选择键,Song为自动播放时的歌曲选择键,三个短“-”代表休止符。
图16 共阳极矩阵式键盘示意图图17本系统矩阵键盘功能键示意下面介绍扫描原理,采取逐行扫描法,以0111、1011、1101、1110的顺序依次扫描,然后读取列引脚的电平信号即可判断哪个按键按下。
例如,当扫描信号为1011时,表示在扫描第二行,若列读出的电平信号为1101,则可知第3列的键被按下,即第二行第3列的键“7”被按下,其它按键依次类推,下表4中列出了4*4矩阵键盘扫描时的情况、从左至右的顺序编码,依次为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 。
扫描时,选取的扫描频率为1KHz,由1MHz分频得到,具体见源程序。
3.2 消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动,如右图。
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。
这是一个很重要的时间参数,在很多场合都要用到。
图18 按键抖动常见的消抖方法有采样型防抖微分电路、D型触发器、移位寄存器、计数器,结合各消抖法的特点,本文采用计数器法。
3.3键盘控制模块如右图9所示图19 键盘控制模块键盘控制模块(Key_Control.vhd)仿真波形如下图20所示:图20键盘控制模块仿真波形为方便仿真及观察仿真结果,仿真时采用周期为100ns的clk,且将Key_Control.vhd中的获得clk_kb信号的程序中的ift=499 then,(即具体见源程序中斜体注释部分)改为ift=10 then,再将延时近程中clk_kb改为clk,count改为3位,然后对KBCol[0..3]赋值(如图),即可得到上图所示结果。
注意观察图中圈圈的部分,可以看出,第一个圈,对应“AP”键,他不在音符围,故Key_Note为0,且play,sel均为1,表示选择自动播放;第二个圈,对应“5”键,在音符围,故Key_Note为5;第三个圈,对应“EO”键,他不在音符围,故Key_Note为0,且play,sel均为0,表示选择电子琴弹奏;第四个圈,对应“Song”键,产生一个脉冲,仔细分析还应当发现由于消抖,使输出迟了1个扫描时钟(0.001s),但对本系统无影响。
4. 乐曲自动播放模块此模块的框图如图3所示,元件符号如右图下21所示,包含以下模块:ROM数据读取控制、音符ROM、节拍ROM,如下图22所示:图21 乐曲自动播放模块符号图22 乐曲自动播放模块4.1 ROM数据读取控制该分模块从tick_rom中读取节拍,控制读取ROM数据的速度,从而实现音乐的节奏。