第一篇:电子音乐播放器的制作报告1
电子音乐播放器(硬件部分)的制作报告
上饶四中研究性学习高一课题组 引言
随着时代的进步和发展,MP3、MP4、MP5及手机广泛流行,其中都含有电子音乐播放器,我们很想了解播放器的工作奥秘,甚至亲手制作一部MP3。本文就是介绍一种最简单的成本低廉的我们高中学生都能制作的电子音乐播放器的制作方法。2 制作材料
2.1制作工具:电烙铁1把、焊锡少许。
2.2制作元件:STC90c516rd+芯片(3.3元)、ULN2003芯片(0.45元)、电子蜂鸣器(0.18元)、晶掁管(0.24元)、万能电路板(1.9元)、电池盒(1.03元)、5号干电池4只(4元)、0.02单股铜丝线50CM(0.5元)、40pIC插座(0.25元)、8pIC插座(0.05元)、开关(0.1元)。上述元件各1只。3 主要元件介绍
3.1 STC90c516rd+芯片:STC89/90CR+是其中的核心(含有CPU芯片、存储器芯片、I/O接口芯片等)引脚如下图: 与本次制作相的引脚如下: 1电源和时钟引脚:Vcc、GND、XTAL1、XTAL2。○2 I/O口引脚:P0、P1、P2、P3,4组8位。○3.2 ULN2003芯片:是集成达林顿管,采用极电集开路输出,输出电流大,可用来驱动步进电机,直流电机,继电器,蜂鸣器。引脚如下图:
3.3蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、报警机、电话机等电子产品中,用做发声器件。制作原理:
乐曲中不同的音符,实质就是不同频率的声音。通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。
电路原理图: 说明:
○1根据乐曲内容,用C语言写出程序,录入STC90C51RD+芯片中,芯片产生相应的方波,通过P端口输出。
○2ULN2003将微弱的电流放大输出驱动蜂鸣器发声。5 制作步骤
1将两个IC座安放在电路板的适当位置;一定要特别注意IC座上定○位槽放置的方位第1脚只能位于IC座的右下角线或者左上角,而且紧靠定位槽(从焊接面看)。
○2用烙铁将IC座焊接在电路板上。焊接时烙铁和电路板之间45度,焊接面要光滑,焊点不能太大也不要太小,焊接时间不要太长,容易烧坏元器件和破坏板上的铜线。焊接顺序基本上是从内到外,先低后高,熟能生巧,焊个两到三块板子就会比校熟练。
3将晶掁只接或靠近(便于自然形成两个小电容)焊在40pIC插座的○18、19引脚(STC90c51的XTAL1、XTAL2上)。注:在此省略了两个22P的电容。
4再将ULN2003芯片IC座焊上。○注意芯片左边为IN端,右边为OUT端,而且要对应,IN1对OUT1,IN2对OUT2....,任选一对就可。
5将蜂鸣器焊上,虽然蜂鸣器标有“+”极,但无所谓正负。○6焊上开关和电池盒。○7将ULN2003芯片和装有程序的STC90c51芯片分别安装在各自的○IC座上既可。6 质量检验 用万用表电阻档对各焊点、连线进行检查,查看是否短路或断路。7制作体会
1焊接时只要有一个“假焊”或一处“短路”○,它就让你“唱不响歌”。2焊接要有耐心,要认真合核对电路不得有差错。○3成功后,成就感很好,大大增强对电子学的兴趣。○8参考资料
○1《51单片机C语言教程》
○2《HOT-51增强版开发板用户手册》
第二篇:微机原理课程设计电子音乐播放器
武汉理工大学《微机原理与接口技术》课程设计
目录
一、课程设计任务及要求...................................................1 1.1课程设计题目:....................................................1 1.2课程设计任务及要求:..............................................1
二、课程设计相关知识.....................................................1 2.1 定时/计数器8253/58254............................................1 2.2 8254外部引脚.....................................................2 2.3 8254端口地址....................................................3 2.4 8254工作方式....................................................4
三、程序设计思路.........................................................5
四、功能流程图及子程序说明...............................................6 4.1总流程图..........................................................6 4.2音乐播放子程序流程图..............................................7 4.3部分源程序代码....................................................9
五、调试结果截屏及结果分析..............................................10 5.1调试结果截屏.....................................................10 5.2结果分析.........................................................11
六、参考文献............................................................11
七、附录................................................................12 7.1源程序代码:.....................................................13 7.2各个音符的对应频率表:...........................................17
八、总结................................................................18
武汉理工大学《微机原理与接口技术》课程设计
一、课程设计任务及要求
1.1课程设计题目:
电子音乐播放器
1.2课程设计任务及要求:
设计一个音乐程序,演奏音乐按大写字母“A”,唱乐曲“玛丽有只小羔羊”;
按大写字母“B”,唱乐曲“太湖船”
按大写字母“C”,唱乐曲“祝福歌”
按“Q”鍵,退出
二、课程设计相关知识
2.1 定时/计数器8253/58254
在微机及控制系统中,经常要用到定时信号。如系统的日历时钟,动态存储器刷新。对外部执行机构控制时也需要定时中断、定时检测、定时查询等。定时的方法主要是两种:
软件定时:利用指令的执行时间设计循环程序,使CPU 执行延迟子程序的时间就是定时时间。缺点:执行延迟时,CPU 一直被占用,降低了CPU 的效率。
硬件定时:用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟。突出优点为计数时不占用CPU 时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提高了CPU 效率。
作为定时器可用8253或者8254,二者功能基本相同,知识工作的最高频率不一样。本实验就采用了8254,其主要功能为:
(1)每片上有3 个独立的16 位的减计数器通道。
(2)对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。
武汉理工大学《微机原理与接口技术》课程设计
(3)每个通道都有6 种工作方式,都可以通过程序设置或改变。(4)每个计数器的速率可高达10MHz。
主要部分有:数据总线缓冲器、读/写控制逻辑、控制字寄存器、计数通道0#、1#、2#: 内部结构如下图:
8254内部结构
2.2 8254外部引脚
8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:
8254的引脚
(1)D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。
(2)RD:来自于CPU的读控制信号输入引脚,低电平有效。
武汉理工大学《微机原理与接口技术》课程设计
(3)WR:来自于CPU的写控制信号输入引脚,低电平有效。(4)CS:芯片选择信号输入引脚,低电平有效。
(5)A1、A0:地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。(6).VCC及GND:+5V电源及接地引脚。
(7)CLKi: i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。
(8)GATEi: i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。
(9)OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。
2.3 8254端口地址
8254控制字 武汉理工大学《微机原理与接口技术》课程设计
说明 :(1)8254每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。
(2)8254编程时先写控制字,再写时间常数。
2.4 8254工作方式
(1)方式0:计数结束产生中断方式
当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。
(2)方式1:可编程单次脉冲方式
当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。(3)方式2:频率发生器方式
当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。
(4)方式3:方波发生器
当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。
(5)方式4:软件出发选通方式
进入工作方式4,OUTi输出高电平。装入计数值n后,如果GATE为高电平,则立即
武汉理工大学《微机原理与接口技术》课程设计
开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。
(6)方式5:硬件触发方式计数
进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。
三、程序设计思路
所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。
CPU通过对定时器的通道2(端口地址为42)进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低控制通道2门控的开断。以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:
533Hz×896÷频率=1234DC÷频率
在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。其位组合的格式如下:
当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。
产生指定频率声音的程序段如下: MOV AL,0B6H OUT 43H,AL ;43H为8254的控制字端口 MOV DX,12H MOV AX,34DCH DIV DI ;(DI)=频率
OUT 42H,AL ;42H为8254的通道2端口
武汉理工大学《微机原理与接口技术》课程设计
MOV AL,AH MOV 42H,AL 从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PA1位和定时器的输出信号同时作为与门的输入,PA0和PA1位可由程序决定为0还是为1。显然只有PA0和PA1都是1时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。我们知道执行2801次LOOP指令约需要10MS的时间。因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。实现程序如下:
IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL;开扬声器 L: MOV CX,2801 DY:LOOP DY DEC BX JNZ L MOV AL,AH OUT 61H,AL;关扬声器
四、功能流程图及子程序说明
4.1总流程图
MAIN程序:MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。武汉理工大学《微机原理与接口技术》课程设计
4.2音乐播放子程序流程图
PLAY子程序:PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作
DELAY子程序和DELAY_OFF子程序:两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。武汉理工大学《微机原理与接口技术》课程设计
开始保护现场曲N各音符频率设置曲N各音符时间设置读取频率F频率是-1 ?Y恢复现场N读取时间T结束返回计算机计数次数送计数器,产生该频率F信号启动喇叭延时T关闭喇叭音符间延时播音流程图 武汉理工大学《微机原理与接口技术》课程设计
4.3部分源程序代码
武汉理工大学《微机原理与接口技术》课程设计
五、调试结果截屏及结果分析
5.1调试结果截屏
初始界面:
如果按错了键,会出现如下界面:
如果选择正确,将出现如下界面: 武汉理工大学《微机原理与接口技术》课程设计
5.2结果分析
根据输出结果显示,此次试验设计结果与预想设计方案想要达到的结果相一致,没有出现任何偏差,此次设计较为成功。但在实验过程中对程序不断地进行了调试,将音频频率不断地进行了改变,由原来的低频通过同时扩大其倍数,最终使音频达到预期的效果。武汉理工大学《微机原理与接口技术》课程设计
六、参考文献
【1】李长青.微机原理与接口技术.徐州:中国矿业大学出版社,2006 【2】沈美明.汇编语言程序设计实验教程.北京:清华大学出版社,2002年 【3】周明德.微机原理与接口技术.北京:人民邮电出版社,2002年 武汉理工大学《微机原理与接口技术》课程设计
七、附录
7.1源程序代码:
DATA SEGMENT DATA1 DB 0AH, 0DH, 'HELLEL!WELCOME YOU TO COME HERE!$' DB 0AH, 0DH, 'THIS IS A MUSIC PROGRAM!$' DB 0AH, 0DH, 'PLEASE SELECLT!$' DATA4 DB 0AH, 0DH, 'input ERROR!$' DATA5 DB 0AH, 0DH, 'input AGAIN!$'
MUSLIST DB 0AH, 0DH, 'PressA Ma li you zhi xiao yang gao' DB 0AH, 0DH, 'PressB Tai hu chuan' DB 0AH, 0DH, 'PressC zhu fu ge' DB 0AH, 0DH, '$' MUSFRQA DW 330,294,262,294,3 dup(330)DW 3 dup(294),330,392,392 DW 330,294,262,294,4 dup(330)DW 294,294,330,294,262,-1 MUSTIMA DW 6 dup(100),200 DW 2 dup(100,100,200)DW 12 dup(100),400 MUSFRQB DW 330,392,330,294,330,392,330,294,330 DW 330,392,330,294,262,294,330,392,294 DW 262,262,220,196,196,220,262,294,330,262 DW-1 MUSTIMB DW 3 dup(200),100,100,200,100,100,400 DW 2 dup(200,200,100,100),400 DW 3 dup(200,100,100),400 MUSFRQC DW 392, 262, 294, 330, 350, 392, 262, 262 DW 440, 350, 392, 440, 494, 524, 262, 262 DW 350, 392, 350, 330, 294, 330 DW 350, 330, 294, 262, 294, 330, 294, 262, 247, 262,-1 MUSTIMC DW 200, 4 DUP(100), 200, 200, 200 DW 200, 4 DUP(100), 200, 200, 200
武汉理工大学《微机原理与接口技术》课程设计
DW 200, 4 DUP(100), 200 DW 4 DUP(100), 200, 4 DUP(100), 400 DATA ENDS STACK SEGMENT PARA STACK 'STACK' STA DB 200 DUP('STACK')STACK ENDS CODE SEGMENT ASSUME DS: DATA, SS: STACK, CS: CODE, ES: DATA START: MOV AX, DATA;MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX SHOW MACRO B;MOV DX, OFFSET B MOV AH, 09H INT 21H;ENDM SHOW DATA1;L0: SHOW MUSLIST MOV AH, 01H;INT 21H CMP AL, 51H JZ RETURN CMP AL, 41H JNZ l1 CALL MUSICA JMP EXIT1 l1: CMP AL, 42H JNZ l2 CALL MUSICB JMP EXIT1 l2: CMP AL, 43H JNZ EXIT CALL MUSICC JMP EXIT1
设置段寄存器 显示以B开始的字符串宏定义宏结束 提示信息 输入并选择
武汉理工大学《微机原理与接口技术》课程设计
EXIT1: SHOW DATA5 JMP L0 EXIT: SHOW DATA4 SHOW DATA5 JMP L0 RETURN: MOV AX, 4C00H;返回DOS INT 21H;******************************************************************* MUSICA PROC;音乐A LEA SI, MUSFRQA LEA BP,DS: MUSTIMA FREQA: MOV DI, [SI] CMP DI,-1 JE ENDMUSA MOV BX, DS: [BP] CALL SOUND ADD SI,2 ADD BP,2 JMP FREQA ENDMUSA:RET MUSICA ENDP;******************************************************************* MUSICB PROC;音乐B LEA SI, MUSFRQB LEA BP,DS: MUSTIMB FREQB: MOV DI, [SI] CMP DI,-1 JE ENDMUSB MOV BX, DS: [BP] CALL SOUND ADD SI,2 ADD BP,2 JMP FREQB ENDMUSB:RET MUSICB ENDP;*******************************************************************
武汉理工大学《微机原理与接口技术》课程设计
MUSICC PROC;音乐C LEA SI, MUSFRQC LEA BP,DS: MUSTIMC FREQC: MOV DI, [SI] CMP DI,-1 JE ENDMUSC MOV BX, DS: [BP] CALL SOUND ADD SI,2 ADD BP,2 JMP FREQC ENDMUSC:RET MUSICC ENDP SOUND PROC;发音程序 PUSH AX;保护寄存器 PUSH BX PUSH CX PUSH DX PUSH DI MOV AL, 0B6H;写定时器模式 OUT 43H, AL MOV DX, 12H;时间因子 MOV AX, 348CH DIV DI;频率
OUT 42H, AL;写计数器2低八位 MOV AL, AH OUT 42H, AL;写计数器2高八位 IN AL, 61H;获取当前端口设置 MOV AH, AL;保存在AH中
OR AL, 3;打开扬声器 OUT 61H, AL DELA1: LOOP DELA1 DEC BX JNZ WAIT1
16;******************************************************************* WAIT1: MOV CX, 2800;改变数值,用以设置播放速率 武汉理工大学《微机原理与接口技术》课程设计
MOV AL, AH;恢复端口信号 OUT 61H, AL POP DI;寄存器出栈 POP DX POP CX POP BX POP AX RET;返回 SOUND ENDP;******************************************************************* CODE ENDS END START 7.2各个音符的对应频率表:
音符 频率/HZ 半周期/us 音符 频率/HZ 半周期/us 低1DO 262 1908 #4FA# 740 0676 #1DO# 277 1805 中5SO 784 0638 低2RE 294 1700 #5SO# 831 0602 #2RE# 311 1608 中6LA 880 0568 低3M 330 1516 #6LA# 932 0536 低4FA 349 1433 中7SI 988 0506 #4FA# 370 1350 高1DO 1046 0478 低5SO 392 1276 #DO# 1109 0451 #5SO# 415 1205 高2RE 1175 0426 低6LA 440 1136 #2RE# 1245 0402 #6LA# 466 1072 高3M 1318 0372 低7SI 494 1012 高4FA 1397 0358 中1DO 523 0956 #4FA# 1480 0338 #1DO# 554 0903 高5SO 1568 0319 中2RE 578 0842 #5S0# 1661 0292 #2RE# 622 0804 高6LA 1760 0284 中3M 659 0759 #6LA# 1865 0268 中4FA 698 0716 高7SI 1976 0253 武汉理工大学《微机原理与接口技术》课程设计
八、总结
在本次设计中,可以说是一次成功的经验。在我们学完了《微型计算机原理与接口技术》这门课的基础上来做这个设计,通过设计后,使我们对这门课的理论知识的理解有很大程度上的加强。微机原理这门课程本身是一门实验性和工程性很强的专业技术课,因此不仅要重视理论教学,更应注意实践技能的培养和训练。课程设计是这门课程的一个重要环节,通过课程设计,巩固、加深和拓宽了学习的理解,本课程设计的重点目标是使用汇编语言,而不过多涉及硬件方面的太多知识。
在编程方面我通过本次课程设计学到了很多。一开始面对很长的程序往往有畏难情绪,感觉无法下手,没办法只能硬着头皮啃下去,多看几个和音乐播放有关的汇编程序,然后我就能慢慢看懂了并理解了别的作者的设计思路。然后再根据自己的思路,对照本人在图书馆借的汇编语言指导书慢慢编写符合自己思路的程序。一次写出来的程序肯定不会是正确的,还需要进一步调试它。检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序。调试程序中,学习了emu8086的使用,emu8086对检查程序的错误作用很大。同时,也要灵活使用各种调试方法,来缩小寻找错误的范围。
书到用时方恨少。在课程设计过程中,我才体会到这句话的深意。课堂上学的8254的知识和汇编语言都太少,还不足以完成本次课设,为此我经常跑图书馆借了各种各样的工具书。有的书用处较大,有的书仅能用到一小块知识,就是这样,一步步在知识的海洋里我寻觅着自己需要的东西,确实克服了不少困难,解决了不少问题。或许坎坷才能更好的使人成长。在这次的课程设计中,我的收获是不但做出了一个符合要求的音乐播放器,而且为自己积累了一些宝贵的经验。同时我也对音乐方面的频率知识有了一些认识,我想如果不是本次课程设计中用到这方面知识,我这辈子可能没有机会去接触这方面的知识了。这,或许也是我比别的同学多出的一点收获吧!
第三篇:音乐播放器项目报告
华东交通大学课程项目
学 院:软件学院 ______ 课程名称: Android应用开发___________ 项目名称: ___ _音乐播放器________ 学生名字: ____ ________ 学生班级: ____ ______ 授课教师: __________ 授课学期:2015___至2016______学年第2学期
2016年 6月 1 日
目录
目录...................................................................................................................................2
1、需求分析.............................................................................................................................3
1.1编写目的.....................................................................................................................3 1.2项目背景.....................................................................................................................3 1.3目标.............................................................................................................................4 1.4用户特点.....................................................................................................................4
2、程序设计.............................................................................................................................5
2.1欢迎界面....................................................................................................................5 2.2主页面........................................................................................................................6 2.3播放音轨SeekBar......................................................................................................6 2.4播放调节功能实现.....................................................................................................7 2.5歌曲列表显示界面.....................................................................................................8 2.6专辑列表显示界面.....................................................................................................8
3、功能设计.............................................................................................................................9
4、个人总结...........................................................................................................................10
1、需求分析 1.1编写目的
现今社会生活紧张,而欣赏音乐史其中最好的舒缓压力的方式之一,音乐播放类的软件数不胜数,为什么我还要再写一个播放器出来呢?因为现有的音乐播放器功能实在是有些多了,多未必不好,但是我总想要一个干净纯粹的音乐播放器,只为听歌的播放器,一个有着一些自己想要的功能的播放器,比如“切歌”,一个自己熟悉代码的播放器,甚至,一个可以自定义功能结构的音乐播放器。本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计的实现的这主要功能是播放MP3等音乐文件,并且能够控制播放器播放,暂停,停止,上一曲,下一曲。界面简单,操作简单。
本软件具备音乐播放器的播放歌曲、歌曲列表、拖动进度等基本功能,同时本播放器界面简洁美观,操作简单便捷。
1.2项目背景
随着智能手机的普及,用户需要各种各样的应用软件,音乐播放器肯定是必不可少的。随着计算机的广泛运用,手机市场的迅速发展,各种音频资源也在网上广为流传,这些资源卡是平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味最求外观花俏,功能庞大,对用户的手机造成很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户听歌的需求。1.3目标
学习完本周的应用开发课程之后,需要实现以下目标: 可以获取本地音乐 可以显示歌曲的进度
可以用拖动条来控制歌曲的进度 音乐播放器可以循环播放音乐; 可以播放下一首歌曲; 有一个精美的界面; 可以通过手势调节音量;
1.4用户特点
本系统的最终用户是面向广大的拥有手机的用户。广大用户有各个阶级的,学生,上班族,家长。
主要群体是学生,学生的特点是要求播放的音频潮流,音质高,功能多种多样。学生基本上会随身携带手机。
上班族工作压力比较大,可以适当的播放音乐缓解压力。
2、程序设计
2.1欢迎界面
欢迎界面模块主要是用于给用户一种友好的体验,让用户较容易接受本软件。进入系统后进入欢迎界面如图2.1,运用计时器两秒钟后自动跳转到选择进入界面4.2。并且运用了组合动画实现了渐隐的效果。
2.1欢迎界面 2.2主页面
主页面是本运用的核心界面,本界面拥有三个Fragment,可以运用Activity底部的选项卡进行切换,三个Fragment分别为歌曲列表,正在播放以及专辑列表。如图4.2所示,此时Activity上显示的Fragment为正在播放,此页面运用一张炫酷的网络图片。中间一块专辑及歌曲显示的模块是属于一个自定义模块。底部为音轨模块。
2.2主页面
2.3播放音轨SeekBar 播放器最重要的一部分就是音轨与歌曲进度同步的实现。音轨设置了两个TextView用来显示当前歌曲播放的进度时间和歌曲的长度。音轨对象SeekBar在歌曲刚开始播放的时候调用方法SeekBar.setMax(),参数传入歌曲的长度。SeekBar.setProgress(1)设置游标的起始进度为1。Android的线程的开始是通过Handler类来进行的,Handler类是线程与线程之间通信的桥梁,实现Runnable接口会实现里面的run方法,当线程开始的时候,Runnable中的run方法会向Handler发一个Message消息,这样,Handler类就可以接收到run方法发送过来的不同的消息进行不同的代码处理。这样就达到了各线程之间的通信。要启动一个线程调用Handler的方法postDelayed(Runnable,1000)表示线程睡眠时间是1000ms。
让播放歌曲的线程每隔1000ms,即每1秒对音轨的TextView重新设置时间且让进度条 前进1秒的进度。对音轨进行刷新。这样就实现了歌词同步功能SeekBar有一个监听器,该监听器的作用是一直保持着对进度条的监听,当我们用鼠标向SeekBar的各位置进行点击时,它会自动监听其位置,进行相应的位置显示。这也是进度条上的游标会不停的移动和歌词时间会不停的变动的原因。
2.3播放音轨
2.4播放调节功能实现
各按钮水平放置,从左到右依次是上一首、播放、下一首功能按钮。用的是布局中的线性布局LinearLayout,;将其设置为水平,如图所示。LinearLayout中依次放置播放/暂停,上一首、下一首按钮属性。
歌曲专辑图片显示,如果有歌曲图片,才会返回,否则为null,2.4控制按钮
Android的媒体播放原理:Android源程序已经为我们封装好了一个接口类,叫MediaPlayer。该接口在执行行需要一个数据源,通过如下步骤:
第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。第二步:传入歌曲数据源,这里也是一个数据MediaPlayer.setDataSource(String path);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。
第三步:准备播放数据源,调用方法MediaPlayer.Prepare()。
第四步:MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序有关,需要用MediaPlayer.Stop()方法让其停止或MediaPlayer.Start();让其启动。2.5歌曲列表显示界面
歌曲列表整体采用了相对布局(RelativeLayout),中间歌曲列表部分采用的是ListView视图,以确保有大量歌曲时能滚动式容纳所有歌曲,如图2.5所示,背景采用一张炫酷的图片,自定义LIstView,左侧为歌曲图片,中间为歌曲名歌手,最右边为歌曲时长。
歌曲的名称:MediaStore.Audio.Media.TITL 歌曲的歌手名:MediaStore.Audio.Media.ARTIST 歌曲的总播放时长:MediaStore.Audio.Media.DURATION
2.5歌曲列表
2.6专辑列表显示界面
专辑列表采用了网格视图(GridView)用它能实现视图的网格排列,九宫格视图就是GridVew最典型的使用,GridView是一个AdapterView,所以需要通过适配器来绑定数据,这里使用BaseAdapter。如图所示用一张网络图片作为背景,GRidView布局自定义,每个item分为两部分,上面为图片,下边为歌曲专辑名。
歌曲的专辑名:MediaStore.Audio.Media.ALBUM
2.6专辑列表
3、功能设计
该系统具有以下主要功能: 1)播放歌曲,显示歌曲名字 2)播放上一首歌和下一首歌
3)播放模式可以是循环的,也以是单曲循环 4)可以通过手势调节歌曲进度 5)可以选取歌曲进行播放
4、个人总结
通过对Android手机平台的音乐播放器的开发,使我对Android系统有了更高层次的了解,Android功能是非常强大的,在这段时间的学习与实践中遇到了很多难题,不过通过网上专门的Android 社区有些开源的代码供参考研究,同时还得到了Android高手的指点,总算给完成了,觉得蛮有意义的。
开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表组成。这两个个模块完成,音乐播放器就能初具规模。而其它的功能都是在这两个模块的基础上去补充添加的,这是功能的确是必不可少的功能,否则就不具备音乐播放器的基本功能了。
在开发过程中我学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。总之,经过这次的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,同时也对整个软件产品的实现流程有了一个深入的了解,这对我以后从事软件开发有很大的帮助。
第四篇:音乐播放器报告
一、综述本课题国内外研究动态,说明选题的依据和意义
1.1课题的背景和意义
随着科技的进步,手机的功能也不断的得到丰富,从最早的“大哥大”到现在的商务PDA手机,智能手机,音乐手机等等,功能也从单纯的打电话发展到了发短信,听歌,上网....手机和我们生活的联系越来越紧密,手机的功能也是很多人们关注的焦点。
目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少在人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器,而且还具有网上听音乐功能,所以开发一款受欢迎的手机音乐播放软件是具有良好的市场和应用前景的。
一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以网上就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是google的android手机平台,所以本课题就致力于开发出一款基于android手机平台的音乐播放器,来满足用户的使用需求。
1.2课题的研究历史和发展现状
首先简单的介绍一下google的android。Android原本是一家独立的手机操作系统公司,2005年被Googel收购。2007年11月,Googel宣布推出基于Linux的Android开放式手机操作系统,沿袭至今,已发展到2.2版本(3.0尚在研)。此系统的“开放”尤其体现在任何手机制造商均可无需支付专利费即可将此系统运用在自己的手机
Google的以Linux为内核的Android移动手机平台从诞生之日起短时间内便在世界范围里获得了广泛的关注。最近的报告显示在中国,一个拥有最大的人口,拥有最多的手机用户,拥有巨大的增长潜力的国家,这个系统的占有率沿着一个倒抛物线的增长曲率成为手机操作系统中的霸主 同时国外的Android市场也正在如日中天的扩展,据市场调研机构NPDGroup最近发布的一份报告称,今年第一季度基于Android操作系统的智能手机在美国智能手机总销量中所占比例达到28%,首度超过苹果iPhone,苹果iPhone约为21%,相信在不久的将来会有更多的用户选择Android系统的手机或是无线终端设备。
根据美国移动广告商AdMob的统计,iPhoneOS在美国本土的网络流量占了美国本土全部移动互联网流量的39%,而Android系统首次超越了它,达到了46%。不过要放在世界范围内来看,iPhone OS仍占了46%,而Android只占了25%,还是排第二。不过仍能说明 Android的来势汹汹,能对苹果造成威胁的果然只有Google。
国内目前中国移动、Moto、LG、三星、华为、MTK等正在积极筹备Android产品和相关的电子市场,中国移动率先推出了基于Android深度定制的Ophone系统和Mobile Marke,联想基于Android的乐phone手机也于5月17日正式上市,国内其他电子厂商也纷纷表示到下半年会推出大量的基于Android的手机和MID产品,Moto更是放弃了原有的所有手机操作系统,孤注一掷,计划今年国内市场有近20款Android产品面世。3G时代的到来,给中国企业追赶国际厂商带来了腾飞的机会,据预测亚太区域将来会占据全球Android市场中最大的收入份额。
Android的代号序列会按甜点名字中首个英文字母(C、D、E、F)的排列顺序,到目前为止android系统已经有多个帮本: Android1.1发布于2009年2月主要特性:
闹钟,API示例,浏览器,摄像头,计算器,联系人,开发工具包,拨号应用,电子邮件,地图,信息服务,音乐,图片,设置。2009年4月30日,官方1.5版本(Cupcake)的Android发布。主要的更新如下: 拍摄/回放视频,并支持上传到youtube,支持立体声蓝牙耳机,同时改善自动配对性能,最新的采用WebKit技术的浏览器,支持拷贝/粘帖和页面中搜索,gPS性能大大提高, 屏幕虚拟键盘,主屏幕增加音乐播放器和相框widgets,应用程序自动随着手机旋转 短信,Gmail,日历,浏览器的用户界面大幅改善,比如说Gmail现在可以批量删除邮件了 ,相机启动速度加快,拍摄图片可以直接上传到picasa, 来电照片显示。2009年9月15日, 1.6(Donut)版本SDK发布。主要的更新如下:完全重新设计的Android Market,手势支持,支持CDMA网络,文字转语音系统(TXT-2-speech),快速搜索框,全新的拍照界面,应用程序耗电查看,支持VPN,支持更多的屏幕分辨率,支持OpenCore2媒体引擎,新增面向视觉或听觉困难人群的易用性插件
2009年10月26日, 2.0(Eclair)版本SDK发布。主要的更新如下:优化硬件速度,“Car Home”程序,支持更多的屏幕分辨率,重整界面,新的浏览器的用户界面和支持HTML5,新的联系人名单,更好的白色/黑色背景比率,改进Google Maps 3.1.2,支持Microsoft Exchange,支持内置相机闪光灯,数字变焦,改进的虚拟键盘,蓝牙2.1 Android的代号序列会按甜点名字中首个英文字母(C、D、E、F)的排列顺序。下一个版本的Android将会命名为Froyo(冻酸奶,基于Linux Kernel 2.6.32)。Froyo 之后的版本的Android将会命名为Gingerbread(姜饼,基于Linux Kernel 2.6.33/34)。
二、研究的基本内容,拟解决的主要问题:
2.1课题研究的主要内容
本文的主要研究内容包括以下几个方面: 查找相关书籍与文献,了解Android的构架并搭建Android平台。 查找相关资料,现阶段基于Android平台手机音乐播放器发展现状以及相关功能。
在上述基础上,提出所要做的手机播放器的相关功能如:播放本地歌曲,设置,播放列表,播放记录等。
在Android平台上完成该课题的软件并进行相应的软件测试。
2.2课题研究的拓展
传统的音乐播放器受限于手机存储和计算处理能力,在音乐收集、存储和管理方面一直存在瓶颈,新一代音乐播放器应该进一步拓展了应用空间,更迎合用户的使用习惯,将音乐搜索、收藏、管理等全部交由网络来完成,为用户提供的音乐资源更为庞大,搜索更为精准,管理和收藏更为简便的服务。
1.智能化超级搜索 网络音乐播放器的特点就是集成了音乐搜索服务,将用户从繁杂的网页搜索解脱出来,提供更为专业和准确的音乐搜索服务。新一代音乐播放器提供的搜索结果不是直接抓取的网页搜索链接,而是先由服务器进行实时采集和筛选,然后保存在数据库由用户进行调用,以此来保证搜索结果的准确性、唯一性和有效性,将搜索结果的验证和判断交由服务器来未完成,避免出现盲搜会出现的搜索结果重复和无效的情况发生,从而大大提高用户的搜索效率。
2.智能化口味分析 在网络音乐时代海量的音乐信息已经改变了大众的听歌习惯,一天听个几十上百首新歌都不是问题。无论是音乐排行榜、媒体推荐还是口碑宣传,都属于小范围的传播途径,这些传统的歌曲信息获取方式已经无法满足大众大量获取新鲜歌曲的需要。新一代音乐播放器应该实时采集用户的听歌习惯,实时分析出用户的喜好,在短时间内即可将大量满足用户喜好的歌曲推荐出来,用户无须人工操作即可不断听到新鲜的好歌,常听常新 3.虽然网络音乐播放已经成为主流,但很多用户仍习惯于在本地收藏和管理音乐文件。本地音乐管理所遇到的主要难题就是音乐信息混乱,绝大多数从网上下载的音乐文件名都是简化的英文或数字,让人无法辨识出正确的歌曲名。日积月累这些音乐文件就会给日常管理带来极大麻烦。识别服务则可以完美解决这一问题,它可以自动采集音乐旋律上传至服务器,凭借服务器系统强大的识别能力,通过音乐旋律即可准确误别出正确的音乐信息,然后再自动对本地音乐文件进行信息更正,将音乐文件重命为正确的中文或英文歌曲名等。歌曲数量再多都能在极短的时间内批量完成误别操作,识别服务可以说是现在本地音乐管理的不可或缺的帮手
上面所说的几种功能都是下一代音乐播放器应该具有的功能,只有音乐播放器客户端软件的不断创新发展,未来人们欣赏音乐的体验才会更加精彩。
三、研究步骤、方法及措施:
3.1研究步骤 研究步骤主要分为6个步骤,包括理论准备、材料分析、需求分析、、编码实现、系统测试、完善软件系统。每个步骤的大致工作如下: 3.1.1理论准备
此步骤是整个研究过程的基础,也是今后研究展开的基石,主要是翻阅相关资料,查询Android平台的历史和发展现状,在理论的基础上为接下来的步骤做准备。3.1.2材料分析
对现行的Android平台手机播放器进行分析并提出相应功能。
3.1.3需求分析
在步骤1和2的基础上对该课题进行需求分析。
3.1.4编码实现
此过程主要是针对步骤2和3的编码实现,完成上文描述的功能需求进行必要的编码。当然这里是在Android平台上实现的。3.1.5系统测试
对基于Android平台手机播放器进行基本的软件测试,查找并修改常见的BUG。3.1.6后期完善
此步骤主要是对上述软件的界面等外设进行修改,以达到操作方便,友好美观的效果。3.2研究方法和措施
根据现有的音乐播放器,分析用户喜好,优化功能,邀请不同的用户提出建议,不断的进行完善。
四、研究工作进度:
序号 1 2 3 4 5 6 7 8 时间
2010.5.11-2010.6.11 2010.6.12-2010.6.30 2010.7.1-2010.7.31 2010.8.1-2010.8.31 2010.9.1-2010.9.30 2010.10.1-2010.10.9 2010.10.9-2010.10.28
内容
熟悉课题要求与任务 查阅相关文献资料 熟悉Android系统
构建Android平台以及熟悉相关操作
需求分析 完成开题报告 软件编程 测试软件
完善软件,准备论文写作
修改论文,定稿,准备答辩,材料归档 2010.10.28-2010.11.9 2010.11.16-2010.11.10 2010.11.29-2010.12.1
五、主要参考文献:
[1] ophone应用开发权威指南 胡幸征著;—北京:电子工业出版社,2010.1 [2] 深入浅出Google Android/E2Ecloud 工作室编著。—北京:人民邮电出版社,2009.8 [3] Google Android开发入门与实战/靳岩,姚尚朗编著。—北京:人民邮电出版社,2009.7 [4] Google Android SDK开发范例大全/余志龙等编著;王世江改编。—北京:人民邮电出版社,2009.7(2009.8重印)[5] Android应用框架原理与程序设计36技/高焕堂著;
六、指导教师审核意见:
指导教师签字:
年 月 日
七、系、室、部(研究所)评议意见:
1.适合本专业的毕业设计课题;
2.不适合本专业的毕业设计课题;
3.其他
系、室、部(研究所)主任签字:
八、开题小组评审意见:
开题小组组长签字:
2009 年 9 月 27 日
九、系领导(答辩委员会)审核意见:
1.通过; 2.完善后通过;
3.未通过
系领导(答辩委员会)签字:
2009 年 9 月 28 日
第五篇:制作简单实用的flash场景音乐播放器
制作简单实用的flash场景音乐播放器
有朋友要求介绍flash场景音乐播放器的做法,我就根据自己的体会介绍一下。不当之处,请朋友们指正。
这是一个简单实用的flash场景音乐播放器,用以控制flash动画场景的播放,同时也就可以控制其中的音乐播放。所以,也可以作为flash音乐播放器来使用。我做的一些音乐收藏欣赏的flash就是使用的这种功能。
下面是一个例子。
一、先分别制作三个按钮元件备用。一个是播放按钮,一个是停止(暂停)按钮,一个是返回按钮。做成什么样子的都可以。上图中下方左面的三个按钮就分别是播放按钮、停止按钮和返回按钮。
二、下面开始制作滑动条的元件。元件类型都是影片剪辑。一个是滑动槽,即一个长条。这个比较简单,做成什么样子的都可以了。参考上图下方的滑动条。
三、另一个是滑块,即一个小长方块。这个看似简单,但却是这个播放器中的一个核心元件,滑动块能否按进度滑动,就看这里的制作了。这里也要分别制作两个影片剪辑元件。
一个是滑块图形的影片剪辑元件。一个是动作命令影片剪辑元件。
滑块图形的元件做相应的图形就可以了。如上图中的滑块图形。
而动作命令的剪辑就复杂一些了。这个影片剪辑(这里命名为“as”)的场景中不用放任何东西,但要在图层中添加as命令。
在第一个关键帧上,打开动作面板,添加如下语句: if(!_load){ _load = 1;tellTarget(“..”){
pathToControl = _root;
isDragging = false;
progressWidth = _parent.progressBar._width;
setProperty(_parent.progressBar, _width, 1);
null;
this._parent._x = 0;} } nextFrame();play();
在第三帧上添加空白关键帧,再打开动作面板,添加如下语句: tellTarget(“..”){ if(isDragging){
gotoAndStop(“pathToControl:”+Math.floor(pathToControl._totalframes/_parent.sliderTrack._width*this._parent._x));
setProperty(_parent.progressBar, _width, this._parent._x*(progressWidth/_parent.sliderTrack._width));
null;} else {
this._parent._x = _parent.sliderTrack._width/pathToControl._totalframes*pathToControl._currentframe;
setProperty(_parent.progressBar, _width, this._parent._x*0.999000);
null;} } gotoAndPlay(2);
从以上这些语句可以看出,它的内容就是根据动画运行到哪个帧来确定滑块的位置。并不是去控制音乐的,只是因为音乐在场景中,所以同时得到控制。具体地,我也是知其然而不知其所以然的。我就是复制代码,直接使用。如果你跟我一样,懂得不那么多,那也不妨就直接复制使用就是了。
四、组装滑动块。新建影片剪辑“滑动块”,在图层1中放入制作好的滑块影片剪辑元件,并在属性面板中将实例命名为slider。
新建图层,拖入影片剪辑“as”,就是只有as命令的那个影片剪辑。
这两个图层都只一个关键帧。
五、再组装滑动条。新建影片剪辑元件“滑动条”,在图层1放入前面制作的滑动槽元件。并在属性面板中将它的实例命名为sliderTrack。
在新建图层中放入“滑动块”元件,并在属性面板中将它的实例命名为sliderBar。两个图层也都是只有一个关键帧。
六、以上各个元件都做好了。就可以“总装”了。
回到场景中来,将前面做好的播放按钮、停止按钮、返回按钮、滑动条剪辑,拖放到适当的位置。然后给按钮元件添加相应的as命令。
点击播放按钮,打开动作面板,添加如下语句(即添加按钮动作): on(release){ play();}
点击停止按钮,打开动作面板,添加如下语句: on(release){ stop();}
点击返回按钮,打开动作面板,添加如下语句: on(release){ gotoAndStop(1);}
七、播放器总装完毕。但还有几个要做到的事情。一是将场景中的音乐的同步方式设置成为“数据流”。
二是新建AS层,分别在第一帧和动画的最后一帧建立关键帧,分别输入stop();语句。(老虎注:最后一帧建立关键帧,代码:gotoAndStop(1);)
三是将播放器所在的图层也延长到与整个动画和音乐的帧数相同。
这些工作全做完了,就按 ctrl+enter试试吧。点击播放按钮,开始播放动画和音乐;点停止按钮,停止播放;再点播放按钮,从刚才停止的位置继续播放;点返回按钮,滑块返回到起点,动画也返回到起点。
(老虎注:音乐、动画均放第二帧)