您当前的位置:五五电子网电子知识单元电路娱乐-游戏电路基于AT89S51芯片的多功能音乐演奏器设计 正文
基于AT89S51芯片的多功能音乐演奏器设计

基于AT89S51芯片的多功能音乐演奏器设计

点击数:7216 次   录入时间:03-04 12:02:19   整理:http://www.55dianzi.com   娱乐-游戏电路

  与传统乐器一样,电子乐器也可以演奏出优美的乐曲。实现电子乐器的硬件电路设计方法有很多,本文将介绍一种利用单片机AT89S51为主要控制器件的多功能音乐演奏器。该音乐演奏器可以实现电子琴和乐曲播放器的功能,其中电子琴可以选择不同的音色滤波器,从而演奏出钢琴、弦乐、笛音等多种音色。乐曲播放器可以按照不同的音色自动地播放乐曲,并且具有暂停/播放、自动选曲和人工选曲等多项功能。

  组成原理

      电子乐器与传统乐器一样,一般由发音、共鸣、演奏控制等三个部分组成。右图是一个以AT89S51单片机为核心的多功能音乐演奏器组成原理框图,主要由AT89S51单片机、4×4矩阵键盘控制电路、D/A转换电路、音色滤波器、音频放大电路等几部分组成。



www.55dianzi.com

    多功能音乐演奏器原理图如上图所示。

  1.键盘控制电路四输入与门CD4082BCN、按键SB0~SB15、二极管VD1~VD4、上拉电阻R1~R4组成4×4矩阵式键盘中断控制电路,其中二极管VD1~VD4的作用是:防止同时按下几个键致使单片机IO口之间短路的误操作烧坏单片机。

  2.单片机控制电路单片机AT89S51为整个音乐演奏器的控制处理中心,根据键盘控制电路送过来的控制信息,处理后通过DAC0832输出乐音。电容C1、C2、晶振B组成单片机外部振荡电路。电容C3、电阻R5、R6、按键SB16组成单片机复位电路。

  3、D/A转换电路由于音色滤波器的引入,造成响度相同而频率不同的音频信号通过青色滤波器后输出的响度不同。为了使得响度差别得以均衡,可以采用多组音色滤波器,组数越多响度差别越小。

  本文利用单片机查表的方法,对每个音调输出实行“预加重”,也就是通过D/A转换电路给每个音调输出赋—个“权”,从而可以使得每个音频信号通过音色滤波器后输出的响度相同。如图2所示,DAC0832与单片机连接成完全直通方式。其电路特点是内部的两级寄存器的输出都随输入数据变化,工作速度较快,也便于单片机控制。

  4.音色滤波器音色可以分解,也可以合成,只不过是改变其基波与谐波的成分和比例而已。分解与合成的种类是无穷的,因此,可以采用滤波法,即从谐波丰富的信号中滤去或抑制某些谐波,而获得某些音色。

  在电子乐器中,大量地采用RC低通滤波器或高通滤波器,用以提升和衰减不同频区的谐波信号。例如,笛子滤波器是电子乐器的基本滤波器。在图2中,由电阻R7~R11、电容C4~C6组成RC低通滤波器,用以模拟笛音,将高次谐波滤去。通常每八度音组采用一组这样的滤波器,使响度差别得以均衡(本文利用D/A转换电路实现均衡)。该电路中取R7-R11=10kΩ左右,C6=2C5=2C4,C4~C5=16/f,f为该组音程中最高频率。

  5.音频放大电路电容C7~C11、电位器R12、电阻R13、低压音频功放LM386组成音频功率放大器,放大通过音色滤波器的音频信号,驱动扬声器BL播放乐音。通过调节电位器R12,可以改变音量大小。



www.55dianzi.com

      1.音调有9个音区,从上至下相邻三个音区依次为低音区、中音区和高音区。例如,将第五区频率是261.63Hz的C调1音定为中音,那么低音C调1音的频率是130.81Hz,高音C调1音的频率则是523.25Hz。国际标准音中规定音A调6音的频率为440.00Hz,由此可以确定其它音符的频率值。

  根据傅里叶级数定理,任何一个非正弦的周期信号,都可以分解为基波和一系列谐波。基波决定音高,谐波的成分和比例决定音色。电子乐器的信号源应具有丰富的谐波成分,以便用来进行音色加工。对称波只有奇次谐波,没有偶次谐波。谐波分量随着谐波次数的增高衰减很快。因此,电子乐器的音源宜采用偏离正弦形远的、不对称的、谐波丰富的信号更为有利。如果演奏一般简单乐曲,只需要产生与三个音区(比如第四区至第六区)的音符对应的频率。本文根据不同音符对应的频率计算初值,利用定时器/计数器O(TO)工作方式0、定时方式,采用中断方式产生占空比为80%的周期性矩形波输出。

  2.乐曲模拟乐曲是按照一定的高低、长短和强弱关系组成的音调,在一首乐曲中,每个音符的音高和音长与频率和节拍有关。组成乐曲的每个音符的频率值和持续时间是乐曲程序发声所需要的两个数据。

  根据上面所讲的“音调的模拟”的方法,计算每个音符的频率值对应的初值,定义一个“音调表”。为了便于编写曲谱,把这个音调表独立出来。而用“1、2、3,4、5、6、7”表示唱名,“0、1、2”分别表示低音区、中音区和高音区。唱名和音区结合起来,就对应于音调表里的一个初值。据此再把唱名、音区和最小音符持续时间整数倍值定义为“乐曲表”。

  乐曲表的编写方法如下:每个音符用四位十六进制的数(即两个字节)表示,第一位(从高到低)用“1、2、3、4、5、6、7”分别表示“1、2、3,4、5、6、7”唱名(即d0、re、mi,fa、sol、la、ai等7个基本音阶)。第二位用”0、1、2”分别表示低音区,中音区和高音区。最后两位表示最小音符持续时间整数倍值。

  一乐曲表的最后一个数据可以用0FFH作为乐曲的结束符,可以用00H作为乐曲的休止符(当然也可以用其它特定值来代替)。

  知道了音调与频率、时间的关系,我们就可以按照乐曲的曲谱将每个音符的频率和持续时间定义的两个数据表---音调表和乐曲表,编写程序依次取出表中的频率值和时间值,调用程序驱动扬声器发出各种声音。乐曲播放程序流程图如右图所示。

  3.琴键模拟音符和频率之间有一定的对应关系,我们可以将键盘上的某些键和音符、频率形成一种对应关系,则可以通过键盘控制扬声器发出各种音符声音,这时键盘就变成了电子琴键盘,我们可以用它弹奏出简单的音乐。键盘程序流程图如图4所示。

  在本文电路中,SB15为电子琴和乐曲播放器功能切换键,每次按键使得电路在电子琴和乐曲播放器之间切换。在电子琴状态下,SB0~SB14对应相应的音调(读者可自行选择音区)。

  在乐曲播放器状态下,SB12为暂停/播放键、SB13为选上一首乐曲键、SB14为选下一首乐曲键。

  4.电平均衡由于音色滤波器的引入,导致对各个音调的信号有不同程度的衰减,在扬声器表现出来的是:不同的音调呈现不同的响度。为了使得音调响度差别得以均衡,可以利用D/A转换来消除响度差别。方法如下.推导所选音色滤波器转移函数,把每个音调的频率代入计算得到每个音调的增益,使得增益最小的音调对应255(本文电路选用的D/A转换器DAC0532为8位,满度为255)。按照增益与D/A转换值成反比,依次计算其它音调对应的值。

  我们可以把这些D/A转换值定义为“电平均衡表”。单片机利用查表的方法,根据不同的音调取出不同的D/A转换值,通过D/A转换和音色滤波器后,将会得到相同的响度输出。



www.55dianzi.com

    本文所介绍的多功能音乐演奏器是笔者讲授单片机课时,检验学生初学单片机掌握知识程度的课程设计项目之一,为学生以后设计实用电子乐器起到一个“抛砖引玉”的作用。该项目涵盖了单片机课程的大部分知识点,自2001年笔者首次讲授单片机课以来,该项目受到了广大爱好单片机学生的欢迎,所授课的近千名学生中绝大多数选择了该项目,并可以在该电路的基础上对功能进行扩展,例如利用数字选曲、演奏的节奏可调节、增加显示功能等。

  另外,还可以增加音色滤波器,获取不同的音色感受,图5是一种高通滤波网络。它可以通过音频中的高频成分,而将低频分量阻隔。通常取C1=32/f,式中f为要通过的最高频率。它可以得到弦乐的模拟效果。各种滤波器对信号有不同程度地衰减。不论是有源滤波网络还是无源滤波网络,必须经过无失真地放大,才能获得良好的音色效果。




本文关键字:音乐  娱乐-游戏电路单元电路 - 娱乐-游戏电路