1、本设计以AT89C51单片机为核心。通过对其定时器的设定来实现音乐的播放,通过对键盘的设置可以实现人机对话,借助键盘可以向计算机系统输入程序,置数、送操作命令、控制程序的执行走向等,并最终通过LED显示器显示出播放的乐曲。重点研究内容有:单片机最小系统的设计与实现键盘电路的设计与控制扬声器控制电路的设计与实现LED显示器的驱动及显示定时初值的计算软件模块的设计与编写第2章 音乐播放器的功能与组成2.1 音乐播放器的功能基于单片机的定时和控制装置在许多行业中有着广泛的应用,而音乐播放器是其应用之一。在基于单片机的音乐播放器电路中,除了基本的单片机系统和外围电路外,还需要外部的控制和显示装置。在本
2、设计中,输入装置是按键开关,由于控制音乐播放器的运行模式,显示装置是LED七段数码管。此次设计的音乐播放器要求具有以下功能:音乐播放器按照从头到尾的顺序自动播放预先设定的14共4首乐曲,全部乐曲播放完毕则停止。音乐播放器按照从头到尾的顺序自动循环播放预先设定的全部乐曲。选定某一乐曲,随即输入选定乐曲的序列号(14),即按下14数字键之一,音乐播放器对选定的某一乐曲开始循环播放。选定某一乐曲,随即输入选定乐曲的序列号(14),即按下14数字键之一,音乐播放器就从选定的某一乐曲开始播放,按照顺序自动播放到最后一首乐曲,乐曲播放完毕则停止。当用户按下暂停键时,音乐播放器打断正在播放的某一乐曲,用户再
3、次按下暂停键时,该乐曲继续播放。当用户按下复位键时,音乐播放器终止正在播放的某一乐曲。2.2 音乐播放器的组成根据系统音乐播放器的功能要求,一个完整的音乐播放器电路相当于一个简单的单片机系统,该系统由按键开关、单片机、LED显示电路、扬声器控制电路4个方面构成。51单片机。51单片机为整个系统的核心部分,是带动整个系统工作的重要部件。键盘输入。键盘输入用来控制输入指令,发出指令至单片机,使单片机按照指令工作。扬声器。扬声器作为输出部分按照键盘给单片机的指令发出乐曲。LED显示电路。LED显示器也作为输出部分,按照键盘给单片机的指令,显示正在演奏的乐曲。音乐播放器的系统组成框图如图2-1所示:图
4、2-1 音乐播放器的系统组成框图第3章 系统总体设计与关键技术3.1 系统总体设计根据系统的功能与组成,进行系统分析,系统除CPU核心部分外还需要与键盘连接以接收输入指令,连接LED显示器将要演奏的乐曲序号显示出来,通过连接扬声器使其发出音乐。系统总体结构如图3-1所示。图3-1 系统总体结构框图3.1.1 音乐播放器的工作原理音乐播放器可利用单片机的定时器构成电子振荡器来发声。振荡器是电子乐曲播放器的声源,专门用来制造音响,也称信号发生器,其作用相当于常规乐器的琴弦、簧片、哨片。振荡器在音乐播放器的应用中有两个特点,可产生声音的频率与不同波形的振荡。通过对单片机的定时器设置不同的定时初值,可
5、发出音乐的不同音阶,通过调整振荡波形与泛音的分布,可产生和变换各种音色。在我们所设计的音乐播放器中,是通过单片机的定时器,产生不同频率的方波信号,而没有调整振荡波形,因此音乐播放器发出的声音,是矩形波产生的音响,纯粹的矩形波声音类似于单簧管的音色。一首乐曲是由音阶和节拍两大要素构成,不同音阶分别对应不同的频率,发出不同的音调,而节拍则控制发出音调时间的长短;3.1.2 音阶对应频率计数初值的计算单片机的振荡频率为fosc12MHz ,通过定时器T0溢出后对P3.0口取反产生方波,故定时器溢出时间为1/2f 。由: , 则定时初值为:以音阶“1”为例:f523 Hz,则T1/f 定时初值:用同一
6、方法可求出其它音阶所对应的频率定时初值,将其制表放在程序中,通过查表向定时器T0装入所要求的定时初值,即可产生某一音阶所对应的频率的方波信号。C调的音阶及其频率、在单片机中的定时初值对应如下:音 名 C D E F G A B简谱音阶 1 2 3 4 5 6 7频率/ Hz 262 294 330 349 392 440 494定时初值 63628 63835 64021 64103 64260 64400 64524表中序号 1 2 3 4 5 6 7频率/ Hz 523 587 659 698 784 880 988定时初值(Hex) 64580 64684 64777 64820 648
7、98 64968 65030 表中序号 8 9 10 11 12 13 14频率/ Hz 1046 1175 1318 1397 1568 1760 1967定时初值(Hex) 65058 65110 65157 65178 65217 65252 65283表中序号 15 16 17 18 19 20 213.1.3 乐曲节拍的计算取乐曲节拍的长度为0.4s ,即1拍0.4s ,由定时器T1控制延时。设置定时器T1的定时中断T50ms ,采用定时方式1。 ,则定时初值X3C0BH因此1拍0.4s8*50ms,即通过定时器T1的定时中断8次,产生8*50ms的定时,就可以满足1节拍的定时要求。
8、以此类推,通过定时中断N次,可产生N*50ms的定时以满足1/4拍、1/2拍、1拍、2拍等不同节拍的定时要求。由此可知,节拍值只能是整数值。不同节拍在单片机中的中断次数(音长)对应如下:节 拍 1/8 1/4 1/2 3/4 1 3/2 2 3 4时间长度 0.05s 0.1s 0.2s 0.3s 0.4s 0.6s 0.8s 1.2s 1.6s音长(Dec) 1 2 4 6 8 12 16 24 32音长(Hex) 01H 02H 04H 06H 08H 0CH 10H 18H 20H3.1.4 乐谱在程序中的编制将乐谱转换为代码,应包含乐曲的总长度、音阶、音长(节拍)等信息。具体设计如下:
9、(1) 将音阶代码组成一个字节,节拍代码组成一个字节,按照:音阶代码,节拍代码,音阶代码,节拍代码 的顺序,将一个乐谱转换为一定长度的代码数据表。(2) 在程序执行时顺序查此表,取出音阶代码,并根据音阶代码查频率表,以得到该音阶对应的频率,随后将对应的定时初值送定时器T0,使定时器T0产生该音阶对应的频率,并通过P3.0口输出,驱动外接扬声器发声。(3) 取出节拍代码N,由定时器T1控制延时,通过定时中断N次,产生N*50ms的定时。T0、T1启动后,根据乐谱表,某一个音阶发出相应频率的声音,并持续相应的节拍,连续起来,我们就可以听到一个完整乐曲的演奏。3.2 系统中应用的关键技术基于单片机的
10、音乐播放器在设计时需要解决以下4个方面的问题: 有关单片机中定时器的使用。 利用键盘控制实现对单片机的控制。 LED显示模块的驱动和编制。 扬声器控制电路,用于发出不同频率的音调。第四章 音乐播放器的硬件设计一个完整的音乐播放器电路相当于一个简单的单片机系统,该系统由按键开关、单片机、晶振和复位电路、LED显示电路、扬声器控制电路5个方面构成。其中,除了单片机是集成的IC芯片,而其他4个部分则需根据应用要求而设计。4.1 单片机最小系统单片机芯片,配以必要的外部器件就能构成单片机最小系统。单片机具有较强的外部扩展、通信能力,能方便地扩展至应用系统所要求的规模。当使用带ROM或EPROM的MCS
11、51系列单片机时,只要一个芯片即可构成一个单片机的最小系统。选用80C51或8051或AT89C51单片机作为主机,它们都具有4K片内ROM,128字节片内RAM,片外ROM寻址范围达64K,片外RAM寻址范围达64K,2个16位计数器,5个中断源,4个并行口,1个串行口。简易自动乐曲播放器采用单片机最小系统足以满足系统设计要求,同时要设计单片机最小系统的晶振和复位电路。4.1.1 单片机复位电路复位是单片机的初始化操作,其作用是使CPU中的各个部件都处于一个确定的初始状态,并从这个状态开始工作。当8051的ALE及 两脚输出高电平,RST引脚高电平时,单片机复位。8051单片机的复位电路有上
12、电复位和手动按钮复位两种形式,RST/VPD端的高电平直接由上电瞬间产生高电平则为上电复位;若通过按钮产生高电平复位信号称为手动按钮复位。图4-1为兼有上电复位与按钮复位的电路。图中,上电瞬间RST端的电位与Vcc相同,随着电容充电电流的减小,+5V立即加到了RST/VPD端,该高电平使8051复位。若运行过程中,需要程序从头开始执行,这只需按图4-1中的按钮即可。按下按钮则直接把+5V加到了RST/VPD端从而复位,这称为手动复位。在实际应用系统中,有些外围芯片也需要复位,如果这些复位端的复位电平要求与单片机的要求一致,则可以与之相连。4.1.2 单片机晶振电路晶振是给单片机提供工作信号脉冲
13、的,这个脉冲就是单片机的工作速度。比如 12M晶振,单片机工作速度就是每秒 12M。当然,单片机的工作频率是有范围的,不能太大,一般 24M就不上去了,不然不稳定。4.2 键盘接口电路的设计单片机应用系统中的人机对话通道是用户为了对应用系统进行干预以及了解应用系统运行状态所设置的通道。主要有键盘、显示器等通道接口。在单片机应用系统中,为了控制系统的工作状态以及向系统中输入数据,应用系统设置键盘,用于系统复位,功能转换以及数字输入。键盘的设置可以实现人机对话,借助键盘可以向计算机系统输入程序、置数、送操作命令、控制程序的执行走向等。在本次设计中键盘由P1口输入, 按键设置:14四个数字键,AF六
14、个功能键。数字键(14): 用于输入14共4首乐曲的序列号。功能键(AF): A键:乐曲从14按顺序播放B键:乐曲从14循环播放C键:循环播放某一乐曲D键:从某一乐曲开始播放至最后一首乐曲E键:暂停/播放F键:停止播放各功能键(AF)的意义与操作:A键:乐曲从14按顺序播放。当用户按下A键后,LED显示器清屏,简易自动乐曲播放器按照从头到尾的顺序自动播放预先设定的14共4首乐曲,全部乐曲播放完毕则停止。乐曲从14循环播放。当用户按下B键后,LED显示器清屏,简易自动乐曲播放器按照从头到尾的顺序自动循环播放预先设定的全部乐曲。当用户按下C键后,并选定某一乐曲,随即输入选定乐曲的序列号(14),即
15、按下14数字键之一,简易自动乐曲播放器对选定的某一乐曲循环播放。当用户按下D键后,并选定某一乐曲,随即输入选定乐曲的序列号(14),即按下14数字键之一,简易自动乐曲播放器就从选定的某一乐曲开始播放,直到乐曲播放完毕则停止。暂停/播放。当用户按下E键时,简易自动乐曲播放器打断正在播放的某一乐曲,用户再次按下E键时,该乐曲继续播放。停止播放。当用户按下F键时,简易自动乐曲播放器终止正在播放的某一乐曲。本设计中按键作为输入部分,由P1口输入。4.3 LED显示接口电路的设计在单片机应用系统中,使用的显示器主要有LED显示器(发光二极管显示器)。这种显示器成本低廉,配置灵活,与单片机接口方便。在本系
16、统的设计中采用LED显示器。LED显示器由8位LED数码管组成,用于显示系统在各种不同条件下的状态。用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态显示,按译码方式分为硬件译码和软件译码。静态显示是显示驱动电路具有输出锁存功能,单片机将要显示的数据送出后不再控制LED,直到下次显示时再传送一次新的显示数据。静态显示的数据稳定,占用CPU时间少。动态显示要CPU时刻对显示器件进行数据刷新,显示数据会有闪烁,占用的CPU时间多。 这两种显示方式各有利弊:静态显示虽然数据显示稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态显示虽然闪烁,占
17、用的CPU时间多,但使用的硬件少,能节省线路板空间。在本设计中由于显示部分比较简单,所以选用了静态显示方式,LED显示器由74LS373来驱动,为了扩展外部存储器需一块74LS373(地址锁存器) 。LED发光器件一般常用的有两类:数码管和点阵。常用的数码管一般为8字型数码管,分为A、B、C、D、E、F、G、DP八段,其中DP为小数点。数码管常用的有10根管脚,每一段有一根管脚,另外两根管脚为一个数码管的公共端,两根之间相连通。数码管从电路上来看可分为共阴和共阳两种,在本设计中用了共阳的LED。4.4 扬声器控制电路的设计扬声器控制电路用于发出不同频率的音调,是在P3.0口加一反相器再连接到喇
18、叭这样就可够成。4.5 硬件原理图通过以上分析,本次设计的音乐播放器的电路原理图如图4-4所示。图4-4 音乐播放器的原理图第 5 章 音乐播放器的软件设计软件设计的重点在于定时中断的设计、键盘控制、显示的实现、乐曲的演奏等方面。5.1 主控软件的设计与流程图主模块是系统软件的框架。本系统的主模块的程序框图可用图5-1来表示。主控模块用于控制系统的工作。该模块先初始化,接着接受到复位信号后读取键盘信号,再调用各键子程序。图5-1 主控模块的流程图主控程序主要源程序代码如下:START: MOV SP, #60HMOV TMOD, #11HMOV IE, #8AH MOV IP, #08H ;T
19、1中断优先于T0中断MOV TH1, #3CHMOV TL1, #0BH ;以上为系统初始化,T=50msW1: MOV P2, #10001110B ;等待提示FLCALL GETKEYCJNE A, #0FFH, W1 MOV A, BCJNE A, #0AH, W2LCALL KEY_A ;输入键是A,转KEY_ASJMP W1W2: CJNE A, #0BH, W3 LCALL KEY_B ;B,转KEY_BW3: CJNE A, #0CH, W4 LCALL KEY_C ;C,转KEY_CW4: CJNE A, #0DH, W5 LCALL KEY_DSJMP W1 ;D,转KEY_
20、D5.2 定时中断服务子程序的设计与流程图定时器T0 用于产生不同频率的音阶,如图5-2为定时器T0的中断服务子程序。而定时器T1控制延时来实现不同的节拍,定时时间设定为50ms,图5-3为定时器T1的中断服务子程序。图5-2 定时器T0的中断服务流程图图5-3 定时器T1中断服务流程图其程序如下所示INT_T0: CLR TR0 ;定时器0中断子程序 MOV TL0, 20H MOV TH0, 21H CPL P3.0 SETB TR0 RETI INT_T1: CLR TR1 ;定时器1中断子程序 CLR TR0 LCALL KEY_E MOV TH1, #3CH MOV TL1, #0B
21、H DJNZ 60H, OUT MOV 60H, #20OUT: SETB TR1 RETI 5.3 键盘控制模块的设计与流程图键盘控制模块分为6个功能键和读4个数字键。下面分别介绍各个键的流程图和程序: F键子模块 F键是用于实现系统复位图5-4 F键流程图 E键子模块E键用于实现对乐曲的暂停和播放图5-5 E键子程序流程图按下E键的主要源程序代码如下KEY_E: JB P3.1, L2 ;中断键盘检测 LCALL DELAY2 ;消除抖动如果是高电平就跳到L2 JNB P3.1, $ ;如果仍然是低电平就执行中断程序 MOV P2, #10000110B ;让LED显示EL3: JB P3
22、.1, $ ;检测低电平,直到低电平时才跳出该指令 LCALL DELAY2 JB P3.1, L3如果再来一个高电平才跳出中断 MOV P2,R5L2: SETB TR0 RET A键子模块图5-6 A键子程序流程图A键主要源程序代码如下:KEY_A: LCALL MUSIC1 ;乐曲我和你 LCALL MUSIC2 ;乐曲万水千山总是情 LCALL MUSIC3 ;乐曲送别 LCALL MUSIC4 ;乐曲北京欢迎您 B键子模块图5-7 B键子程序流程图B键主要源程序代码如下:KEY_B: ;B键子程序(从14循环播放)T11: LCALL KEY_A SJMP T11 D键子模块当用户按
23、下D键后,并选定某一乐曲,随即输入选定乐曲的序列号(14),即按下14数字键之一,简易自动乐曲播放器就从选定的某一乐曲开始播放。图5-8 D键子程序流程图D键源程序代码如下:KEY_D:D键子程序(从某一乐曲开始播放,播放完后停止)T2: LCALL GETWORD CJNE A, #0FFH, T2 MOV A, B CJNE A, #00H, B1 SJMP C0B1: CJNE A, #01H, B2 SJMP C1B2: CJNE A, #02H, C3 SJMP C2C0:C1:乐曲 万水千山总是情 C2:C3: 读数字键读取正在播放乐曲的序号,读取键盘后消去键盘抖动接着显示和保存数
24、据。图5-9 GETWORD子程序(读数字键0)流程图读数字键主要源程序代码如下:GETWORD:读音乐序号子程序S1: JB P1.4, S2 ;读1键 JB P1.4, S1 JNB P1.4, $ MOV P2, #11111001B ;显示1 MOV R5, #11111001B MOV A, #0FFH MOV B, #00H 5.4 演奏乐曲模块的设计与流程图演奏乐曲的流程图如图5-10所示。图5-10 演奏乐曲的流程图演奏乐曲主要源程序代码如下:MUSIC: MOV R3,#00H ;音乐解码器NEXT20: MOV A, R3 MOV DPH, 52H MOV DPL, 53H MOVC A, A+DPTR MOV R2, A JZ STOP A
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1