电子音乐播放器的设计和制作正文大学学位论文.docx
《电子音乐播放器的设计和制作正文大学学位论文.docx》由会员分享,可在线阅读,更多相关《电子音乐播放器的设计和制作正文大学学位论文.docx(44页珍藏版)》请在冰豆网上搜索。
![电子音乐播放器的设计和制作正文大学学位论文.docx](https://file1.bdocx.com/fileroot1/2023-3/31/0c725946-da45-4f59-af69-63abaefb3881/0c725946-da45-4f59-af69-63abaefb38811.gif)
电子音乐播放器的设计和制作正文大学学位论文
摘要
本文是应用AT89S51单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C51单片机语言进行程序设计。
通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟来控制发音时间的长短。
把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳动听的音乐。
此外电路中加入了按键可以方便控制音乐的播放,有简单的显示电路和按键对应,可以清楚播放的次序。
这种控制电路结构简单,可靠性高,应用性强;软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。
单片机仿真采用的是keil软件,比较方便。
由于硬件电路的设计简单,所以焊接的时候不容易出错,而且调试方便。
对单片机和音乐爱好者有一定的借鉴价值。
关键词:
单片机;控制;音乐播放器
Abstract
ThisistheapplicationAT89S51microcontrollertheoryandcontroltheory,musicperformancecontrollerhardware,andusingC51microcontrollerprogramminglanguage.BycontrollingtheMCU’sinternaltimertogeneratesquarewavesofdifferentfrequenciestodrivespeakersmakedifferentmusicaltones,andthenusedelaytocontrolthelengthofpronunciation.Themusicintothecorrespondingtimeconstantscanbeplayedfromthesoundequipmentoutofmelodiousmusic.Inaddition,thecircuitcanbeeasilyaddedtothebuttonscontrolmusicplayback,asimpledisplaycircuitandthecorrespondingkeys,canclearlyplayorder.Thiscontrolcircuitissimple,highreliabilityandstrongapplicability;softwareprogramtoadapttoawiderangeofdifferentmusicjustfortheappropriatetimeconstantchangecanbe.MCUisusedkeilsoftwaremoreconvenient.Asthehardwaredesignissimple,itisnoteasytogowrongwhenwelding,andconvenientdebugging.OntheMCUandmusiclovershavesomereferencevalue.
Keywords:
microcontroller;control;musicplayer;
1绪论
1.1立题背景
随着信息技术革命的深入和计算机技术的飞速发展,单片机的应用越来越广泛,并逐渐发展成为一门关键的技术学科。
单片机具有一些突出优点:
体积小、重量轻、耗电少、电源单一、功能强、价格低、运行速度快、抗干扰能力强、可靠性高,所以在通信、家电、工业控制、仪器仪表、汽车等产品中都可以看到单片机的身影。
目前国内单片机的应用仍以8051系列为主。
本案是以AT89S51芯片的电路为基础,外部加上功率放大器、放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。
用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。
对于不同型号的单片机只需要相应的改变一下地址即可。
该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大单片机和音乐爱好者提供了很好的借鉴。
对于一个应用系统来说,不管在原理上如何先进、功能上如何全面、精度上如何精密,如果可靠性差、故障频繁,不能正常工作的话,那么这个系统也没有什么价值了。
因此在设计系统的过程中,对于可靠性的要求应该贯穿于每一个环节,采取各种措施来提高可靠性,以保证系统能够长时间的稳定工作。
硬件方面来说,系统所用元件的优劣和制造工艺的精细是影响可靠性的重要原因,因此应该合理购买元器件。
另外,在制造电路板时也要遭到工艺精细。
软件方面,应该尽可能的不要使用模块化的设计方案,以利于程序的编写和调试,并减少故障率,提高软件的可靠性。
鉴于以上各方面的要求,本系统采用了体积小、重量轻、功能强大、使用方便而且可靠性高的单片机为硬件电路的设计主体,即以AT89S51芯片为中心,设计并安装选曲电路、显示电路等,最终实现音乐演奏控制器的功能。
软件方面采用C51单片机语言进行程序的编写。
C51单片机语言指令简单,使用方便,初学者容易掌握,用它来对单片机进行换成是最合适的选择。
1.2音乐与音乐播放器
1.2.1音乐
(1)乐音与噪音
声音的产生源于物体的振动。
音乐中所使用的音分为“乐音”与“噪音”两种。
振动有规则,具有固定、准确音高的声音被称为乐音。
如:
钢琴、提琴、小号、大管、竹苗、扬琴等乐器所发出的声音。
振动不规则,没有固定、准确音高的声音被称为噪音。
如:
军鼓、响板、锣、木鱼、梆子等打击乐器所发出的声音。
在音乐中主要使用的是乐音。
(2)音乐音频与节拍:
大概都听见过汽笛声和钟声。
汽笛鸣响起来,由钝而尖,或由尖而钝。
“钝”在音乐上称为“低”,“尖”在音乐上称为‘高”。
这种高低的差别,便是“音质”的变化。
钟声没有高低,用力敲时声音大,不用力敲时声音小。
大就是重,小就是轻。
重就是“强”,轻就是“弱”。
这种强弱的差别,便是“音量”的变化。
学习音乐,必须明辨音乐的“质”与“量”,即音的“高低”与“强弱”。
高的声音可以强,可以弱;低的声音也可以强,可以弱。
强的声音可以高,可以低,弱的声音也可以高,可以低。
笛声是高而强的,笃声是高而弱的,牛鸣声是低而强的,蛾飞声是低而弱的。
由这四个实例,音的高低强弱不难明辨了。
据物理学,音由物体振动而发,振动愈急,音愈高,愈缓,音愈低。
又每次振动往复的范围愈广,发音愈强;愈狭,发音愈弱。
故高低是由振动数多少而生的,强弱是由振动幅度广狭而生的。
这就要求不同的音符有不同的振动频率,即音频。
音乐上音的历时,叫做“拍子”。
拍子由音的长短与强弱造成,拿步行来说,大家喜欢一步一步历时相等。
倘若一步快一步慢,就嫌吃力。
又大家喜欢左右脚略有轻重之分,“彳亍彳亍”地走。
倘若每步一样轻重“得得得”地走,就觉得气闷。
因此把音的长短强弱加以研究,使之变化复杂,而给人更快更美之感的,便是音乐艺术。
1.2.2音乐播放器
所谓音乐播放器,就是由单片机产生乐曲音符,再把乐谱翻译成计算机音乐语言,由单片机进行信息处理,再经过信号放大,由耳机或扬声器(喇叭)放出乐曲声。
我们知道,振动产生声音,振动频率不同,所发出的声音也就不同,有规律的振动发出的声音叫“乐音”,音乐由音频和节拍构成,音频即发声的频率,节拍即延时的长短,因此利用单片机的定时器/计数器产生一定频率的方波,利用延时来实现方波的延时,从而实现“1~7”的高、中、低音的发音,而后把整首歌曲编码编程并结合单片机硬件实现歌曲的演奏。
也是通过过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不用音调的音乐,再利用延迟来控制发音时间的长短,即控制音调中的节拍,把存放在存储器中的音谱中的音符对应的频率转换为定时常数,把相应的节拍转换为延时常熟,分别控制定时器产生不同频率的方波和该频率方波的持续时间,按乐谱依次进行下去,就可从放音设备中演奏出悦耳动听的音乐。
硬件方面要由按键开关实现不同音乐之间的转换,然后在数码管上有对应的显示。
音乐播放器可广泛应用于儿童音乐玩具、生日贺卡、音乐门铃或专门的音乐库。
2硬件的电路设计
2.1单片机的复位电路的设计
单片机AT89S51作为主控芯片,控制整个电路的运行。
单片机外围需要一个复位电路,复位电路的功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
复位电路的设计图如图2-1示:
图2-1单片机复位电路图
RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即两个机器周期)以上,本文使用频率为12MHZ的晶振,则复位信号持续时间应为超过2µs才能完成复位操作。
复位操作有上电复位和按键手动复位两种方式。
本文采用的是后者手动复位,
按键后:
电容器被短路放电、RST直接和VCC相连,就是高电平,此时进入“复位状态”。
松手后:
电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到RST,仍然是“复位状态”;稍后,充电结束,电流降为0,电阻上的电压也将为0,RST降为低电平,开始正常工作。
2.2显示电路设计
2.2.1LED基本理论知识
半导体发光器件包括半导体发光二极管(简称LED)、数码管、符号管、米字管及点阵式显示屏(简称矩阵管)等。
事实上,数码管、符号管、米字管及矩阵管中的每个发光单元都是一个发光二极管。
发光二极管是由Ⅲ-Ⅳ族化合物,如GaAs(砷化镓)、GaP(磷化镓)、GaAsP(磷砷化镓)等半导体制成的,其核心是PN结。
因此它具有一般P-N结的I-N特性,即正向导通,反向截止、击穿特性。
此外,在一定条件下,它还具有发光特性。
在正向电压下,电子由N区注入P区,空穴由P区注入N区。
进入对方区域的少数载流子(少子)一部分与多数载流子(多子)复合而发光。
假设发光是在P区中发生的,那么注入的电子与价带空穴直接复合而发光,或者先被发光中心捕获后,再与空穴复合发光。
除了这种发光复合外,还有些电子被非发光中心(这个中心介于导带、介带中间附近)捕获,而后再与空穴复合,每次释放的能量不大,不能形成可见光。
发光的复合量相对于非发光复合量的比例越大,光量子效率越高。
由于复合是在少子扩散区内发光的,所以光仅在靠近PN结面数μm以内产生。
理论和实践证明,光的峰值波长λ与发光区域的半导体材料禁带宽度Eg有关,即
λ≈1240/Eg(mm)
式中Eg的单位为电子伏特(eV)[4]。
若能产生可见光(波长在380nm紫光~780nm红光),半导体材料的Eg应在3.26~1.63eV之间。
比红光波长长的光为红外光。
现在已有红外、红、黄、绿及蓝光发光二极管,但其中蓝光二极管成本、价格很高,使用不普遍。
7段LED数码管,是在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的相应电极,点亮相应的点划来显示出0-9的数字。
图2-2LED显示器
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
图2-2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。
而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它字符的显示与此类同。
2.2.2发光二极管的检测
1.普通发光二极管的检测
(1)、用万用表检测。
利用具有×10kΩ挡的指针式万用表可以大致判断发光二极管的好坏。
正常时,二极管正向电阻阻值为几十至200kΩ,反向电阻的值为∝。
如果正向电阻值为0或为∞,反向电阻值很小或为0,则易损坏。
这种检测方法,不能实地看到发光管的发光情况,因为×10kΩ挡不能向LED提供较大正向电流。
如果有两块指针万用表(最好同型号)可以较好地检查发光二极管的发光情况。
用一根导线将其中一块万用表的“+”接线柱与另一块表的“-”接线柱连接。
余下的“-”笔接被测发光管的正极(P区),余下的“+”笔接被测发光管的负极(N区)。
两块万用表均置×10Ω挡。
正常情况下,接通后就能正常发光。
若亮度很低,甚至不发光,可将两块万用表均拨至×1Ω若,若仍很暗,甚至不发光,则说明该发光二极管性能不良或损坏。
应注意,不能一开始测量就将两块万用表置于×1Ω,以免电流过大,损坏发光二极管。
(2)、外接电源测量。
用3V稳压源或两节串联的干电池及万用表(指针式或数字式皆可)可以较准确测量发光二极管的光、电特性。
如果测得VF在1.4~3V之间,且发光亮度正常,可以说明发光正常。
如果测得VF=0或VF≈3V,且不发光,说明发光管已坏。
2.红外发光二极管的检测
由于红外发光二极管,它发射1~3μm的红外光,人眼看不到。
通常单只红外发光二极管发射功率只有数mW,不同型号的红外LED发光强度角分布也不相同。
红外LED的正向压降一般为1.3~2.5V。
正是由于其发射的红外光人眼看不见,所以利用上述可见光LED的检测法只能判定其PN结正、反向电学特性是否正常,而无法判定其发光情况正常否。
为此,最好准备一只光敏器件(如2CR、2DR型硅光电池)作接收器。
用万用表测光电池两端电压的变化情况。
来判断红外LED加上适当正向电流后是否发射红外光。
2.2.3数码管与单片机的简单接口实验
图2-3为实验电路图,我们使用AT89S51单片机并行口P2.0-P2.7直接与LED数码管的"a-f"引脚相连,值得一提的是,AT80S51并行口的输出驱动电流并非很大,为使LED有足够的亮度,LED数码管应选用高亮度的器件。
AT89S51还可选用C51系列的其它单片机,只要它们的指令系统兼容C51即可正常运行,程序可直接移植,例如选用低价Flash型的AT89C1051等,它们的ROM可反复擦写,非常适合作实验用途。
图2-3LED与单片机连接实验图
2.3单片机的振荡电路的设计
在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
除使用晶体振荡器之外,如对时钟频率要求不高,还可以用电感或陶瓷谐振器代替。
电路中的电容C1和C2一般取30PF左右,而晶体的振荡频率范围通常是1.2MHZ到12MHZ,晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也快。
但反过来运行速度快对存储器的速度要求就高。
一般情况下,使用振荡频率为6MHZ的石英晶体,12MHZ的晶体主要使用在高速运行的情况下。
本文采用12MHZ的晶振。
图2-4振荡电路
2.4控制电路设计
通常所用的按键为轻触机械开关,正常情况下按键的接点是断开的,当我们按压按钮时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而机械触点在闭合及断开的瞬间均伴随有一连串的抖动,按键的时序如下图2所示,抖动时间的长短由按键的机械特性及操作人员按键动作决定,一般为5ms~20ms;按键稳定闭合时间的长短是由操作人员的按键按压时间长短决定的,一般为零点几秒至数秒不等。
键按下
键稳定
前沿抖动后沿抖动
图2轻触按键操作时序示意图
从上面图2中我们可以看到,一次完整的击键过程,包含以下5个阶段:
1.等待阶段:
此时按键尚未按下,处于空闲阶段。
2.前沿(闭合)抖动阶段:
此时按键刚刚按下,但按键信号还处于抖动状态,这个时间一般为5~20ms。
为了确保按键操作不会误动作,此时必须有个前沿消抖动延时。
3.键稳定阶段:
此时抖动已经结束,一个有效的按键动作已经产生。
系统应该在此时执行按键功能;或将按键所对应的键值记录下来,待按键释放时再执行。
4.后沿(释放)抖动阶段:
一般来说,考究一点的程序应该在这里再做一次消抖延时,以防误动作。
但是,如果前面“前沿抖动阶段”的消抖延时时间取值合适的话,可以忽略此阶段。
5.按键释放阶段:
此时后沿抖动已经结束,按键已经处于完全释放状态,如果按键是采用释放后再执行功能,则可以在这个阶段进行按键操作的相关处理。
图2-5设置电路图
本文采用的设置电路有4个按键组成如图2-5所示,设置电路的设计是考虑到用户使用方便和便于调整等方面的因素而确定的。
由于单片机可以直接与按键进行连接,这样一来可以充分的应用单片机的软件资源,在编写程序的时候,利用一些特殊的命令实现单片机与按键的接口,这样就可以通过按键来满足所要实现的数据设置。
由于震动等原因可能使按键产生误动作,可能在使用过程中造成麻烦,这就要求在设计程序的时候,增加软件抗干扰,其一般做法是,在程序中加入延时子程序,为了使系统正常运行这个延时一般为几十微秒。
2.5LM386音频功率放大器
LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。
为使外围元件最少,电压增益内置为20。
但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。
输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。
LM386的封装形式有塑封8引线双列直插式和贴片式。
如图2-6所示:
图2-6LM386的封装
特性(Features):
静态功耗低,约为4mA,可用于电池供电;工作电压范围宽,4-12Vor5-18V;外围元件少;电压增益可调,20-200;低失真度。
LM386电源电压4--12V,音频功率0.5W。
LM386音响功放是由NSC制造的,它的电源电压范围非常宽,最高可使用到15V,消耗静态电流为4mA,当电源电压为12V时,在8欧姆的负载情况下,可提供几百mW的功率。
它的典型输入阻抗为50K。
本设计关于LM386音频功率放大器应用电路:
如图2-7所示:
图2-7LM386音频功率放大器应用电路
3软件实现
3.1音乐产生的方法
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表3.1所示:
表3.1 高中低音符与单片机计数T0相关的计数值
音符
频率(HZ)
简谱码(T值)
音符
频率(HZ)
简谱码(T值)
低1
DO
262
63628
#4
FA#
740
64860
#1
DO#
277
63731
中5
SO
784
64898
低2
RE
294
63835
#5
SO#
831
64934
#2
RE#
311
63928
中6
LA
880
64968
低3
M
330
64021
#6
932
64994
低4
FA
349
64103
中7
SI
988
65030
#4
FA#
370
64185
高1
DO
1046
65058
低5
SO
392
64260
#1
DO#
1109
65085
#5
SO#
415
64331
高2
RE
1175
65110
低6
LA
440
64400
#2
RE#
1245
65134
#6
466
64463
高3M
1318
65157
低7
SI
494
64524
高4
FA
1397
65178
中1
DO
523
64580
#4
FA#
1480
65198
#1
DO#
554
64633
高5
SO
1568
65217
中2
RE
587
64684
#5
SO#
1661
65235
#2
RE#
622
64732
高6
LA
1760
65252
中3
M
659
64777
#6
1865
65268
中4
FA
698
64820
高7
SI
1967
65283
如表3.2所示:
音乐的音拍,一个节拍为单位(C调)
表3.2音乐的音拍
曲调值
DELAY
曲调值
DELAY
调4/4
125ms
调4/4
62ms
调3/4
187ms
调3/4
94ms
调2/4
250ms
调2/4
125ms
表3.3节拍与节拍码对码
节拍码
节拍数
节拍码
节拍数
1
1/4拍
1
1/8拍
2
2/4拍
2
1/4拍
3
3/4拍
3
3/8拍
4
1拍
4
1/2拍
5
1又1/4拍
5
5/8拍
6
1又1/2拍
6
3/4拍
8
2拍
8
1拍
A
2又1/2拍
A
1又1/4拍
C
3拍
C
1又1/2拍
F
3又3/4拍
对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。
发音部分代码在程序中实现,靠单片机的一个管脚输出,考虑到声音可能不够大所以我们加入了功放电路,利用LM386来对声音信号进行放大。
音频输出信号由AUDOUT引出,信号可经功放电路LM386输出到扬声器或耳机。
电路如图3-1所示。
图3-1放音电路
3.2程序设计流程图
图3-2流程图
3.3定时器/计数器的选择
3.3.1定时器的选择(本文选择定时器T0)
1、定时方法:
在单片机的控制应用中,定时是必不可少的,可供选择的方法有:
①、软件定时
软件定时是靠执行一个循环程序以进行时间延迟。
软件定时的特点是时间精确,且不需要外加硬件电路。
但软件定时要占用CPU,增加CPU开销,因此软件定时的时间不宜太长。
此外,软件定时方法在某些情况下无法使用。
②硬件定时
对于时间较长的定时,常使用硬件电路完成。
硬件定时方法的特点是定时功能全部由硬件电路完成,不占CPU时间。
但通过改变电路中的元件参数来调节定时时间,在使用上不够灵活方便。
③可编程定时器定时
这种定时方法是通过对系统时钟脉冲的计数来实现的。
计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便。
此外,由于采用计数方法实现定时,因此可编程定时器有兼有计数功能,可以对外来脉冲进行计数。
3.3.289S51定时功能及工作方式选择
①定时功能:
定时功能实际上是通过计数来实现的,不过此时的计数脉冲来自单片机内部。
即每个机器周期产生一个计数脉冲。
也就是每个机器周期计数器加1。
由