摘 要:随着信息技术革命的不断深入,以及计算机技术的快速发展,单片机的应用越来越广泛了,并且已经逐渐地发展成为了一门比较关键的技术学科。本文所介绍的是一种比较简易的单片机音乐盒的设计以及其相关的实现方案,利用的是AT89C51单片机。通过乐谱的音节以及节拍混排的方式进行了一次编码,从而实现了乐曲的播放这一功能。
关键词:单片机音乐盒;乐曲播放;T89C51单片机
一、引言
伴随着信息技术革命的不断深入,以及计算机技术的快速发展,单片机的应用越来越广泛了,并且已经逐渐地发展成为了一门比较关键的技术学科。单片机具有这样一些突出优点:体积小、质量轻 、耗电量小、 电源比较单一 、功能性强、价格低、运行速度比较快 、抗干扰的能力较强、利用率高等优点。 因而在通信、家电、工业中等特别是汽车等产品的应用当中都能够处处看到单片机的应用。
毫不夸张的说一块单片机芯片就是一台计算机。然而因为受到单片机的这样的特殊的结构形式,使得在某些领域当中,它所承载了很多不论是大中型或者是微小型计算机都没有办法完成的一些工作,使得它有了许多方面的优点和特点,由于单片机的这些优势和优点,因而在各个领域当中,单片机都得到了飞快地发展。
二、音乐盒设计
大家一定都有见到过在市面上出售的各式各样的小音乐片,它们大多只通过一个小小的集成电路块构成,接通了电源之后就能够发出很优美的旋律,演奏出动听的乐曲出来。然而美中不足的是这样的音乐盒只能够存储播放一个单一的曲目,不能够满足更多人的爱好。所以就有了现在的单片机的音乐盒设计,我们要设计出一个能够弥补只能播放一只相同曲目音乐片的缺陷,让它能够不仅仅是可以存储一首乐曲,最重要的是还能够根据自身的爱好以及需要通过编程将自己喜欢的乐曲纳入进去,从而来实现一个通过按键选择来选取播放曲目的功能性音乐盒。
1、音乐盒的设计原理
我们都知道频率决定着音调,所以根据十二平均律,有了如下的音调与频率的像对应的关系:相邻之间的两个音位半音的关系,也就是说在两个音之间的频在1同2之间插入11个数组成比例的数列。它所规定的c1的频率是261.63Hz,所以#c1的频率是277.19 Hz,b的频率是为246.95Hz,同样的若是想要求出它们之间各个音的频率都可以通过上述方法算出。换句话说,只要能够产生所相对应的频率震荡的信号,那么只要经过放大之后送到扬声器里,就能够听到优美动听的音乐了。但是,音乐的长短都是一定的规律组织起来的一个音的组成。所以对于音乐盒来说还必须能够控制好每个音播放的时间才行,通常情况下节拍和曲调的时间都是有其对应关系的,当我们利用AT89C51的定时,让计数器1产生乐音,定时,然后计数器2对每个音播放的时间进行控制。
与此同时,我们还可以计算出它们之间每一个音的一个频率,换句话说就是只要能够产生对应频率的一个振荡信号,那么经过放大后放入到扬声器当中,就能够听到相应的优美动听的曲段了,但是我们都是振荡,音乐是要通过一系列的长短不一的或者是按照相同的或者是一定的规律组织起来的一个音的组成,对于音乐盒来说还必须能够控制好每一个音播放的时间才可以。通常情况下节拍同曲调的时间之间都是有着相互对应的关系的。当我们利用AT89C51进行定时的时候,计数器1就能够产生乐音,定时,计数器2控制着每一个音播放的时间。根据节拍的不同托拍的延长时间也是有着差别的。
2、音乐盒设计的相关思路
(1)硬件设计方面
在硬件设计方面所采用的是ATMEL公司所生产出来的AT89C51单片机,这也是整个音乐盒的核心部分,所采用的是12MHz晶体,并且在P1.0口接上一个播放或者是停止的开关,P1.7口是输出音乐端口,加一级三极管放大之后就直接对扬声器进行驱动作用。
(2)软件设计方面
曲谱编码,节拍标记:因为曲谱不仅需要包含音名的信息,而且还要包含有节拍的信息。在此我们所采用的是一种音名同节拍混排的一种方式来对曲谱进行的编码。它的单位是字节,如果说最高位时1的话,那么就为节拍标记号,不然就以为这音名标记。节拍标记号其后所有的音名一级节拍的时间,要考虑到节拍延时时间都为31250μs的整数倍,对于节拍标记来说,除了最高位以外,其它的七位所表示的就是需要延时多少个31250μs。比如说0x88所表示的是4/4拍曲谱当中的I/4拍。如果说节拍标记为0x80的话,就为曲谱结束标记,当读到这个标记的时候,即表示演奏停止了。
通过将96个音分别进行分组,然后得到了八个音组:大字而组;大字一组;大字组;小字组、小字一组、小字二组、小字三组、小字四组,在每个音组当中都包含有十二个音包括了:C、#C、D、#D、E、F、#F、G、#G、A、#A、B。为此,我们通过用音名标记中的底四位表示的是音名,而高四位则表示为音组。再加上休止符,将音名按照编码编写:当D1、D2、D3、D0都为零的时候音名为C;当D0为一时,其他都为零时音名为#C;当D1为1时,其它都为零时,音名为D;当D1、D0都为一时,其它为零时,音名为#D;当只有D2为一时其它都为零时,音名为E;当D2、D0为一时,其它为零时,音名为F;当D2、D1为一时音名为#F;当只有D3为零时其余都为一时,音名为G;与上相反情况时,音名为#G;当D3、D0为一时,其余都为零时,音名为A;当D3、D1为一时,其余为零时,音名为#A;当只有D2为零时,其余都为一时,音名为B;当D3到D0都为一时音名为休止符。
(3)程序编写方面
1、主程序:对于主程序来说,首先主要作用的就是对一个音乐盒的一个播放或者是停止状态的一个控制,通过按下播放或者是停止的按键来对播放的状态进行一个控制。
2、T2中断:T2的中断主要负责的就是曲谱的读取以及对节拍的一个控制情况,并且将曲谱转换完之后,作为T0 的一个定时器的一个初始值。
3、T0中断:T0的中断主要要实现的就是对P1.7口的点平的一次翻转,从而来获取一定的频率的输出。
三、结论
总体而言,本文所探讨的就是关于单片机音乐设计方案,总的来说本文所采用的设计方案比较简单,而且在设计过程中采用的极少的硬件,并且在编码的方式上面采用的是音节同节拍的一个混排的方式,这样做的好处就在于能够极大地节省内存的空间。而且可以根据个人的兴趣爱好存储多首歌曲,而且可以通过安检的一个方式来实现对
音乐盒的一个播放以及选择性的收听的功能。并且如果能够将其与计算机相连接也考虑进去的话,那么在我们现有的音乐盒的一个基础上还能够进行曲谱的一个下载功能,这样必定能够使得音乐盒的一个功能更加齐全,更加趋于完美。
参考文献:
[1]刘卫锋等.音乐与数学(J).数学通报,2005,(4).
[2]何立民.单片机高级教程(应用与设计)(M).北京:航空航天大学出版社,2000.
[3]崔葛瑾、沈雄威.数电实验“音乐播放控制电路”的设计与实现(J).实验室研究与探索,200
[4]林伸茂.8051单片机彻底研究经验篇(M).北京:人民邮电出版社,2004
[5] 何立民. 单片机高级教程. 第1版.北京:北京航空航天大学出版社,2001