8.18 电子琴程序设计与仿真 修改

合集下载

简易电子琴电路的设计仿真与实现

简易电子琴电路的设计仿真与实现

目录1 Pspice的简介 (1)1.1 PSPICE的起源与发展 (1)1.2 PSPICE的组成 (1)1.3 PSPICE的模拟功能 (2)2 设计原理及电路选取 (4)2.1 基本乐理知识 (4)2.2 设计原理 (4)3 设计方案 (7)3.1设计电路图 (7)3.2参数推导 (8)3.3仿真参数和仿真电路图 (8)4.仿真曲线 (10)5.仿真结果分析 (13)6.硬件焊接与调试 (14)6.1元器件的选择 (14)6.2焊接过程与调试 (15)7.课程设计心得 (16)8.参考文献 (18)本科生课程设计成绩评定表 (19)1 Pspice的简介1.1 PSPICE的起源与发展用于模拟电路仿真的SPICE软件于1972年由美国加州大学伯克利分校的计算机辅助设计小组利用FORTR AN语言开发而成,主要用于大规模集成电路的计算机辅助设计。

SPICE 的正式版SPICE 2G在1975年正式推出,但是该程序的运行环境至少为小型机。

1985年,加州大学伯克利分校用C语言对SPICE软件进行了改写,并由MICROSIM公司推出。

1988年SPICE被定为美国国家工业标准。

与此同时,各种以SPICE为核心的商用模拟电路仿真软件,在SPICE的基础上做了大量实用化工作,从而使SPICE成为最为流行的电子电路仿真软件。

PSPICE是较早出现的EDA软件之一,在电路仿真方它的功能可以说是最为强大,在国内被普遍使用。

1.2 PSPICE的组成1.2.1 电路原理图编辑程序SchematicsPSPICE的输入有两种形式,一种是网单文件形式,一种是电路原理图形式,相对而言后者比前者较简单直观,它既可以生成新的电路原理图文件,又可以打开已有的原理图文件。

电路元器件符号库中备有各种原器件符号,除了电阻,电容,电感,晶体管,电源等基本器件及符号外,还有运算放大器,比较器等宏观模型级符号,组成电路图,原理图文件后缀为.sch。

单片机电子琴的设计

单片机电子琴的设计

单片机电子琴的设计单片机电子琴的设计随着科技的发展,单片机技术在电子领域的应用已经非常广泛。

其中,单片机电子琴是一种非常受欢迎的DIY 电子产品。

通过使用单片机,我们可以实现各种各样的功能,比如手风琴、钢琴、鼓等模拟音乐乐器。

那么,本文将详细讲解单片机电子琴的设计方法和实现过程。

一、硬件设计1.主板设计在单片机电子琴的设计中,主板是最核心的部件,因为它能够控制整个电子琴的运转。

主板设计所需要的元器件如下:(1)单片机:根据需要,选择一款传统型单片机或者ARM 处理器。

(2)输入输出模块:据需要选择合适的硬件平台,比如DAC/ADC、芯片集成的PWM 或外加的DAC 等。

(3)显示模块:可以选用LCD 模块或其它显示模块。

(4)驱动模块:选择一款合适的驱动模块,比如H 桥驱动器、音频功率放大器等。

2.键盘设计键盘设计是单片机电子琴中最为重要的元部件,因为它是与用户进行交互的部分。

键盘设计可能有不同的方法,但是本文所展示的方法采用的是与传统钢琴相似的电容式设计方式。

电容式键盘设计思路是这样的:在钢琴键盘下方安装一组与钢琴键盘平行的电容板。

当按下钢琴键时,会压缩键盘下方的电容板,导致电容板之间的电容值发生变化,这样就可以识别每个键位的编号。

作为键盘电容板有很多种选择,但选择正确的条件是符合设计条件。

在这里,我们用金属箔板作为电容板,每个键位产生的电容值被电路板上面的片式电容器取样。

所以,我们使用红外线LED 与光敏二极管来驱动键盘,金属箔板放在二者之间。

在不按键的情况下,光敏二极管可以检测到被金属箔板反射的红外线,导致电容板上的电容值稳定。

当按下键时,电容板之间的电容值发生变化,此时光敏二极管检测到的红外线信号也将会变化,通过这个变化可以确定该键是否被按下。

3.音频输出在单片机电子琴的设计中,音频输出也是非常重要的。

音频输出通常使用功率放大器和喇叭来完成,我们也可以通过DAC/ADC 或PWM 来实现音频输出。

电子琴的仿真设计课程设计

电子琴的仿真设计课程设计

电子琴的仿真设计课程设计一、课程目标知识目标:1. 学生能理解电子琴的基本原理,掌握仿真设计的基本概念。

2. 学生能描述电子琴音色、节奏及演奏效果的产生过程。

3. 学生了解电子琴仿真设计中所涉及的电子元件和电路。

技能目标:1. 学生能运用所学的电子琴仿真设计知识,独立设计简单的电子琴音色。

2. 学生能通过实践操作,熟练使用仿真软件进行电子琴设计。

3. 学生具备分析电子琴仿真设计问题,并提出解决方案的能力。

情感态度价值观目标:1. 学生对电子琴仿真设计产生兴趣,培养对音乐和电子技术的热爱。

2. 学生在团队协作中学会相互尊重、沟通与协作,培养集体荣誉感。

3. 学生通过课程学习,认识到科技发展对音乐领域的影响,增强创新意识。

课程性质:本课程为实践性较强的电子技术课程,旨在让学生通过动手实践,掌握电子琴仿真设计的基本技能。

学生特点:学生处于高中阶段,具有一定的电子技术基础,好奇心强,喜欢动手实践。

教学要求:注重理论与实践相结合,关注学生的个体差异,引导他们主动探索、积极实践,提高电子琴仿真设计能力。

在教学过程中,关注学生的情感态度价值观培养,帮助他们形成良好的学习习惯和团队合作精神。

通过具体的学习成果分解,为后续教学设计和评估提供依据。

二、教学内容1. 电子琴基本原理:电子琴的工作原理、音色生成、节奏控制及演奏效果。

- 教材章节:第1章 电子琴概述2. 电子琴仿真设计基础:仿真设计概念、仿真软件使用、基本电子元件及电路。

- 教材章节:第2章 电子琴仿真设计基础3. 电子琴音色设计:音色合成原理、音色参数调整、音色库应用。

- 教材章节:第3章 电子琴音色设计4. 电子琴演奏功能设计:演奏控制、节奏编程、音效处理。

- 教材章节:第4章 电子琴演奏功能设计5. 实践操作:使用仿真软件进行电子琴设计,包括音色设计、演奏功能设计等。

- 教材章节:第5章 实践操作教学内容安排和进度:第1周:电子琴基本原理学习第2周:电子琴仿真设计基础学习第3-4周:音色设计理论与实践第5-6周:演奏功能设计理论与实践第7-8周:实践操作,完成电子琴仿真设计作品教学内容注重科学性和系统性,结合教材章节安排,循序渐进地引导学生学习电子琴仿真设计知识。

电子琴程序的设计

电子琴程序的设计

电子琴程序的设计电子琴程序的设计电子琴是一种非常流行的乐器,其拥有不同的声音、音调和效果,可通过电路和软件进行控制。

电子琴程序的设计涉及到多种元素,其中包括硬件、软件和用户界面。

开发一个电子琴程序需要不断地思考如何达成最好的音效,如何响应用户界面上的输入,以及如何使用硬件来优化音效。

硬件设计电子琴程序的硬件设计是其中最基本的部分。

硬件需要负责多个任务,比如采集和处理输入,操作红外线接收器,显示当前选择的功能和调试模式,以及控制声音产生的方式。

因此,开发者需要考虑到这些需求,并选择合适的硬件来支持它们的工作。

硬件还包括声音产生的电路,这就意味着必须选择合适的声音产生组件来实现绝佳的音效。

大多数电子琴程序使用数字信号处理器(DSP) 来生成声音。

DSP 具有快速处理能力,可以大大提高声音产生的速度和实时响应。

软件设计电子琴程序的软件开发是进行音效实现的重要部分。

软件的开发需要涉及到多种编程语言和工具。

这些语言,如C、C++等对于实现DSP音效编程非常有用。

一般来说,电子琴程序的开发人员使用数字信号处理技术来实现任意形状的波形、可变的音色和重复的乐句,以提高音效。

此外,还需要考虑如何响应用户的输入。

这需要通过一个用户交互设计来实现。

这个设计必须简单易用,不妨再选用一些通用的UI库来实现效果更佳。

这还包括诸如红外线接收器、按键、旋钮等硬件。

用户界面设计用户界面设计非常重要,因为它直接决定了用户使用体验的满意度。

界面必须易于使用,并尽可能地简单,以便使用者能够轻松找到所需的功能。

如果使用一些图形专业工具,能够让你的界面看起来更美观,同时也简化了界面的开发难度。

总结在开发电子琴程序时,需要考虑到硬件,软件和用户界面等各个方面,以确保最好的音效,并确保用户可以在使用时获得最佳的体验。

为了达成这一目标,我们需要贡献开发的精力,选择出适合的硬件和软件,并利用好专业的界面工具,以达到最好的用户界面效果和体验。

简易电子琴的VHDL仿真与实现

简易电子琴的VHDL仿真与实现

简易电子琴的VHDL仿真与实现电子琴是一种应用广泛的乐器,而现在,电子琴的制造已经从纯硬件逐渐过渡到硬件加软件的方式。

VHDL是一种硬件描述语言,它可以方便地描述各种硬件逻辑功能,而且还可以帮助设计者实现FPGA的目标硬件。

本文主要介绍简易电子琴的VHDL仿真与实现。

一、设计思路简易电子琴的设计基本上就是将钢琴的琴键和生产声音的部件(如电子光电元件或电子开关等)结合在一起。

琴键的设计分为两个部分:按下和弹起。

按下部分是由一个简单的开关连接到FPGA引脚的输入端。

当琴键被按下时,开关闭合,产生一个低电平信号,这个信号作为FPGA的输入。

弹起部分用一个气压传感器检测琴键是否已经弹起。

生产声音的部件由一个数字-模拟转换器(Digital-to-Analog Converter,简称DAC)处理FPGA通过一个计数器输出的数字信号,将它转换成模拟信号。

这样,设计思路就非常清晰明了。

二、VHDL仿真的步骤1. 创建虚拟设计:在仿真之前,我们需要创建一个虚拟的设计,包括引脚、组件、实体、测试模块,以及其他必需的部件。

这些将精确地模拟真实世界中的电路元素。

2. 创建设计模块:VHDL仿真涉及到多个模块。

在这种情况下,我们有两个模块:数字模块和组件模块。

我们将数字模块设计为接收一个8位的计数器并输出模拟信号。

组件模块包括DAC芯片和琴键开关,这些组件分别接收输入信号,经过逻辑处理后,通过计数器和气压传感器输出压缩后的模拟信号。

3. 配置实体接口:为了确保VHDL仿真的准确性,我们必须配置模块实体接口,这里有两个实体:数值模块和组件模块。

它们需要定义数据量和接收输入端口。

4. 定义测试激励波形:这些波形定义从测试模块输入到仿真环境中的数字信号序列。

因此,我们需要定义输入数据以及时钟信号。

5. 编写测试模块:测试模块是用来检测VHDL仿真环境的激励波形。

它包括测试模块、实体、配置、激励波形和仿真模块。

三、VHDL实现的步骤1. 设计和构建硬件:在这一阶段,我们将实现FPGA硬件。

电子琴程序的设计

电子琴程序的设计

电子琴程序的设计一、设计内容与要求编写一实现电子琴的程序,并实现假设干扩展功能。

差不多功能:用8257键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能: 1.录音:记录所弹奏曲目2.放录音:任意时刻重放最新记录曲目3.在程序中可预设一曲目,按一键实现播放该曲目。

4.在播放录制曲目或预设曲目时,按8279键盘上任意键能够暂停播放,再按一次从暂停处连续播放。

5.程序运行时有友好的用户介面二、硬件电路框图1.设计原理〔1〕关于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。

给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。

关于音乐,每个音阶都有确定的频率。

各音阶标称频率值:〔2〕产生一个正弦波的数据可取32个〔小于亦可〕,不同频率的区别,可通过调剂向D/A转换器输出数据的时刻间隔,例如:发"1"频率为261。

1HZ,周期为1/261.1=3.83ms,输出数据的时刻间隔为3.83ms/32=0.12ms. 定时时刻能够由8253配合8255来实现。

按下某键后发音时刻的长短能够由发出的正弦波的个数多少来操纵。

2. 硬件电路连接三、软件设计1.主程序流程图开始显示缓存区,初始化8279初始化调用发音子程序调用键盘子程序键盘码送缓存区是否9键是否0键是否S键是否R键录音子程序放录音子程序放歌子程序返回DOS YNN N Y Y YN2. 键盘显示子程序流程图3.显示子程序流程图4.部分参考程序KEYBORD PROC NEAR ;键盘子程序MOV DX,PORT1MOV AL,0D1HOUT DX,AL ;CLEAR DISPLAYWREP: CALL DISPMOV DX,PORT1IN AL,DX ;读状态AND AL,07H ;判定是否有按键JZ WREPKEYN: MOV DX,PORT0 ;下一次的按键IN AL,DX ;读数据MOV BL,ALAND AL,07HAND BL,38HMOV CL,03SHR BL,CLCMP BL,00HJNZ LINE1ADD AL,08HJMP QUIT1LINE1: CMP BL,01HJNZ LINE2JMP QUIT1LINE2: ADD AL,10HQUIT1: RETKEYBORD ENDPDISP PROC NEAR ;显示子程序PUSH SIPUSH CXPUSH DXMOV AX,DATAMOV DS,AXMOV DX,PORT1MOV AL,90HOUT DX,AL ;写地址为0000的显示缓存区命令,每次写入后地址自动加1指向下一次写入地址MOV SI,OFFSET SEC1MOV CX,0001MOV BX,OFFSET LEDDISP1: CLDLODSBMOV AH,ALXLAT ;键盘码转显示码MOV DX,PORT0OUT DX,AL ;显示LOOP DISP1POP DXPOP CXPOP SIQ:RETDISP ENDP。

简易电子琴的VHDL仿真与实现

简易电子琴的VHDL仿真与实现

简易电子琴的VHDL仿真与实现随着科技的发展,电子琴已成为一种十分普及的音乐乐器。

除了可以通过购买市面上的电子琴来使用外,我们还可以自己动手制作一台简易的电子琴。

本文将介绍使用VHDL仿真与实现一台简易电子琴的方法。

首先,我们需要了解VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。

VHDL可以描述数字电路和系统的行为、结构和时间性质,并且可以转化为硬件和软件实现。

因此,我们可以使用VHDL来描述电子琴的结构和行为,然后将其实现在FPGA上。

在电子琴的设计中,我们需要考虑最基础的功能:音符的产生和声音的输出。

因此,我们需要将电子琴拆分成两部分来考虑:输入和输出。

输入部分主要负责产生音符,音符的产生需要考虑按键的位置、按键的压力等因素。

由于VHDL主要用来描述数字电路,我们可以将输入部分简化为一组称为“开关矩阵”的二维数组。

在这个开关矩阵中,我们可以设置每个按键的位置和状态(即是否按下),并通过数字电路来判断按键状态的变化。

输出部分则负责将产生的声音输出到扬声器上。

在FPGA 中,我们可以通过PWM(Pulse-Width Modulation)技术来实现声音的输出。

PWM技术可以将模拟信号转化为数字信号,然后通过FPGA输出数字信号的高低电平来模拟模拟信号的频率和幅度,从而实现声音的输出。

接下来,我们需要考虑如何将输入和输出部分结合起来。

我们可以将输入部分和输出部分放在同一个模块中,并通过端口来连接。

在这个模块中,我们可以设置一个时钟,根据时钟的脉冲来判断按键状态是否改变,并且触发PWM来输出声音。

在设计完成后,我们需要进行VHDL仿真来验证我们的电子琴是否正确。

仿真可以模拟电路的行为和输出,以验证电路是否按照预期工作。

我们可以通过仿真来测试输入部分的工作状态,例如测试按键是否可以正确响应。

同时,我们也可以测试输出部分的工作状态,例如测试声音的频率和幅度是否符合预期。

模拟电子琴设计仿真

模拟电子琴设计仿真

摘要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。

本次设计的主要内容是用AT89S51单片机为核心控制元件,利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,可构成我们想要的音乐,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。

本系统运行稳定,硬件电路简单,软件功能完善,控制系统可靠,所开发的程序通过调试运行、仿真验证,实现了设计目标,具有一定的实用和参考价值。

关键词:单片机、按键、扬声器、音阶目录1 课题描述 (1)2问题分析和任务定义 (2)3硬件电路设计 (3)4 程序设计 (4)4.1 程序流程图 (4)4.2 程序代码 (4)5电路仿真与分析 (10)5.1 仿真软件 (10)5.2仿真过程 (10)6调试、测试与结果分析 (11)6.1调试与测试 (11)6.2结果分析 (11)7总结 (12)参考文献 (13)课题描述一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们所想要的音乐了,对于单片机,可以利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。

本次设计主要应用AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,通过软硬件设计,模式转换按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴,通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现用户自编歌曲。

开发环境:微机WINdows XP系统VisuAL BaSIc 6.0环境2问题分析和任务定义本次设计主要通过对AT89C51的基本认识,利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。

(完整版)基于单片机的电子琴设计与仿真毕业设计

(完整版)基于单片机的电子琴设计与仿真毕业设计

基于单片机的电子琴设计与仿真作者:任振环专业名称:电子科学与技术指导教师:兰英讲师摘要当今世界,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。

电子琴是我们常见的电子产品,它是一种键盘乐器,是现代电子科技与音乐的结合。

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。

单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

该系统是以51系列单片机为主控制器,附有矩阵键盘、LED数码管、扬声器等。

系统完成显示输入信息、播放相应音符等基本功能。

本文设计的电子琴,体积小,重量轻,使用方便,并有一定的商业价值。

关键词:STC89C52单片机矩阵键盘LED数码管扬声器AbstractIn today's world, electronic technology electronic products into almost every field of the society, a strong impetus to the development of social productivity and the improvement of social information-based degree. Electronic organ is our common electronic products, it is a keyboard instrument, is combined with modern electronic technology and music.At present, SCM is a , small volume, large capacity, several aspects of development. Microcontroller penetrated into every aspect of our lives, which is almost difficult to find traces of the field without mcu. Missile navigation equipment, aircraft control on a variety of instruments, computer network communications and data transmission, real-time control and data processing of industrial automation process, extensive use of various smart IC card, civilian luxury car security system, video recorder, camera control, full automatic washing machine, and program-controlled toys, electronic pet and so on, these all cannot do without mcu.The system is based on the 51 Series MCU based controller, a matrix keyboard, LED digital tube, speakers, etc.. To complete the system shows the input information, the basic function such as play corresponding notes. Electronic organ, this design commercial value.Keywords:STC89C52 microcontroller,matrix keyboard,digital tube LED ,speaker目录摘要 (I)Abstract (II)目录 (IV)前言 (1)1 总体方案介绍 (2)1.1 方案一 (2)1.2 方案二 (3)1.3 系统设计概述 (4)2 系统硬件介绍 (6)2.1主控模块(STC89C52) (6)2.1.1 STC89C52的主要特性 (7)2.1.2 STC89C52的中断系统 (10)2.1.3 STC89C52的系统介绍 (11)2.2显示模块 (12)2.2.1 数码管原理 (12)2.2.2 显示模块电路设计 (13)2.3 矩阵键盘模块 (14)2.4 功率放大模块(LM386) (15)2.4.1 LM386内部原理 (16)2.4.2 功率放大器使用事项 (17)3 系统软件介绍 (19)3.1 系统软件整体设计 (19)3.2 定时器产生音乐信号原理 (20)3.3 程序设计原理 (21)4 调试结果与仿真 (22)4.1 调试结果 (22)4.2 仿真结果 (22)总结 (23)致谢 (23)参考文献 (25)附件1 系统整体原理图 (26)附件2 元件清单 (27)附件3 系统PCB设计图 (28)附件4 系统源程序 (29)附件5 实物图片 (37)前言近几十年来,单片机技术迅猛发展,在工农业生产,交通运输,国防建设和航空、航天事业等领域中获得广泛的应用。

简易电子琴的VHDL仿真与实现

简易电子琴的VHDL仿真与实现

简易电子琴的VHDL 设计与实现一.设计课题与任务要求:设计制作一个简易电子琴演奏器。

原理概述:依据声乐知识,产生音乐的两个因素是音乐频率的持续时刻,音乐的十二平均率规定,每两个八音度之间的频率相差一倍,在两个八音度之间,又可分为12个半音。

每两个半音的频率比为4。

另外,音名A〔乐谱中的低音6〕的频率为440HZ,音名B到C之间,E到F 之间为半音,其余为全音。

由此能够计算出乐谱中从低音1到高音1之间每个音名的频率如下表所示。

全然要求:1、用8×8点阵显示“1234567”七个音符构成的电子琴键盘。

其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如以如下面图所示。

图1点阵显示的电子琴键盘2、用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1234567”七个音符。

当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂喊器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂喊器停止声音的输出。

以如下面图所示为按下BTN3按键时点阵的显示情况。

图2按键按下后的点阵显示3、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。

4、通过按键BTN0进行复位,操纵点阵显示图1的初始状态。

提高要求:1、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲曲折折曲曲折折折折曲曲折折曲曲折折折折折折的功能。

2、增加手动演奏的音符存储、播放功能。

二.系统设计〔包括设计思路、总体框图、分块设计〕1.设计思路讲明:电子琴的设计包括七个模块:弹奏模块keyplay、自动演奏模块autoplay、查表及显示模块table、分频模块fenpin、存储模块store、七段数码管显示模块seg7和点阵的显示模块lattice。

弹奏模块keyplay依据按键动作key,和高中低模式选择mode产生指示音调的index_key。

具有自动乐曲演奏功能的电子琴设计方案

具有自动乐曲演奏功能的电子琴设计方案

具有自动乐曲演奏功能的电子琴设计方案随着科技的发展,电子琴作为一种数字化、电子化的乐器,也越来越受到欢迎。

而具有自动乐曲演奏功能的电子琴更是一种新的趋势,为乐手们带来了更多的便捷和乐趣。

本文将为大家介绍一个具有自动乐曲演奏功能的电子琴的设计方案。

一、方案介绍本设计的电子琴将采用基于FPGA的设计方法,实现自动乐曲演奏的功能。

利用现代数字技术,将琴键的音高、节拍等信息处理成数字信号,以FPGA实现自动演奏功能,与琴键输入信号结合出现最终的演奏效果。

各个部分的实现如下:(一)键盘控制模块键盘控制模块主要负责对乐器键盘的键位的输入信息进行扫描,将信息传到音源控制模块。

具体实现采用的是键盘矩阵扫描的方法,通过多路复用器依次对各个键盘扫描,将扫描结果输出,供音源控制模块使用。

(二)音源控制模块音源控制模块负责将键盘控制模块输出的键位信息进行解码,以获得干净的音符信息。

该模块还负责产生不同的音色、节拍和音量等特殊音效,便于播放不同风格的音乐。

(三)FPGA控制器FPGA控制器主要负责控制整个电子琴的功能。

它包含了控制不同部分之间的数据交换和通信的逻辑,同时还负责执行自动演奏的算法。

FPGA控制器可以根据内部预先存储的midi乐曲信息,自动播放乐曲,实现自动演奏的功能。

(四)输出模块输出模块主要是通过声音放大器输出音乐。

具体实现方式包括选用AC或DC电源驱动,根据工作条件选择电容或者电阻等元件。

在实际设计中,还需辅助加入一些电容和阻值的计算和测试,保障输出音质的稳定和清晰。

二、核心技术本设计方案的核心技术是数字信号处理和自动演奏的算法。

通过数字信号处理,将琴键输入信息处理成数字信号,再通过FPGA控制器进行逻辑控制,最终输出音频信号,实现自动乐曲演奏的目的。

三、设计优势1、精确可靠本设计采用数字信号处理,减少了人工操作的失误,提高了演奏的准确性和可靠性。

同时,利用FPGA控制器,可以对音符和节拍等信息进行逻辑控制,确保演奏效果良好。

基于VHDL的电子琴程序设计与仿真(附代码)

基于VHDL的电子琴程序设计与仿真(附代码)

电子琴程序设计与仿真顶层程序与仿真,音阶发生器程序与仿真,数控分频模块程序与仿真,自动演奏模块程序与仿真设计例1.顶层程序与仿真(1)顶层VHDL程序--文件名:top.vhd--功能:顶层文件--最后修改日期:2004.3.20library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort ( clk32MHz :in std_logic; --32MHz系统时钟handTOauto : in std_logic; --键盘输入/自动演奏code1 :out std_logic_vector(6 downto 0); --音符显示信号index1 :in std_logic_vector(7 downto 0); --键盘输入信号high1 :out std_logic; --高低音节信号spkout :out std_logic); --音频信号end top;architecture Behavioral of top iscomponent automusicPort ( clk :in std_logic;Auto: in std_logic;index2:in std_logic_vector(7 downto 0);index0 : out std_logic_vector(7 downto 0));end component;component tonePort ( 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 component;component speakerPort ( clk1 : in std_logic;tone1 : in integer range 0 to 2047;spks : out std_logic);end component;signal tone2: integer range 0 to 2047;signal indx:std_logic_vector(7 downto 0);beginu0:automusic port map(clk=>clk32MHZ,index2=>index1,index0=>indx,Auto=>handtoAuto); u1: tone port map(index=>indx,tone0=>tone2,code=>code1,high=>high1);u2: speaker port map(clk1=>clk32MHZ,tone1=>tone2,spks=>spkout);end Behavioral;(2)仿真顶层文件仿真图如图8.17.2所示。

单片机课程设计——简易电子琴

单片机课程设计——简易电子琴
单片机课程设计——简易电子 琴
汇报人:
单击输入目录标题 单片机基础知识 简易电子琴系统设计 单片机与简易电子琴的结合 简易电子琴的功能扩展 简易电子琴的优化与改进
添加章节标题
单片机基础知识
单片机简介
单片机是一种集成电路芯片,将微处理器、存储器、输入/输出接口等集成在一起 单片机具有体积小、功耗低、可靠性高、编程灵活等特点 单片机广泛应用于工业控制、家电、汽车电子等领域 单片机课程设计是学习单片机应用的重要环节,可以提高学生的实践能力和创新能力
音乐播放与控制
单片机控制:通过单片机控制电子琴的音色、音高和节奏 音乐播放:单片机通过控制电子琴的音色、音高和节奏,实现音乐的播放 控制方式:可以通过按键、触摸屏等方式控制音乐的播放 功能扩展:可以增加录音、播放、暂停、快进、快退等功能,提高用户体验
显示模块的应用
显示模块的作用:显示电子琴 的音色、音高、节奏等信息
单片机在简易电子琴中的应用
控制音量:通过单片机控制 音量的大小,实现电子琴的 音量调节功能。
控制音色:通过单片机控制 不同频率的音色,实现电子 琴的多种音色效果。
控制节奏:通过单片机控制 节奏的快慢,实现电子琴的
节奏调节功能。
控制和弦:通过单片机控制 和弦的演奏,实现电子琴的
和弦演奏功能。
单片机开发环境搭建
测试内容:音色、音调、 音量、节奏等性能指标
测试结果分析:对测试数 据进行分析,找出问题并 解决
测试报告:记录测试过程、 结果和分析,为后续改进 提供依据
单片机与简易电子琴的结合
单片机控制简易电子琴的原理
单片机作为核心控制单元,负责接收和处理来自键盘的输入信号
单片机根据接收到的输入信号,控制电子琴的音源产生相应的音调

简易电子琴电路的设计仿真与实现课程设计(可编辑)

简易电子琴电路的设计仿真与实现课程设计(可编辑)

简易电子琴电路的设计仿真与实现课程设计课程设计任务书学生姓名:专业班级:指导教师:工作单位: 信息工程学院题目: 简易电子琴电路的设计仿真与实现初始条件:可选元件:集成运算放大器LM324、电阻、电位器、电容若干,直流电源,或自备元器件。

可用仪器:示波器,万用表,直流稳压源,函数发生器要求完成的主要任务:(1)设计任务根据要求,完成对简易电子琴电路的仿真设计、装配与调试,鼓励自制稳压电源。

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

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

③利用Proteus或Multisim仿真设计电路原理图,确定电路元件参数、掌握电路工作原理并仿真实现系统功能。

④安装调试并按规范要求格式完成课程设计报告书。

⑤选做:利用仿真软件的PCB设计功能进行PCB设计。

时间安排:1、前半周,完成仿真设计调试;并制作实物。

2、后半周,硬件调试,撰写、提交课程设计报告,进行验收和答辩。

指导教师签名: 年月日系主任(或责任教师)签名: 年月日目录1.模电课设概述..............................................................................1)1.1设计背景..............................................................................1)1.2设计目的及意义.....................................................................11.3开发环境proteus简介 (1)2.电路原理....................................................................................32.1 RC桥式振荡电路及频率选择......................................................32.2振荡条件 (4)3.总体方案设计……………………………………………………………………53.1实验电路设计思路…………………………………………………………53.2设计电路图...........................................................................63.3实验参数选择 (6)4.仿真曲线及结果分析.....................................................................74.1仿真操作过程及曲线...............................................................74.2仿真结果分析 (14)5.实物制作及仿真、实物的差异......................................................155.1实物制作过程和调试过程......................................................155.2 仿真、实物的差异 (16)6.心得体会………………………………………………………………………(17)7.元件清单………………………………………………………………………(18)8.参考文献………………………………………………………………………(19)1模电课设概述1.1 设计背景电子琴是一种键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响。

简易电子琴的设计与仿真

简易电子琴的设计与仿真

课程设计报告简易电子琴的设计与仿真1、设计原理:1.1 音阶的产生由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片来产生这计数器T0机来产生不同的频率非常方便,我们可以利用单片机的定时/ 样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

,假如选择1MHZ本次设计中单片机晶振为12MHZ,那么定时器的计数周期为,那么根据不同的频率计算﹡105/相应的频率1工作方式,那T值便为T= 216--5相关的计数值如下出应该赋给定时器的计数值,列出不同音符与单片机计数T0表所示:实验环境1.2Keil uVision3proteus 7功能设计描述1.3k1—k7音调输出按音频逆向输出k7k8按一下。

在按k1—键后会在音频输出歌曲,k1键停止+k1k8先按着再主要知识点1.4Keil uVision3的使用及调试proteus 7的使用及调试定时器、中断、键盘接口数字电路、模拟电路的相关知识2、实现及编程程序框图2.1 ) 2.2电路原理图程序内容2.3 个音调的产生方法7 k2让音调逆向输出按和如何让音乐停止如何按k8+k2放出音乐汇编源程序2.4BUZZ EQU P2BUZZ1 EQU P1.7ORG 0000HLJMP MAINORG 000BHLJMP INT_T0 ORG 001BH LJMP TIME1 ORG 8000H MAIN: MOV SP,#90H MOVBUZZ,#0FFHMOV TMOD,#11H SETB ET0 SETB ET1 SETB EA CLR TR0 START:MOV R0, BUZZ CJNE R0,#0FFH,KEY1 CLR TR0 SJMP START KEY1:CJNE R0,#0FEH,KEY2 MOV 30H,#0FBH MOV 31H,#0E9H LJMP SET_TIMER KEY2:CJNE R0,#0FDH,KEY3 MOV 30H,#0FCH MOV 31H,#5CH LJMP SET_TIMER KEY3:CJNE R0,#0FBH,KEY4MOV 30H,#0FCH MOV 31H,#0C1H LJMP SET_TIMER KEY4:CJNE R0,#0F7H,KEY5 MOV 30H,#0FCH MOV 31H,#0EFH LJMP SET_TIMER KEY5:CJNE R0,#0EFH,KEY6 MOV 30H,#0FDH MOV 31H,#045H LJMP SET_TIMER KEY6:CJNE R0,#0DFH,KEY7 MOV 30H,#0FDH MOV 31H,#92H LJMP SET_TIMERKEY7:CJNE R0,#0BFH,KEY8 MOV 30H,#0FDH MOV 31H,#0D6HLJMP SET_TIMER KEY8:CJNE R0,#7FH,NOKEY LOOP1:MOV R0, BUZZ CJNE R0,#7DH,LOOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OSTART:MOV R0, BUZZ CJNE R0,#0FFH,OKEY1LJMP MAIN1LOOP:R0,#0FFH,LOOP1LJMP OSTARTSET_TIMER: SETB TR0 SJMP START NOKEY: CLR TR0 SJMP START INT_T0: MOV TH0,30H MOV TL0,31H CPL BUZZ1 RETICJNECLR TR0 SJMP OSTART OKEY1:CJNE R0,#0BFH,OKEY2 MOV 30H,#0FBH MOV 31H,#0E9H LJMPOSET_TIMEROKEY2:CJNE R0,#0DFH,OKEY3 MOV 30H,#0FCH MOV 31H,#5CH LJMP OSET_TIMER OKEY3:CJNE R0,#0EFH,OKEY4 MOV 30H,#0FCH MOV 31H,#0C1H LJMPOSET_TIMEROKEY4:CJNE R0,#0F7H,OKEY5 MOV 30H,#0FCH MOV 31H,#0EFH LJMPOSET_TIMEROKEY5:CJNE R0,#0FBH,OKEY6 MOV 30H,#0FDH MOV 31H,#045H LJMPOSET_TIMEROKEY6:CJNE R0,#0FDH,OKEY7 MOV 30H,#0FDH MOV 31H,#92H LJMP OSET_TIMER OKEY7:CJNE R0,#0FEH,OKEY8 MOV 30H,#0FDH MOV 31H,#0D6H LJMPOSET_TIMEROKEY8:CJNE R0,#07FH,ONOKEYLOOP2:MOV R0, BUZZ CJNE R0,#7DH,LOOP3LJMP MAIN1LOOP3:CJNER0,#0FFH,LOOP2LJMP START OSET_TIMER: SETB TR0 SJMP OSTART ONOKEY: CLR TR0 LJMP OSTART ;;;;; ;;;;;;;;;;;;;;;;;;;;;;MAIN1: MOV 40H,#00HNEXT: MOV R0, BUZZ MOV 41H,R0 ORL 41H ,#0FEH MOV R0,41HCJNE R0,#0FFH,STOPMOV A,40HMOV DPTR,#SONG INC A MOVC A,@A+DPTRMOVC A,@A+DPTRCJNE A,#00H,PLAY MOV TL1,A LJMP STOPMOV 20H,APLAY: MOV R1,A SETB TR1 ANL A,#0FH MOV R2,A MOV A,R1ANL A,#0F0H CJNE A,#00H,MUSIC CLR TR1 LJMP DEL MUSIC:SWAP A DEC AMOV 22H,A ADD A,22H MOV R3,AMOV DPTR,#SONG1 MOVC A,@A+DPTR MOV TH1,A MOV 21H,A MOV A,R3 DEL: LCALL DELAY INC 40H LJMP NEXTSTOP: CLR TR1 LJMP STARTTIME1:PUSH ACC PUSH PSWCPL BUZZ1 MOV TL1,20H MOV TH1,21HPOP PSWPOP ACC RETIDELAY:MOV R7,#02H DELA1:MOV R6,#125 DELA2:MOV R5,#248DJNZ R5,$DJNZ R6,DELA2 DJNZ R7,DELA1 DJNZ R2,DELAY RET SONG1:DW 64580,64684,64777,64820 DW64898,64968,65030,64260 DW64400,64524,65058,63835,64021 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DB 02H,82H DB 月亮代表我的心SONG :;;;;;;;;;;;;;;;;;;16H,32H,54H,02H,52H DB 0A6H,32H,54H,02H,52H DB64H,74H,0B6H,64H DB52H,5CH,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32H DB 26H,12H,94H,22H,32H DB 2CH DB 32H,52H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 96H,0A2H,96H,82H DB 3CH,54H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 16H,12H,14H,22H,32H DB2CH,02H,82H DB 16H,32H,56H,12H DB 0A6H,32H,56H,52H DB66H,72H,0B6H,62H DB 62H,52H,58H,32H,22H DB 16H,12H,14H,32H,22H DB16H,12H,14H,22H,32H DB 26H,92H,0A4H,12H,22H DB 1CH DB 00;END3、调试及测试1调试(按实际做的步奏)3.k5后显示如下图:如按下音调输出k1—k7 k1—k7音频逆向输出按一下k8。

电子行业电子琴程序的设计

电子行业电子琴程序的设计

电子行业电子琴程序的设计简介电子琴是一种可以模拟各种乐器音色的电子乐器。

在电子行业中,电子琴被广泛应用于音乐制作、教育培训和娱乐等领域。

本文将介绍电子行业电子琴程序的设计。

硬件需求为了实现电子行业电子琴程序的设计,我们需要以下硬件设备:1. 控制器:可以是计算机键盘、MIDI控制器或其他输入设备。

2. 音频接口:用于将电子琴的音频信号输出到音响设备或录音设备。

软件需求要设计一个电子琴程序,需要以下软件工具和库: 1. 开发环境:一般使用集成开发环境(IDE)如Visual Studio、Eclipse等。

2. 编程语言:可以使用C++、Java、Python等编程语言。

3. 音频处理库:如PortAudio、PyAudio等,用于录制和播放音频。

4. 图形用户界面(GUI)库:如Qt、Tkinter等,用于设计电子琴的界面。

设计思路电子琴程序的设计需要考虑以下方面:1. 音频处理电子琴需要处理音频信号,包括生成音调、调整音量等功能。

可以使用音频处理库来实现这些功能。

2. 键盘输入用户可以使用键盘或其他输入设备演奏电子琴。

通过监听键盘输入,并将输入映射到相应的音符,可以实现电子琴的演奏功能。

3. 音色输出电子琴可以模拟各种乐器的音色。

可以通过选择合适的音色样本,并进行音频合成来实现电子琴的音色输出功能。

4. 用户界面为了方便用户操作,设计一个直观友好的用户界面是很重要的。

可以使用GUI库来设计电子琴的界面,包括音符显示、控制按钮、音色选择等功能。

5. 存储和读取为了方便用户保存和读取已演奏的曲目,可以设计存储和读取功能,将曲目保存为文件,并在需要时进行读取。

实现步骤根据以上设计思路,我们可以按照以下步骤来实现电子琴程序:1.搭建开发环境:安装IDE和所需的库。

2.创建音频处理模块:使用音频处理库实现音调生成、音量调整等功能。

3.创建键盘输入模块:监听键盘输入,并将输入映射到相应的音符。

4.创建音色输出模块:选择合适的音色样本,并实现音频合成功能。

简易电子琴设计流程

简易电子琴设计流程

简易电子琴设计流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!简易电子琴设计流程一、设计目的设计一个简易的电子琴,能够发出不同的音符和和弦,并且可以通过按键控制音量和音色。

电子设计竞赛实验报告之电子琴(含详细原理,流程图,c语言程序,proteus图等)

电子设计竞赛实验报告之电子琴(含详细原理,流程图,c语言程序,proteus图等)

创新教育设计题目报告电子琴摘要:电子琴系统使用喇叭,数码管及矩阵键盘,通过设置不同定时器0初值,改变喇叭发声频率,可以实现调性转换、改变音高与播放速度、播放已有曲目、声音录音及声音回放的功能。

关键字:喇叭,键盘,定时器0,频率设计题目及要求:(1)能够通过键盘演奏音符。

(2)能够保存演奏的音乐,并实现回放。

(3)有音调调整功能(如:C调,G调)。

(4)自由发挥其他功能.(5)要求有单片机硬件系统框图,电路原理图,软件流程图。

一、系统方案:1、方案:1)显示部分:采用两位共阴数码管的动态扫描方式,第一位数码管显示当前调性,第二位数码管显示当前演奏音。

2)控制部分:采用8Ω喇叭与8550三极管,连接成喇叭放大电路,矩阵键盘使用扫描的方式,通过按下键盘,实现对应声音的演奏。

八个功能键,实现转调,录音\停止录音,播放录音等种功能。

2、总体方案:1)硬件系统框图:2)软件流程图:是二、单元电路:1、单片机电路2、喇叭发声电路:3、矩阵键盘电路:三、算法原理:1、键盘扫描:先检测P3口是否等于0xf0,检测是否有按键按下,并加入消抖功能,接着依次对P3口赋0xfe,0xfd,0xfb,0xf7,逐行扫描,并且检测是否有值变化,检测有变化的一行,返回相对应的值,实现对4×4键盘按键的检测。

2、音调频率:根据十二平均律作的音阶频率表:123456789101112这里所用音范围从e~d3,根据公式t=1/f设定定时器0的初值。

其中t单位为s,故将单位转换为us,T=10^6/f (us) TH=(65536-T)/256TL=(65536-T)%256每进入中断一次,取反一次P1.2输出电平,即改变喇叭电路接受电平。

通过单位时间内进入中断的次数影响发声频率。

C调对应音阶:C D E F G A BG调对应音阶:G A B C D E #FA调对应音阶:A B #C D E #F #G附录:1.参考文献:[1] 郭天祥视频《十天学会单片机》[2] 21IC社区/[3] 阿莫电子论坛/[4] 尹经民《大学音乐教程》,湖南大学出版商,20042.总电路图:。

基于matlab的数字电子琴的完全指导手册

基于matlab的数字电子琴的完全指导手册

1.概述伴随计算机软硬件技术旳发展, 越来越多现实物品旳功能可以由计算机实现。

信号发生器原本是模拟电子技术发展旳产物, 到后来旳数字信号发生器也是通过硬件实现旳, 本文将给出旳则是通过计算机软件实现旳数字信号发生器。

目前有许多功能强仿真软件(如LabView、EWB)提功了多种模拟信号发生器旳功能, 从而并没有多少人专门去开发数字信号发生器软件, 虽然是特殊功能旳信号发生器也是基于仿真软件完毕旳, 不过数字信号发生器旳软件模块可以用来开发某些别旳软件, 如数字电子琴。

数字电子琴旳编程实现已经有许多人已经做过了(例如基于BASIC旳模拟电子琴[1]), 也出现了诸多功能较强大旳模拟电子琴软件, 如HappyEO、MidiPiano等。

2.软件设计2.1.软件旳功能软件旳功能由数字信号发生器和数字电子琴两部分构成。

(1)数字信号发生器旳功能可以产生正弦波、方波、三角波等常见旳波形旳数字信号, 并且提供了图形界面用于选择波形、频率、幅值与相位。

可以根据顾客指定旳波形和参数产生对应旳数字信号, 然后将数字信号写入声卡旳缓冲区, 最终由声卡播放出对应旳声音。

(2)数字电子琴旳功能数字电子琴旳功能是基于数字信号发生器旳, 通过调用数字信号发生器产生一系列指定旳频率旳声音, 从而到达虚拟旳电子琴旳功能, 界面中包括A.B.…、O 共15个琴键, 鼠标按下时即发声, 松开时发声停止。

2.2.设计原理数字信号发生器旳功能就是将数字信号通过D/A转换变成所需要旳模拟信号。

由于声卡自身具有D/A转换旳功能, 从而可以运用声卡在计算机了模拟信号发生器。

声卡旳D/A转换机理是定期将声卡缓冲区中旳内容转换成模拟信号并输出, 因此软件所做旳即是向声卡缓冲区中写数据。

以正弦信号为例, 其模拟信号计算公式如下为了实现数字信号旳发生, 在程序中先根据式(2)计算出需要寄存到缓冲区旳数据, 以数组旳形式寄存, 然后将数据放入声卡旳缓冲区。

计算机仿真电子琴课程设计

计算机仿真电子琴课程设计

计算机仿真电子琴一、课程设计的目的与要求1、设计目的本课程的课程设计是自动化专业学生学习完《微机原理及应用》课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。

本课程设计的目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法。

2、设计要求从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:1)掌握汇编语言程序设计的基本方法。

2)进一步理解各种接口电路的应用。

例如8255并行接口,8253定时器等。

3)掌握利用PC机扬声器发出不同频率声音的方法。

3、主要技术指标编写程序1)在程序运行时使PC即成为一架可弹奏的电子琴。

当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I这八个音调。

按下回车则退出电子琴状态。

2)在程序运行时使PC自动按要求提示演奏乐曲。

二、课程设计课题的分析图1.扬声器工作原理图示图2.主程序工作流程图图3.乐曲演奏子程序工作流程图 图4.电子琴子程序工作流程图图5.扬声器工作流程图三、课程设计的结果1、实验代码DATA SEGMENTINFO1 DB 0AH, 0DH, 'WELCOME YOU TO COME HERE!$'DB 0AH, 0DH, 'THIS IS A MUSIC PROGRAM!$'DB 0AH, 0DH, 'PLEASE SELECLT!$'INFO2 DB 0AH, 0DH, 'INPUT ERROR!$'INFO3 DB 0AH, 0DH, 'PLEASE INPUT AGAIN!$'MUSLIST DB 0AH, 0DH, '========================='DB 0AH, 0DH, 'Press1 HuanLeSong'DB 0AH, 0DH, 'Press2 SCALE PLAY 'DB 0AH, 0DH, 'Press3 or ctrl+C EXIT'DB 0AH, 0DH, '========================='DB 0AH, 0DH, '$'MUS_FRQ1 DW 330, 330, 350, 393, 393, 350, 330, 294DW 262, 262, 294, 330, 330, 294, 294DW 330, 330, 350, 393, 393, 350, 330, 294DW 262, 262, 294, 330, 294, 262, 262DW 294, 294, 330, 262, 294, 330, 350, 330, 262DW 294, 330, 350, 330, 262, 262, 294, 393DW 330, 330, 350, 393, 393, 350, 330, 294DW 262, 262, 294, 330, 294, 262, 262, -1MUS_TIM1 DW 8 DUP(100)DW 7 DUP(100),200DW 8 DUP(100)DW 7 DUP(100),200DW 5 DUP(100),50,50,2 DUP(100)DW 100,50,50,4 DUP(100),200DW 8 DUP(100)DW 7 DUP(100),200TABLE DW 262, 294, 330, 349, 392, 440, 494, 525 NUMB DB 0AH, 0DH, 'Keyboard number 1~8 keys play notes of the scale' DB 0AH, 0DH, 'Enter to exit'DB 0AH, 0DH, '$'DATA ENDSSTACK SEGMENT PARA STACK 'STACK'STA DB 200 DUP('STACK')STACK ENDSCODE SEGMENTASSUME DS: DATA, SS: STACK, CS: CODE, ES: DATASTART: MOV AX, DATAMOV DS, AXMOV ES, AXMOV AX, STACKMOV SS, AXSHOW MACRO BMOV DX, OFFSET BMOV AH, 09HINT 21HENDMSHOW INFO1LOP: SHOW MUSLISTMOV AH, 01HINT 21HCMP AL, 33HJZ RETUCMP AL, 31HJNZ B0CALL MUSIC1JMP EXIT1B0: CMP AL, 32HJNZ EXITSHOW NUMBCALL MUSIC2EXIT1: SHOW INFO3 JMP LOPEXIT: SHOW INFO2 SHOW INFO3 JMP LOPRETU: MOV AX, 4C00HINT 21HMUSIC1 PROCLEA SI, MUS_FRQ1LEA BP,DS: MUS_TIM1FREQ1: MOV DI, [SI]CMP DI,-1JE END_MUS1MOV BX, DS: [BP]CALL GENSOUNDADD SI,2ADD BP,2JMP FREQ1END_MUS1:RETMUSIC1 ENDPMUSIC2 PROC NEARPUSH AXPUSH BXPUSH CXLOP1: MOV AH, 01HINT 21H CMP AL, 0DH JE EXIT2CMP AL, 31H JB LOP1CMP AL, 38HJA LOP1AND AX, 0FH SHL AX, 1 SUB AX, 2 MOV SI, AXMOV BX, OFFSET TABLEMOV DI, [BX][SI] MOV BX, 100CALL GENSOUNDJMP LOP1EXIT2: POP CXPOP BXPOP AXRETMUSIC2 ENDPGENSOUND PROCPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV AL, 0B6H OUT 43H, ALMOV DX, 12HMOV AX, 533H*896DIV DIOUT 42H, ALMOV AL, AHOUT 42H, ALIN AL, 61HMOV AH, ALOR AL, 3OUT 61H, ALPUSH AXWAIT1: MOV CX, 1200 DELA1: IN AL, 61H AND AL, 10HCMP AL, AHJE DELA1MOV AH,ALLOOP DELA1DEC BXJNZ WAIT1POP AXMOV AL, AHOUT 61H, AL POP DIPOP DXPOP CXPOP BXPOP AXRETGENSOUND ENDPCODE ENDSEND START2、实验现象1. 进入DOS后在DOS界面(图6)进行汇编链接并生成可执行文件.exe2.双击可执行文件KS.exe(这里我把程序取名为KS)进入操作界面如图7所示图7.操作界面初始界面图8.按数字键2后进入电子琴界面图9.按回车后退出电子琴界面3.在进行操作的时候只要在键盘上按1这数字键就可以听取歌曲1,按数字键2时进入电子琴界面,这时候1-8分别表示音乐CDEFGABC这几个音符。

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

8.18.4程序设计与仿真电子琴VHDL程序包含有:顶层程序、音阶发生器程序、数控分频模块程序和自动演奏模块程序。

1.顶层程序与仿真(1)顶层VHDL程序--文件名:top.vhd--功能:顶层文件--最后修改日期:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort ( clk32MHz :in std_logic; --32MHz系统时钟handTOauto : in std_logic; --键盘输入/自动演奏code1 :out std_logic_vector(6 downto 0); --音符显示信号index1 :in std_logic_vector(7 downto 0); --键盘输入信号high1 :out std_logic; --高低音节信号spkout :out std_logic); --音频信号end top;architecture Behavioral of top iscomponent automusicPort ( clk :in std_logic;Auto: in std_logic;index2:in std_logic_vector(7 downto 0);index0 : out std_logic_vector(7 downto 0));end component;component tonePort ( 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 component;component speakerPort ( clk1 : in std_logic;tone1 : in integer range 0 to 2047;spks : out std_logic);end component;signal tone2: integer range 0 to 2047;signal indx:std_logic_vector(7 downto 0);beginu0:automusic port map(clk=>clk32MHZ,index2=>index1,index0=>indx,Auto=>handtoAuto); u1: tone port map(index=>indx,tone0=>tone2,code=>code1,high=>high1);u2: speaker port map(clk1=>clk32MHZ,tone1=>tone2,spks=>spkout);end Behavioral;(2)仿真顶层文件仿真图如图8.18.2所示。

图8.18.2 顶层文件仿真图2. 音阶发生器程序与仿真(1)音阶发生器VHDL程序--文件名:tone.vhd。

--功能:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity tone isPort ( 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 isbeginsearch :process(index) --此进程完成音符到音符的分频系数译码,音符的显示,高低音阶begincase index iswhen "00000001" => tone0<=773;code<="1001111";high<='1';when "00000010"=> tone0<=912;code<="0010010";high<='1';when "00000100" => tone0<=1036;code<="0000110";high<='1';when "00001000" => tone0<=1116;code<="1001100";high<='1';when "00010000" => tone0<=1197;code<="0100100";high<='1';when "00100000" => tone0<=1290;code<="0100000";high<='0';when "01000000" => tone0<=1372;code<="0001111";high<='0';when "10000000" => tone0<=1410;code<="0000000";high<='0';when others => tone0<=2047;code<="0000001";high<='0';end case;end process;end Behavioral;(2)音阶发生器程序仿真音阶发生器程序仿真图如图8.18.3所示。

图8.18.3 音阶发生器仿真图3. 数控分频模块程序与仿真(1)数控分频模块VHDL程序--文件名:speaker.vhd。

--功能:实现数控分频。

--最后修改日期:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity speaker isPort ( clk1 : in std_logic; --系统时钟tone1 : in integer range 0 to 30624; --音符分频系数spks : out std_logic); --驱动扬声器的音频信号end speaker;architecture Behavioral of speaker issignal preclk,fullspks:std_logic;beginpulse1:process(clk1) --此进程对系统时钟进行4分频variable count:integer range 0 to 8;beginif clk1'event and clk1='1' then count:=count+1;if count=2 then preclk<='1';elsif count=4 then preclk<='0';count:=0;end if;end if;end process pulse1;genspks:process(preclk,tone1)--此进程按照tone1输入的分频系数对8MHz的脉冲再次分频,得到所需要的音符频率variable count11:integer range 0 to 30624;beginif preclk'event and preclk='1' thenif count11<tone1 then count11:=count11+1;fullspks<='1';else count11:=0;fullspks<='0';end if;end if;end process;delaysps:process(fullspks) --此进程对fullspks进行2分频variable count2 :std_logic:='0';beginif fullspks'event and fullspks='1' then count2:=not count2;if count2='1' then spks<='1';else spks<='0';end if;end if;end process;end Behavioral;(2)数控分频模块程序仿真数控分频模块程序仿真图如图8.18.4所示。

图8.18.4 数控分频模块仿真图4. 自动演奏模块程序与仿真(1)自动演奏模块VHDL程序--文件名:automusic.vhd--功能:实现自动演奏功能。

--最后修改日期:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity automusic isPort ( clk,Auto : in std_logic; --系统时钟;键盘输入/自动演奏index2 : in std_logic_vector(7 downto 0); --键盘输入信号index0 : out std_logic_vector(7 downto 0)); --音符信号输出end automusic;architecture Behavioral of automusic issignal count0:integer range 0 to 31;--changesignal clk2:std_logic;beginpulse0:process(clk,Auto) --此进程完成对系统时钟8M的分频,得到4Hz的信号clk2 variable count:integer range 0 to 8000000;beginif Auto='1' then count:=0;clk2<='0';elsif clk'event and clk='1' then count:=count+1;if count=4000000(4)then clk2<='1';elsif count=8000000 (8)then clk2<='0';count:=0;end if;end if;end process;music:process(clk2) --此进程完成自动演奏部分曲的地址累加beginif clk2'event and clk2='1' thenif count0=31 then count0<=0;else count0<=count0+1;end if;end if;end process;com1:process(count0,Auto,index2)beginif Auto='0' thencase count0 is --此case语句:存储自动演奏部分的曲when 0 => index0<="00000100"; --3when 1 => index0<="00000100"; --3when 2 => index0<="00000100"; --3when 3 => index0<="00000100"; --3when 4 => index0<="00010000"; --5when 5 => index0<="00010000"; --5when 6 => index0<="00010000"; --5when 7 => index0<="00100000"; --6when 8 => index0<="10000000"; --8when 9 => index0<="10000000"; --8when 10 =>index0<="10000000"; --8when 11=> index0<="00000100"; --3when 12=> index0<="00000010"; --2when 13=> index0<="00000010"; --2when 14=> index0<="00000001"; --1when 15=> index0<="00000001"; --1when 16=> index0<="00010000"; --5when 17=> index0<="00010000"; --5when 18=> index0<="00001000"; --4when 19=> index0<="00001000"; --4when 20=> index0<="00001000"; --4when 21=> index0<="00000100"; --3when 22=> index0<="00000010"; --2when 23=> index0<="00000010"; --2when 24=> index0<="00010000"; --5when 25=> index0<="00010000"; --5when 26=> index0<="00001000"; --4when 27=> index0<="00001000"; --4when 28=> index0<="00000100"; --3when 29=> index0<="00000100"; --3when 30=> index0<="00000010"; --2when 31=> index0<="00000010"; --2when others => null;end case;else index0<=index2; --键盘输入音符信号输出end if;end process;end Behavioral;(2)自动演奏模块程序仿真自动演奏模块仿真图如图8.17.5所示。

相关文档
最新文档