基于AT89C52的音乐播放器课程设计报告分析
- 格式:doc
- 大小:1.05 MB
- 文档页数:19
湖南商学院课程设计题目基于单片机的音乐播放器设计学生姓名学号学院专业班级指导教师职称年月目录摘要: (1)关键词: (1)1设计任务 (1)2 总体设计方案 (1)2.1电路图原理 (2)3各单元电路的设计 (2)3.1晶振时间电路设计 (2)3.2输入电路设计 (3)3.3输出电路设计 (3)4 元器件的选择 (4)4.1单片机 (4)4.2晶振 (6)4.3三极管 (6)4.4蜂鸣器 (7)5 电路的仿真分析 (8)5.1电路的组装 (9)5.2电路的调试 (10)6 心得体会 (10)参考资料 (11)附录1 :元件清单 (12)附录2 :音乐播放器系统主程序源代码 (12)基于单片机的音乐播放器设计摘要:本设计是基于AT89C52单片机的音乐播放器的程序设计。
该音乐播放器是一个依据单片机技术原理,通过PROTEUS仿真软件对硬件电路进行仿真制作以及利用KEIL软件对音乐播放器源程序进行C语言编译,而设计制作出的一个多功能数字音乐播放器。
该音乐播放器通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐。
该程序通过把乐谱转化成相应的定时常数来驱动发音设备演奏出悦耳动听的音乐。
本音乐盒一共设计了五首歌曲,音乐播放器可以循环播放五首歌曲片段,音乐播放器也可以通过按键选择播放上一首或者下一首。
关键词:音乐播放器;AT89C52;KEIL;PROTEUS。
1设计任务●(1)音乐播放器可以循环播放五首歌曲片段,五首歌分别为《梁祝》、《新年好》、《两只老虎》、《生日快乐》和《隐形的翅膀》。
●(2)音乐播放器也可以通过按键选择播放上一首或者下一首。
2 总体设计方案根据音乐播放器系统的功能与组成,进行系统分析,系统除单片机核心部分外还需要与按键连接以接收输入指令,通过连接扬声器使其发出音乐。
图1 电路框架图2.1 电路图原理开始要定义音频输出端口,以及每首歌的入口地址;然后对定时器初始化,确定工作方式,赋初值,开放中断,启动定时器工作;对音频输出端口初始化;设置音节起始位置和节拍间距,把音节和节拍的入口地址信息存放在固定存储单元中;将取出的音符数+节拍数保存在存储单元中;并循环读取歌曲的节拍编码;并由中断来控制音乐的播放到上一曲,或者下一曲。
3各单元电路的设计3.1晶振时间电路设计晶振电路由两个30pF的电容和一个12Mhz的晶体振荡器组成。
晶振电路如图3所示。
节点1与单片机的XTAL2相连接,节点2与单片机的XTAL1相连接,从而为单片机提供时间信号,为音乐的播放节拍控制提供基本时间单位。
当晶体振荡频率为12MHz,定时器工作在方式1下。
在音乐播放器实际设计时,由于所选用的单片机开发板上已具备晶振电路,故而不再另外焊接晶振电路,而是直接接入使用。
图2 晶振电路设计3.2输入电路设计歌曲选择电路由按键上一曲(P3.2接口)和按键下一曲(P3.3接口)连接单片机组成,且单片机为低电平时按键按下。
输入电路如图3所示。
图3 输入电路设计3.3 输出电路设计发声电路由数字扬声器连接P2.3接口实现音乐的输出,由控制电路发出操作指令后,单片机调用相应程序,并将音乐信号由P2.3口输出,通过三极管放大电流以驱动扬声器发出美妙的音乐,输出电路如图4所示。
图4 输出电路设计4 元器件的选择此次设计中用到了AT89S52单片机、晶振、三极管、蜂鸣器等等。
4.1单片机AT89C52的工作原理:AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。
RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。
P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
主要性能:1、兼容MCS51指令系统2、8kB可反复擦写(大于1000次)Flash ROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
[图5 单片机引脚排列4.2晶振晶振作用:给单片机正常工作提供稳定的时钟信号。
原理:在石英晶体的两个极板上加一个电场,晶片会产生机械变形,对极板施加机械力使其变形,又会在极板上产生相应的电荷,这叫压电效应。
如果在两个极板上加上交变的电压,晶片便会产生机械变形震荡,同时这种机械震荡还会产生交变的电场(比较的微小),但是当外加交变的电压的频率与晶片固有的频率(由其形状和尺寸决定)相等时,机械振动的幅度会加剧,产生交变电场也增大。
叫做压电谐波。
即使去掉晶振,电路照样的能振荡,并且如果把那两个电容改成可调电容的话也能得到想要的某个频率,那还要晶振干什么:晶振、陶瓷谐振槽路、RC振荡器以及硅振荡器是适用于微控制器的四种时钟源。
针对具体应用优化时钟源设计依赖于以下因素:成本、精度和环境参数。
RC振荡器能够快速启动,成本也比较低,但通常在整个温度和工作电源电压范围内精度较差,会在标称输出频率的5%至50%范围内变化;但相对RC振荡器而言,基于晶振与陶瓷谐振槽路的振荡器通常能提供非常高的初始精度和较低的温度系数。
4.3 三极管该设计选用的三极管是NPN型8050,三极管最基本的作用是放大作用,它可以把微弱的电信号变成一定强度的信号,当然这种转换仍然遵循能量守恒,它只是把电源的能量转换成信号的能量。
三极管有一个重要参数就是电流放大系数β。
当三极管的基极上加一个微小的电流时,在集电极上可以得到一个是注入电流β倍的电流,即集电极电流。
集电极电流随基极电流的变化而变化,并且基极电流很小的变化可以引起集电极电流很大的变化,这就是三极管的放大作用。
如图6为NPN8050的结构。
图6 NPN8050结构图4.4蜂鸣器蜂鸣器的作用就是输出音频。
将电信号转换成声音信号,以此来发出声音。
发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。
首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。
对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。
另外,音符的频率有所不同。
基于上面的内容,这样就对发音的原理有了一些初步的了解。
音符的发音主要靠不同的音频脉冲。
利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P0.3引脚的输出音乐。
只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
如下表1。
表1 简谱对应的简谱码、T 值、节拍数5 电路的仿真分析图7 Proteus 仿真原理图简谱 发音 简谱码 T 值 节拍码 节拍数 5 低音SO 1 64260 1 1/4拍 6 低音LA 2 64400 2 2/4拍 7 低音TI 3 64524 3 3/4拍 1 中音DO 4 64580 4 1拍 2 中音RE 5 64684 5 1又1/4拍 3 中音MI 6 64777 6 1又1/2拍 4 中音FA 7 64820 8 2拍 5 中音SO 8 64898 A 2又1/2拍 6 中音LA 9 64968 C 3拍 7 中音TI A 65030 F 3又3/4拍1 高音DO B 650582 高音RE C 651103 高音MI D 651574 高音FA E 651785 高音SOF 652175.1 电路的组装图8 电路组装元器件排布图图9电路组装引脚连线图5.2 电路的调试播放器一开始没有加三极管,蜂鸣器由单片机输出的高电平驱动发生声音,但由于单片机输出的电流很小,导致声音特别小,后来向学姐和老师请教,得出两种方法可以是蜂鸣器的声音放大。
一种是将蜂鸣器的正极直接接5V电源,负极接单片机输出端口。
另一种是在原来电路的基础上,加上NPN三极管8050,基极接单片机输出端口,集电极接5V电源,发射极接蜂鸣器的正极。
通过不断的调试,很好的实现了循环播放和上下选曲的功能,当电源接通但是没有开关打输入选择歌曲上一曲还是下一曲时,播放自动播放曲目1到曲目5循环播放。
当按下开关,则会一条过正在播放的曲目,播放上一曲,或者下一曲。
按下抚慰开关后,歌曲将又从第一首歌曲开始播放。
6 心得体会本学期学习单片机的时间只有十几周时间,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,让我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。
在这几天课设的时间里,实验室的氛围对我们的影响很大,大家一起努力,这也是我们能完成课设的动力。
另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误,克服困难,我们也是这么做的,这在课设中十分重要。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。
这次课程设计通过自己的努力,同学的帮助,还有老师的辛勤指导下,最终顺利完成了。