单片机MP3播放器.doc_第1页
单片机MP3播放器.doc_第2页
单片机MP3播放器.doc_第3页
单片机MP3播放器.doc_第4页
单片机MP3播放器.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单 片 机 课 程 设 计课题名称:单片机音乐播放指导教师:张朝龙设计成员:陶开霞、何菲、汪冰冰、龚利峰摘 要基于stc89c52rc单片机的乐曲播放器的硬件设计和软件设计本系统实现了播放乐曲,并可以通过按键随时播放歌曲曲目,同时显示当前播放乐曲的编号。通过控制定时器的定时时间来产生不同频率的方波,驱动蜂鸣器发出不同音阶的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。把乐谱中的音符和相应的节拍变换为定常数和延迟常数,作为数据表格存放在存储器中。由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。当延迟时间到时,再查下一个音符的定时常数和延迟常数。依次下去,就可以自动演奏乐曲。通过实际的实验证明,该系统具有硬件设计简单,软件可调整性大,系统稳定可靠等优点。关键字: stc89c52rc 中断 频率 节拍目 录第一章 引 言4第二章 硬件设计52.1硬件原理的总体思想52.2 硬件模块52.2.1 单片机最小系统模块62.2.2 按键控制模块72.2.3 复位模块72.2.4 数码管显示模块82.2.5 蜂鸣器驱动模块8第三章 软件设计93.1 音乐解码原理93.1.1 利用 i/o 口发声原理93.1.2 音乐基本知识93.2 软件基本流程图113.3 程序源代码11第一章 引 言简简单单的几个音符,却展现了它奇特多彩的个性,呈现出一个色彩斑斓的世界。音乐的基本要素是指构成音乐的各种元素,包括音的高低、音的长短、音的强弱和音色。由这些基本要素互相结合,形成音乐的常用的“形式要素”,例如:节奏、曲调、和声,以及力度、速度、调式、曲式、织体等。近十几年来,单片机作为微计算机一个很重要的分支,应用广泛,发展迅速,已经对人类社会产生了深远的影响。单片机具有体积小、重量轻、耗能省、价格低可靠性和通用灵活性等特点,在我国已经得到广泛的应用。如汽车、航空、电话、传真、视频等,很多行业设计自动控制情况下,通常会涉及单片机技术。本次毕业设计内容是基于单片机音乐播放器,“单片机音乐播放器”是一个比较贴近实际生活的题目,也有一定的趣味性。因此,我们对设计始终保持了较浓的兴趣,设计中始终以贴近实际为原则,包括硬件电路的可行性,软件程序的编译运行的可靠性,电路的成本价格等都做了相应的考虑。单片机利用定时器可以产生各种固定频率的方波信号,也可以产生包括do、re、me-等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。基于这个思想,本设计了一款特殊的音乐播放器,其核心器件采用stc89c52rc单片机。播放器具有电路简单,功能强大等特点。16第二章 硬件设计2.1硬件原理的总体思想将蜂鸣器接在p1.0端口,通过单片机产生不同频率的脉冲,从而控制蜂鸣器产生不同的音调,表现出节拍的性质,从而实现音乐的播放,通过p3口的按键实现控制单片机选择音乐的功能,从而实现设计。2.2 硬件模块2.2.1 单片机最小系统模块stc89c52具体介绍如下: 主电源引脚(2根)vcc(pin40):电源输入,接5v电源gnd(pin20):接地线外接晶振引脚(2根)xtal1(pin19):片内振荡电路的输入端xtal2(pin20):片内振荡电路的输出端控制引脚(4根)rst/vpp(pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ale/prog(pin30):地址锁存允许信号psen(pin29):外部存储器读选通信号ea/vpp(pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根)stc89c52单片机有4组8位的可编程i/o口,分别位p0、p1、p2、p3口,每个口有8位(8根引脚),共32根。2.2.2 按键控制模块2.2.3 复位模块复位操作有上电自动复位相按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图44(a)所示。这佯,只要电源vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与vcc电源接通而实现的,其电路如图44(b)所示;而按键脉冲复位则是利用rc微分电路产生的正脉冲来实现的,其电路如图44(c)所示:(a)上电复位 (b)按键电平复位 (c)按键脉冲复位图44复位电路上述电路图中的电阻、电容参数适用于6mhz晶振,能保证复位信号高电平持续时间大于2个机器周期。本系统的复位电路采用图44(b)按键复位方式2.2.4 数码管显示模块 74hc573用于数据的缓存,可以锁存数据,具有高噪声抵抗的特性,内部具有保护电路,可以防止器件被高的静态电压或者电场损坏,可以对其外接的器件起到稳定和保护的作用。2.2.5 蜂鸣器驱动模块uln2003是由七个硅npn复合晶体管构成,在蜂鸣器的驱动电路用途相当于是三极管,工作在饱和区,三极管的作用类似于开关,可串接一限流电阻,防止蜂鸣器因功率过大而损坏。第三章 软件设计3.1 音乐解码原理3.1.1 利用 i/o 口发声原理当有足够功率的音频信号加在蜂鸣器上,蜂鸣器即会发声。利用 i/o 口工作于输出状态,当输出一定频率的方波信号时,驱动蜂鸣器发声,若用软件在 i/o 口线上不断产生不同频率的周期变化的方波,就能发出不同的声音。3.1.2 音乐基本知识 音和音阶在音乐中,通常用阿拉伯数字 1、2、3、4、5、6 和 7 来标记七个音。由这些音所组成的有序排列就叫音阶。其中 3-4、7-1 之间两者相差半音,1-2、2-3、4-5、5-6、6-7之间两者相差一个全音。每一个全音包括两个半音。实际上,仅用七个基本音来表达音乐内容是远远不够的,所以还需要比基本音更高或更低的音,这些音分别用加“低音点”和“高音点”的方法来扩展表示。即 拍号,节拍和速度音的长短通常用拍数来表示,用来表示不同长短音的符号叫音符,音符又分单线音符和附点音符。用固定时值来表示节拍的单位叫拍子,在歌曲和乐曲的左上方往往标注有 2/4、4/4、3/8 等,这些叫节拍记号,简称拍号。其含义是每小节有几拍几分音符作 1 拍。乐曲的速度一般有两种表示方法: 用五线谱的二分音符 或四分音符 表示一个基本节拍。用它们每分钟出现的次数来表示乐曲速度的快慢。例如,d 80,即表示每分钟进行80个二分音符。 用“稍快”、“中速”、“慢速”等术语来表示。这种情况下,具体速度可由自己决定,但是大致范围一般控制在: “稍快”:120200 拍分钟 “中速”:80120 拍分钟 “慢速”:60 拍分钟 调号音乐为表示丰富多采的思想感情,并考虑到男、女不同的音区,必须要确定乐曲基调的高低,这通常用音名来确定。音名有七种,分别为 c、d、e、f、g、a 和 b。每个音名都有固定的音高,在乐器上都有固定的位置,在声学上也都有相应固定的音频频率。如果歌曲的左上方有 1c ,则表示这首歌应以 c 为其 1,其他音以此类推。若 1f ,则表示应以f 为其 1。音频对应中断初值表通过控制定时器的定时时间来产生不同频率的方波,驱动蜂鸣器发出不同音阶的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。把乐谱中的音符和相应的节拍变换为定常数和延迟常数,作为数据表格存放在存储器中。由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间,从而实现乐曲的播放功能。3.2 软件基本流程图3.3 程序源代码#include /包括一个52标准内核的头文件#define uchar unsigned char /定义一下方便使用#define uint unsigned int#define ulong unsigned longchar code dx5163 _at_ 0x003b;/这是为了仿真设置的sbit spk=p10; /喇叭输出脚sbit k0=p30; /第一首歌按键sbit k1=p31;/第二首歌按键sbit k2=p32;/第三首歌按键sbit k3=p33;/停止播放按键uchar th0_f; /在中断中装载的t0的值高8位uchar tl0_f; /在中断中装载的t0的值低8位/t0的值,及输出频率对照表uchar code freq36*2=0xa9,0xef,/00220hz ,1 /00x93,0xf0,/00233hz ,1#0x73,0xf1,/00247hz ,20x49,0xf2,/00262hz ,2#0x07,0xf3,/00277hz ,30xc8,0xf3,/00294hz ,40x73,0xf4,/00311hz ,4#0x1e,0xf5,/00330hz ,50xb6,0xf5,/00349hz ,5#0x4c,0xf6,/00370hz ,60xd7,0xf6,/00392hz ,6#0x5a,0xf7,/00415hz ,70xd8,0xf7,/00440hz 1 /120x4d,0xf8,/00466hz 1# /130xbd,0xf8,/00494hz 2 /140x24,0xf9,/00523hz 2# /150x87,0xf9,/00554hz 3 /160xe4,0xf9,/00587hz 4 /170x3d,0xfa,/00622hz 4# /180x90,0xfa,/00659hz 5 /190xde,0xfa,/00698hz 5# /200x29,0xfb,/00740hz 6 /210x6f,0xfb,/00784hz 6# /220xb1,0xfb,/00831hz 7 /230xef,0xfb,/00880hz 10x2a,0xfc,/00932hz 1#0x62,0xfc,/00988hz 20x95,0xfc,/01046hz 2#0xc7,0xfc,/01109hz 30xf6,0xfc,/01175hz 40x22,0xfd,/01244hz 4#0x4b,0xfd,/01318hz 50x73,0xfd,/01397hz 5#0x98,0xfd,/01480hz 60xbb,0xfd,/01568hz 6#0xdc,0xfd,/01661hz 7 /35;/定时中断0,用于产生唱歌频率timer0() interrupt 1tl0=tl0_f;th0=th0_f; /调入预定时值spk=spk; /取反音乐输出io/*/音乐符号串解释函数/入口:要解释的音乐符号串,输出的音调串,输出的时长串changedata(uchar *song,uchar *diao,uchar *jie)uchar i,i1,j;char gaodi; /高低+/-12音阶uchar banyin;/有没有半个升音阶uchar yinchang;/音长uchar code jie78=0,12,14,16,17,19,21,23; /c调的7个值*diao=*song;for(i=0,i1=0;)gaodi=0; /高低=0banyin=0;/半音=0yinchang=4;/音长1拍if(*(song+i)=|) | (*(song+i)= ) i+;/拍子间隔和一个空格过滤switch(*(song+i)case ,: gaodi=-12;i+;/低音break;case : gaodi=12;i+; /高音break;if(*(song+i)=0) /遇到0结束*(diao+i1)=0; /加入结束标志0*(jie+i1)=0;return;j=*(song+i)-0x30; i+; /取出基准音j=jie7j+gaodi; /加上高低音yinc: switch(*(song+i)case #: /有半音j加一个音阶i+;j+;goto yinc;case -: /有一个音节加长yinchang+=4;i+;goto yinc;case _: /有一个音节缩短yinchang/=2;i+;goto yinc;case .: /有一个加半拍yinchang=yinchang+yinchang/2;i+;goto yinc;*(diao+i1)=j; /记录音符*(jie+i1)=yinchang; /记录音长i1+;/*/奏乐函数/入口:要演奏的音乐符号串void play(uchar *songdata)uchar i,c,j=0,a=0;uint n;uchar xdata diaodata112; /音调缓冲uchar xdata jiedata112; /音长缓冲changedata(songdata,diaodata,jiedata); /解释音乐符号串tr0=1;for(i=0;diaodatai!=0;i+) /逐个符号演奏tl0_f=freqdiaodatai*2; /取出对应的定时值送给t0th0_f=freqdiaodatai*2+1;for(c=0;cjiedatai;c+) /按照音长延时for(n=0;n32000;n+);if(k0=0)|(k1=0)|(k2=0)|(k3=0) /发现按键,立即退出播放tr0=0;return;tr0=0;for(n=0;n500;n+); /音符间延时tr0=1;tr0=0;/仙剑uchar code music1=|3_3_3_2_3-|2_3_2_2_,6,6_,7_|12_1_,7,6_,5_|,6-|3_3_3_2_3.6_|5_6_5_5_22_3_|45_4_32_1_|3.-3_|67_6_55_3_|5-3_5_|26_5_32_3_|3-|26_6_6-|16_6_66_7_|17_6_76_7_|3.-3_|67_6_55_3_|5-3_5_|67_6_76_7_|3-|26_6_6-|16_6_66_7_|17_6_7.5_|6-|;uchar code music2=5-5_3_2_1_|3-|6-6_4_2_1_,7-,5_|1.3_5.1_|,7.3_5 5_|6.7_1.6_|6_5_5-3_2_|1.1_13_2_|1.1_12_3_|2.1_,62_3_|2- ,5_|1.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论