数字逻辑课程设计之电子琴

合集下载

数电课程设计--简易电子琴

数电课程设计--简易电子琴

目录1 设计任务 (1)1.1 基本任务 (1)1.2 扩展任务 (1)2 设计方案原理 (1)3 单元电路的设计 (2)3.1 多谐振荡器 (2)3.2 琴键开关 (3)3.3 扩音器(喇叭) (4)3.4 器件选择 (4)4 电路图的绘制 (5)5 电路的仿真及调试 (6)6 体会 (6)参考文献 (8)1设计任务电子琴是一种很简单的电子产品,目前市场上所售的电子琴多为基于单片机所设计的。

本次课设要求利用数电知识,设计一个能奏出八个音阶的电子琴。

虽然没有基于单片机的电子琴那么多的功能,但是电子琴的基本功能是可以满足的。

本次设计的主要内容为:根据数电课程所学内容,结合其他相关课程知识,设计一个简易电子琴,以加深对单片机知识的理解,锻炼实践动手能力。

本次设计的任务为:1.1基本任务①具备8个按键,能够分别较准确地弹奏出1〜1八个音符。

②选择电路方案,完成对确定方案电路的设计。

计算电路元件参数与元件选择、并画出总体电路原理图,阐述基本原理。

用Proteus或MULTISIM软件完成仿真,并按规定格式写出课程设计报告书。

1.2扩展任务①能够弹奏出至少21个音符(三个音阶)。

②能够较便捷地完成音阶的升降。

(按一个开关实现升8度,按另一个开关实现降8度)2设计方案原理本方案为利用555多谐振荡器能输出脉冲信号的特性,通过改变振荡器外接电阻的阻值来改变振荡器输出脉冲的频率,驱动喇叭发出各种音阶。

电子琴所用琴键即为改变电阻阻值的开关,通过改变阻值使输出与琴键音阶相对应。

原理框图如下:图1原理框图3单元电路的设计3.1多谐振荡器利用多谐振荡器产生周期脉冲电路图如下图所示图2 多谐振荡器电路实现图中引脚功能:1脚:GND或Vss)外接电源负端VSS或接地,一般情况下接地。

2脚:TR低触发端。

3脚:OUT(或Vo)输出端。

4脚:Rd是直接清零端。

当R端接低电平,则时基电路不工作,此时不论TR、TH 处于何电平,时基电路输出为“ o”,该端不用时应接高电平。

数电课设之简易电子琴

数电课设之简易电子琴

课程设计任务书学生姓名:辛威专业班级:电子1002班指导教师:韩屏工作单位:信息工程学院题目: 简易电子琴设计(数字)初始条件:可选元件:集成运算放大器LM324、电阻、电位器、电容若干,直流电源Vcc= +12V,或自备元器件。

可用仪器:示波器,万用表,直流稳压源,函数发生器要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务根据已知条件,完成对简易电子琴电路的设计、装配与调试。

(2)设计要求①设计一简易电子琴电路,按下不同琴键即改变RC值,能发出C调的八个基本音阶,采用运算放大器构成振荡电路,用集成功放电路输出。

已知八个基本音阶在C调时所对应的频率如下表所列C调 1 2 3 4 5 6 7 if / Hz 264 297 330 352 396 440 495 528②选择电路方案,完成对确定方案电路的设计。

计算电路元件参数并画出总体电路原理图,阐述基本原理。

(选做:用PSPICE或EWB软件完成仿真。

)③安装调试并按规定格式写出课程设计报告书。

时间安排:1. 2012 年12月31日分班集中,布置课程设计任务、选题;讲解课设具体实施计划与课程设计报格式的要求,课设答疑事项。

2. 2011 年12月31日至2012年1月4日完成资料查阅、设计、制作与调试。

3. 2012年1月4日至2012年1月5日完成课程设计报告撰写。

4. 2012 年7月5日提交课程设计报告,进行课程设计验收和答辩。

指导教师签名:年月日系主任(或责任教师)签名:年月日目录1 总体设计 (3)1.1 设计背景 (3)1.2设计任务和要求 (3)1.2.1设计任务 (3)1.2.2设计要求 (3)1.3设计思路 (4)2 原理与器件选择 (7)2.1 电路图 (7)2.1.1主板电路 (7)2.1.2键盘电路 (7)2.1.3扩展电路 (7)2.2 原理简述 (7)2.3 器件的选择 (8)2.3.1 主板部分 (8)2.3.2 键盘部分. (8)2.3.3 扩展部分 (8)3 实物制作与输出波形 (9)4 调试与影响因素分析 (14)5 总结与体会 (15)参考文献 (16)附录1 (17)附录2 (18)1总体设计1.1设计背景电子琴是很好的娱乐工具,大人小孩都爱玩,甚至一玩就是几个小时“简易电子琴”使用了一个集成电路振荡器,一些按键和一个音频输出连接到功率放大电路。

C51课程设计电子琴

C51课程设计电子琴

C51程序设计课程报告——电子琴学院:班级:学号:摘要:随着电子产业的发展和人民生活水平的提高,电子琴在人们生活中将扮演着越来越重要的角色,它改善人们的生活,给人们带来快乐和冶人的情操。

电子琴,它是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,电子琴采用控制功能强大的微处理技术和电子技术,使它融入现代人的生活中,成为不可或缺的一部分。

本设计在充分了解音乐音阶基础上,以AT89S51单片机作为核心控制器件而设计的,以这款单片机作为主控核心,通过程序控制与键盘,运放电路,扬声器等电路组成电子琴的基本单元,本文设计的电子琴,采用十六键技术,模拟了市场上电子琴的基本功能。

可以用弹奏出简单的乐曲;弹奏电子琴时能播放出准确的声音,不弹奏时可以播放置音乐。

本设计给出了电子琴的详细设计方案,电路组成与程序流程并对电子琴可行性模拟仿真,Proteus试验仿真表明本文设计的电子琴运行稳定,电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

在本文设计的基础上,功能可以延伸和拓展,由于是程序控制,电子琴升级方便,具有很强的市场推广价值。

关键词:AT89S51,电子琴,Proteus仿真,音阶目录一设计背景2二设计目的和要求2 1.设计目的22.设计要求3三设计原理31. 定时/计数器原理32.中断控制33.七段数码管44.矩阵式键盘的识别和显示5四设计组成71.设计的模块组成72.设计的软件实现流程7五设计的电路原理图8六本实验的C语言程序9七仿真和调试151.仿真结果152.调试过程16八实验成果和心得161.实验成果162.心得体会16参考文献:18一设计背景随着人们生活水平的提高和电子产业的高速发展,越来越多的电子产品融入到人们的生活当中,电子琴也不例外,它作为一种冶人们情操,给人们生活增添乐趣的一种乐器,在生活中扮演比较重要的角色,逐步成为人们生活当中的一部分。

电子琴本身是一种敲击乐器,通过敲击不同按键,由于音阶不同而发出不同声响,给人们的带来快乐,音阶的控制和声音大小是通过微控制器和电子电路实现的。

数电课程设计--简易电子琴

数电课程设计--简易电子琴

数电课程设计--简易电子琴目录1 设计任务 (1)1.1基本任务 (1)1.2 扩展任务 (1)2 设计方案原理 (1)3 单元电路的设计 ............................... 错误!未定义书签。

3.1 多谐振荡器 ............................. 错误!未定义书签。

3.2 琴键开关 03.3 扩音器(喇叭) (1)3.4 器件选择 (1)4 电路图的绘制 (2)5 电路的仿真及调试 (3)6 体会 (4)参考文献 (6)1 设计任务电子琴是一种很简单的电子产品,目前市场上所售的电子琴多为基于单片机所设计的。

本次课设要求利用数电知识,设计一个能奏出八个音阶的电子琴。

虽然没有基于单片机的电子琴那么多的功能,但是电子琴的基本功能是可以满足的。

本次设计的主要内容为:根据数电课程所学内容,结合其他相关课程知识,设计一个简易电子琴,以加深对单片机知识的理解,锻炼实践动手能力。

本次设计的任务为:1.1基本任务①具备8个按键,能够分别较准确地弹奏出1~•1八个音符。

②选择电路方案,完成对确定方案电路的设计。

计算电路元件参数与元件选择、并画出总体电路原理图,阐述基本原理。

用Proteus或MULTISIM软件完成仿真,并按规定格式写出课程设计报告书。

1.2 扩展任务①能够弹奏出至少21个音符(三个音阶)。

②能够较便捷地完成音阶的升降。

(按一个开关实现升8度,按另一个开关实现降8度)2 设计方案原理本方案为利用555多谐振荡器能输出脉冲信号的特性,通过改变振荡器外3脚:OUT(或Vo)输出端。

4脚:Rd是直接清零端。

当R端接低电平,则时基电路不工作,此时不论TR、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。

5脚:CO(或VC)为控制电压端。

若此端外接电压,则可改变内部两个比较器的基准电压,当该端不用时,应将该端串入一只10nF电容接地,以防引入干扰。

课程设计【简易电子琴设计】报告书

课程设计【简易电子琴设计】报告书

课程设计报告题目课程名称院部名称专业班级学生姓名学号课程设计地点课程设计学时指导教师简易电子琴电路制作一实验目的1.学习调试电子电路的方法,提高实际动手能力。

2.了解由振荡电路与功率放大电路结合构成简易电子琴的电路及原理。

二实验内容【实验原理】1.简易电子琴电路是将振荡电路与功率放大电路结合的产物。

(1)RC振荡电路(如图1所示)是由RC选频网络和同向比例运算电路组成,对不同频率的输入信号产生不同的响应。

1、RC桥式振荡电路1.1、电路图RC桥式振荡电路如图1所示。

1.2、RC串并联选频网络RC桥式振荡电路可以选出特定频率的信号。

具体实现过程的关键是RC串并联选频网络,其理论推导如下:可得选频特性:即当f0=1/(2πRC)时,输出电压的幅值最大,并且输出电压是输入电压的1/3,同时输出电压与输出电压同相。

通过该RC串并联选频网络,可以选出频率稳定的正弦波信号,也可通过改变R,C的取值,选出不同频率的信号。

2、振荡条件2.1、自激振荡条件图2所示为含外加信号的正弦波振荡电路,其中A,F分别为放大器回路和反馈网络的放大系数。

图2中若去掉Xi,由于反馈信号的补偿作用,仍有信号输出,如图3所示Xf=Xi,可得自激振荡电路。

自激振荡必须满足以下条件:2.2、起振条件自激振荡的初始信号一般较小,为了得到较大强度的稳定波形,起振条件需满足|A·F|>1。

在输出稳定频率的波形前,信号经过了选频和放大两个阶段。

具体来说,是对于选定的频率进行不断放大,非选定频率的信号进行不断衰减,结果就是得到特定频率的稳定波形。

设计方案1、设计电路图设计电路图如图4所示。

图4即是八音阶微型电子琴的原理电路图,8个开关对应着电子琴8个音阶琴键,使用时只能同时闭合一个开关。

在实际电路中,为达到起振条件AF>1,常用两个二极管与电阻并联,可实现类似于热敏电阻的功效。

另外需要说明的是,理论上电路的初始信号是由环境噪声及电路本身的电压提供的。

院校资料-北邮数字逻辑课程设计_简易电子琴

院校资料-北邮数字逻辑课程设计_简易电子琴

北邮数字逻辑课程设计_简易电子琴简易电子琴实验报告综合设计:程序编写:实验报告撰写:北京邮电大学计算机学院某人一.实验目的1.掌握较复杂逻辑的设计和调试。

2.掌握用VHDL语言设计数字逻辑电路。

3.掌握ispLEVER软件的使用方法。

4.掌握ISP器件的使用。

5.用途: 有电子琴的基本功能,可弹奏出简单的乐曲。

二.实验器材1.在系统可编程逻辑器件1032E2.示波器3.逻辑测试笔4.TEC-5实验系统三.实验容设计一个简易电子琴,有两种模式,既可以音阶弹奏,也可以自动播放乐曲。

要求音阶弹奏的时候,可以弹奏高音低音一共14个不同音符,自动播放乐曲的时候,要求可以按一定节奏自动播放一首预存在系统中的乐曲。

四.实验设计原理从试验系统外部接入一个时钟信号,对时钟信号进行分频,可以得到不同分频的脉冲信号。

当这个分频值设定为一定的数值时,就可以使试验系统的喇叭发出不同的音符,从而完成音阶演奏。

自动演奏时,除了对外部时钟进行分频得到不同的音符外,还需要通过时钟信号对节拍进行控制,设置该音乐最短的音符为基本单位,一步一步往后执行,根据某个音符的节拍数来确定执行时间,从而可以按照节奏将一段音乐自动演奏出来。

五.设计方案1.一共有14个琴键,表示中音的1-7到低音的1-7,按照电子琴的排列布局来安排琴键位置。

2.根据不同音符的频率,用多模计数器对时钟信号进行分频,得到特定的脉冲信号,为了使信号稳定,需要对其进行翻转得到2分频信号再输出。

3.综合原理图4.外部输入50kHz的时钟信号,根据下表用多模计数器对时钟信号进行分频,得到分频系数。

六.程序实现*********************************实体部分************************************* library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity Orgen isport(moderm:in std_logic;--模式选择,0为音阶自演奏模式,1为自动播放模式clk:in std_logic;--时钟信号Index:in std_logic_vector(13 downto 0);--琴键选择信号,1表示选择摸个琴键,共有14个琴键,可以选择14个音,分别是低音1-7和中音1-7 Code:out std_logic_vector(6 downto 0);--七段发光二极管编码,用于显示弹奏的音符high:out std_logic;--如果是中音,小灯亮,反之不亮tone0:inout integer range 0 to 2047;--分频系数result:inout std_logic--输出音频信号);end Orgen;*******************************结构体部分************************************architecture Orgen_Player of Orgen is--程序使用的是50kHz的时钟信号beginSearch:process(Index,clk,moderm)--Search进程,根据琴键选择信号得到不同的分variable step:integer range 0 to 2000;variable count2:integer range 0 to 2000;begin***************************音阶演奏模式部分********************************** if Moderm='0' then--手动音阶演奏模式case Index iswhen "00000000000001"=> tone0 tone0 tone0 tone0 tone0 tone0 tone0 tone0 tone0 tone0 tone0 tone0 tone0 tone0 tone0键信号,分配了不同的分频系数,为不同音名的发光二极管编码,同时调整高低音显示信号end case;end if;******************************自动演奏部分************************************ if (moderm='1') and (clk'event and clk='1') then--自动演奏模式--tone0防止影响if count2count2:=count2+1;--1秒输出1拍elsecount2:=0;case step iswhen 0=>tone0step:=step+1;when 1=>tone0step:=step+1;when 2=>tone0step:=step+1;when 3=>tone0step:=step+1;tone0step:=step+1;when 5=>tone0step:=step+1;when 6=>tone0step:=step+1;when 7=>tone0step:=step+1;when 8=>tone0step:=step+1;when 9=>tone0step:=step+1;when 10=>tone0step:=step+1;when 11=>tone0step:=step+1;when 12=>tone0step:=step+1;when 13=>tone0step:=step+1;when 14=>tone0step:=step+1;when 15=>tone0step:=step+1;--step不同,表示乐曲演奏到不同的位置,赋予不同的分频系数,然后step+1end case;end if;end if;end process;**************************发生进程,控制喇叭发声****************************** Made_Code:process(clk)--发声进程,发出不同的音频variable count1:integer range 0 to 2000;beginif clk'event and clk='1' thenif count1count1:=count1+1;--事先查好每个音名的频率,根据音频系数进行分频,得到是正确频率两倍的音elsecount1:=0;result音频信号end if;end if;end process;end Orgen_Player;七.基于QuartusII9.0的仿真实现1.仿真电路图2.仿真波形图八.基于TEC-5试验系统的实现效果1.音阶模式下,可以根据琴键的输入演奏低音1-7和中音1-7一共14个音符。

数电课程设计——简易电子琴

数电课程设计——简易电子琴

物理与电子信息工程系课程设计报告题目:简易电子琴专业:班级:姓名:学号:指导教师:摘要:以555时基电路为核心构成的多谐振荡电路,通过控制琴键的通断来改变输出频率,从而当每按下一个琴键,喇叭发出一个音符的声音。

设计简单,易实现,而且演奏时的音量和节拍可以调节,以满足演奏的需要。

关键字:NE555 多谐振荡 RC充放电音量节拍目录1.系统设计 (3)设计任务 (3)方案论证[1] (3)系统框图 (3)2.单元电路设计 (4)多谐振荡电路 (4)2.1.1电路原理[2] (4)2.1.2器件参数的选择 (4)音阶发生电路 (5)电路原理 (5)2.2.2器件参数选择 (5)节拍发生电路 (5)电路原理 (5)2.2.2器件参数选择 (5)喇叭发音电路 (6)电路原理 (6)器件参数的选择 (6)3.系统测试 (6)调试要点 (6)调试过程出现的问题及解决方案 (6)数据记录 (7)4结果分析 (7)5.设计工作总结 (8)6.参考文献 (8)7.附录 (8)元器件明细表 (8)器件封装 (9)总原理图 (9)图 (10)1. 系统设计设计任务(1)玩具电子琴设有八个琴键,分别代表1、2、3、4、5、6、7、•1八个不同的音符,每按下一个琴键,扬声器发出一个音符的声音。

(2)演奏时的音量和节拍可以调节,以满足演奏一般歌曲的需要。

方案论证[1]方案一:该方案由CD4069构成多谐振荡电路,并由三极管放大输出,电路简单,但带负载能力差,且性价比低,因此不选此方案。

方案二:该方案采用NE555构成多谐振荡器,输出驱动电流大,带负载能力强,操作灵活、方便,且性价比高,故选此方案。

系统框图如图1所示,电路中采用555构成多谐振荡电路,通过按下不的键来改变输入电阻,改变输出频率。

输出的信号通过滤波电路送到喇叭。

还可进行音调、音量、节拍的调节。

图12. 单元电路设计多谐振荡电路2.1.1电路原理[2]电路由NE555及其外部电路构成多谐振荡电路,电阻R3、R4与电路中电位器的R ,电容C4构成充放电电路。

c51单片机课程设计——电子琴

c51单片机课程设计——电子琴

目录1.设计题目 (3)2. 设计目的 (3)3. 主要内容 (3)4. 音符频率与计数初值对照表 (3)5.定时/计数器的工作原理 (4)5.1 方式寄存器 (4)5.2启/停控制寄存器TCON (6)6. 中断控制 (6)6.1 TCON用于中断请求 (6)6.2 中断允许寄存器IE (7)7.系统分析 (7)7.1 系统组成 (8)7.2 系统工作原理 (8)8.系统硬件设计 (8)8.1 系统硬件总体设计 (8)8.2 LED显示模块 (9)8.3 扬声器模块 (9)8.4 子系统(模块)电路图 (10)8.4.1 共阳极电路图 (10)8.4.2 上位开关 (10)9.系统软件设计 (10)9.1 系统软件总体设计 (10)9.2 本系统总体代码 (11)10.课程设计成果 (15)11.个人总结 (15)参考文献 (17)一、设计题目:简易电子琴二、设计目的:(1)熟悉单片机的内部结构;(2)掌握C51编程方法;(3)掌握定时器与发声的关系;(4)掌握交流蜂鸣器的发声原理和程序控制方法;(5)掌握串行控制键盘键的识别方法;(6)掌握声音频率的计算方法。

三、主要内容本系统设计制作一个可演奏的电子琴。

综合应用了两项设计。

(1)能产生纯音,了解音调高低的控制方法。

(2)用键盘代替电子琴的键盘,控制演奏音乐。

(a)掌握串行控制键盘键的识别方法;(b)根据键值控制发声。

(3)至少演奏一支乐曲。

四、音符频率与计数初值对照表:低音7 370 0xf64c 中音6 740 0xfb29高音6 1480 0xfd98低音7 415 0xf75a 中音7 831 0xfbb1高音7 1661 0xfddc五、定时/计数器原理MCS-51单片机内部有2个16位的可编程定时/计数器,定时/计数器0由计数器TH0和TL0组成,定时/计数器1由计数器TH1和TL1组成,THX和TLX(X=0,1)分别为两个8位计数器,连接起来可组成16位计数器。

数电课设电子琴

数电课设电子琴
进行硬件调试和优化,确保电 子琴性能稳定、可靠。
03
电子琴功能展示
音符识别与播放
音符识别
通过声音识别技术,将用户演奏的音符转化为数字信号,便 于后续处理。
自动播放
电子琴能够根据识别的音符自动播放对应的旋律,增强音乐 表现力。
音乐合成与播放
音乐合成
电子琴内置多种乐器音色,用户可以 通过合成器功能将同音色进行组合 ,创作出个性化的音乐。
能。
音乐制作
电子琴可用于创作和录制音乐 ,为音乐制作人提供便利。
演出表演
电子琴可用于现场演出和表演 ,丰富演出形式和效果。
家庭娱乐
电子琴作为家庭娱乐工具,为 人们提供轻松愉悦的音乐体验

02
数电课设电子琴设计
设计理念与目标
创新性
设计一款具有创新性的电子琴 ,能够实现多种音乐效果和演
奏方式。
实用性
数电课设电子琴
目录 Contents
• 电子琴概述 • 数电课设电子琴设计 • 电子琴功能展示 • 数电课设电子琴的挑战与解决方案 • 数电课设电子琴的未来展望
01
电子琴概述
电子琴的定义与特点
定义
电子琴是一种电子乐器,通过电 子振荡器产生音乐声音。
特点
电子琴通常具有多种音色、音调 和节奏,可模拟传统乐器的声音 ,且易于携带和存储。
人工智能技术
利用AI算法和机器学习,实现电子琴的智能编曲、自动演奏和音 乐推荐等功能,提升用户体验。
虚拟现实与增强现实
结合VR/AR技术,创造沉浸式的音乐体验,让用户在虚拟环境中演 奏电子琴,增强互动性和趣味性。
物联网与智能家居
将电子琴与智能家居系统相连,实现音乐控制与其他智能设备的联 动,提升家居生活的智能化水平。

数电课程设计--简易电子琴

数电课程设计--简易电子琴

目录1 设计任务 (1)1.1基本任务 (1)1.2 扩展任务 (1)2 设计方案原理 (1)3 单元电路的设计 (2)3.1 多谐振荡器 (2)3.2 琴键开关 (3)3.3 扩音器(喇叭) (4)3.4 器件选择 (4)4 电路图的绘制 (5)5 电路的仿真及调试 (6)6 体会 (6)参考文献 (8)1 设计任务电子琴是一种很简单的电子产品,目前市场上所售的电子琴多为基于单片机所设计的。

本次课设要求利用数电知识,设计一个能奏出八个音阶的电子琴。

虽然没有基于单片机的电子琴那么多的功能,但是电子琴的基本功能是可以满足的。

本次设计的主要内容为:根据数电课程所学内容,结合其他相关课程知识,设计一个简易电子琴,以加深对单片机知识的理解,锻炼实践动手能力。

本次设计的任务为:1.1基本任务①具备8个按键,能够分别较准确地弹奏出1~•1八个音符。

②选择电路方案,完成对确定方案电路的设计。

计算电路元件参数与元件选择、并画出总体电路原理图,阐述基本原理。

用Proteus或MULTISIM软件完成仿真,并按规定格式写出课程设计报告书。

1.2 扩展任务①能够弹奏出至少21个音符(三个音阶)。

②能够较便捷地完成音阶的升降。

(按一个开关实现升8度,按另一个开关实现降8度)2 设计方案原理本方案为利用555多谐振荡器能输出脉冲信号的特性,通过改变振荡器外接电阻的阻值来改变振荡器输出脉冲的频率,驱动喇叭发出各种音阶。

电子琴所用琴键即为改变电阻阻值的开关,通过改变阻值使输出与琴键音阶相对应。

原理框图如下:图1 原理框图3 单元电路的设计3.1 多谐振荡器利用多谐振荡器产生周期脉冲电路图如下图所示图2 多谐振荡器电路实现图中引脚功能:1脚:GND(或Vss)外接电源负端VSS或接地,一般情况下接地。

2脚:TR低触发端。

3脚:OUT(或Vo)输出端。

4脚:Rd是直接清零端。

当R端接低电平,则时基电路不工作,此时不论TR、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。

简易电子琴设计数电课程设计

简易电子琴设计数电课程设计

长沙学院数电课程设计说明书题目简易电子琴设计系(部)专业(班级)姓名学号指导教师起止日期数字电子技术课程设计任务书(16)系(部):专业指导教师:长沙学院课程设计鉴定表概要 (5)目录一、简易电子琴的简介 (6)1、电子琴设计的背景 (6)3、电子琴设计的目标 (6)二、简易电子琴的工作原理电路以及方案选择分析 (7)1、简易电子琴的工作原理及其电路 (7)2、方案选择分析 (8)三、用multisim仿真图及仿真数据分析 (9)1、仿真图 (9)2、仿真数据结合电路分析: (13)四、设计心得体会 (14)五、参考文献 (14)概要随着电子信息社会的进步发展,音乐逐渐成为我们生活中很重要的一部分,电子琴则是一种很常见的键盘乐器,是现代电子科技和音乐结合的产物。

在各个领域扮演很重要的角色,早已融入现代人们的日常生活中,成为不可替代的一部分。

我们人类的乐器创作非常广泛,几乎在更大软件均有乐器制造,制作乐器也是和我们电子信息工程的专业知识相结合,所以本文就设计了一个简易电子琴。

此次试验实现了8个音阶的振荡频率控制的音调,成功实现简易电子琴的基本功能。

本实验着重讲述了如何使用555制作简易电子琴产生8个不同音阶控制电路的设计,当操作者按下8个按键即可产生8种不同的音调,然后通过LM386功率放大器进行音调放大。

在multisim软件仿真中,由于没有LM386芯片,本实验通过用TDA2030替代LM386完成了简易电子琴的仿真,其基本的设计思路是采用了模块设计:实现基本要求时只要用555构成多谐振荡电路,通过不同的电阻(用变阻器调节成8个所需电阻)来获得不同的频率,再经过LM386放大所以发出不同的音调。

如果要实现提高要求则需要在基本要求上添加一部分电路即可。

通过开关控制不同的电阻所对应的振荡电路的通断调节相应频率大小,从而产生不同的音调。

此次试验我们在图书馆以及网上查找了大部分资料实验才得以完成,最简易的电子琴工作原理有利于对高端音乐软件产品的研究。

简易电子琴课程设计.

简易电子琴课程设计.

课程设计说明书课程设计名称:数字逻辑课程设计课程设计题目:简易电子琴学院名称:信息工程学院专业: ************** 班级: ****学号: ******** 姓名: *****评分:教师: *** 20 11 年 6 月 28 日摘要随着社会的进步发展,音乐逐渐成为我们生活中很重要的一部分,而乐器更是应用广泛,几乎在更大软件均有乐器制造。

所以本文就设计了一个简易电子琴。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,在现代音乐中扮演着重要的角色。

本实验着重讲述了如何使用555制作简易电子琴产生8个不同音阶控制电路的设计,当操作者按下8个按键即可产生8种不同的音调,然后通过LM386功率放大器进行音调放大。

本实验完成了简易电子琴的设计和调试,其基本的设计思路是采用了模块设计:实现基本要求时只要用555构成多谐振荡电路,通过不同的电阻(用变阻器调节成8个所需电阻)来获得不同的频率,再经过LM386放大所以发出不同的音调。

如果要实现提高要求则需要在基本要求上添加一部分电路即可。

通过开关控制不同的电阻所对应的振荡电路的通断调节相应频率大小,从而产生不同的音调。

当然在这之前要事先查阅资料,再查阅各个芯片的引脚功能的各个参数,同时还要了解震荡电路,与其产生震荡的原理,在根据震荡电路计算出电阻值,以便选择合适的电阻值,这些都是课前准备。

测试电子琴要一步一步,首先是震荡电路的线路测试,尽量消除噪声,使音质能够清晰,这样电子琴就做成了。

通过本次电子课程设计,不仅掌握了简易电子琴的设计,更重要的是提高了动手实践能力,从搜集各方面资料到检查电路,充分锻炼了分析问题以及解决问题的能力。

关键词:简易电子琴,NE555,LM386,声调目录前言 (1)第一章设计内容及要求 (2)1.1 设计的基本内容 (2)1.2 设计要求介绍 (2)第二章系统组成及工作原理 (3)2.1 系统组成 (3)2.2 工作原理 (4)第三章方案比较 (8)3.1 方案一 (8)3.2 方案二 (9)3.3方案三 (10)3.4方案分析与比较.............................................11 第四章参数计算、器件选择 (12)4.1 参数计算 (12)4.2 器件选择...................................................12 第五章系统调试及测试结果分析 (14)5.1 系统调试 (14)5.2 测试结果与分析.............................................17 结论..............................................................19 参考文献.........................................................20 附录一............................................................21 附录二 (22)前言电子琴作为一种乐器,对丰富人们的日常生活起着一定的作用,是人们的生活更加丰富多彩。

数字电路课程设计 八音电子琴

数字电路课程设计 八音电子琴

数字电路课程设计八音电子琴一.设计题目及设计要求设有8个模拟音键,不同的按键通过键盘编码其产生相应的按键编码,用按键编码信号控制音调发生器的输出信号频率,从而实现电子琴的功能。

要求设计键盘编码器、音调发生器的硬件电路。

二设计思路设计的总体框图如下主要解决键盘编码器和音调发生器的问题三设计过程及内容1.设计分析与构成设计总体由基准时钟,音调发生器和键盘编码器三大部分组成,并且用示波器代替扬声器以体现在不通按键下的频率不同。

模块一:键盘编码器部分,模块二:音调发生器部分。

2.设计原理及实现过程2.1 键盘编码器键盘编码器使用一块74LS148二进制优先编码器,74LS148引脚及功能图如下当OE输入IE=1时,禁止编码、输出(反码):A2,A1,A0为全1。

当OE输入IE=0时,允许编码,在I0~I7输入中,输入I7优先级最高,其余依次为:I6,I5,I4,I3,I2,I0,I0等级排列。

全功能表如下:键盘编码部分实现对键盘的8-3编码,并在按键时选择输出相应频率的信号。

开关加上非门接入3-8编码器的输入端,使开关闭合时其输入为0,利用3-8编码器使输入0的位置以二进制形式输出,其连接图如下:2.2 音调发生器在输入4MHZ 5V脉冲信号的作用下完成八个状态的循环进行,相当于一个计数器,采用两片74LS161实现一计数器,从00000000到11111111其输出端,第一片上的Q0.Q1.Q2.Q3.及第二片上的Q4.Q5.Q6.Q7为八个音的输出。

两片74LS161级联连接图2.3综合设计电路的实现八音电子琴的总体设计思路框图如下:把3-8编码器的输出与8选1数据选择器的输入相连,将按键位置的二进制形式输入8选1数据选择器,从而决定输出信号,通过8选1数据选择器的输出端输出信号。

8选1数据选择器74LS151的引脚功能图如下:电路设计已经基本完成,用Multisim软件仿真的总电路图如下:四运行结果1.未闭合开关时的波形:2闭合开关1的波形3 闭合开关2的波形4闭合开关3的波形5 闭合开关4的波形6闭合开关5的波形7闭合开关6的波形8闭合开关7的波形9闭合开关8的波形功能分析:通过波形图可知,通过按下不通的按键可以得到不通频率的波形,用扬声器来显示即不通频率的声音,基本实现了八音电子琴的功能。

数字逻辑课程设计之电子琴

数字逻辑课程设计之电子琴

数字逻辑课程设计之电子琴实验内容:设计一个八音电子琴,能通过八个键进行手动控制音响,也可以通过自动控制有效自动播放一段音乐。

实验设计:本实验分为四个模块:一个模块是主程序,一个模块是自动播放音乐部分,一个模块是音调发生器部分,一个模块是数控分频部分。

通过接口和结构体component 的定义将各个模块连接起来。

本程序总的有11个输入,1个输出,2个输入为时钟脉冲,1个输入是控制电子琴自动演奏或者手动演奏的使能端,8 个输入端为电子琴的八个键,1 个输出为扬声器输出音乐。

在音调发生器部分中,需要按照模=50000/频率的方法进行分频,但是要达到提高音量使占空比为50%的效果还需要再对信号进行二分频,因此最后得到的音调发生器进行分频预置值如下:当某位音符电平输入有效时,对应不同的分频预置值,将分频预置值输出并作为数控分频部分的输入,分频预置值控制对主频的分频。

在数控分频部分,将输入的分频预置值和时钟脉冲作为输入,最后输出直接连接扬声器。

这一部分一共包含了两个进程,第一个进程是根据不同音符的不同频率进行在主频下进行分频,得到音符的相应频率,第二个进程是为了提高音量使占空比为50%而进行二分频。

在自动播放部分,1 个时钟脉冲输入,1 个自动播放的使能端输入,还有8个音符的键为输入,输出为音符对应的8位高低电平,输出连接到音调发生器的8 位输入,如果自动播放的使能端(auto)无效则进行手动操作,在手动操作下,该模块的输出直接为输入。

如果自动播放的使能端输入有效,则播放事先存储的一段音乐,首先将主频50KHZ进行10000 分频,因此一个脉冲为0. 2秒,每来一个脉冲进行计数并播放一个音符。

直到设置的音符全部播放完毕,计数器回0。

源代码:主模块部分:定义了结构体和各模块函数library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; entity piano isport(clk0,clk1:in std_logic;auto:in std_logic;inplay:in std_logic_vector(7 downto 0);play:out std_logic);end piano; architecture run of piano iscomponent autoplay is --自动播放部分port(A:in std_logic_vector(7 downto 0);B,C:in std_logic;D:out std_logic_vector(7 downto 0));end component;component tone is --音调发生器部分port(A:in std_logic_vector(7 downto 0);B:out integer range 0 to 170); end component;component control is --数控分频部分port(A:in std_logic;B:in integer range 0 to 170;C:out std_logic);end component;signal sw0:std_logic_vector(7 downto 0);--自动播放部分的输出和音调发生器的输入,表示八个音符signal tone0:integer range0 to 170;--音调发生器的输出和数控分频部分的输入,表示音符的频率begin ――在这个进程中把各个部分连接起来G1:autoplay port map(A=>inplay,B=>auto,C=>clk0,D=>sw0); G2:tone port map(A=>sw0,B=>tone0);G3:control port map(A=>clk1,B=>tone0,C=>play); end run;自动播放模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity autoplay isport(A:in std_logic_vector(7 downto 0); --A=>inplay,B=>auto,C=>clk0,D=>sw0 B,C:in std_logic;D:out std_logic_vector(7 downto 0));end autoplay;architecture music of autoplay issignal clk2:std_logic; --对50KHZ脉冲进行分频得到的5HZ的脉冲信号signalcount0:integer range 0 to 62; -记- 录自动播放的乐曲的脉冲并控制播放signalcount3:integer range 0 to 10000;--分频时的计数beginseparate:process(C,B) ――分频将脉冲变为5HZ的信号beginif B='0' then count3<=0;clk2<='0';elsif(C'event and C='1') then count3<=count3+1;if count3=5000 then clk2<='1';elsif count3=10000 then clk2<='0';count3<=0;end if;end if; end process;half:process(clk2)begin if(clk2'event and clk2='1') then―如果脉冲个数多于自动播放的音符,则计数器回0,否则记录第几个脉冲if count0=62 then count0<=0;else count0<=count0+1;end if;end if;end process; musicplay:process(C,B,A) begin if B='1' then――启动自动播放后,在5HZ的脉冲下,每来一个脉冲相应播放一个音符case count0 is when 0 => D<="00010000";when 1 => D<="00000100";when 2 => D<="00000100";when 3 => D<="00000100";when 4 => D<="00001000";when 6 => D<="00000010"; when 7 => D<="00000010"; when 8 => D<="00000001"; when 9 => D<="00000010"; when 10 => D<="00000100"; when 11 => D<="00001000"; when 12 => D<="00010000"; when 13 => D<="00010000"; when 14 => D<="00010000"; when 15 => D<="00010000"; when 16 => D<="00010000"; when 17 => D<="00000100"; when 18 => D<="00000100"; when 19 => D<="00001000"; when 20 => D<="00000010"; when 21 => D<="00000010"; when 22 => D<="00000010"; when 23 => D<="00000001"; when 24 => D<="00000100"; when 25 => D<="00010000"; when 26 => D<="00010000"; when 27 => D<="00000001"; when 28 => D<="00000001"; when 29 => D<="00000001"; when 30 => D<="00000001"; when 31 => D<="00000010"; when 32 => D<="00000010"; when 33 => D<="00000010"; when 34 => D<="00000010";when 36 => D<="00000100";when 37 => D<="00001000";when 38 => D<="00001000";when 39 => D<="00000100";when 40 => D<="00000100";when 41 => D<="00000100";when 42 => D<="00000100";when 43 => D<="00000100";when 44 => D<="00001000";when 45 => D<="00010000";when 46 => D<="00010000";when 47 => D<="00010000";when 48 => D<="00000100";when 49 => D<="00000100";when 50 => D<="00000100";when 51 => D<="00001000";when 52 => D<="00000010";when 53 => D<="00000010";when 54 => D<="00000010";when 55 => D<="00000001";when 56 => D<="00000100";when 57 => D<="00010000";when 58 => D<="00010000";when 59 => D<="00000001";when 60 => D<="00000001";when 61 => D<="00000001";when 62 => D<="00000001";when others => null;end case;else D<=A; --如果不进行自动播放,则将输入8位音符直接输出,并且不执行前两个进程的操作end if;end process;end music;音调发生器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; entity tone isport(A:in std_logic_vector(7 downto 0);B:out integer range 0 to 170); endtone; architecture rtl of tone is begin search:process(A) begin case A is ――输入的是8位音符的电平输出的是各音符对应的模值when "00000001" =>B<=95; when "00000010" =>B<=85; when "00000100"=>B<=75; when "00001000" =>B<=71; when "00010000" =>B<=63; when "00100000"=>B<=56; when "01000000" =>B<=50; when "10000000" =>B<=47; when others =>B<=170; end case; end process; end rtl;数控分频模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity control isport(A:in std_logic; ――时钟信号B:in integer range 0 to 170; ――各音符的模值C:out std_logic);end control;architecture abc of control issignal spk:std_logic;begin twoclock:process(A,B)――将各个音符按照不同的模值分频得到各音符的频率的2倍variable count1:integer range 0 to 170; beginif(A'event and A='1') thenif count1=B then count1:=0;spk<='1'; else count1:=count1+1;spk<='0'; end if;end if;end process;reverse:process(spk) ――二分频使占空比为50%并直接输出beginif(spk'event and spk='1') then count2:=not count2;if count2='1' then C<='1';else C<='0';end if;end if;end process;end abc;实验总结:在这次实验中,我们首先想到的是做实现手动操作的电子琴,但是在后面的电子钟实验中整点报时时需要播放一段音乐,因此想到了在电子琴的实验中实现手动操作和自动播放两种模式,,并且也遇到了很多问题。

简易电子琴设计-可编程逻辑设计实践课程报告

简易电子琴设计-可编程逻辑设计实践课程报告

学院:物理与信息工程学院班级:2010级信通____学生:______学号:_________老师:____基于FPGA的简易电子琴设计报告 (3)一、设计简介 (3)二、方案论述 (4)1)、基本乐理知识: (4)2)、模块方案: (4)1、数控分频部分: (4)各音阶频率对应的分频值以及初始化 (5)2、音乐节拍产生器: (5)3、键盘输入及译码模块 (6)4、音量控制模块: (7)5、数码管显示模块: (8)三、总体结构框图: (8)四、单元模块设计 (8)1、键盘输入译码模块ToneData (8)2、播放速度控制模块(包括暂停功能): (10)3、自动演奏模块 (11)4、分频器模块(Speaker): (14)5)、数码管显示译码模块 (15)6)、数码管动态扫描模块 (16)7、音量调节 (18)五、系统测试 (20)六、设计总结 (23)基于FPGA的简易电子琴设计报告一、设计简介本次的课程设计是围绕着可编程逻辑器件进行的,可编程器件强大的并行性能使得其能轻易实现许多顺序执行程序的功能,并且效率高得多,但由顺序执行的思想转化为并行的思维方式,并不是那么容易的。

通过这次课程设计熟悉了FPGA设计的思路与方法,为将来的进一步发展奠定了基础。

本次选择电子琴为课题,并不仅仅因为其较为简单,而是基于个人对于音频等多媒体信息处理的兴趣,希望通过此次课程设计收获些相关的知识。

本次课设设计的电子琴主要实现了以下功能:1、手动演奏功能。

共用到8个按键,其中1个为shift键,用于切换不同组的音符。

Shift置零时,其余七个按键为中音Do至Xi。

Shift置高时,其余七个按键为低音的So La Xi和高音的Do Re Mi Fa。

2、自动演奏功能。

内部可识别21个音符,rom容量为512位,字宽为5位(0~31)。

其中用0表示休止符。

1~7表示低音Do~Xi,11~17表示中音Do~Xi,21~31用于表示高音Do~Xi。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字逻辑课程设计之电子琴实验内容:设计一个八音电子琴,能通过八个键进行手动控制音响,也可以通过自动控制有效自动播放一段音乐。

实验设计:本实验分为四个模块:一个模块是主程序,一个模块是自动播放音乐部分,一个模块是音调发生器部分,一个模块是数控分频部分。

通过接口和结构体component的定义将各个模块连接起来。

本程序总的有11个输入,1个输出,2个输入为时钟脉冲,1个输入是控制电子琴自动演奏或者手动演奏的使能端,8个输入端为电子琴的八个键,1个输出为扬声器输出音乐。

在音调发生器部分中,需要按照模=50000/频率的方法进行分频,但是要达到提高音量使占空比为50%的效果还需要再对信号进行二分频,因此最后得到的音调发生器进行分频预置值如下:当某位音符电平输入有效时,对应不同的分频预置值,将分频预置值输出并作为数控分频部分的输入,分频预置值控制对主频的分频。

在数控分频部分,将输入的分频预置值和时钟脉冲作为输入,最后输出直接连接扬声器。

这一部分一共包含了两个进程,第一个进程是根据不同音符的不同频率进行在主频下进行分频,得到音符的相应频率,第二个进程是为了提高音量使占空比为50%而进行二分频。

在自动播放部分,1个时钟脉冲输入,1个自动播放的使能端输入,还有8个音符的键为输入,输出为音符对应的8位高低电平,输出连接到音调发生器的8位输入,如果自动播放的使能端(auto)无效则进行手动操作,在手动操作下,该模块的输出直接为输入。

如果自动播放的使能端输入有效,则播放事先存储的一段音乐,首先将主频50KHZ进行10000分频,因此一个脉冲为0.2秒,每来一个脉冲进行计数并播放一个音符。

直到设置的音符全部播放完毕,计数器回0。

源代码:主模块部分:定义了结构体和各模块函数library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity piano isport(clk0,clk1:in std_logic;auto:in std_logic;inplay:in std_logic_vector(7 downto 0);play:out std_logic);end piano;architecture run of piano iscomponent autoplay is--自动播放部分port(A:in std_logic_vector(7 downto 0);B,C:in std_logic;D:out std_logic_vector(7 downto 0));end component;component tone is--音调发生器部分port(A:in std_logic_vector(7 downto 0);B:out integer range 0 to 170);end component;component control is--数控分频部分port(A:in std_logic;B:in integer range 0 to 170;C:out std_logic);end component;signal sw0:std_logic_vector(7 downto 0);--自动播放部分的输出和音调发生器的输入,表示八个音符signal tone0:integer range 0 to 170;--音调发生器的输出和数控分频部分的输入,表示音符的频率begin ――在这个进程中把各个部分连接起来G1:autoplay port map(A=>inplay,B=>auto,C=>clk0,D=>sw0);G2:tone port map(A=>sw0,B=>tone0);G3:control port map(A=>clk1,B=>tone0,C=>play);end run;自动播放模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity autoplay isport(A:in std_logic_vector(7 downto 0); --A=>inplay,B=>auto,C=>clk0,D=>sw0 B,C:in std_logic;D:out std_logic_vector(7 downto 0));end autoplay;architecture music of autoplay issignal clk2:std_logic; --对50KHZ脉冲进行分频得到的5HZ的脉冲信号signal count0:integer range 0 to 62; --记录自动播放的乐曲的脉冲并控制播放signal count3:integer range 0 to 10000;--分频时的计数beginseparate:process(C,B)――分频将脉冲变为5HZ的信号beginif B='0' then count3<=0;clk2<='0';elsif(C'event and C='1') then count3<=count3+1;if count3=5000 then clk2<='1';elsif count3=10000 then clk2<='0';count3<=0;end if;end if;end process;half:process(clk2)beginif(clk2'event and clk2='1') then――如果脉冲个数多于自动播放的音符,则计数器回0,否则记录第几个脉冲if count0=62 then count0<=0;else count0<=count0+1;end if;end if;end process;musicplay:process(C,B,A)beginif B='1' then――启动自动播放后,在5HZ的脉冲下,每来一个脉冲相应播放一个音符case count0 iswhen 0 => D<="00010000";when 1 => D<="00000100";when 2 => D<="00000100";when 3 => D<="00000100";when 4 => D<="00001000";when 5 => D<="00000010";when 6 => D<="00000010";when 7 => D<="00000010";when 8 => D<="00000001";when 9 => D<="00000010";when 10 => D<="00000100";when 11 => D<="00001000";when 12 => D<="00010000";when 13 => D<="00010000";when 14 => D<="00010000";when 15 => D<="00010000";when 16 => D<="00010000";when 17 => D<="00000100";when 18 => D<="00000100";when 19 => D<="00001000";when 20 => D<="00000010";when 21 => D<="00000010";when 22 => D<="00000010";when 23 => D<="00000001";when 24 => D<="00000100";when 25 => D<="00010000";when 26 => D<="00010000";when 27 => D<="00000001";when 28 => D<="00000001";when 29 => D<="00000001";when 30 => D<="00000001";when 31 => D<="00000010";when 32 => D<="00000010";when 33 => D<="00000010";when 34 => D<="00000010";when 35 => D<="00000010";when 36 => D<="00000100";when 37 => D<="00001000";when 38 => D<="00001000";when 39 => D<="00000100";when 40 => D<="00000100";when 41 => D<="00000100";when 42 => D<="00000100";when 43 => D<="00000100";when 44 => D<="00001000";when 45 => D<="00010000";when 46 => D<="00010000";when 47 => D<="00010000";when 48 => D<="00000100";when 49 => D<="00000100";when 50 => D<="00000100";when 51 => D<="00001000";when 52 => D<="00000010";when 53 => D<="00000010";when 54 => D<="00000010";when 55 => D<="00000001";when 56 => D<="00000100";when 57 => D<="00010000";when 58 => D<="00010000";when 59 => D<="00000001";when 60 => D<="00000001";when 61 => D<="00000001";when 62 => D<="00000001";when others => null;end case;else D<=A;--如果不进行自动播放,则将输入8位音符直接输出,并且不执行前两个进程的操作end if;end process;end music;音调发生器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity tone isport(A:in std_logic_vector(7 downto 0);――输入的是8位音符的电平B:out integer range 0 to 170);――输出的是各音符对应的模值end tone;architecture rtl of tone isbeginsearch:process(A)begincase A iswhen "00000001" =>B<=95;when "00000010" =>B<=85;when "00000100" =>B<=75;when "00001000" =>B<=71;when "00010000" =>B<=63;when "00100000" =>B<=56;when "01000000" =>B<=50;when "10000000" =>B<=47;when others =>B<=170;end case;end process;end rtl;数控分频模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity control isport(A:in std_logic;――时钟信号B:in integer range 0 to 170;――各音符的模值C:out std_logic);end control;architecture abc of control issignal spk:std_logic;begintwoclock:process(A,B)――将各个音符按照不同的模值分频得到各音符的频率的2倍variable count1:integer range 0 to 170;beginif(A'event and A='1') thenif count1=B then count1:=0;spk<='1';else count1:=count1+1;spk<='0';end if;end if;end process;reverse:process(spk)――二分频使占空比为50%并直接输出variable count2:std_logic;beginif(spk'event and spk='1') then count2:=not count2;if count2='1' then C<='1';else C<='0';end if;end if;end process;end abc;实验总结:在这次实验中,我们首先想到的是做实现手动操作的电子琴,但是在后面的电子钟实验中整点报时时需要播放一段音乐,因此想到了在电子琴的实验中实现手动操作和自动播放两种模式,,并且也遇到了很多问题。

相关文档
最新文档