简易智能电子琴的设计

(整期优先)网络出版时间:2021-06-21
/ 2

简易智能电子琴的设计

洪磊

21071119870507**** 营口职业技术学院


摘要本文介绍了一种基MCU的智能电子风琴的简单设计。作为本工作主要控制核心的是STC89C52芯片,14个按键、无源扬声器、单片机复位系统等模块构成本作品的核心主控模块。其中14个按键为2*7矩阵按键形式对应音符高音、中音的1、2、3、4、5、6、7,利用定时器去调节输出的脉冲频率,让蜂鸣器实现高音、中音的1、2、3、4、5、6、7的发音且与此同时让LED发出亮光。本文其中硬件原理图是用Altium-designer绘制的,软件的编程是通过KeiluVision4对电子琴所编程,再通过proteus绘制仿真图并进行仿真调试,后将准确无误的程序烧录到STC89C52芯片中。

关键词:STC89C52单片机;简易电子琴;矩阵键盘;蜂鸣器




章 总体方案

1.1 系统设计要求

本系统由两个部分构成,一个是自动演奏音乐,另一个手动按键弹奏音乐。本作品是用C语言对单片机进行编程,使得扬声器能发出14个所需音阶,利用之中的定时器可实现此功能,再将音符所对应的频率存储在程序定义的表中。具体要求如下:

  1. 能正常演奏和弹奏音乐 。

  2. 14个按键需对应音乐之中高音、中音的1、2、3、4、5、6、7的发音。

  3. 设置七个红色的LED指示灯,当按键按发声部件发声时需伴随指示灯的变化。

  4. 按键要按一定顺序摆放,需要与音阶一一对应.

  5. 能自由切换弹奏功能与演奏功能

1.2 系统总体框图

此系统通过14个按键输入所需要的音符,作为电平信号传达给主控核心,主控核心通过辨认,用特定方法将其转换为输出信号,输入至扬声器使其发出目标声音,就此达到能够弹奏不同音符的目的。本系统主要由电源电路、最小单片机系统、发声模块、LED显示模块和按键模块等所构成,其中用两个按键去实现弹奏和播放功能切换。

上图为此作品系统框架图,主控模块用的是STC89c51最小单片机系统,用9个I/O口作2*7矩阵式按键的接口,用9个I/O口作LED指示灯的接口,扬声器需占用一个I/O口作接收信号作用。

1.3 电子琴系统的组成

单片机具有小巧、轻盈、造价低和性价比高等特点,因此广泛应用于高新科技之中。运用STC89c51制作智能电子琴,我们需要构建一个最小单片机系统用于接收、处理和运行数据作为一个主控核心的存在,再构建一组2*7的矩阵式按键和一组功能按键,用于实现弹奏音乐和功能切换,再构建一组红色的LED灯指示灯用于用显示电子琴在弹奏和演奏的状态。本系统由弹奏音乐和演奏音乐两大部分所构成。在扬声器播放出来的音符是有固定周期频率的。本文阐述了如何用STC89c51单片机中的定时器去改变输出频率,从而使P2.7脚上输出不同频率的信号给发声部件去产生所需乐音。2*7矩阵式按键能控制单片机产生弹奏不同音符所需的频率,根据此原理我能就可以随心所欲的去弹奏我们想要的音符甚至还可以进行自己编曲,当想听歌时我们只要按下功能切换按钮,此时状态便会进行切换,如何系统会进入预先存放了歌的地方寻找歌曲并播放出来。当我不想听时,可以按下停止按钮让他结束播放,便重新听从你的发号指令,这样一台便捷小巧的娱乐设备便就此诞生了。


章软件设计

2.1整体程序处理

当键盘开始工作时,通过按键来选择当前机器工作的状态。当我们需要听歌时我们只有选择演奏状态时才能让机器进行放歌,此时机器会去原先存好的歌单之中找歌播放,放歌功能只有在演奏时才能播放 。弹奏/停止键切换模式结束歌曲并进入弹奏模式。每次切换功能,都需要先按下选择功能键进行模式切换,并通过按键选择并更改路径。

2.2音乐播放设计

众所周知一首简单而动听的歌曲是需要几个不同的音阶按一定组合排列所产生的,而每个音阶都会有它独特的频率,在这个前提下,我们可以通过改变频率来获得我们需要的音阶再去组合出美妙的歌曲。要实现这个功能,单片机的强大便体现出来了,单片机的定时器/计数器T0是用来控制不同频率方波的产生的,因此我们可以通过调节单片机产生的频率去控制扬声器的发声,加以调整我们便可以得到需要的音符。要控制脉冲的频率我们只需要得到它的计数值,我们算出的某一音频周期将其除以2,这便是周期的一半,音频的周期为频率的倒数。算出计时器及时半周期的计数值,当时钟停止时,重复计时和反转。我们就可以知道什么数值代表着这个频率的脉冲。将单片机内部定时器设置为模式1,我们便可以很明了的知道在不同频率之中THO和TLO的不同计数刻度即不同的音阶。如523Hz,周期为60d009d949c01_html_151311637bacb079.gif 。计时器则需计时60d009d949c01_html_977f4318668a0750.gif ,也就是说当计数器计时956次之后立即将I/O口取反,DO的音便可由此发出。

计数脉冲值与频率的相关式:

60d009d949c01_html_7ea7f789604c26bf.gif (4-1)

式中N为计数值;fi为机械频率(12MHz晶振,1MHz频率);fr是要需要的频率。

其计数初值T的求法如下:

60d009d949c01_html_829ce450b1bd7d2d.gif (4-2)

如:当K=65536,fi=1MHz,中音DO (523Hz)、高音DO ( 1046Hz)的计数初值T。

60d009d949c01_html_829ce450b1bd7d2d.gif

60d009d949c01_html_ad314874bcd97558.gif

60d009d949c01_html_2485d55132a0027a.gif

中音DO的T= 65536- 500000/523 = 64580

高音DO的T= 65536 - 500000/1046= 65058



章 调试

调试部分是我认为比较繁琐和困难的。一个程序不可能立马达到要求,需要我们慢慢的调试反复的实验才能确定最终程序。接下来我会依次介绍硬件和软件两部分的调试和更改过程,还有在本次调试之中遇到的问题和解决方法。

起初自己编辑了简单的音乐播放程序,再对这个程序进行修改补充,要在保证主程序不变的前提下去进行添加和修改。程序之初,我们要将所有端口全部初始化初始化,然后进入循环部分,在进行按键扫描,当有按键按下时立刻进行识别,识别完成再进入防抖动程序中,最后进入音乐播放程序,一直等到按键弹起,再进入按键扫描状态。

软件通过Keil编辑修改保存,再通过STC-SIP烧录到芯片之中,经过这样一个流程算是基本完成。

结论

写论文的过程也是学习专业知识的过程。它使我能够利用现有的专业基础知识设计一个自己想设计的作品,将遇到的实践问题和理论问题一一解决,并将知识转化为实践培训,是一次理论与实践相结合的经历。他培养了将学习的知识转换为实践并解决实际问题的能力。将一个不断调试得以准确的编程程序烧录到运用的单片机之中,再将这单片机与硬件电路相结合是实现理想的功能,按下按键时电路能发出自己想要的乐音。此次的作品设计也让我对软件和电路有了进一步的认识,也让我学会如何分板块去做物品,将复杂的变为零零散散简单的。在单片机的认识上,让我从皮毛学会如何去钻研更深刻的知识,从简单的几个按键认识到更深程度的理解,也知道有些资源有限,我们因学会合理去分配,什么样的电路用在什么情况更合适。


参考文献

[1] 钱如竹张学龙等.实用自控及报警电子装置制作365例[M]. 北京:人民邮电出版社.1992.7.

[2] 张齐,朱宁西.单片机系统设计与开发[M]. 北京:机械工业出版社, 2008.8.

[3] 张超琦,钟明哲,卢世彬.单片机原理及实例——实践篇[M].上海:上海交通大学出版社,2007.2.