1、 1 1.绪论 1.1 课题概述 基于单片机的音乐播放器可应用于 mp3,MP4,扩音器等很多方面,并可作为很多系 统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方 波信号,也可以产生包括“Do“、“Re“、“Me“-等音阶在内的各种频率声音。将各个音阶连 接在一起,便可组成一支曲子或是演奏一段旋律。基于这个思想,我设计了一款特殊的“ 音乐播放器“,本播放器可实现播放、暂停、复位等功能。为了体现乐曲播放过程中的动态 效果,增加了 1 只 LED,作随机闪烁以指示旋律的节奏。由于时间及条件限制,本设计实 现了一种简单的音乐播放器,其核心器件采用 AT89C51 单片
2、机,本播放器具有电路简单, 功能强大,易于拓展等特点。在此基础上,可以添加按键,LED 显示屏等模块,实现切换 歌曲,歌名显示,动感音乐屏等功能。 2.系统硬件原理及设计 2.1 硬件电路设计 2.1.1 设计目的 设计一个音乐播放器,有三个按键及控制按钮:播放/暂停、下一曲、上一曲;通过控 制按钮控制单片机,播放所要求的音乐,并通过放大电路和喇叭输出声音。同时通过 LED 灯显示器,用来显示所选曲目,该显示器在音乐播放中关闭,一曲演奏结束时,或选曲时 才显示曲目信息,从而利于操作。 2.1.2 总体电路设计 图 1 总体电路图 2 2.1.3 单片机电路设计 89C52 单片机拥有 4KB
3、的片内 ROM 和 128B 片内 RAM。ROM 和 RAM 的片外寻址 范围都是 64KB,单片机拥有 32 个并行口和一个串行口,在 89C52 单片机中存在 5 个中断 源,其中有两个外部中断源、两个内部中断源和一个串行中断源。如图 2 所示。 图 2 89C52 单片机 通过 TXAL1 与 TXAL2 输入时钟信号, 通过 p1.0p1.7 输出控制现实控制信号的显示, 有 p3.2、p3.3 与 p3.5 分别作为上一曲、下一曲和开始暂停的控制输入。 2.1.4 显示电路设计 显示电路是一个 8 位共阴极 LED 数码管。 单片机的 P1.0-P1.7 分别与数码管的 A、B、
4、C、D、E、F、G、DP 相连接。如图 3 所示。 2.1.5 晶振时间电路设计 晶振电路由两个 30pF 的电容和一个 6Mhz 的晶体振荡器组成。如图 4 所示。节点 1 与 单片机的 XTAL2 相连接,节点 2 与单片机的 XTAL1 相连接,从而为单片机提供时间信号, 为音乐的播放节拍控制提供基本时间单位:当晶体振荡频率为 6.MHz,定时器工作在方式 1 下时,若各音阶相对应的定时器计数初值为 X,则可根据下式计算 X: 166 1 / (2)(2)12 / (610 )fX 3 图 3 8 位共阴极 LED 灯 图 4 晶振电路 2.1.6 控制电路设计 控制电路,键一与 p3.
5、2 相连、键二与 p3.3 相连、键 3 与 p3.5 相连。当电键按下时 接口接低电平,从而实现对音乐播放器的控制。键一联通实现上一曲更换,键二联通实现 下一曲更换,键三联通实现开始暂停操作。如图 5 所示。 图 5 复位电路 2.1.7 输出电路设计 发声电路由数字扬声器连接 p2.0 接口实现音乐的输出,由控制电路发出操作指令后, 单片机调用相应程序,并将音乐信号由 p2.0 口输出,通过驱动扬声器发出美妙的音乐。 如图 6 所示。 图 6 输出电路 4 3. 系统软件设计 3.1 总体流程图 主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。确定 歌曲曲目后,数码管
6、再进行显示。然后,子程序对是否播放进行循环判断,得到播放中断 的指令后再进行播放。 执行播放后, 关闭数码管显示并调用查表子程序进行播放音乐。 在播放音乐的过程中, 查表子程序循环判断音乐是否结束。当音乐结束时,程序跳转回曲目识别子程序。如图 7 所示。 开始 播放音乐 数码管显示 关闭显示 判断是否结束 否 是 上一曲、下一曲 播放/ 暂停 初始化 查询歌曲曲目 等待播放 结束 图 7 总体流程图 3.2 单片机音阶代码实现 音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方波就可以 5 产生音阶,音阶与频率的关系见表 1。由于频率的倒数是周期,因此可由单片机中的定时 控制方波周期,当定时器计数溢出时产生中断。将与扬声器连接的 P1.7 取反后就可得到方 波的周期,从而达到了控制频率,即音阶的目的。 音阶与频率的关系及 如下表: 音 阶 频率 (Hz) 定时器初 值 音 阶 频率 (Hz) 定时器初 值 音 阶 频率 (Hz) 定时器初 值 1 2 3 4 5 6 7 0 131 147 165 175 196 220