收藏 分销(赏)

基于MATLAB的数字电子琴设计doc.doc

上传人:二*** 文档编号:4515533 上传时间:2024-09-26 格式:DOC 页数:110 大小:10MB
下载 相关 举报
基于MATLAB的数字电子琴设计doc.doc_第1页
第1页 / 共110页
亲,该文档总共110页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、基于MATLAB的数字电子琴设计【实用文档】doc文档可直接使用可编辑,欢迎下载*实践教学* 题 目: 基于MATLAB的数字电子琴设计 专业班级: 姓 名:学 号:指导教师:成 绩:摘要本次课设的任务是基于MATLAB设计一个数字电子琴,首先实现数字信号发生器的设计。数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。在工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用,可用MATLAB实现。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理

2、方面方便实用.本文首先详细介绍了基于MATLAB的数字发生器的设计过程,实现了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃)信号的具体实现方法。其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴.关键词:MATLAB;数字信号发生器;简易电子琴目录前言1一、数字信号发生器21.1图形用户界面的简介21.2设计流程21。3波形实现的基本原理4二、电子琴的实现62.1简易数字电子琴的简介62.2实现原理6三、基于MATLAB的仿真及结果分析83.1 GUI界面83。2编写M文件9总结19参考文献20附录21致谢34前言MATLAB(矩阵实验室)是Matrix Lab

3、oratory的缩写,是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算机语言和交互式环境.MATLAB可以进行矩阵运算、绘制函数图像和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域.Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面,可在图形用户界面内根据需要搭建图形,并对控件的回调函数进行编写,完成最完整的GUI界面编辑即可运行。本文主要利用MATLAB的图形用户界面设计数字信号发生器,在数字信号发生的基础上实现简易电子琴的设计

4、。信号发生器又称信号源或振荡器,是一种能提供各种频率、波形和输出电平电信号的仪器,数字信号发生器只是信号发生器的一种,在生产实践和科技领域中有着广泛的应用.信号发生器按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类。能够产生多种波形,如正弦波、三角波、锯齿波、矩形波(含方波)、阶跃信号、脉冲信号的电路被称为函数信号发生器。本文设计了一种基于MATLAB图形用户界面的可以产生正弦波、方波、三角波、锯齿波、白噪声、脉冲信号、阶跃信号的虚拟数字信号发生器。一、数字信号发生器1.1图形用户界面的简介图形用户界面即Graphical User Interface,简称 GUI

5、,又称图形用户接口。Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面.用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等.MATLAB的用户,在指令窗中运行demo 打开那图形界面后,只要用鼠标进行选择和点击, 就可产生丰富的内容。对图形用户界面的操作一般有两个部分,首先按照设计的原理、要求,根据需要选择适当的图形对象搭建合理的GUI界面;然后对每个控件的回调函数在M文件内进行编写,使搭建的GUI界面能够运行。数字信号发生器的设计所使用的工具即GUI界面,用到的图形对象有pushbut

6、ton、Aexs、Slider、Static Text、Edit Text。模拟了七种信号:正弦波、方波、三角波、阶跃信号、斜波信号、锯齿波以及白噪声信号。具体的实现原理如下。1。2设计流程根据设计的要求分析出数字信号发生器的GUI界面构图,然后在MATLAB的workplace界面中输入guide,打开GUI界面.在GUI界面中搭建好具体的数字信号发生器的界面,并对每个控件的回调函数进行编写、保存M文件。运行,若结果正确,再同一个GUI界面中搭建好电子琴的GUI界面,利用数字信号发生器产生的正弦波,对电子琴每个控件的回调函数进行编写、保存M文件。运行,观察仿真结果.若数字信号发生器的仿真结果

7、不正确,检查控件的回调函数,修改并保存M文件,再次运行观察仿真结果。具体的设计流程图如下:1.3波形实现的基本原理1.3.1正弦波的实现正弦信号的数学表达式如下: (1.1)其中:为幅值;为频率;为相位。在MATLAB中,由于处理对象均是离散的数字信号,将时间变量离散化并构造成一个一维数组用其中:为采样频率。但的值不能太大,否则波形显示会很慢。相应的正弦波信号的数字信号表达式为 (1。2)幅值、频率、相位参数可以由用户界面上的滑动条或编辑框输入。在分别得到与的离散值后,用plot作图函数即可获得相应波形显示。1。3。2方波信号的实现方波信号的数学表达式为 (1.3)该式可直接生成一个周期为,峰

8、值为,占空比为的方波信号,的默认值为50。在MATLAB中可得到幅值、频率、相位可调的方波信号函数 (1.4)1。3.3三角波信号的实现在MATLAB中,可以用函数直接生成一个三角波信号,该函数可生成一个周期为,峰值为,最大值出现在位置的三角波。利用该函数,可得到幅值、频率、相位可调的三角波信号函数 (1。5)1。3.4锯齿波信号的实现由于锯齿波信号与三角波信号相似,所以将函数中的参数值设为1,可得到锯齿波。该函数得到的幅值、频率、相位可调的锯齿波信号函数 (1。6)1。3.5脉冲信号的实现由于脉冲信号与方波信号波形相似,用方波信号函数函数为基础,将其函数值加1,可得到最大值为2,最小值为0的

9、脉冲波形,原函数的参数可用来调节脉冲的宽度。用该函数,得到幅值、频率、相位可调的脉冲信号函数。 (1.7)1。3。6阶跃信号的实现由于阶跃信号比较特殊,可用函数直接表示,其函数表达式为 (1.8)1。3.7白噪声信号的实现白噪声信号是指功率谱密度在整个频域内均匀分布的噪声。白噪声的实现可借助于MATLAB中的函数,它的功能是产生一个均值为0,标准差为1的随机数列或矩阵函数,可得到一个均值为0,标准差为的维的随机矩阵。二、电子琴的实现2。1简易数字电子琴的简介在设计界面中包含A、B、C、D、E、F、G共7个琴键,由于低音频率区分不是很明显,此次课设选择的是中音频率,其中每个按键对应一个频率的正弦

10、波信号,各按键对应的信号频率分别为392、440、494、523、587、659、698、784Hz。当用鼠标按下相应的键时发声,松开时发声停止,然后将数字信号写入声卡的缓冲区,由声卡播放出相应的声音。当用鼠标按下对应的键时即可发出相应频率的声音。2.2实现原理电子琴的实现基于之前设计的数字信号发生器,选择数字发生器产生的正弦波信号作为发声及显示波形,由回调函数和数字信号发生器结合起来,实现对波形的调用。每个键对应一定的频率,在各个键的回调函数中设置好频率及频谱显示,实现每个键有自己特定频率的功能,为了使最终仿真结果更好,选择音阶中音调高的频率作为调试频率。当键按下的时候,首先由相应的键和数字

11、信号关联起来,随后将数字信号写入声卡的缓冲区,由声卡发出相应频率的声音,并显示波形及对应频率的频谱图,当键松开时声音即停止.此次电子琴的设计实现了正弦波显示、频谱显示以及发声的功能,从而实现虚拟电子琴的模仿功能。具体的实现流程图如下:开始打开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该界面主

12、要由琴键组成,每个按键对应一定的频率,模拟电子琴的发声功能,它的波形显示及频谱图在数字信号发生器中。3.2编写M文件3。2。1数字信号发生器的M文件(1)正弦信号的实现由正弦信号的数学表达式可知在程序中用到的具体表达式为 (3。1)将时间变量离散化并构造成一个一维数组,要求采样频率不能太大,否则波形显示会很慢(2)方波信号的实现用函数直接生成一个方波信号,程序中使用的具体函数为 (3。2)(3)三角波的实现 函数直接生成一个三角波信号,程序中用到的具体实现函数为 (3.3)(4)锯齿波信号的实现具体的函数实现形式为(3.4)(5)脉冲信号的实现抽样频率为8000,时间范围为0,1,坐标抽为0,

13、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)

14、阶跃信号仿真结果图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文件。运行,若结果正

15、确,再同一个GUI界面中搭建好电子琴的GUI界面,利用数字信号发生器产生的正弦波,对电子琴每个控件的回调函数进行编写、保存M文件搭建完成之后对各个控件进行回调函数的编写.如果数字信号发生器的运行结果正确,则继续搭建电子琴否则修改直到正确为止。在本次的课程设计中,确实遇到了很多问题,但通过大家的帮助和自己的努力,最终实现所有的设计要求。本次课程设计也许还存在着一些不足,在以后学习生活中会更加努力,争取做得更好.参考文献1 丁玉美. 数字信号处理M。 西安电子科技大学出版社,2003,3。2 朱冰莲。 数字信号处理M。 电子工业出版社,2003,7。3 程佩青。数字信号处理教程(第二版)M。北京:

16、清华大学出版社,2001.4 韩纪庆,张磊,郑铁然。语音信号处理M。北京:清华大学出版社,2004.5 王济, 胡晓. MATLAB 在振动信号处理中的应用M . 北京: 中国水利水电出版社: 知识产权出版社, 2006.6 周祥才, 杨铮. 基于MATLAB的信号采样与重构的实现 J .实验技术与管理, 2007, 247 张志涌等精通MATLAB M北京:北京航空航天大学出版社,20038 车子萍。 基于Matlab的虚拟信号发生器设计J。 电脑学习, 2010。1.9 李益华。 MATLAB辅助现代工程数字信号处理(第2版)。 西安:西安电子科技大学出版社,201010 杨洁芳. 基于M

17、ATLAB与声卡的低频信号发生器的设计与实现。 电脑学习,2006附录:function pushbutton16_Callback(hObject, eventdata, handles)Fs=8000; t=(0:2000)/Fs;pit=2pit;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)

18、/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*pit;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=f

19、ftshift(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=2pit;a3=659;y=sin(a3pit);axes (handles。axes1);plot(t,y);title(时域波形)xlabel(t)ylabel(y)axis(0,。01,2,2)ax

20、es (handles.axes2);f=fft(y,1024);f1=fftshift(f);w1=513:1024;w=4000*(w1512)/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(时

21、域波形)xlabel(t)ylabel(y)axis(0,。01,2,2)axes (handles。axes2);faxes (handles。axes1);plot(t,y);title(时域波形)xlabel(t)ylabel(y)axis(0,。01,2,2)axes (handles。axes2);f=fft=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(hOb

22、ject, eventdata, handles)t=(0:pi/100:2pi);t0=1;A=1;y=0*(tt0)+A*(tt0);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(

23、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, hand

24、les)if isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor)) set(hObject,BackgroundColor,.9 。9 。9);endfunction edit1_Callback(hObject, eventdata, handles)v=get(hObject,string); set(handles。slider1,value,str2double(v);function edit1_CreateFcn(hObject, eventdata, handles)if isp

25、c & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor)) endfunction 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(hOb

26、ject,BackgroundColor,white);end致谢本次课设,我遇到了很多问题,首先感谢我的课程设计指导教师老师在这段时间一直给我的支持与鼓励。认真负责的监督我们课程设计的进度,耐心的指 导我们使我们能够按时的完成任务。 同时还要感谢在设计过程中同学们尤其是同组成员给给了我很大的帮助,对我课设过程中不明白的问题给予了即使的、耐心的帮助,让我对此次课设涉及的知识有了更加深刻的把握。他们提出了许多宝贵的建议使我们的设计能得到更好的完善,也加快设计的进程.还有感谢学校为我们提供的良好实验环境以及充足的实验设备,为我们的设计和调试提供了很大的方便.在这段时间学到了很多,虽然由于自身的不足

27、没 有能够为系统提出更好的解决方案.但这对我来说绝对是一个非常宝贵的历练.从中我切身体会到了理论和现实的差距, 只有真正动手去做才能发现问题. 同时,小组成员相互商讨解决方案,发现设计中的不足之处,使错误得到了即使改正,在此衷心地感谢老师以及这几周的殷切指导以及同学们提出诸多宝贵意见真诚地道一声,谢谢!单片机课程设计报告书小组成员:吕梦莎 吴玉凤学 号:11213072 1121078班 级:自动化106指导教师:于振宇基于AT89C51的屏幕声光式可录音电子琴北京交通大学电子信息工程学院 吕梦莎 吴玉凤摘要:本文的主要内容是用T89S1单片机为核心控制元件,通过脉冲触发产生出电子音调,与按键

28、、扬声器、LD显示屏等模块组成控制模块,设计一个电子琴。该系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用与参考价值。关键词:T89C51、脉冲触发、屏幕声光式、录音、播放、演奏、电子琴。第一章 引言1设计背景单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的

29、控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文对利用单片机设计简易电子琴进行了分析,分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。本系统是简易电子琴的设计,按下四角自锁开关会使D显示屏显示当前音符名称、播放的歌曲名称或播放的录音名称,同时扬声器播放对应的音符,L闪烁相应的节奏。通过设计本系统可熟悉掌握单片机的基本功能。1。2设计任务1、设计以单片机为核心的简易电子琴系统,可随意弹奏想要表达的音乐;2、针对要求控制的对象完成程序的编制;、硬件软件联调,完成题目所要求的功能;13设计思路、发声部分设计思路音乐是由不同频率的声音组成的。利用程

30、序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波。 利用延时程序控制“高”“低电平的持续时间,就能改变输出频率,从而改变音调.于是产生do,re,mi,fa,o,a,x七个音符的变换。2、显示部分设计思路考虑到信息的多媒体传播已经成为信息化时代的主流,我们给电子琴设计了LC显示器和节拍指示LE灯,带来视听双重冲击。 CD具有功耗低,显示质量高,数字式接口更加稳定可靠的优点.演示过程中可显示欢迎语,当前功能,按下的音符名称,当前播放的歌曲名称等。第二章 方案论证采用AT95单片机作为主控芯片,设置独立按键、扬声器、CD显示屏等外围器件,另外还用到一些简单器件如NP

31、N型三极管及电阻等。利用按键实现音符和音调的输入;LCD显示屏进行被操作的按键显示;用PN型三极管2N2907实现低音频功率放大;最后用扬声器发音。主控芯片采用AT85单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。避免了由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素.同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于娱乐方面,因此在设计上尽量使其安全以及简单易操作。具有经济可行性、技术可行性、实物应用性。第三章 硬件系统设计1 时钟电路MCS-1内部有一个用于构成振荡器的高增益反

32、相放大器,引脚XA1和XTAL分别是此放大器的输入端输出端。本图采用内部时钟电路,如图3-1所示,通常在引脚XTAL和TAL2上跨接石英晶体X和两个补偿电容C1、C2构成自激振荡器.可以根据情况选择212z频率之间的石英晶体,补偿电容通常选择30pF左右的瓷片电容。图-1时钟电路。2复位电路单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。本实验采用上电自动复位方式,其结构图如图32所示。上电复位要求接通电源后,自动实现复位操作。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。对于MCS51单片机,只要在RST复位端接一个电容至VCC和一个

33、电阻至VS即可.在加电瞬间,RST端出现一定时间的高电平,只要高电平保持时间足够长,就可以使S51复位。图3 复位电路3。3 原理框图本系统有主控芯片AT82、扬声器、显示模块、按键模块和晶振复位电路组成。图3-3原理框图3。显示部分设计为了让电子琴能够显示出音调,我们另外附加了一个LCD162提供屏幕式音调显示,LC1602属于字符型液晶,可以显示字母和数字等字符。LCD160是指显示的内容为16X2,即可以显示两行,每行1个字符液晶模块(显示字符和数字)。 图3 显示电路3。5按键部分设计3.51键盘设计键盘可以分为2类:独立连接式键盘和矩阵式键盘.本设计采用独立式键盘。独立式按键是直接用

34、I/口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它O口线的状态。独立式按键电路配置灵活,软件结构简单。独立式按键软件常采用查询式结构。先逐位查询每根IO口线的输入状态,如某一根I/O口线输入为低电平,则可确认该/O口线所对应的按键已按下,然后,再转向该键的功能处理程序.由于本程序较为简单,为了使用方便及节省资源,选择独立式键盘。下图为独立式键盘电路图:图3-5 独立式键盘电路图3。.去抖动键盘编程中主要考虑去抖动的问题。当测试表明有键被按下之后,紧接着就进行去抖动处理.因为按键是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间

35、会出现电压抖动。为保证键识别的准确,在电压信号抖动的情况下不能进行行状态输入。为此需进行去抖动处理。去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上避免抖动的产生。软件消抖,在第一次检测到有键按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,PU便确认此按键己按下,消除了抖动。本实验采用软件消抖法,在按键按下后,执行一段延时程序。3.6 发音部分设计如下图所示,发音电路是由扬声器、三极管、变位器构成.由三极管来驱动扬声器发音的,同时加上变位器实现电阻的可调来增强驱动电流,提高驱动能力,从而调节扬声器的音效。图- 扬声器电路图第四章 软件系统设计4。1系统

36、分析4。.1系统软件的组成()键盘扫描程序:检测是否有按键按下,有按键按下则记录按下键的键值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测。(2)功能转移程序:对检测到的按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有三种,即音色调节功能、自动播放乐曲和录音的功能.()琴键处理程序:根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音。(4)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放的歌曲或录音歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有按键按下。

37、(5)录音程序:检测到按键按下的是录音功能键后执行该程序,跳转到键盘扫描程序,检测是否有键按下,有按键按下则记录按下键值,根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音并跳转到功能转移程序。42系统总体功能流程图开始初始化T0键盘扫描程序演奏功能键按下自动播放键按下录音功能键按下 N NY YY记录音符播放内部存储的音乐查表得到按键音符频率查表得到按键音符频率播放音符播放音符。参数计算4.2.1发音原理若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P.0反相,然后重复计时再反相。就可在P

38、1。引脚上得到此频率的脉冲。利用A9C51的内部定时器使其工作计数器模式(MOE1)下,改变计数值TH0及T0以产生不同频率的方法产生不同音阶. 音调的确定音调是唱曲时乐音的发音,一般依次唱成O、RE、MI、FA、SO、LA、SI,即唱成简谱的、2、3、6、7,相当于汉字“多来米发梭拉西的读音。例如,频率为52Hz,其周期T=5=1912,因此只要令计数器计时5s956,每计数956次时将I/O反相,就可得到中音O(523Hz)。计数脉冲值与频率的关系式是:N=f2f,式中,是计数值;fi是机器频率(晶体振荡器为2M时,其频率为MHz);r是想要产生的频率.其计数初值T的求法如下:T=6553

39、665536fi2fr例如:设=63,fi1Hz,求中音D(61z)。T6536N=6553i265536-000002fr655360000/f,中音的T=6565000/536458。由音符的频率值可以计算得出各个音调的计数值,如表4所示:(叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。)表41音调频率与计数初值对照音符频率(Hz)计数值(T值)音符频率(Hz)计数值(T值)低1DO2662#4FA#746480#1D#76737中5SO7846488低2R683#5S8194932RE116398中6A806496低3I330640216A939低4F

40、A3403中7SI968503034185低104665058低SO324260#1DO196585O41564331高2E1175510低6L06400#2E1245534LA46664463高3MI386517低7SI4946452高4FA397617中1DO5236450#4FA#1496591DO443高5SO158517中2RE57433#5S#6616352E6226884高6LA065252中M6564726A#18665268中4FA6862高7SI165283采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据.4.23 节拍的确定若

41、要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0。5,则1/4 拍为。125s,只要设定延迟时间就可以求得节拍的时间,假设1拍为4DELY,则/应为1DELAY,以此类推,得到如表4-所示的节拍与延迟时间对照表。休止符表示暂停发音。表42 1/和1/8节拍的时间设定曲调值DEA曲调值DEAY调4/12毫秒调/462毫秒调3/4187毫秒调3/494毫秒调2/250毫秒调125毫秒4.3程序设计4.3.1播放子程序(包括自动播放存储音乐和按键发音)本设计共两种播放模式,包括自动播放存储音乐和按键发音。上电后,首先开中断并设定定时器0为工作方式,当自动播放键按下时,进入中断,根据乐谱在定义的音频数组中查找相应音律,然后给定时器赋初值,即开始播放音乐。当DO、R、I、FA、S、L、S七种音符键按下时,根据音符值在定义的音频数组中查找相应音律,然后给定时器赋初值,即按键发音.

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服