基于MATLAB的数字电子琴设计doc.doc
《基于MATLAB的数字电子琴设计doc.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的数字电子琴设计doc.doc(110页珍藏版)》请在咨信网上搜索。
基于MATLAB的数字电子琴设计【实用文档】doc 文档可直接使用可编辑,欢迎下载 ***************** 实践教学 ******************* 题 目: 基于MATLAB的数字电子琴设计 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 摘要 本次课设的任务是基于MATLAB设计一个数字电子琴,首先实现数字信号发生器的设计。数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。在工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用,可用MATLAB实现。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用.本文首先详细介绍了基于MATLAB的数字发生器的设计过程,实现了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃)信号的具体实现方法。其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴. 关键词:MATLAB;数字信号发生器;简易电子琴 目录 前言1 一、数字信号发生器2 1.1图形用户界面的简介2 1.2设计流程2 1。3波形实现的基本原理4 二、电子琴的实现6 2.1简易数字电子琴的简介6 2.2实现原理6 三、基于MATLAB的仿真及结果分析8 3.1 GUI界面8 3。2编写M文件9 总结19 参考文献20 附录21 致谢34 前言 MATLAB(矩阵实验室)是Matrix Laboratory的缩写,是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算机语言和交互式环境.MATLAB可以进行矩阵运算、绘制函数图像和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域.Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面,可在图形用户界面内根据需要搭建图形,并对控件的回调函数进行编写,完成最完整的GUI界面编辑即可运行。本文主要利用MATLAB的图形用户界面设计数字信号发生器,在数字信号发生的基础上实现简易电子琴的设计。 信号发生器又称信号源或振荡器,是一种能提供各种频率、波形和输出电平电信号的仪器,数字信号发生器只是信号发生器的一种,在生产实践和科技领域中有着广泛的应用.信号发生器按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类。能够产生多种波形,如正弦波、三角波、锯齿波、矩形波(含方波)、阶跃信号、脉冲信号的电路被称为函数信号发生器。本文设计了一种基于MATLAB图形用户界面的可以产生正弦波、方波、三角波、锯齿波、白噪声、脉冲信号、阶跃信号的虚拟数字信号发生器。 一、数字信号发生器 1.1图形用户界面的简介 图形用户界面即Graphical User Interface,简称 GUI,又称图形用户接口。Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面. 用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等.MATLAB的用户,在指令窗中运行demo 打开那图形界面后,只要用鼠标进行选择和点击, 就可产生丰富的内容。对图形用户界面的操作一般有两个部分,首先按照设计的原理、要求,根据需要选择适当的图形对象搭建合理的GUI界面;然后对每个控件的回调函数在M文件内进行编写,使搭建的GUI界面能够运行。 数字信号发生器的设计所使用的工具即GUI界面,用到的图形对象有pushbutton、Aexs、Slider、Static Text、Edit Text。模拟了七种信号:正弦波、方波、三角波、阶跃信号、斜波信号、锯齿波以及白噪声信号。具体的实现原理如下。 1。2设计流程 根据设计的要求分析出数字信号发生器的GUI界面构图,然后在MATLAB的workplace界面中输入guide,打开GUI界面.在GUI界面中搭建好具体的数字信号发生器的界面,并对每个控件的回调函数进行编写、保存M文件。运行,若结果正确,再同一个GUI界面中搭建好电子琴的GUI界面,利用数字信号发生器产生的正弦波,对电子琴每个控件的回调函数进行编写、保存M文件。运行,观察仿真结果.若数字信号发生器的仿真结果不正确,检查控件的回调函数,修改并保存M文件,再次运行观察仿真结果。具体的设计流程图如下: 1.3波形实现的基本原理 1.3.1正弦波的实现 正弦信号的数学表达式如下: (1.1) 其中:为幅值;为频率;为相位。在MATLAB中,由于处理对象均是离散的数字信号,将时间变量离散化并构造成一个一维数组用其中:为采样频率。但的值不能太大,否则波形显示会很慢。相应的正弦波信号的数字信号表达式为 (1。2) 幅值、频率、相位参数可以由用户界面上的滑动条或编辑框输入。在分别得到与的离散值后,用plot作图函数即可获得相应波形显示。 1。3。2方波信号的实现 方波信号的数学表达式为 (1.3) 该式可直接生成一个周期为,峰值为,占空比为的方波信号,的默认值为50%。在MATLAB中可得到幅值、频率、相位可调的方波信号函数 (1.4) 1。3.3三角波信号的实现 在MATLAB中,可以用函数直接生成一个三角波信号,该函数可生成一个周期为,峰值为,最大值出现在位置的三角波。利用该函数,可得到幅值、频率、相位可调的三角波信号函数 (1。5) 1。3.4锯齿波信号的实现 由于锯齿波信号与三角波信号相似,所以将函数中的参数值设为1,可得到锯齿波。该函数得到的幅值、频率、相位可调的锯齿波信号函数 (1。6) 1。3.5脉冲信号的实现 由于脉冲信号与方波信号波形相似,用方波信号函数函数为基础,将其函数值加1,可得到最大值为2,最小值为0的脉冲波形,原函数的参数可用来调节脉冲的宽度。用该函数,得到幅值、频率、相位可调的脉冲信号函数。 (1.7) 1。3。6阶跃信号的实现 由于阶跃信号比较特殊,可用函数直接表示,其函数表达式为 (1.8) 1。3.7白噪声信号的实现 白噪声信号是指功率谱密度在整个频域内均匀分布的噪声。白噪声的实现可借助于MATLAB中的函数,它的功能是产生一个均值为0,标准差为1的随机数列或矩阵函数,可得到一个均值为0,标准差为的维的随机矩阵。 二、电子琴的实现 2。1简易数字电子琴的简介 在设计界面中包含A、B、C、D、E、F、G共7个琴键,由于低音频率区分不是很明显,此次课设选择的是中音频率,其中每个按键对应一个频率的正弦波信号,各按键对应的信号频率分别为392、440、494、523、587、659、698、784Hz。当用鼠标按下相应的键时发声,松开时发声停止,然后将数字信号写入声卡的缓冲区,由声卡播放出相应的声音。当用鼠标按下对应的键时即可发出相应频率的声音。 2.2实现原理 电子琴的实现基于之前设计的数字信号发生器,选择数字发生器产生的正弦波信号作为发声及显示波形,由回调函数和数字信号发生器结合起来,实现对波形的调用。每个键对应一定的频率,在各个键的回调函数中设置好频率及频谱显示,实现每个键有自己特定频率的功能,为了使最终仿真结果更好,选择音阶中音调高的频率作为调试频率。当键按下的时候,首先由相应的键和数字信号关联起来,随后将数字信号写入声卡的缓冲区,由声卡发出相应频率的声音,并显示波形及对应频率的频谱图,当键松开时声音即停止.此次电子琴的设计实现了正弦波显示、频谱显示以及发声的功能,从而实现虚拟电子琴的模仿功能。具体的实现流程图如下: 开始 打开MATLAB 搭建电子琴的GUI界面 执行并观察仿真结果 结束 图2.1 电子琴的实现流程图 三、基于MATLAB的仿真及结果分析 3.1 GUI界面 3.1.1搭建数字信号发生器的GUI界面 搭建的GUI界面如下图3。1: 图3.1 数字信号发生器的GUI界面 3。1.2电子琴的GUI界面 .搭建的数字电子琴GUI界面如图3。2所示: 图3。2数字电子琴的GUI界面 G该界面主要由琴键组成,每个按键对应一定的频率,模拟电子琴的发声功能,它的波形显示及频谱图在数字信号发生器中。 3.2编写M文件 3。2。1数字信号发生器的M文件 (1)正弦信号的实现 由正弦信号的数学表达式可知在程序中用到的具体表达式为 (3。1) 将时间变量离散化并构造成一个一维数组,要求采样频率不能太大,否则波形显示会很慢 (2)方波信号的实现 用函数直接生成一个方波信号,程序中使用的具体函数为 (3。2) (3)三角波的实现 函数直接生成一个三角波信号,程序中用到的具体实现函数为 (3.3) (4)锯齿波信号的实现 具体的函数实现形式为 (3.4) (5)脉冲信号的实现 抽样频率为8000,时间范围为[0,1],坐标抽为[0,a+1]。得到的幅值、频率、相位可调的脉冲信号函数。具体的函数 (3.5) (6)阶跃信号的实现 取1,A取1,t取[0,2],时间间隔为/100。阶跃信号的函数表达式为 (3.6) (7)白噪声信号的实现 白噪声是指功率谱密度在整个频域内均匀分布的噪声。白噪声的实现可借于MATLAB中的函数,产生一个均值为0,标准差为1的随机数列或矩阵 该函数可得到一个均值为0,标准差为的维的随机矩阵. (3。7) 3。3仿真结果 数字信号发生器的仿真结果如下: (1) 正弦波的仿真结果 图3.3 数字信号发生器的正弦波波形 (2) 方波信号的仿真结果 图3.4方波信号的波形 (3) 三角波信号仿真结果 图3.5 三角波信号的波形 (4) 阶跃信号仿真结果 图3。6 阶跃信号的仿真结果 (5)斜波信号 图3.7 斜波信号的仿真结果 (6)锯齿波信号的仿真结果 图3。8 阶跃信号的仿真结果 (7)白噪声仿真结果 (1)按键A的仿真结果 图3。10 按下A键,电子琴演奏时的效果 (2)按键B的仿真结果 图3.11 按下B键,电子琴演奏时的效果 (3)按键C的仿真结果 图3.12 按下C键,电子琴演奏时的效果 总结 本次的课程设计的任务是基于MATLAB设计一个数字电子琴,首先设计一个数字信号发生器。数字信号发生器和电子琴的搭建都是在GUI界面中进行搭建的,在GUI界面中搭建好具体的数字信号发生器的界面,并对每个控件的回调函数进行编写、保存M文件。运行,若结果正确,再同一个GUI界面中搭建好电子琴的GUI界面,利用数字信号发生器产生的正弦波,对电子琴每个控件的回调函数进行编写、保存M文件搭建完成之后对各个控件进行回调函数的编写.如果数字信号发生器的运行结果正确,则继续搭建电子琴否则修改直到正确为止。 在本次的课程设计中,确实遇到了很多问题,但通过大家的帮助和自己的努力,最终实现所有的设计要求。本次课程设计也许还存在着一些不足,在以后学习生活中会更加努力,争取做得更好. 参考文献 [1] 丁玉美. 数字信号处理[M]。 西安电子科技大学出版社,2003,3。 [2] 朱冰莲。 数字信号处理[M]。 电子工业出版社,2003,7。 [3] 程佩青。数字信号处理教程(第二版)[M]。北京:清华大学出版社,2001. [4] 韩纪庆,张磊,郑铁然。语音信号处理[M]。北京:清华大学出版社,2004. [5] 王济, 胡晓. MATLAB 在振动信号处理中的应用[M ]. 北京: 中国水利水电出版社: 知识产权出版社, 2006. [6] 周祥才, 杨铮. 基于MATLAB的信号采样与重构的实现[ J] .实验技术与管理, 2007, 24 [7] 张志涌等.精通MATLAB [M].北京:北京航空航天大学出版社,2003. [8] 车子萍。 基于Matlab的虚拟信号发生器设计[J]。 电脑学习, 2010。1. [9] 李益华。 MATLAB辅助现代工程数字信号处理(第2版)。 西安:西安电子科技大学出版社,2010 [10] 杨洁芳. 基于MATLAB与声卡的低频信号发生器的设计与实现。 电脑学习,2006 附录: function pushbutton16_Callback(hObject, eventdata, handles) Fs=8000; t=(0:2000)/Fs; pit=2*pi*t; a1=523; y=sin(a1*pit); axes (handles。axes1); plot(t,y); title(’时域波形') xlabel(’t’) ylabel(’y’) axis([0,。01,—2,2]) axes (handles。axes2); f=fft(y,1024); f1=fftshift(f); w1=513:1024;w=4000*(w1-512)/512; F=abs(f1(513:1024)); plot(w,F); title(’频谱图’) xlabel('w’) ylabel(’F(w)') sound(y); function pushbutton24_Callback(hObject, eventdata, handles) Fs=8000; t=(0:2000)/Fs; pit=2*pi*t; a2=587; y=sin(a2*pit); axes (handles.axes1); plot(t,y); title('时域波形') xlabel('t') ylabel('y’) axis([0,.01,—2,2]) axes (handles.axes2); f=fft(y,1024); f1=fftshift(f); w1=513:1024;w=4000*(w1-512)/512; F=abs(f1(513:1024)); plot(w,F); title('频谱图') xlabel(’w’) ylabel(’F(w)') sound(y); function pushbutton25_Callback(hObject, eventdata, handles) Fs=8000; t=(0:2000)/Fs; pit=2*pi*t; a3=659; y=sin(a3*pit); axes (handles。axes1); plot(t,y); title('时域波形’) xlabel('t') ylabel(’y') axis([0,。01,—2,2]) axes (handles.axes2); f=fft(y,1024); f1=fftshift(f); w1=513:1024;w=4000*(w1—512)/512; F=abs(f1(513:1024)); plot(w,F); title(’频谱图') xlabel(’w’) ylabel(’F(w)’) sound(y); function pushbutton26_Callback(hObject, eventdata, handles) Fs=8000; t=(0:2000)/Fs; pit=2*pi*t; a4=698; y=sin(a4*pit); axes (handles.axes1); plot(t,y); title(’时域波形') xlabel('t’) ylabel('y’) axis([0,。01,—2,2]) axes (handles。axes2); f axes (handles。axes1); plot(t,y); title('时域波形') xlabel(’t') ylabel(’y’) axis([0,。01,—2,2]) axes (handles。axes2); f=ff t=0:1/fs:1。0; y=a*sin(2*pi*(f*t+q/360)); axes (handles.axes1); plot(t,y); title('时域波形'); xlabel(’t’); ylabel('y'); grid on; axis([0,。01,-2,2]); allback(hObject, eventdata, handles) t=(0:pi/100:2*pi); t0=1; A=1; y=0*(t〈t0)+A*(t〉t0); end t=0:1/fs:1.0; y=randn(size(t)); title(’时域波形’); plot(t,y); title(’时域波形'); xlabel(’t'); ylabel(’y’); grid on; axis([0,Ts,—(a+1),(a+1)]); function slider1_Callback(hObject, eventdata, handles) w=get(hObject,'value'); set(handles。edit1,’string’,num2str(w)); function slider1_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor')) function slider2_Callback(hObject, eventdata, handles) w=get(hObject,’value'); set(handles.edit2,’string',num2str(w)); function slider2_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,’BackgroundColor'), get(0,'defaultUicontrolBackgroundColor’)) set(hObject,’BackgroundColor',[.9 。9 。9]); end function edit1_Callback(hObject, eventdata, handles) v=get(hObject,’string'); set(handles。slider1,’value',str2double(v)); function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,’BackgroundColor’), get(0,'defaultUicontrolBackgroundColor')) end function edit3_Callback(hObject, eventdata, handles) v=get(hObject,'string’); set(handles。slider3,'value’,str2double(v)); function edit3_CreateFcn(hObject, eventdata, handles) get(0,'defaultUicontrolBackgroundColor')) set(hObject,’BackgroundColor','white'); end 致谢 本次课设,我遇到了很多问题,首先感谢我的课程设计指导教师老师在这段时间一直给我的支持与鼓励。认真负责的监督我们课程设计的进度,耐心的指 导我们使我们能够按时的完成任务。 同时还要感谢在设计过程中同学们尤其是同组成员给给了我很大的帮助,对我课设过程中不明白的问题给予了即使的、耐心的帮助,让我对此次课设涉及的知识有了更加深刻的把握。他们提出了许多宝贵的建议使我们的设计能得到更好的完善,也加快设计的进程.还有感谢学校为我们提供的良好实验环境以及充足的实验设备,为我们的设计和调试提供了很大的方便.在这段时间学到了很多,虽然由于自身的不足没 有能够为系统提出更好的解决方案.但这对我来说绝对是一个非常宝贵的历练.从中我切身体会到了理论和现实的差距, 只有真正动手去做才能发现问题. 同时,小组成员相互商讨解决方案,发现设计中的不足之处,使错误得到了即使改正,在此衷心地感谢老师以及这几周的殷切指导以及同学们提出诸多宝贵意见真诚地道一声,谢谢! 单片机课程设计报告书 小组成员:吕梦莎 吴玉凤 学 号:11213072 11213078 班 级:自动化1106 指导教师:于振宇 基于AT89C51的屏幕声光式可录音电子琴 北京交通大学 电子信息工程学院 吕梦莎 吴玉凤 摘要:本文的主要内容是用AT89S51单片机为核心控制元件,通过脉冲触发产生出电子音调,与按键、扬声器、LCD显示屏等模块组成控制模块,设计一个电子琴。该系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用与参考价值。 关键词:AT89C51、脉冲触发、屏幕声光式、录音、播放、演奏、电子琴。 第一章 引言 1.1设计背景 单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。 本文对利用单片机设计简易电子琴进行了分析,分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。本系统是简易电子琴的设计,按下四角自锁开关会使LCD显示屏显示当前音符名称、播放的歌曲名称或播放的录音名称,同时扬声器播放对应的音符,LED闪烁相应的节奏。通过设计本系统可熟悉掌握单片机的基本功能。 1。2 设计任务 1、设计以单片机为核心的简易电子琴系统,可随意弹奏想要表达的音乐; 2、针对要求控制的对象完成程序的编制; 3、硬件软件联调,完成题目所要求的功能; 1.3设计思路 1、发声部分设计思路 音乐是由不同频率的声音组成的。利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波。 利用延时程序控制“高”“低"电平的持续时间,就能改变输出频率,从而改变音调.于是产生do,re,mi,fa,so,la,xi七个音符的变换。 2、显示部分设计思路 考虑到信息的多媒体传播已经成为信息化时代的主流,我们给电子琴设计了LCD显示器和节拍指示LED灯,带来视听双重冲击。 LCD具有功耗低,显示质量高,数字式接口更加稳定可靠的优点.演示过程中可显示欢迎语,当前功能,按下的音符名称,当前播放的歌曲名称等。 第二章 方案论证 采用AT89C51单片机作为主控芯片,设置独立按键、扬声器、LCD显示屏等外围器件,另外还用到一些简单器件如NPN型三极管及电阻等。利用按键实现音符和音调的输入;LCD显示屏进行被操作的按键显示;用PNP型三极管2N2907实现低音频功率放大;最后用扬声器发音。 主控芯片采用AT89C51单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。避免了由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素.同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于娱乐方面,因此在设计上尽量使其安全以及简单易操作。具有经济可行性、技术可行性、实物应用性。 第三章 硬件系统设计 3.1 时钟电路 MCS-51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端输出端。本图采用内部时钟电路,如图3-1所示,通常在引脚XTALl和XTAL2上跨接石英晶体X1和两个补偿电容C1、C2构成自激振荡器.可以根据情况选择212MHz频率之间的石英晶体,补偿电容通常选择30pF左右的瓷片电容。 图3-1 时钟电路 3。2 复位电路 单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。本实验采用上电自动复位方式,其结构图如图3—2所示。上电复位要求接通电源后,自动实现复位操作。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。对于MCS—51单片机,只要在RST复位端接一个电容至VCC和一个电阻至VSS即可.在加电瞬间,RST端出现一定时间的高电平,只要高电平保持时间足够长,就可以使MCS—51复位。 图3—2 复位电路 3。3 原理框图 本系统有主控芯片AT89C52、扬声器、显示模块、按键模块和晶振复位电路组成。 图3-3原理框图 3。4 显示部分设计 为了让电子琴能够显示出音调,我们另外附加了一个LCD1602提供屏幕式音调显示,LCD1602属于字符型液晶,可以显示字母和数字等字符。LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 图3-4 显示电路 3。5按键部分设计 3.5.1键盘设计 键盘可以分为2类:独立连接式键盘和矩阵式键盘.本设计采用独立式键盘。 独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键电路配置灵活,软件结构简单。 独立式按键软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序.由于本程序较为简单,为了使用方便及节省资源,选择独立式键盘。下图为独立式键盘电路图: 图3-5 独立式键盘电路图 3。5.2 去抖动 键盘编程中主要考虑去抖动的问题。当测试表明有键被按下之后,紧接着就进行去抖动处理.因为按键是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。为保证键识别的准确,在电压信号抖动的情况下不能进行行状态输入。为此需进行去抖动处理。去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上避免抖动的产生。软件消抖,在第一次检测到有键按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,CPU便确认此按键己按下,消除了抖动。本实验采用软件消抖法,在按键按下后,执行一段延时程序。 3.6 发音部分设计 如下图所示,发音电路是由扬声器、三极管、变位器构成.由三极管来驱动扬声器发音的,同时加上变位器实现电阻的可调来增强驱动电流,提高驱动能力,从而调节扬声器的音效。 图3-6 扬声器电路图 第四章 软件系统设计 4。1 系统分析 4。1.1系统软件的组成 (1)键盘扫描程序:检测是否有按键按下,有按键按下则记录按下键的键值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测。 (2)功能转移程序:对检测到的按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有三种,即音色调节功能、自动播放乐曲和录音的功能. (3)琴键处理程序:根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音。 (4)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放的歌曲或录音歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有按键按下。 (5)录音程序:检测到按键按下的是录音功能键后执行该程序,跳转到键盘扫描程序,检测是否有键按下,有按键按下则记录按下键值,根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音并跳转到功能转移程序。 4.1.2 系统总体功能流程图 开始 初始化T0 键盘扫描 程序 演奏功能键按下 自动播放键按下 录音功能键按下 N N Y YY 记录音符 播放内部存储的音乐 查表得到按键音符频率 查表得到按键音符频率 播放音符 播放音符 4。2 参数计算 4.2.1发音原理 若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1。0引脚上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶. 音调的确定 音调是唱曲时乐音的发音,一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西"的读音。 例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式是:N=fi÷2÷fr,式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率.其计数初值T的求法如下:T=65536-N=65536-fi÷2÷fr 例如:设K=65536,fi=1MHz,求中音DO(261Hz)。T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。 由音符的频率值可以计算得出各个音调的计数值,如表4-1所示: (﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。) 表4—1 音调频率与计数初值对照 音符 频率(Hz) 计数值(T值) 音符 频率(Hz) 计数值(T值) 低1DO 262 63628 #4FA# 740 64860 #1DO# 277 63737 中5SO 784 64898 低2RE 294 63835 #5SO# 831 94934 #2RE# 311 63928 中6LA 880 64968 低3MI 330 64021 #6LA# 932 64994 低4FA 349 64103 中7SI 968 65030 #4FA# 370 64185 低1DO 1046 65058 低SO 392 64260 #1DO# 1109 65085 #5SO# 415 64331 高2RE 1175 65110 低6LA 440 64400 #2RE# 1245 65134 #6LA# 466 64463 高3MI 1318 65157 低7SI 494 64524 高4FA 1397 65178 中1DO 523 64580 #4FA# 1490 65198 #1DO# 554 64633 高5SO 1568 65217 中2RE 587 64633 #5SO# 1661 65235 #2RE# 622 64884 高6LA 1760 65252 中3MI 659 64732 #6LA# 1865 65268 中4FA 698 64820 高7SI 1967 65283 采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据. 4.2.3 节拍的确定 若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0。5s,则1/4 拍为0。125s,只要设定延迟时间就可以求得节拍的时间,假设1拍为4DELAY,则1/4应为1DELAY,以此类推,得到如表4-2所示的节拍与延迟时间对照表。休止符表示暂停发音。 表4—2 1/4和1/8节拍的时间设定 曲调值 DELAY 曲调值 DELAY 调4/4 125毫秒 调4/4 62毫秒 调3/4 187毫秒 调3/4 94毫秒 调2/4 250毫秒 调2/4 125毫秒 4.3程序设计 4.3.1播放子程序(包括自动播放存储音乐和按键发音) 本设计共两种播放模式,包括自动播放存储音乐和按键发音。上电后,首先开中断并设定定时器0为工作方式1,当自动播放键按下时,进入中断,根据乐谱在定义的音频数组中查找相应音律,然后给定时器赋初值,即开始播放音乐。当DO、RE、MI、FA、SO、LA、SI七种音符键按下时,根据音符值在定义的音频数组中查找相应音律,然后给定时器赋初值,即按键发音.- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实用文档 基于 MATLAB 数字 电子琴 设计 实用 文档 doc
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文