收藏 分享(赏)

基于单片机的简易音乐播放器的设计.doc

上传人:j35w19 文档编号:6888641 上传时间:2019-04-25 格式:DOC 页数:32 大小:469KB
下载 相关 举报
基于单片机的简易音乐播放器的设计.doc_第1页
第1页 / 共32页
基于单片机的简易音乐播放器的设计.doc_第2页
第2页 / 共32页
基于单片机的简易音乐播放器的设计.doc_第3页
第3页 / 共32页
基于单片机的简易音乐播放器的设计.doc_第4页
第4页 / 共32页
基于单片机的简易音乐播放器的设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、天 津 天 狮 学 院毕 业 实 践 报 告题目:基于单片机的简易音乐播放器的设计二级学院 电子与计算机学院 专 业 电子信息工程技术 学生姓名 卫小丽 指导教师 苗艳华 2012 年 06 月 01 日 摘 要 本文是基于单片机控制的音乐播放器的设计, 它可以实现音乐的播放,可以通过功能键来选择乐曲,播放或暂停。共有 K1到 K4四个功能键,K1-K3分别播放三首不同音乐,K4为暂停键。主控芯片采用 AT89C52,辅以必要的电路,采用 C 语言进行编程,编程后利用 KEIL C51来进行编译,再将生成的 HEX 文件装入芯片中,采用 proteus 软件来仿真,检验功能得以正常实现。通过烧

2、写不同的程序,可以实现多首不同音乐的更换。本文将围绕基于单片机的自动音乐播放器,介绍一些关于单片机的基础知识、模块电路设计、音乐播放器的原理(其中包括了音乐编程原理)、以及仿真软件的使用。关键词:单片机 AT89C52,音乐播放,proteus 目 录一、功能介绍 11.1 功能特点 11.2 原理说明 1二、硬件电路设计 12.1 系统方案设计 12.2 模块电路的设计 22.2.1 AT89C52 型单片机的介绍 .22.2.2 单片机最小系统的设计 .42.2.3 蜂鸣器电路设计 .52.2.4 按键电路设计 .62.2.5 LED 显示电路设计 .6三、软件设计 73.1 系统主模块流

3、程图 .73.2 音乐产生原理 .73.2.1 音调 .83.2.2 节拍 .9四、PROTEUS 仿真应用 104.1 PROTEUS 软件简介 104.2 仿真结果 .11五、结论 .12参考文献 .13致谢 .14附录 115附录 2161一、功能介绍1.1 功能特点本设计是一个基于 AT89C52 系列单片机的音乐播放器,依据单片机技术原理,通过硬件电路设计以及软件编译,设计出一个多功能音乐播放器。该音乐播放器主要由按键电路、晶振电路、复位电路以及扬声器组成。最后利用 proteus 对音乐播放器进行仿真调试。1.2 原理说明当按键按下时,判断键值,启动计数器 T0,产生一定频率的脉冲

4、,驱动蜂鸣器,放出乐曲。其中:1) 硬件电路中用 P2.0-P2.3 控制 4 个按键,K1-K3 分别控制三首音乐,K4 为停止键;2)P1.0-P1.3 为 LED 显示,四个发光二极管分别对应四个按键,显示所播放歌曲;3)用 P3.7 口控制蜂鸣器;4)电路为 12MHz 晶振频率工作,起振电路中 C1,C2 均为 22pf。二、硬件电路设计 2.1 系统方案设计硬件方框图如图2-1所示。主要由单片机核心芯片 AT89C52,LED 发光二极管,蜂鸣器,晶振电路,复位电路组成,由引脚输出定时器产生的各种固定频率的方波信号,然后由蜂鸣器产生各种频率的声音。由于该方案中使用内部振荡电路,XT

5、AL1、XTAL2引脚外接石英晶体和微调电容构成晶振电路。2图2-1 设计方框图2.2 模块电路的设计 2.2.1 AT89C52 型单片机的介绍AT89C52 是美国 Atmel 公司生产的低功耗、高性能 CMOS 8 位单片机,其管脚图如图 2-2 所示。片内含 8KB 的可反复檫写的程序存储器和 256B 的随机存取数据存储器(RAM),器件采用 Atmel 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51指令系统,片内配置通用 8 位中央处理器(CPU)和 Flash 存储单元,功能强大的AT89C52 单片机可灵活应用于各种控制领域。图 2-2 AT89C52 引脚图主要性

6、能参数如下:1) 与 MCS-51 产品指令和引脚完全兼容;32) 8K 字节可重擦写 Flash 闪速存储器;3) 1000 次擦写周期;4) 全静态操作:0HZ-24HZ;5) 三级加密程序存储器;6) 256*8 字节内部 RAM;7) 32 个可编程 I/O 口线;8) 3 个 16 位定时/计数器;9) 8 个中断源;10) 可编程串行 UART 通道;11) 低功耗空间和掉电模式。各引脚功能如下:1.时钟引脚XTAL1:接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部时钟发声器的输入端。X

7、TAL2:接外部晶体的另一个引脚。在单片机内部,它是构成内部振荡器的反相放大器的输出端。当采用外部振荡器时,此引脚应悬浮不连接。注意:如果采用片内的振荡电路,要在单片机的引脚 XTAL1和 XTAL2之间连接一个石英晶体或陶瓷谐振器,并接两个电容到地。2.控制线或其他电源的复位引脚RST:复位输入端。ALE/ :当访问外部寄存器时,地址锁存允许的输出电平用于锁存地址的低PROG位字节。:外部程序存储器的选通信号。在有外部程序存储器取指令期间,每个机SEN器周期两次 有效。但在访问外部数据存储器时,这两次有效的 信号将不出PSEN现。/Vpp:当 保持低电平时,则在此期间访问外部程序存储器(00

8、00H-FFFFH),不管是否有内部程序存储器。注意要加密方式1时, 将内部锁定为RESET;当 断保持高电平时,此间访问内部程序存储器。在 Flash 编程期间,此管EN脚也用于施加12V 编程电源(Vpp)。3. 输入/输出引脚P0口:P0口为一个8位漏极开路双向 I/O 口,每脚可吸收8个 TTL 门电流。当 P1口的管脚第一次写“1”时,被定义为高阻输入。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 Flash 编程时,P0口作为原码输入口,当 Flash4进行校验时,P0口输出原码,此时,P0口外部必须被拉高。P1口:P1口为一个内部提供上拉电阻的8位双向

9、I/O,P1口缓冲器能接收输出4个TTL 门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 Flash 编程和校验时,P1口为第八位地址接收。P2口:P2口为一个内部提供上拉电阻的8位双向 I/O,P2口缓冲器可接收,输出4个 TTL 门电流,当 P2口被写“1”时,其管脚被内部上拉电阻拉高。且作为输入。并因此作为输入时,P2口的管脚被外部拉底,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部8

10、位地址数据校验时,P2口输出其特殊功能起存器的内容。P2口在 Flash 编程和校验时,接收高8位地址信号和控制信号。P3口:P3口为一个内部提供上拉电阻的8位双向 I/O,可接收输出4个 TTL 门电流。当 P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为一些特殊功能口,如表2-1所示。表2-1 P3口特殊功能口 管脚 备选功能P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 0INT外部中断0P3.3 1外部中断1P3.4 T0 计时器0外部输入P3.5 T1 计时器1外部输

11、入P3.6 WR外部数据存储器写选通P3.7 D外部数据存储器读选通2.2.2 单片机最小系统的设计单片机的最小系统设计包括:时钟电路、复位电路,如图 2-3 所示。在内部方式时钟电路中,必须在 XTAL1 和 XTAL2 引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常 C1 和 C2 一般取 30pF,晶振的频率取值在 1.2MHz12MHz 之间。复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。其中,电容的大小是 10uF,电阻的大小是 10k。5图2-3 单片机最小系统2.2.3 蜂鸣器电路设计蜂鸣器发声原理是电流通过电磁线圈,使

12、电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机 IO 引脚输出的电流较小,单片机输出的 TTL电平基本上驱动不了蜂鸣器,因此需要增加一个功率放大的电路。由单片机 P3.7 接口外接一个 1K 电阻和两个 NPN 型三极管来驱动蜂鸣器。其主要任务是输出大信号和大功率,对音频信号有效不失真的进行放大以推动扬声器发出声音,原理图如图 2-4 所示。图2-4 蜂鸣器电路62.2.4 按键电路设计采用 4 个按钮来实现选择歌曲播放,由 P2.0-P2.3 控制,外接四个 10K 的上拉电阻,并通过三个与门接 P3.2 实现外部中断。原理图如图 2-5 所示。图 2-5 按键电路

13、2.2.5 LED 显示电路设计四个发光二极管分别由 P1.0-P1.3 控制,播放第一首歌时 D1 亮,第二、第三首歌时 D2、D3 亮,停止时 D4 亮,其中电阻为 220 。原理图如图 2-6 所示。图 2-6 LED 显示电路7三、软件设计3.1 系统主模块流程图主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。本系统的主模块程序框图如图 3-1 所示。开始系统初始化,判断是否有键按下,当 K1 键按下时,播放第一首歌,K4 键按下停止播放,并返回到系统初始化,再判

14、断是否有键按下。K2、K3 键也分别控制两首歌的播放。图 3-1 系统主模块流程图3.2 音乐产生原理单片机发音原理:单片机演奏音乐基本是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音,但一定要弄清楚两个概念即可,也就是“音调”和“节拍” 。8音调:表示一个音符唱多高的频率。节拍:表示一个音符唱多长的时间。3.2.1 音调在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央 C 上方的 A 音定为标准音高,其频率 f=440Hz,其余与其比较。f1 和 f2 为两个音符,当这两个音符的频率相差一倍时,也即 f2=2f1 时,则称 f2 比 f1

15、 高一个倍频程。在音乐中 1 与.,2 与.,正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有 12 个半音。以 1i 八音区为例,12 个半音是:11、12、22、23、34、44,45、5 一5、56、66、67、7i 。这 12 个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。确定一个频率所对应的定时器的定时初值的方法:以标准音高 A 为例:标准音高 A 的频率 f = 440 Hz,其对应的周期为: T = 1/ f = 1/440 =2272s。因此,需要在单

16、片机 I/O 端口输出周期为 T =2272s 的方波脉冲,如图 3-2 所示。图 3-2 方波脉冲由上图可知,单片机上对应蜂鸣器的 I/O 口来回取反的时间应为:t = T/2 = 2272/2 = 1136s这个时间 t 也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式 1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定:t = 12 *(T ALL THL)/ f 0式中 TALL = 216 = 65536,THL 为定时器待确定的计数初值。因此定时器的高低计数器的初值为:TH = THL / 256 = (

17、TALL t* f0/12) / 256TL = THL % 256 = ( TALL t* f0/12) %2569将 t=1136s 代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高 A 在单片机晶振频率 f0=12Mhz,定时器在工作方式 1 下的定时器高低计数器的予置初值为 :TH440Hz = (65536 1136 * 12/12) /256 = FBHTL440Hz = (65536 1136 * 12/12)%256 = 90H根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。3.2.2 节拍音符的节拍我们可以举例来说明。在一张乐谱中,我

18、们经常会看到这样的表达式,如 1=C 、1=G 等等,这里 1=C,1=G 表示乐谱的曲调,和我们前面所谈的音调43有很大的关联, 、 就是用来表示节拍的。以 为例加以说明,它表示乐谱中以四443分音符为节拍,每一小结有三拍。如图 3-3 所示。图 3-3 音乐节拍其中 1 、2 为一拍,3、4、5 为一拍,6 为一拍共三拍。1 、2 的时长为四分音符的一半,即为八分音符长,3、4 的时长为八分音符的一半,即为十六分音符长,5 的时长为四分音符的一半,即为八分音符长,6 的时长为四分音符长。那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为 400500ms 。我们以一拍

19、的时长为 400ms 为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为 200ms,十六分音符的时长就为 100ms。可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参

20、数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的10休止符,一般将其音调参数设为 FFH,FFH ,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为 00H 来表示。下面给出部分音符(三个八度音)的频率以及以单片机晶振频率 f0=12Mhz,定时器在工作方式 1 下的定时器高低计数器的予置初值,如下表 3-1 所示。表 3-1 音符频率与定时器初值关系表C 调音符1 1# 2 2# 3 4 4# 5 5# 6 6#

21、7频率Hz262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FBCF FC0BC 调音符1 1# 2 2# 3 4 4# 5 5# 6 6# 7频率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C 调音符1 1# 2 2# 3 4 4# 5 5# 6 6# 7

22、频率Hz1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1791TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02四、Proteus 仿真应用4.1 Proteus 软件简介Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它 EDA 工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,

23、但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus 是世界上著名的 EDA 工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模11型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086 和 MSP430 等,2010年又增加了 Cortex 和 DSP 系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持 IAR、

24、Keil 和 MPLAB 等多种编译器。4.2 仿真结果当按下 K1 键时,显示部分电路中 D1 灯亮,同时播放第一首歌曲,仿真图如图 4-1 所示。K4 键为停止键,当 K4 键按下时,同时 D4 灯亮,停止播放歌曲,仿真图如图4-2 所示。图 4-1 仿真效果图 112图 4-2 仿真效果图 2五、结论经过这次毕业设计,我觉得自己学到了不少东西。归纳起来,主要有以下几点: 1、通过这次毕业设计,我能将三年所学到的专业知识与实践相联系,将所学到的知识充分运用到本次设计中。同时,我也认识到自己知识上不足的地方,体会到了所学理论知识的重要性,知识掌握得越多,设计得就更全面、更顺利、更好。2、进一

25、步熟悉了单片机的知识。通过本次设计,我对单片机的基本原理、内部结构、各引脚功能、定时器和中断的应用都有了更深刻的理解。并且,能够以单片机为基础元件设计一个简单的系统。3、提高了自己查找资料的能力。在设计过程中,我碰到了一些暂时无法解决的问题,于是我通过上网查阅和图书馆借阅资料,或是通过与老师同学交流一步步地解决了。从中我懂得了我们这个专业的知识面相当广泛,同时要懂得与他人交流意见,积极听取别人的建议,懂得团队合作的重要性。13参考文献1 郑郁正. 单片机原理及应用. 四川大学出版社,2003.2 谭浩强. C 程序设计(第二版). 清华大学出版社,1999.3 王晓君,安国臣. MCS51 及

26、兼容单片机原理与选型. 北京:电子工业出版社,2003.4 何立民. MCS-51 系列单片机应用系统设计M. 北京航空航天大学出版社,19905 张毅刚、彭喜元、姜守达、乔立岩. 新编 MCS-51系列单片机应用设计M. 哈尔滨工业大学出版社,2003.6.6 王东锋. 单片机 C 语言应用 100 例. 北京:电子工业出版社,2009.7 王松武,于鑫,武思军. 电子创新设计与实践. 国防工业出版社,2005.8 张毅坤. 单片微型计算机原理及应用. 西安:西安电子科技大学出版社,2005.9 房建东,高胜利. 单片机课程设计实例指导. 北京航空航天出版社,2002.10 沙占有,王彦朋.

27、 单片机外围电路设计. 电子工业出版社,2009.11 袁兆山. 音乐播放器. 电气自动化, 2006, 23(3): 53-55.12 侯静. 简易的单片机音乐控制. 电子信息工程,2007, 34(2): 126-128.14致谢毕业设计是大学中学习和实践的一个重要环节。它综合的考察了一个学生对过去所学的知识的运用能力和对新知识吸收、消化能力,通过设计,可以培养我们独立思考、开拓创新、勇于探索的能力。在指导老师的精心指导下,我查阅了大量的文献资料,经过三个月的学习、讨论、设计、调试,最终完成了设计方案。通过设计,我们不仅掌握了设计的基本步骤,还学会了科学系统的设计方法,拓宽了知识面。在本课

28、题设计中,为了熟悉课题,我通过图书馆、互联网学习查阅了许多相关的资料,加强了自学能力并且有意识地将掌握知识归纳总结运用到实践中来。在这次毕业设计过程当中,离不开学校指导老师对我们的全力支持。他们尽最大努力为我们的毕业设计提供好的条件,以使我们的毕业设计能够顺利完成。在此,我特别感谢苗艳华老师。苗老师在本次设计中给与了我很大的帮助,在理论上使我有了良好的基础,对整个设计有了清楚的思路。在设计过程中给我提出了许多宝贵的意见,并且帮助我一起解决设计中遇到的问题,为本次毕业设计耗费了许多的心血。同时,我也要感谢在设计中给予我支持的其他老师和同学!15附录 1整机原理图16附录 2#ifndef uch

29、ar#define uchar unsigned char#endif#ifndef uint#define uint unsigned int#endif#include #include #include #include #define ledd P1/*外部函数声明*/extern void int0_init(); /外部中断 0 初始化/extern void key_init(); /按键初始化extern uchar key_scan(); /键值扫描/*变量声明*/sbit led=P10;/*延时子函数*/void Delay1ms(unsigned int count)u

30、nsigned int i,j;for(i=0;i0;x-)for(i=124;i0;i-);/*=27*函数名称:read_key()*函数参数:无*返回数值:*函数功能:键盘中断服务函数*函数描述:无=*/uchar8 read_key()uchar8 key,key1;key_port = 0xff;key1 = key_port;switch(key1)case 0xfe:key= 1; break;case 0xfd:key= 2; break;case 0xfb:key= 3; break;case 0xf7:key= 4; break;default:break;return key;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报