简易电子琴的设计与制作.docx
- 文档编号:4322134
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:20
- 大小:174.33KB
简易电子琴的设计与制作.docx
《简易电子琴的设计与制作.docx》由会员分享,可在线阅读,更多相关《简易电子琴的设计与制作.docx(20页珍藏版)》请在冰点文库上搜索。
简易电子琴的设计与制作
往往往往往往往往
*******
班级:
电子科学与技术
学号:
*********
时间:
2008年12月10日—28日
第一课程题目
第二课程要求
第三方案比较
第四系统设计方案
第五安装与调试
第六实验结果讨论
第七实验心得体会
第八参考文献
论文题目
简易电子琴的设计
课程论文
要求
系统设计要求:
1.设计一个简易的八音符电子琴,它可以通过按键输入来控制音响。
2.演奏时,可以选择是手动演奏(由键盘输入)还是手动演奏以存入的音乐。
3能够自动演奏多首乐曲,且每首乐曲可以重复演奏。
设计过程
系统功能的介绍:
利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。
具体过程:
当系统扫描到键盘上有键子被按下,则快速检测出是那一个键子,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。
如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音。
系统设计方案:
方案论证:
方案一:
采用单个的逻辑器件组合
音乐是有由不同的音阶组成的,而不同的音阶又是由不同的频率发出的,那么利用不同的频率,就可以发出不同的音乐了。
我们知道计数器8253可以产生任意频率的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率与计数器的频率对应起来就可通过计数器产生音乐了。
根据本实验要求,采用8279将键扫得到的键值通过查表得到相应的8253的频率值,将从8253得到相对应的按键弹奏信号经过LM386进行放大,再用喇叭输出,就实现了简易电子琴的基本功能,也就完成了实验的要求。
具体的实验电路图如下图:
方案二:
用VHDL语言编程来实现
系统整体基本原理图如下:
利用我们实验室先进的数字电路实验设备,我们可以采用VHDL语言编程来实现。
我们可以通过VDHL语言,对实验原理图的各个部分进行设计,通过编译,可以在计算机上下载此实验原理图,利空电路学习机上的芯片。
我们很快就可以设计出一个简单的电子琴。
并实现其功能。
具体的的VDHL语言程序,我会在后面的设计过程中详细讲到。
两种方案的比较:
方案一采用单个的逻辑器件组合实现。
这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。
例如八个不同的音符是由八个不同的频率来控制发出的,而采用方案一就可以运用不同的分频器来对信号进行不同程度的分频。
所用仪器之多显而易见。
2.1.2方案二采用VHDL语言编程来实现电子琴的各项功能。
系统主要由电子琴发声模块、选择控制模块和储存器模块组成。
和方案一相比较,方案二就显得比较笼统,只是把整个系统分为了若干个模块,而不牵涉到具体的硬件电路。
但是我们必须看到用超高速硬件描述语言VHDL的优势,它不仅具有良好的电路行为描述和系统描述的能力而且通俗易懂。
经过对以上两种方案的分析、比较和总结,我们选用方案二来进行电子琴的设计。
系统设计的详细过程
根据系统设计要求,需要实现的系统功能,因此我们使用系统采用自顶向下的设计方法,系统整体组装设计原理图如图一所示,它有乐曲自动演奏模块,音调发生模块,和数控分频模块三部分组成。
1乐曲自动演奏模块
乐曲自动演奏模块的作用是产生8位发声控制输入信号。
当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。
2音调发生模块
音调发生模块的作用是产生音阶的分频预置值。
当8位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此可以得到每个音阶对应的频率。
音阶与8253输出频率的表如下:
字符
1
2
3
4
5
6
7
8
音符
1
2
3
4
5
6
7
I
频率
524
588
660
698
784
880
988
1048
3数控分频模块
数控分频模块是对时基脉冲进行分频,得到与1,2,3,4,5,6,7,七个音符的频率
电路的流程图:
VHDL源程序
1乐曲自动演奏模块的源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYAUTOIS
PORT(CLK:
INSTD_LOGIC;
AUTO:
INSTD_LOGIC;
CLK2:
BUFFERSTD_LOGIC;
INDEX2:
INSTD_LOGIC_VECTOR(7DOWNTO0);
INDEX0:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDAUTO;
ARCHITECTUREBEHAVIORALOFAUTOIS
SIGNALCOUNT0:
INTEGERRANGE0TO31;
BEGIN
PULSE0:
PROCESS(CLK,AUTO)
VARIABLECOUNT:
INTEGERRANGE0TO8;
BEGIN
IFAUTO='1'THEN
COUNT:
=0;CLK2<='0';
ELSIF(CLK'EVENTANDCLK='1')THEN
COUNT:
=COUNT+1;
IFCOUNT=4THEN
CLK2<='1';
ELSIFCOUNT=8THEN
CLK2<='0';COUNT:
=0;
ENDIF;
ENDIF;
ENDPROCESS;
MUSIC:
PROCESS(CLK2)
BEGIN
IF(CLK2'EVENTANDCLK2='1')THEN
IF(COUNT0=31)THEN
COUNT0<=0;
ELSE
COUNT0<=COUNT0+1;
ENDIF;
ENDIF;
ENDPROCESS;
COM1:
PROCESS(COUNT0,AUTO,INDEX2)
BEGIN
IFAUTO='0'THEN
CASECOUNT0IS
WHEN0=>INDEX0<="00000100";--3
WHEN1=>INDEX0<="00000100";--3
WHEN2=>INDEX0<="00000100";--3
WHEN3=>INDEX0<="00000100";--3
WHEN4=>INDEX0<="00010000";--5
WHEN5=>INDEX0<="00010000";--5
WHEN6=>INDEX0<="00010000";--5
WHEN7=>INDEX0<="00100000";--6
WHEN8=>INDEX0<="10000000";--8
WHEN9=>INDEX0<="10000000";--8
WHEN10=>INDEX0<="10000000";--8
WHEN11=>INDEX0<="00000100";--3
WHEN12=>INDEX0<="00000010";--2
WHEN13=>INDEX0<="00000010";--2
WHEN14=>INDEX0<="00000001";--1
WHEN15=>INDEX0<="00000001";--1
WHEN16=>INDEX0<="00010000";--5
WHEN17=>INDEX0<="00010000";--5
WHEN18=>INDEX0<="00001000";--4
WHEN19=>INDEX0<="00001000";--4
WHEN20=>INDEX0<="00001000";--4
WHEN21=>INDEX0<="00000100";--3
WHEN22=>INDEX0<="00000010";--2
WHEN23=>INDEX0<="00000010";--2
WHEN24=>INDEX0<="00010000";--5
WHEN25=>INDEX0<="00010000";--5
WHEN26=>INDEX0<="00001000";--4
WHEN27=>INDEX0<="00001000";--4
WHEN28=>INDEX0<="00000100";--3
WHEN29=>INDEX0<="00000100";--3
WHEN30=>INDEX0<="00000010";--2
WHEN31=>INDEX0<="00000010";--2
WHENOTHERS=>NULL;
ENDCASE;
ELSEINDEX0<=INDEX2;
ENDIF;
ENDPROCESS;
ENDBEHAVIORAL;
2音调发生模块的源程序(TONE.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTONEIS
PORT(INDEX:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CODE:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
HIGN:
OUTSTD_LOGIC;
TONE0:
OUTINTEGERRANGE0TO2047);
ENDTONE;
ARCHITECTUREARTOFTONEIS
BEGIN
SEARCH:
PROCESS(INDEX)
BEGIN
CASEINDEXIS
WHEN"00000001"=>TONE0<=773;CODE<="1001111";HIGN<='1';
WHEN"00000010"=>TONE0<=912;CODE<="0010010";HIGN<='1';
WHEN"00000100"=>TONE0<=1036;CODE<="0000110";HIGN<='1';
WHEN"00001000"=>TONE0<=1116;CODE<="1001100";HIGN<='1';
WHEN"00010000"=>TONE0<=1197;CODE<="0100100";HIGN<='1';
WHEN"00100000"=>TONE0<=1290;CODE<="0100000";HIGN<='0';
WHEN"01000000"=>TONE0<=1372;CODE<="0001111";HIGN<='0';
WHEN"10000000"=>TONE0<=1410;CODE<="0000000";HIGN<='0';
WHENOTHERS=>TONE0<=2047;CODE<="0000001";HIGN<='0';
ENDCASE;
ENDPROCESS;
ENDART;
3数控分频模块的VHDL源程序
LIBRARYieee;
USEieee.std_logic_1164.all;
USEieee.std_logic_arith.all;
ENTITYadderIS
PORT(op1,op2:
INUNSIGNED(7downto0);
result:
OUTINTEGER);
ENDadder;
ARCHITECTUREmaxpldOFadderIS
BEGIN
result<=CONV_INTEGER(op1+op2);
ENDmaxpld;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFENPINIS
PORT(CLK1:
INSTD_LOGIC;
TONE1:
ININTEGERRANGE0TO2047;
SPKS:
OUTSTD_LOGIC);
ENDENTITYFENPIN;
ARCHITECTUREARTOFFENPINIS
SIGNALPRECLK:
STD_LOGIC;
SIGNALFULLSPKS:
STD_LOGIC;
BEGIN
PROCESS(CLK1)
VARIABLECOUNT:
INTEGERRANGE0TO8;
BEGIN
IF(CLK1'EVENTANDCLK1='1')THEN
COUNT:
=COUNT+1;
IFCOUNT=2THEN
PRECLK<='1';
ELSIFCOUNT=4THEN
PRECLK<='0';COUNT:
=0;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(PRECLK,TONE1)
VARIABLECOUNT11:
INTEGERRANGE0TO2047;
BEGIN
IF(PRECLK'EVENTANDPRECLK='1')THEN
IFCOUNT11 COUNT11: =COUNT11+1;FULLSPKS<='1'; ELSE COUNT11: =0;FULLSPKS<='0'; ENDIF; ENDIF; ENDPROCESS; PROCESS(FULLSPKS) VARIABLECOUNT2: STD_LOGIC: ='0'; BEGIN IF(FULLSPKS'EVENTANDFULLSPKS='1')THEN COUNT2: =NOTCOUNT2; IFCOUNT2='1'THEN SPKS<='1'; ELSE SPKS<='0'; ENDIF; ENDIF; ENDPROCESS; ENDART; 4顶层设计的VHDL源程序(DIANZIQIN.VHD) LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_ARITH.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYDIANZIQINNIS PORT(CLK32MHZ: INSTD_LOGIC; HANDTOQUTO: INSTD_LOGIC; CODE1: OUTSTD_LOGIC_VECTOR(6DOWNTO0); INDEX1: INSTD_LOGIC_VECTOR(7DOWNTO0); HIGN: OUTSTD_LOGIC; SPKOUT: OUTSTD_LOGIC); END; ARCHITECTUREARTOFDIANZIQINIS COMPONENTAUTO PORT(CLK: INSTD_LOGIC; AUTO: INSTD_LOGIC; INDEX2: INSTD_LOGIC_VECTOR(7DOWNTO0); INDEX0: OUTSTD_LOGIC_VECTOR(7DOWNTO0)); ENDCOMPONENT; COMPONENTTONE PORT(INDEX: INSTD_LOGIC_VECTOR(7DOWNTO0); CODE: OUTSTD_LOGIC_VECTOR(6DOWNTO0); HIGN: OUTSTD_LOGIC; TONE0: OUTINTEGERRANGE0TO2047); ENDCOMPONENT; COMPONENTFENPIN PORT(CLK1: INSTD_LOGIC; TONE1: ININTEGERRANGE0TO2047; SPKS: OUTSTU_LOGIC); ENDCOMPONENT; SIGNALTONE2: INTEGERRANGE0TO2047; SIGNALINDX: STD_LOGIC_VECTOR(7DOWNT00); BEGIN U0: AUTOPORTMAP(CLK=>CLK32KHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO); U1: TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1); U2: FENPINPORTMAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT); ENDART; 通过altera公司max+plus210.0版本软件的对以上四个源程序的编译,我们就可以在数字电路学习机上实现简易电子琴的主要功能。 安装与调试 多次进入实验室,不断的对源程序的编译。 发现错误就立即更正。 直到源程序完全正确为止。 这样我们就可以下载。 在max+plus210.0版本软件上选择好与数字电路学习机上一样的PLD芯片后。 我们就可以分配管脚,在分配管脚的时候得特别注意,这也是实验成功与否的关键。 只有正确分配好管脚,我们才可以在数字电路学习机上连接电路。 实现其功能。 在这期间,会出现诸多问题,这都需要我们认真去思考。 每一个步骤都可能影响最后的实验结果,因此必须分析各个步骤的合理性,以求实验在最短时间内实现理想的结果。 系统仿真 实验成功后。 我们就可以在max+plus210.0版本软件进行仿真,并保存好系统仿真图。 1乐曲自动演奏模块的仿真图: 2音调发生模块的系统仿真图: 3数控分频模块的仿真图: 4简易电子琴整个系统的仿真图: 心得体会: 本次专业课程设计作为前阶段学习知识的一个检验,培养了我们的动手能力以及独立思考设计的能力,也是大学培养的一个重要实践步骤。 设计初期,我们通过网络,图书馆等资源查找到利用单片机设计制作电子琴的相关信息,对不同的方案进行细致的分析比较。 并且按照题意与实际情况进行改进,使之符合要求。 尔后利用恒科HK-51仿真开发系统编译软件对设计程序进行调试,最终确定了成熟的方案。 然后按照电路图进行实物焊接,最终做出一个简单的电子琴。 制作过程中发现的一些问题通过共同的分析研究得到的解决,此次课程设计巩固了前期的理论知识,增强了动手实践能力。 经过3周的努力,终于完成了设计和制作。 在此中包含了指导老师和我的汗水。 通过这次对简易电子琴的设计与制作,让我了解了设计电路的程序,也让我了解了电子琴的原理与设计理念,要设计一个电路总要先用仿真成功之后才实际接线的。 但是最后的成品却不一定与仿真时完全一样,因为,在实际接线中有着各种各样的条件制约着。 而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。 所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。 通过这次学习,我的动手实践能力增强了许多,学到了不少东西,而且在理论上也有了更深刻的认识。 尤其在调试方面,虽然花了很多时间,但学到了东西,动手能力加强了,加深了从理论到实践的认识。 参考文献 1《EDA技术实验与课程设计》曹昕燕周凤臣聂春燕编著清华大学出版社。 2《数字电子技术基础》第四版清华大学教研组编阎石主编高等教育出版社。 3《模拟与数字电路基础实验》孔庆生俞承芳主编复旦大学出版社。 赣南师范学院2008—2009学年第_一_学期课程论文 课程论文题目: 简易电子琴的设计 设计要求: 1.设计一个简易的八音符电子琴,它可以通过按键输入来控制音响。 2.演奏时,可以选择是手动演奏(由键盘输入)还是手动演奏以存入的音乐。 3能够自动演奏多首乐曲,且每首乐曲可以重复演奏。 教师评语: 教师签字: 年月日 行政班级电子科学与技术学号*********_姓名__刘章富___ 选课班级电子信息与技术06级任课教师杨汉祥成绩_________
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 电子琴 设计 制作