数字信号处理课程设计虚拟电子琴概论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理课程设计
题目:虚拟电子琴设计
、
学院:电气工程
班级:
学号:
指导老师:
教师职称:教授讲师
电气工程学院《课程设计》任务
课程名称:“单片机原理及应用——数字信号处理”课程设计
基层教学单位:电气工程学院指导教师:谢平杜义昊
目录
第1章摘要 (4)
第2章系统总体设计方案 (5)
2.1 参数 (5)
2.2 正弦信号的实现 (6)
2.3 设计过程 (7)
2.4 控制界面设计...........................7.
2.5 matlab编程.........................................................
第3章实际应用 (13)
第7章课设心得及总结 (14)
参考文献 (14)
一.摘要
随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。我们对于电子琴如何实现其功能,如声音强弱控制、节拍器、自动放音功能等等也很好奇。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用MCS51单片机为核心控制元件,利用Matlab设计基于虚拟琴键的信号发生器设计一个电子琴。以单片机作为主控核心,,在主控模块上设有7个按键和扬声器。用matlab设计操作界面,借助串口与单片机模块联系起来,控制单片机蜂鸣器发出七个音,并对音阶各项参数进行分析。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价。特别是新型智能手机就可以运用此款功能。
二.系统总体设计方案
2.1 参数
均值:
对于一个随机变量来说,均值是一个很重要的数值特征。粗略的说,就是来描述一个群体的平均水平。其严格的数学定义非常的简单,就是一个随机变量关于概率测度的积分。这样的积分在测度轮或者实分析里是没有什么直观的解释的。而在概率论里却成为了一个群体的主要指标。在此处,均值表示肌电信号的平均水平。
标准差:
标准差(Standard Deviation),也称均方差(mean square error),是各数据偏离平均数的距离的平均数,它是离均差平方和平均后的方根,用σ表示。标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的,标准差未必相同。其求解公式如下:
最大值:D=max(data);
最小值:E=min(data);
方差:
方差是各个数据与平均数之差的平方的平均数。在概率论和
数理统计中,方差(英文Variance )用来度量随机变量和其数学期望(即均值)之间的偏离程度。在许多实际问题中,研究随机变量和均值之间的偏离程度有着很重要的意义。其求解公式如下:
峰峰值:
在定的时间范围内,正向与负向峰值之差。
2.2、正弦信号的实现
Matlab 程序提供了常用的各种基本信号的生成函数。本设计中主要应用正弦信号,直接调用matlab 提供的函数。
正弦信号的数学表达式如下(2.1)所示
)2sin(ϕπ+=ft A y (2.1)
其中:A 为幅值;f 为频率;ϕ为相位。
在matlab 中,将时间变量离散化并构成一个一维数组,如下式(2.2)所示
0.1:1
:0s
f t = (2.2)
其中:s f 为采样频率。
相应的正弦波信号的数字信号表达式如下(2.3)
)2sin()(ϕπ+∆=∆t fn A t n y
2.3设计过程
第一,设计7种不同频率的信号发生器对应七种不同的音调;
第二,对这七种不同频率的信号进行时域和频域分析,计算一些参数值进行对比;
第三,使用GUI 界面,设计虚拟电子琴界面,其中包括时域和频域图形显示模块,频率,幅值等参数显示模块,虚拟琴键模块等。
2.4控制界面设计
主要分成三部分:第一为波形显示区,显示相应音频信号的时域和频域波形;第二为按键区,用于虚拟琴键实际操作;第三为参数显示区,通过调用matlab 中函数,计算相应的参数值,进行分析和对比。
虚拟琴键的信号发生器设计界面如下
点相应的键,会产生频域时域波形和相应的技术指标
2.5matlab编程
当GUI界面创建完成之后,点击运行即可自动生成包含各个控件回调函数在内的m文件。Matlab对于编辑文本,按钮等空间的相应都是通过自动调用相应的回调函数来实现的。回调函数即在一定的操作下自动执行的指令代码。
1 matlab对串行口编程控制主要分为四个步骤。
1)创建串口设备对象并设置其属性
2)打开串口设备对象
3)读/写串口操作
4)关闭并清除设备对象
function []=dtmf_series(Key)
ss=serial('com1'); %创建串口1设备对象ss
ss.BaudRate=2400;%波特率为2400b/s
ss.DataBits=8;%通讯数据格式为8位数据位
ss.Parity='none';%无奇偶校验位
ss.StopBits=1;%1位停止位
ss.TimeOut=60;%设置一次读或写操作最大完成时间60s
ss.DataTerminalReady='off';%数据终端准备
ss.RequestToSend='off';%请求发送
ss.FlowControl='none';%流量控制