基于单片机的电子琴.docx
- 文档编号:25028885
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:16
- 大小:286.91KB
基于单片机的电子琴.docx
《基于单片机的电子琴.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子琴.docx(16页珍藏版)》请在冰豆网上搜索。
基于单片机的电子琴
基于单片机的创意电子琴设计
实验报告
学院机电工程学院
专业机械设计制造及其自动化
班级机械091
学号200933315117
姓名钱振超
指导老师许聚武王斌周丽
目录
1前言2
2总体方案设计3
2.1设计内容3
2.3方案选择3
3单元模块电路简介与设计4
3.1单片机主芯片电路设计4
3.1.1时钟电路设计4
3.1.2复位电路设计5
3.2按键模块电路设计6
3.3LED数码管显示电路模块设计8
3.4扬声器电路模块设计9
4设计9
4.1设计框图9
4.2主程序11
5结论12
6体会13
7参考文献14
附录:
相关设计图15
1前言
单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
它的应用必定导致传统的控制技术从根本上发的控生变革。
因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器,其中7个键用于音符输入,1个键作为功能键。
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,只需把一首歌曲的音阶对应频率关系弄正确即可。
2总体方案设计
2.1设计内容
本系统分为两个部分,一个是音乐播放,另一个就是电子琴弹奏。
关于声音的处理,使用单片机C语言,利用定时器来控制频率,而每个音符的符号只是存在我自己定义的表中。
具体要求如下:
1.要求达到电子琴的基本功能,可以用弹奏出简单的乐曲。
2.用键盘作出电子琴的按键,每键代表一个音符。
3.各音符按一定的顺序排列,必须符合电子琴的按键排列顺序。
4.弹奏电子琴时能播放出准确的声音,不弹奏时可以播放内置音乐。
5.记录所弹音符和持续时间,能够回放。
2.2方案比较
方案一:
采用CPLD外接扬声器、键盘、数码管等。
8个译码输出显示的数码管,以显示目标芯片的32位输出信号,且8个发光管也能显示目标器件的8位输出信号。
时钟为50MHz,输出接扬声器。
具体过程:
主系统可由两个模块组成:
当系统检测到有按键按下时,对应音符的频率由模块1获得,这是一个数控分频器。
由其clk端输入一具有较高频率的信号,分频后输出。
音符的持续时间须根据乐曲的速度及每个音符的节拍数决定,模块2的功能是为模块1提供决定所发音的分频预置值,而此数在模块1输入口停留的时间即为此音符的节拍值。
方案二:
采用单片机外接扬声器、键盘、数码管等。
具体过程:
当系统扫描到键盘上有键子被按下,则快速检测出是那一个键子,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。
如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音。
2.3方案选择
对比两套方案各有优缺点,方案一采用CPLD,工作速度快,系统稳定,效果好,但是其价格昂贵;而方案二在设计这样小型电子系统方面,无论是效果还是工作速度与方案一都相差不大,而且价格较为便宜。
因此,选择方案二即单片机加外设的方式设计该系统较好。
3单元模块电路简介与设计
基于单片机系统的电子琴设计基本设计结构如下图所示。
图3.1电子琴设计系统原理图
该系统的硬件电路主要由AT89C52单片机、键盘电路、扬声器电路、LED数码显示电路等模块组成,具体原理图如下:
3.1单片机主芯片电路设计
3.1.1时钟电路设计
图3.2单片机时钟电路
XTAL1、XTAL2分别是系统时钟信号fosc的输入和输出端,晶振电路的设计可以使用两个电容和一个晶振即可,用来产生一个约等于12MHZ的稳定的频率。
3.1.2复位电路设计
图3.3单片机复位电路
复位是单片机的初始化操作,其作用是使CPU和系统中其他功能部件都处在确定的状态,并从这个状态开始工作。
本系统采用上电复位电路,为了防止干扰串扰复位端,所以再接一个去耦电容。
3.2按键模块电路设计
图3.4按键模块电路
在P0口连接有8个按键开关加8个上拉电阻,它们一端接5伏电源,一端接地。
只要有一个按键被按下,并被单片机扫描到,则会播放发出音符。
3.3LED数码管显示电路模块设计
图3.5LED数码显示电路
本系统用单片机的P0口来控制LED显示器的数字显示。
当七个音符按键1~7中有被按下时,LED数码管将对应显示出该音符的数字。
从而可以通过手动和眼看来确定所按的是哪个音符,应该发出哪个音符的声音。
LED显示器还用来显示对记录所弹音符的持续时间。
3.4扬声器电路模块设计
图3.6扬声器电路
电磁式蜂鸣器由振荡器、电磁线圈、磁铁振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。
振荡膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。
本设计蜂鸣器通过驱动电路与单片机的P1.7口连接,单片机就可以通过P1.7的输出信号频率进行控制。
另外,通过示波器接到P1.7可方便我们观察音频信号的波形。
4设计
4.1设计框图
本次设计主程序分为四个大的功能块,通过功能键触发外部中断,使功能键按键次数变量加1,通过判断功能键按下与否进行功能切换。
其中,头文件包含主要是把本次设计中所用到的各头文件包含进C文件中,包括89C52单片机系统头文件,和自己写的变量头文件,函数头文件及模式头文件。
还有就是手动模式,记录模式,回放模式,自动播放模式,分别是调用这几个模式对应的函数。
以下是本设计主程序的流程图。
注:
键8是否按下的检测是嵌入在各功能模块程序段中的,这里为比较清楚的展现功能块的切换,故单独写出来。
图4.1主程序的流程图
4.主程序
#include
#include
#include
#include
#include
#include
voidmain()
{
init();
while
(1)
{
sd();//手动模式,如果功能键不按下,一直保持为手动模式
rd();//记录模式
hf();//回放模式
zd();//自动播放模式
}
}
voidiner0()interrupt0
{
EX0=0;
k8_ant++;
clear();
if(k8_ant=1)
do_not=1;
if(k8_ant==4)
{k8_ant=0;do_not=1;}
delay(200);//按键消抖
delay(200);
IE0=0;
}
5结论
经过上面的说明,分析及调试过程,我们知道了本课程设计的硬件系统是由音符输入模块、单片机控制模块、显示模块及扬声器输出模块,这几个模块组成;软件系统由手动模式、记录模式、回放模式及自动播放模式,这几个功能模式组成。
在整个调试的过程中我们遇到了一些问题,在解决这些问题的过程中,我们学到了一些书上没详细介绍的知识。
下面我将根据根据整个设计过程中的思考、分析、讨论及调试过程做出如下结论性的说明:
1.功能键实现一键复用是一个明智的选择。
由于我们进行调试所用的外扩电路板是面包板,如果外扩键盘,如不用核心板上上的8个独立按键,而是外扩4×4矩阵键盘,那样的话焊在面包板上会相当的麻烦。
这样的话,一方面没充分利用核心板上的器件,同时增加了焊接的难度。
但是,不外扩的话,核心板上的键盘又不够用。
于是,我组采用了一键复用的方法,同时为了保证功能切换的实时性,我们将键8与单片机的外部中断接口相连。
键8的复用,一方面,节约了设计的器件成本与实践的时间成本;另一方面,让我们对外部中断的利用有了新的理解。
应该说,这是本设计中一个较为重要的设计点。
2.按键次数数码管显示及状态灯的使用,增加人机交流效果。
我们知道了键8复用的原理,但是为了让演奏者明确电子琴所处的状态,我们用一个数码管显示出功能键所按的次数;用核心板上发光二极管显示电子琴所处的状态。
3.记录、回放、自动播放,这三个扩展功能增加了电子琴的吸引力。
本次课程设计的最基本功能是模拟电子琴弹奏功能,在我组的努力下,同时为增加对所学知识的理解与掌握程度,我们扩展了这三个功能。
调试时,这几个功能实现起来的效果还是不错的。
4.调试过程较为顺利,各个功能模块能较好的达到预期效果。
如音符输入模块,按键能顺利完成其音符输入的功能,同时,显示模块及扬声器模块能实时显示和发声。
总的来说,整个设计、调试过程较为顺利;各个功能模块能较好的达到预期效果;各功能模块的主要参数均正常。
6体会
经过上述较为详细的分析、说明,我们知道了,本设计的硬件系统由音符信号输入模块,也即键盘输入模块,单片机控制模块,数码管及状态显示模块,扬声器输出模块这几个功能模块组成。
软件系统由手动模式、记录模式、回放模式及自动播放模式这四个功能模块组成。
经过认真的仿真及调试,最后,我们实现了电子琴的基本功能和扩展功能。
应该说,整个设计的软硬件都比较合理,因为最后能较好的实现本设计的预期任务。
但也有不足之处,即虽然各个功能模块能较好的实现预期功能,扬声器(实际上用的是蜂鸣器)所发出的声音根本无法区分到底是do,还是re,也即发出的声音并不那么理想。
原因可能是蜂鸣器无法把较高频频的音频脉冲正确的模拟出来;还可能就是程序没能协调发音节拍与音频脉冲的关系,而这部分是涉及到音乐领域方面的专业知识,作为本次设计,我们已达到课程设计的目标故没在深入下去。
在整个设计过程中,通过查资料,我们学到了很多书本上没介绍的知识,例如AT89C52定时、计数器T2的用法,芯片ULN2803的用法。
还有对已学知识的进一步理解如外部中断的使用,按键软件消抖的应用,P0口要输出高电平必须接上拉电阻等等。
在调试过程中,我们遇到了很多问题,但是通过我组成员的密切配合,问题都解决了。
值得提出的是我们独立的解决了共阳极数码管因为硬件原因无法显示的问题,解决办法是给P0口及ULN2803接上拉电阻。
虽然,说起来很简单,但这个问题我们花了将近一天的时间才找出来,最终加以解决了。
在软件调试的过程中,一路走来,对耐心的磨砺是很大的。
经过调试,我组成员的耐心得到了锻炼,这对以后的学习是很有帮助的。
整个软件设计中,由李清同学设计总体方案,李双生同学完成了手动模式程序的编写,郑波同学完成了功能切换程序的编写,其余由李清同学完成。
总的来说,通过本次设计,我组成员密切配合,相互交流,提高了与人合作的能力。
同时,提高了软、硬件的设计能力,更加理解了书本上关于单片机的知识。
应该说,在本次设计中我们收获很多。
7参考文献
[1]杨将新、李华军.单片机程序设计及应用(第三版)[M].北京:
电子工业出版社,2006.
[2]胡汉才.单片机原理及其接口技术[M].北京:
清华大学出版社,2004.
[3]康光华、邹寿斌.电子技术基础数字部分(第五版)[M].北京:
高等教育出版社,2006.
[4]张毅刚、彭喜元.单片机原理及应用[M].北京:
高等教育出版社,2003.
[5]谭浩强.C语言程序设计(第三版)[J].北京:
清华大学出版社,2005
[7]张海兵、李敏.PROTEL电路设计实例与分析[J].北京:
人民邮电出版社,2005
[8]李春葆、金晶.C语言程序设计辅导[M].北京:
清华大学出版社,2007
[9]杨将新、李华军.单片机程序设计及应用(第三版)[M].北京:
电子工业出版社,2006
[10]鲁捷、焦振宇.PROTEL2004电路设计[M].北京:
清华大学出版社,2006
[11]谢自美主编.电子线路设计.实验.测试(第二版)[M].华中理工大学出版社,2005
[12]谢维成、刘勇.微机原理与接口技术[M].华中科技大学出版社,2009
附录一:
相关设计图
图一:
Protel原理图
图二:
PCB图
图三:
ISIS仿真图
图四:
电子琴实物图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电子琴
![提示](https://static.bdocx.com/images/bang_tan.gif)