摘 要
读书、看电影、听音乐,都是最常见的丰富内心世界的良剂。听音乐,作为陶冶情操、提升境界最便捷的方式,正受到越来越多人们的欢迎。音乐可以很轻松的融入各种场合,给人们带来很轻松的氛围,只有真正的接触它,才可以真正的感受到它的魅力。
本次设计正是基于这样的一种考虑,将实现一种简易电子琴的制作,考虑到市面上的电子琴因型号各异,款式各异,所以在价格方面也会有很大的差别,而这次设计将结合电子琴的功能性以及实用性将成本降至最小化来进行制作。本次设计主要用到的芯片是STC89C51,系统里包含了几大核心模块主要有按键模块 、扬声器模块、数码管模块等。
此次设计主要能实现的功能是:键盘上有12个按键,上面8个分别代表不同的音符键,当触发到某一个按键时扬声器会发出对应的音符,这样只要有完整的乐谱,就可以弹奏出非常美妙的音乐。此外剩下的4个按键是功能键。此次系统的设计不仅涉及到硬件方面还涉及到软件方面,所以得从两方面展开巩固系统。
关键词:STC89C51单片机 电子琴 键盘
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封装
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 单片机模块电路原理图
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语言知识我们可以通过设定断点的方法分模块有针对性的进行调试,或者可以通过改变数值的方法对编程进行检测,只有在调试的最开始阶段对每个子程序模块都进行调试确保所有子程序模块都能够正常运行,这样整个程序才能够进行平稳的运行。
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。