基于单片机的电子琴设计
摘 要
读书、看电影、听音乐,都是最常见的丰富内心世界的良剂。听音乐,作为陶冶情操、提升境界最便捷的方式,正受到越来越多人们的欢迎。音乐可以很轻松的融入各种场合,给人们带来很轻松的氛围,只有真正的接触它,才可以真正的感受到它的魅力。
本次设计正是基于这样的一种考虑,将实现一种简易电子琴的制作,考虑到市面上的电子琴因型号各异,款式各异,所以在价格方面也会有很大的差别,而这次设计将结合电子琴的功能性以及实用性将成本降至最小化来进行制作。本次设计主要用到的芯片是STC89C51,系统里包含了几大核心模块主要有按键模块 、扬声器模块、数码管模块等。
此次设计主要能实现的功能是:键盘上有12个按键,上面8个分别代表不同的音符键,当触发到某一个按键时扬声器会发出对应的音符,这样只要有完整的乐谱,就可以弹奏出非常美妙的音乐。此外剩下的4个按键是功能键。此次系统的设计不仅涉及到硬件方面还涉及到软件方面,所以得从两方面展开巩固系统。
关键词:STC89C51单片机 电子琴 键盘
Design of electronic organ based on single chip microcomputer
Abstract
Reading, movies, listening to music are a good dose of the most common rich inner world.To listen to music, as the mold sentiment, enhance the realm of the most convenient way, is being more and more people's welcome。Music can be very easy to integrate into various occasions, to give people a very relaxed atmosphere, only the real contact with it, you can really feel its charm.
The design is based on such a consideration, the production of a simple electronic piano,Taking into account the electronic organ on the market due to different models, different styles, so there will be a lot of difference in terms of price,And this design will combine the function of electronic organ and practicality to minimize the cost of production.The design of the main use of the chip is STC89C51,System contains several major core modules are key modules, speaker module, digital control module and so on.
This design can achieve the main function is:There are 12 keys on the keyboard, the top 8 respectively represent different notes, when the trigger to a certain button when the speaker will send the corresponding note,So as long as there is a complete score, you can play a very wonderful music.In addition to the remaining 4 buttons,which have some funactions.The system is not only involved in the design of hardware, but also related to the software, so we have to start from two aspects of the consolidation of the system.
Key words: STC89C51 electronic organ keyboard
目 录
摘 要 I
Abstract II
目 录 III
1 绪论 1
1.1电子琴设计的背景及意义 1
2 硬件设计及说明 3
2.1系统组成及总体框图 3
2.2元件简介 3
2.3 各功能模块原理图 8
3 软件设计 11
3.1 音乐方面知识 11
3.2 用单片机产生音频脉冲 11
3.3系统总体功能流程图 11
4 系统调试 13
4.1硬件调试 13
4.2 软件调试 13
5 毕业设计总结以及心得体会 14
参考文献 15
致谢 16
1 绪论
1.1电子琴设计的背景及意义
在当代科技迅猛发展的今天,电子产品凭借它的可玩性强、实用性高以及性价比高等特点,迅速吸引住人们的眼球,越来越受到大家的青睐。电子琴作为当代电子科技与音乐相结合的典型代表,在现代音乐中占据着相当重要的地位。电子琴发展于美国,在国外电子琴的使用早已普及,传到中国后,随着人们生活水平的提高也逐渐对电子琴这种性价比较高且实用性较强的乐器产生兴趣,发展至今,电子琴已经成为非常频繁可见的一种乐器。而涉及到硬件的制作就不得不提单片机,单片机因其小巧且功能强大颇受电子爱好者们的喜爱,在硬件设计方面它是必不可少的存在。因此,我选择了简易电子琴这个题目来作为我的毕业设计课题,在提高我的动手实践能力的同时,也能紧密地与实际生活相联系,以不断完善自己设计中的不足。
作为一门对实践能力要求很强的课程,尤其是以单片机相关知识为理论基础的毕业设计课题,其最终的目的是通过本毕业设计启发我们的创造性思维,以便在不远的将来与社会接轨时不至于太过彷徨,毕竟大学四年偏重于理论知识,对于社会实践方面或者说实际操作上还是很欠缺的,所以本次毕业设计一定要认真的才开始努力到结束,让自已有一个完美的结束同样也是一个崭新的开始。单片机并不只是根据拷入编程进行运作的芯片,它是能够把一个计算机系统集成到一个微小的芯片上,单片机又被称为单片微控制器。单片机具有质量轻便、体积小巧、性价比高的优点,为理论学习、实际运用以及实际开发提供了很方便的条件。此外,如果能够掌握使用单片机的能力对了解计算机的原理与结构会有很大的帮助。
1.2 电子琴设计的目标
电子琴在人们生活中已随处可见,所以在设计过程中要考虑很多因素比如说硬件设备的安全性和易操作性以及软件方面的稳定性等。电子琴使用起来很容易上手,基本音符按键是8个,只要有乐谱就可以弹奏音乐,所以说在进行电子琴的设计时要考虑到它的易操作性,不要复杂化,毕竟只是人们娱乐的一种方式。
做出的电子琴成品看起来也许很简单,但在实际设计过程中还是会遇到很多麻烦,比如说在硬件方面器件选型错误,预想的电路出现问题,在软件方面出现逻辑故障等等,这些都将是设计过程中不可避免的一些问题,需要我们耐心的不断进行调试才能完成最终的设计。此外还需要考虑到电子琴制作的成本问题,毕竟我们只是大学生,而且此次设计的目的只是锻炼自己的动手和实践能力,所以在成本花费上尽量要合理些、可控些,主要的资金应该是花费在元件的购买上,所以在刚开始的元件选型上一定要注意,避免资金不必要的浪费,而在后期电路焊接式也要注意元器件的损坏,避免器材的浪费。如果能够考虑到以上这些因素,我相信本次设计一定可以低成本、高效率圆满的完成。
2 硬件设计及说明
2.1系统组成及总体框图
按照设计上的大体需求,首先得对机型进行合理的筛选,然后有一个清晰的电路规划对各个模块需要使用的元件有清晰的了解,便可以在此基础上对电路图进行设计来制作我们想要的功能模块。
本次选题是基于单片机的电子琴的设计,单片机是在12MHZ时钟频率下运行的,会用到单片机的定时/计数器T0,工作模式为1,若想得到不一样频率的脉冲信号可以改变TH0和TL0的计数值。本设计主要实现的功能是 键盘上分布着12个按键,上面8个分别代表不同的音符,当触发到某一个按键时扬声器会发出对应的音符,这样只要有完整的乐谱,就可以弹奏出非常美妙的音乐。此外剩下的4个按键,其中一个可以随机播放已经内置好的三首音乐,剩下3个分别能实现暂停音乐的播放、选择上一首歌曲播放、选择下一首歌曲播放的功能。但是若想弹奏出真正的音乐并不是只依靠单片机发出的音频脉冲来传递到驱动扬声器就可以实现的,我们必须要通过功率放大电路来提供给它一定的驱动能力才可以实现最终的音乐播放。
图2-1 系统模块结构图
2.2元件简介
2.2.1 STC89C51
STC89C52不但在功率损耗方面较低而且在性能方面有很高的优势,Flash闪存可以进行编程,不用将元件从电路板上拿下来就可以编程,如果原有程序不再需要也可以进行擦出,重新写入代码。
很多实用性不错的且比较有效的解决方案都用到STC89C52,是因为单芯片上拥有在系统可编程Flash以及灵活度非常高的8 位CPU。具有以下标准功能: 8k字节闪存,512字节随机存取存储器,有三个16位的定时器/计数器, 32 位输入/输出端口,看门狗定时器,内部有4KB 电可擦可编程只读存储器以及MAX810复位电路,可以同时发送和接收数据。此外可以将STC89X52 调到0Hz 静态逻辑操作,拥有2种可选择的节电模式。在闲置模式下CPU不会继续工作,但是RAM和串口以及中断定时器/计数器可以一直运作。如果是突然没电了,会对RAM的内容进行保存不用担心丢失数据,会停止振荡器的工作,微控制器的所有工作暂停,在遇到中断或者硬件复位信号时,则开始继续工作。
图2-2 STC89C51引脚图 DIP封装
单片机片内含有Flash程序存储器、SRAM、UART、SPI、PWM等模块。
(一)STC89C52主要功能、性能参数如下:
(1)计算机完成一个基本操作所花费的时间为12个时钟,增强型为6个 时钟;
(2)闪存为4KB;
(3)随机存储器内存为512B;
(4)有1个通用异步收发器;
(5)拥有在系统编程(写入编程是,芯片可以不从板上取下)和在应用编 程;
(6)通用输入端口32个,通用输出端口36个;
(7)40根输入/输出引脚塑料包封双列直插式封装、40脚的带引线的塑料芯片载体.表面贴装型封装、塑料方块平面封装。
(二)STC89C52引脚说明:
P0口:P0口是8位高阻状态的地址/数据总线复用口,每个引脚都能吸收8TTL逻辑门电路中电流。将P0口定义成高阻输入是在P1口的管脚被第一次写入"1"的时候。
P1口:P1口是带有内部上拉电阻的8位双向输入/输出端口。
P2口:P2口为一个带内部上拉电阻的8位双向输入/输出端口。
P3口:P3口是8个带内部上拉电阻的双向输入/输出端口。
P3.0 RXD(接收数据端口)
P3.1 TXD(串行输出口)
P3.2 /INT0(输入一个信号(低电平或下降沿)起到中断作用)
P3.3 /INT1(输入一个信号(高电平或上升沿)起到中断作用)
P3.4 T0(计数/定时器中断0)
P3.5 T1(计数/定时器中断1)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
在输入/输出端口使用输入模式时,主要有2种工作方式,一种是读端口的工作方式,另一种是读引脚的工作方式。读端口的工作方式其实就是从端口锁存器读取内容到内部总线再通过一些运算以及变换重新写回端口锁存器,所以说它的数据并不是从外面进行读取的。但是在读引脚时是从外面直接将数据读到内部总线上。输入缓冲器可以根据收到的不同信号来判断是进行读引脚操作还是读端口操作。这一过程是系统独立判断,不需要人为控制,要注意的是先将端口锁存器置1之后才能进行读引脚,不然会出现一些问题。
VCC:电源电压端。
GND:电线接地端。
RST:重置连接、复位连接。
ALE/PROG:输出振荡器的六分之一频率的脉冲,可供给外部芯片做时钟。
/PSEN:选通信号(外部程序存储器)。在读外部只读存储器时PSEN(非)低电平有效,以实现外部只读存储器单元的读操作。
/EA/VPP:外部程序存储器选择信号/对EPROM的编程电源输入,常态为闭合状态,当触发为"0"信号后断开。在初始化时CPU会控制对外部程序存储器选择信号/对EPROM的编程电源输入的引脚状态平衡。
XTAL1:接外部晶振和微调电容的一端,在片内它是振荡器反相放大器和时钟发生器的输入端;若使用外部时钟时,该引脚接地或悬空。
XTAL2:接外部晶振和微调电容的另一端,在片内它是振荡器反相放大器的输出;若使用外部时钟时,该引脚接外部时钟的输入。
(三)单片机最小系统:
单片机最小系统由一系列模块组成包括它所需要的电源系统(VCC和GND引脚)、复位系统(当引脚9出现2个机器周期以上高电平时,单片机复位,程序从头开始运行)、时钟系统(有振荡器电路产生频率等于晶振频率,这时用的是外界晶振。也可以外部单独输入,此时XTAL2脚接地,时钟信号由XTAL1输入)、电源系统(VCC,和 GND引脚,供电电压4--5.5V)等组成。最小系统在很多电路中都有运用,单片机若想正常运行是离不开最小系统的帮助的。
单片机又可称为微处理器。STC89C52片内含有只读存储器、可擦除只读存储器。一个时钟电路和一个复位电路连接上单片机后就可以组成最基本的最小系统,制作起来比较简单。
图2-3 单片机最小系统
2.2.2 9013三极管
9013是一种NPN型三极管,有电流放大作用,具有低电压以及小功率的特性,是电子电路的核心元件。9013的共发射极低频小信号输出交流短路电流放大系数在64到202之间、工作时的平均功率在0.625W左右。
主要作用:
(1)将微弱的电信号转换成一定强度的信号
(2)可以用来模拟大功率可变电阻
(3)可以在一定程度上控制噪声的系数,以此提高信噪比
图2-6 9013引脚图
2.2.3数码管
本电路系统显示部分使用的是LED数码管,根据接收到的信号编码控制七个笔画,当电流流过时会发出可见光以此来显示不同的数字。LED具有单向导通性,经常和电阻串联以此来限流起到保护电路的作用,是一种电流控制器件。
LED有共阳和共阴之分: 共阳(如图b所示)是指所有的发光二极管阳极都连在一起并连接到公共端的阳极,在接受到低电平信号后灯亮 。共阴(如图c所示)是指内部所有的发光二极管阴极都连在一起并连接到公共端的阴极,在接收到高电平信号后灯亮。八个发光二极管可组成1位显示器,有一个是控制小数点的亮和暗的,剩下的七个发光二极管a~g用来控制七个笔画的亮和暗。在设计电路图前期 一定要搞清楚LED数码管的对应引脚所在位置,这样在进行编码时才可以准确定位到想要的数字。这种LED数码管虽然在使用时能显示的字符有限 ,但是使用起来还是相当简便的。
(a)引脚分布 (b)共阳极 ©共阴极
图2-7 数码管引脚联接图
数码管使用注意:
(1)加限流电阻,防止数码管被烧坏
(2)如果现实的笔段有残缺,可能是数码管已经损坏
(3)对于引脚排列不明的数码管可以使用万用表进行检测
2.3 各功能模块原理图
2.3.1 单片机模块电路原理图
当用户按下按键后会发出相应的信号传送到单片机,单片机接收到信号之后通过定时器发出高电平、低电平信号,以此来产生各种声音信号。并将此编码传送到数码管,数码管会根据收到的编码信号来显示不同的数字。
图2-8 单片机模块电路原理图
2.3.2键盘扫描模块电路原理图
根据所学的单片机相关知识了解到一般的键盘扫描方式有行扫描法和行列反转法。行扫描法是指:首先另P3.0列为0信号,其余的p3.1、p3.2、p3.3列都为1信号,然后开始读入输入缓冲器的状态,来确定某一行线状态为0状态,比如说P3.6为0信号,则表示开关S5被按下,之后便进行相应的键盘处理程序。以此类推便可以确定哪个按键被按下。行列反转法是指:P3高四位为列送出1信号,低四位为行送出0信号,若有按键按下则高四位上有一位为低电平,去抖动程序,继续判断,保持高四位上的按键情况,如果有按键按下则低4位上有一位为低电平。本次系统编程主要是采用了行扫描法。
图2-9 键盘扫描模块电路原理图
2.3.3数码管电路原理图
本次设计使用的是共阳极数码管。根据单片机的输入/输出端口产生的高电平和低电平来控制编码,数码管会根据对应的编码来显示对应的数字,不同的数字是由不同的按键触发,当我们按下对应音符的按键后,数码管上会显示相应的数字。数码管上设置了7个数字分别是1、2、3、4、5、6、7对应的音符分别是do、re、mi、fa、sol、la、si。
图2-10 数码管电路原理图
2.3.4功率放大装置原理图
如果想准确的弹奏出8个音符光靠单片机是不够的,因为单片机带出所接负载的能力有限,所以我们还需要借助功率放大装置来保证声音的音质达到一定的标准。本系统是使用9013三极管。
图2-11 功率放大装置原理图
3 软件设计
本次设计的软件设计部分主要是为了产生8个不同的音符,当按下键盘上不同的按键时通过扬声器会产生对应的音符。所以只要用户有一个完整的乐谱,就可以弹奏出完整的音乐。还会在编程里写入三首歌曲,按下对应按键后,便可以自动播放音乐。
3.1 音乐方面知识
音名:音的名称。用C、D、E、F、G、A、B表示。键盘上的8个按键一次代表它们。唱名:唱谱时使用的名称。用do、re、mi、fa、sol、la、si来唱。当按下对应按键后发出的声音分别是do、re、mi、fa、sol、la、si。这些都是基础的音乐知识,在生活中也可以很广泛的接触,所以大家应该并不陌生。
每一首音乐都有属于自己的乐谱,正是这些乐谱的不同才让每一首音乐都特殊起来,乐谱是有音符组成,不同音符都有属于自己不同的频率这样如果想弹出一首音乐,只要对不同的频率进行组合就可以了。
3.2 用单片机产生音频脉冲
单片机相当于把一个计算机系统集成在一个微小的芯片上,所以单片机的功能非常强大,本次设计主要是用单片机来产生不同频率的脉冲信号。通过单片机的I/O口来控制高电平和低电平的持续时间以此来产生不同频率的方波,再通过扬声器后就可以发出不同的音调。所以一定要清楚不同频率和不同音符之间的关系,才能准确的设定不同按键按下后发出的声音。
3.3系统总体功能流程图
系统能够实现的主要功能如下:首先打开电源键,初始化定时器,上八个按键控制8个音符,当按下后会发出对应的声音。剩下的四个按键分别是控制内置音乐的播放、暂停功能、控制上一首歌曲的播放、控制下一首歌曲的播放。系统主程序流程图如下:
图3-1系统主程序流程图
4 系统调试
电路调试是整个系统功能否实现的关键步骤,可以将整个调试过程分成两大部分:硬件调试和软件调试。
4.1硬件调试
硬件调试是针对电路方面进行检测。
首先在硬件制作完成后我们不用急于上电,最开始的电路检测恰巧是在不上电的情况下进行的,我们需要用到万用表,将万用表表盘调制蜂鸣器上对电路进行检测,可以根据电路图测试每一条线路是否正确,该连接的地方是否连接,有没有出现虚焊和开路的现象,不该连接的地方有没有出现短路问题。这些都是要在上电之前调试的内容。
如果说通过以上未上电的检测没有发现问题,那么进一步就是进行上电检测,接通电源后观察实验的最终现象,对之前计划的所有功能都进行测试,查看能否达到预期设想的结果,(按下前8个按键是否可以发出8个不同的音符,数码管是否显示相应的数字,按下播放音乐按键后是否有音乐自动播放,包括选择上一首和下一首这样的功能是否可以实现)。如果部分功能无法实现,首先可以看看是不是电路焊接错误,如果焊接无误,可能就是电路原理图出现错误,若真是这一错误更改起来会很麻烦,所以在最开始尽量确保自己的思路没有问题,设计的原理图不存在什么大问题,后期才能避免这样的麻烦。但是出现问题还是得积极面对,可以将电路进行模块划分,检测每个模块电路设计和原理是否出错,这样化繁为简更加有利于设计的调试。
4.2 软件调试
软件调试主要是针对程序编码进行测试。
如果已经确定硬件部分不存在问题,若还是达不到我们预想的功能,那么问题可能出在软件方面。根据学过的C语言知识我们可以通过设定断点的方法分模块有针对性的进行调试,或者可以通过改变数值的方法对编程进行检测,只有在调试的最开始阶段对每个子程序模块都进行调试确保所有子程序模块都能够正常运行,这样整个程序才能够进行平稳的运行。
5 毕业设计总结以及心得体会
刚定下本次毕业设计课题时,内心其实是挺忐忑的,因为从来没有一个人进行过一项完整设计的制作,特别担心无法完成此次设计,虽然对这个课题感到很陌生,但是也并没有放弃,而是把这当作一次很好的机会来锻炼自己。很快就从迷茫中走出来想到了我们平时课本上学习的知识,还是有很多可以相互联系的,虽说理论知识过渡到实践知识是个很艰难的过程,但是只要往前走,就会有进步。
我开始对之前学过的相关知识进行整理不太清楚的地方请教了同学,也经常去图书馆查阅一些相关资料,确保自己在毕业设计开始之前打好理论基础。刚开始我只是知道一些基本元件的相关知识,但是通过不断的学习了解掌握了相关元件的具体性能优点,这样在后期进行元件选型时就可以正确的选出合适的元件。此外我还对单片机做了详细的了解,毕竟在后期的硬件电路设计方面一定会用到它。当然不仅得巩固硬件方面的知识,软件知识同样重要,对于大二学习的C语言相关知识已经掌握的没那么牢固了,但是要想做好本次毕业设计,C语言是一定要很熟练的运用的。
本次设计主要用到的器件有万用板、8Ω0.25W喇叭、13个按键、STC89C51以及对应的40脚的底座一个、电阻、电容、自锁开关、晶振、数码管等。刚开始去置办这些器件时,有些自己也不太了解,是卖这些元件的店员给了我很多建议,毕竟他们对这方面的知识有很深的了解,事实证明他们的意见是很有用的,给了我很大的帮助。之后我对即将要展开的工作进行了了解,以及对毕业设计的整个开发流程进行了解,对接下来的工作进行了简单的规划,从确定元件选型到制定电路原理图,再到硬件电路成品的设计花费了很长的时间,之后便是软件设计也花费了不少时间。看见毕业设计成品的那一刻感觉之前的所有努力都是值得的,但是经过测试发现还存在一些问题,通过硬件调试和软件调试很快的找出了问题所在并调好的电路,算是圆满的完成了这次设计。
作为工科专业的学生,对动手能力的要求是非常高的,通过此次设计不但很好的巩固了自己理论知识,还提高了自身在电子专业方面的专业技能,对这个行业可以有一个更加深入的理解,为以后的发展储备一些有价值的经验。如果不是通过这次设计,都不会知道自己还有这样的能力,所以说很多事情不去试试怎么知道行不行呢。勇敢的尝试非常重要。
参考文献
【1】黄鑫,马善农,赵永科.基于CPLD的电子琴研究与设计[J].科技广场,2007
【2】吴金戌,沈庆阳,郭庭吉,8051单片机实践与应用[M].清华大学出版社,2001
【3】龙威林,杨冠声,胡山.单片机应用入门:AT89S51和AVR[M].北京:化学工业出版社,2008.
【4】张毅刚,MCS-51单片机应用设计[M].哈尔滨工业大学出版社,2004
【5】李朝青. 单片机原理及接口技术[M]. 北京:北京航天航空大学出版色,2001
【6】胡汉才. 单片机原理及其接口技术[M]. 北京:清华大学出版社,2004
【7】陈明荧.8051单片机课程设计实训教材[M].北京:清华大学出版社,2003年9月
【8】徐新艳.单片机原理、应用与实践[M].北京:高等教育出版社,2005年3月
【9】杨恢先,黄辉先.单片机原理及应用[M].北京:人民邮电出版社,2006
【10】张虹.单片机原理及应用[M].北京:中国电力出版社,2009
【11】赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2003
【12】[美]Ashish Wilfred Meeta Gupta Kartik Bhatnagar著,刘永明,贺民译. php专业项目实例开发[J]. 水利水电出版社,2003
【13】Datasheet of Single chip 433/868/915 MHz Transceiver nRF903 ,Nordic VLSI,2002
【14】Fischer R A,Laakonen A S,Schulz N N.A general pooling algorithm using a wireless AMR system for restoration confirmation.IEEE Transon Power Systems,2001
致谢
忙忙碌碌,艰苦奋斗了两个月,我的毕业设计与毕业论文终于如期顺利完成。接通电源运行调试,也能基本达到开题报告上所诉的各个功能,然而毕竟时间精力有限,还有些许方面并没有达到令自己满意的程度。但是两个多月心血与汗水的付出能达到如此,也算是没有遗憾了。
当然,这两个多月的毕业设计过程中,除了我自己的通宵达旦外,更加离不开周围老师及同学们的帮助和鼓励,他们在我最无助的时刻给我指点迷津,开拓思路,在我最疲软的时候给我加油鼓劲。首先要特别感谢本课题的指导老师,老师在我毕业设计制作与毕业论文撰写的过程中都给了我非常大的帮助与指导。在毕业设计制作过程中老师多次询问研究进程,主动帮助我解决研究难题,在论文撰写过程中,老师也给了我很多宝贵的意见,使我的论文也能如期完成。也使我领悟到终身受益的无穷之道。其次要感谢与我朝夕相处的室友与其他同学们,在最后这段大学岁月里大家互相帮助,互相扶持,也是因为你们,我的论文得以顺利完成,友谊的小船最终升华成巨轮!
大学生活即将过去,回首匆匆那年,自己在不知不觉中学到了很多,所经历的事,所遇到的人,都将是我今后回首的一部分,成为我为人处世的指南针。最后,感谢大学,感谢这四年。