课程设计(论文)基于单片机的音乐播放器.doc
郑州交通职业学院课 程 设 计 报 告课程设计项目音乐播放器的设计 所属系别 信息工程系 专业班级 电子信息工程技术(1)班 姓名 学号 指导教师 撰写日期 2011 年 12 月目录1. 设计目的和要求11.1 设计目的11.2 设计要求12. 硬件电路设计12.1 总体设计方案12.2 单元电路设计12.2.1 单片机简介12.2.2 显示电路22.2.3 晶振电路22.2.4 复位电路32.2.5 发声电路32.3 总体电路43. 系统软件设计43.1 数码音乐产生原理43.2 总体流程图53.3 键控子程序63.3.1 播放/暂停子程序63.3.2 曲目选择子程序74. 电路仿真调试84.1 仿真平台84.2 仿真测试84.3 测试总结9参考文献10附录111. 设计目的和要求1.1 设计目的目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。在音乐播放方面,利用单片机储存音乐,控制播放也越来越广泛。为了更好的掌握单片机的应用,用单片机设计一个音乐播放器。这样可以有效的将理论知识与实践相结合。1.2 设计要求设计一个音乐播放器,有三个按键:播放/暂停、下一曲、上一曲;4位LED灯显示器,用来显示所选曲目,该显示器在音乐播放中关闭,一曲演奏结束时,或选曲时才显示曲目信息。2. 硬件电路设计2.1 总体设计方案本系统以89C51单片机为控制核心,以按键开关作为控制元件,以扬声器作为执行器件,再结合6MHZ的晶振电路,共同构成音乐播放器系统。图1 系统硬件组成2.2 单元电路设计2.2.1 单片机简介89C51单片机拥有4KB的片内ROM和128B的片内RAM。ROM和RAM的片外寻址范围都为64KB。单片机拥有32个并行口和1个串行口。在89C51单片机中存在5个中断源,其中有两个外部中断源、两个内部中断源和一个串行中断源。图2 89C51单片机2.2.2 显示电路显示电路是一个4位共阴极LED数码管。 单片机的P0.0-P0.7分别与数码管的A、B、C、D、E、F、G、DP相连接。单片机的P2.0与数码管片选段4相连接。图3 4位共阴极LED灯2.2.3 晶振电路晶振电路由两个30pF的电容和一个6Mhz的晶体振荡器组成。节点1与单片机的XTAL2相连接。节点2与单片机的XTAL1相连接。图4 晶振电路2.2.4 复位电路复位电路由复位键、22uF的电容C3、200的电阻R3、1000的电阻R4组成。节点1与单片机的RST相连接。图5 复位电路2.2.5 发声电路发声电路由数字扬声器、5V的电源和一个200电阻组成。电阻R1一端接扬声器另一端接单片机的P1.7。图6 发声电路2.3 总体电路图图7 总体电路图3.系统软件设计3.1数码音乐产生原理音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方波就可以产生音阶,音阶与频率的关系见表1。由于频率的倒数是周期,因此可由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。将与扬声器连接的P1.7取反后就可得到方波的周期,从而达到了控制频率,即音阶的目的。表1 音阶与频率的关系及方式1下定时器的初值音阶频率(Hz)定时器初值音阶频率(Hz)定时器初值音阶频率(Hz)定时器初值1234567013114716517519622024700F85EH0F933H0F9F0H0FA49H0FAE6H0FB74H,0FBF4H0100H1234567026229433034939244049400FC2FH0FC99H0FCF8H0FD22H0FD73H0FDBAH0FDFAH0100H1234567052358765969878488098800FE17H0FE4CH0FE7CH0FE91H0FEB9H0FEDDH0FEFDH0100H低八度音中音高八度音注:0表示简谱中的空拍当晶体振荡频率为6.144MHz,定时器工作在方式1下时,若各音阶相对应的定时器计数初值为X,则可根据下式计算X:音调的长短用节拍数表示(例如1/4拍、2/4拍、),不同节拍数的不同音符的组合形成乐谱。程序中,音的节拍可由延时子程序实现。延时子程序设定为四分之一拍,节拍值只能是它的整数倍。3.2 总体流程图主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。确定歌曲曲目后,数码管再进行显示。然后,子程序对是否播放进行循环判断,得到播放中断的指令后再进行播放。执行播放后,关闭数码管显示并调用查表子程序进行播放音乐。在播放音乐的过程中,查表子程序循环判断音乐是否结束。当音乐结束时,程序跳转回曲目识别子程序。图8 总体流程图3.3 键控子程序键控子程序主要由播放/暂停子程序、上一曲子程序、下一曲子程序组成,分别由一个计数器中断和两个外部中断实现。3.3.1 播放/暂停子程序播放/暂停在程序利用内部中断T0口。将T0口设为计数中断并工作在方式2下。标识符初值赋值为R1=00H,计数初值设为TH0=0FFH,TL0=0FFH。当按键第一次产生中断信号时,播放/暂停子程序改变标志符R1,将其赋值为01H。此时播放器由暂停状态进入播放状态。当按键第二次产生中断信号时,播放/暂停子程序判断R1是否为02H后,将R1再次赋值为00H。此时,播放器由播放状态进入暂停状态。图9 播放/暂停子程序流程图3.3.2 曲目选择子程序曲目选择子程序分为上一曲子程序和下一曲子程序。上一曲和下一曲功能实现方式类似,分别由外部中断和外部中断。下面以实现上一曲功能为例:首先设置标识符R7初始值为00H。当按键产生中断信号,上一曲中断子程序改变标识符R7的值为01H并改变曲目R0的值。播放子程序判断出标识符R7改变后,先将R7赋值为00H,然后跳转到曲目识别子程序。图10 曲目选择子程序流程图4.电路仿真调试4.1 仿真平台仿真平台为Proteus软件。Proteus软件是世界上著名的EDA工具,能完成原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具。4.2 仿真测试开始仿真后,音乐播放器处于暂停状态。曲目初始设置为第一首曲子。图11 初始数码管显示图点击播放/暂停键,播放器进入播放状态,数码管关闭。点击下一曲键,数码管将会亮显示所选曲目。图12 第一次点击显示图1s后,音乐播放器播放音乐,数码管关闭。点击播放/暂停键,让播放器处于暂停状态,也可点击下一曲键进行选歌。图13 第二次点击显示图再次点击播放/暂停键,播放进入播放状态,数码管关闭。4.3 测试总结音乐播放器很好的实现了播放/暂停、上一曲、下一曲的功能,并满足了数码管显示的特殊要求。 音效良好,能很好听出乐曲的曲名。当然设计的音乐播放器也存在着不足之处。4位LED数码管只能显示10以内的歌曲曲目,超过10将无法显示。参考文献: 1郭文川.单片机原理与接口技术M.中国农业出版社.2007.82阎石. 数字电子技术基础(第五版)M.北京:高等教育出版社.20053李泉溪. 单片机原理与实例仿真M. 北京:北京航空航天大学出版社,2009附录一 ORG 0000H LJMP MAIN ORG 0003H LJMP SUM ;上一曲中断 ORG 000BH LJMP BOF ;播放/暂停 ORG 0013H LJMP DUM ;下一曲中断 ORG 001BH LJMP TIMER1 ORG 50HMAIN: MOV R0,#01H MOV R1,#00H MOV R7,#00H MOV TMOD,#1EH ;置T1为定时工作方式1,T0为计数工作方式2 MOV TCON,#15H ;启动T0、T1 MOV TH0,#0FFH MOV TL0,#0FFH MOV IE,#9FH ;开放全部中断KEYCHECK:MOV A,R0 ;乐曲判断 DEC A JZ MUSIC1 DEC A JZ MUSIC2 DEC A JZ MUSIC3 SJMP KEYCHECK MUSIC1: LCALL XIAN LCALL DELAY0 MOV DPTR,#TONE1 LCALL LOP SJMP MUSIC1MUSIC2: LCALL XIAN LCALL DELAY0 MOV DPTR,#TONE2 LCALL LOP SJMP MUSIC2MUSIC3: LCALL XIAN LCALL DELAY0 MOV DPTR,#TONE3 LCALL LOP SJMP MUSIC3LOP: CJNE R1,#00H,LOOP5 ;判断是否播放 CLR P0.0 CLR TR1 CJNE R7,#01H,LOOP4 ;暂停过程中的标识符判断 MOV R7,#00H SJMP KEYCHECKLOOP4: LJMP LOPLOOP5: SETB P0.0 MOV A,#0 MOVC A,A+DPTR JZ QUIT CJNE A,#01H,LOOP6 CLR TR1 INC DPTR LJMP LOOP7LOOP6: MOV R5,A MOV TH1,A INC DPTR MOV A,#0 MOVC A,A+DPTR MOV R6,A MOV TL1,R6 SETB TR1LOOP7: INC DPTR MOV A,#0 MOVC A,A+DPTR MOV R2,ALOOP1: MOV R3,#80HLOOP2: MOV R4,#0FFHLOOP3: DJNZ R4,LOOP3 DJNZ R3,LOOP2 DJNZ R2,LOOP1 INC DPTRLOOP8: CJNE R7,#01H,GOON ;播放中的标识符判断 MOV R7,#00H SJMP KEYCHECKGOON: LJMP LOPQUIT: RETTIMER1: PUSH DPH ;定时器1中断子程序 PUSH DPL PUSH ACC CPL P1.7 MOV TH1,R5 MOV TL1,R6 SETB TR1 POP ACC POP DPL POP DPH RETIDELAY0: MOV R2,#10DELAY3: MOV R3,#200DELAY2: MOV R4,#125DELAY1: DJNZ R4,DELAY1 DJNZ R3,DELAY2 DJNZ R2,DELAY3 RETSUM: CJNE R0,#01H,SUM1 ;上一曲INT0中断子程序 MOV R0,#04HSUM1: DEC R0 INC R7 RETIDUM: CJNE R0,#03H,DUM1 ;下一曲INT1中断子程序 MOV R0,#00HDUM1: INC R0 INC R7 RETIBOF: INC R1 ;播放暂停T0子程序 CJNE R1,#02H,BOF1 MOV R1,#00H RETIBOF1: RETIXIAN: CLR TR1 ;显示子程序 MOV A,R0 MOV DPTR,#TABLE MOVC A,A+DPTR MOV P2,A CLR P0.0 RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHTONE1: DB 0FCH,2FH,4,0FCH,99H,4 ;两只老虎 DB 0FCH,0F8H,4 ,0FCH,2FH,4 DB 0FCH,2FH,4,0FCH,99H,4 DB 0FCH,0F8H,4,0FCH,2FH,4 DB 0FCH,0F8H,4,0FDH,22H,4 DB 0FDH,73H,8,0FCH,0F8H,4 DB 0FDH,22H,4,0FDH,73H,8 DB 0FDH,73H,3,0FDH,0BAH,1 DB 0FDH,73H,3,0FDH,22H,1 DB 0FCH,0F8H,4,0FCH,2FH,4 DB 0FDH,73H,3,0FDH,0BAH,1 DB 0FDH,73H,3,0FCH,22H,1 DB 0FCH,0F8H,4,0FCH,2FH,4 DB 0FCH,2FH,4,0FDH,73H,4 DB 0FCH,2FH,8,0FCH,2FH,4 DB 0FDH,73H,4,0FCH,2FH,8 DB 0,0,0TONE2: DB 0FDH,0BAH,2,0FDH,0FAH,2 ;天空之城 DB 0FEH,17H,6,0FDH,0FAH,2 DB 0FEH,17H,4,0FEH,7CH,4 DB 0FDH,0FAH,12,0FCH,0F8H,2 DB 0FCH,0F8H,2,0FDH,0BAH,6 DB 0FDH,73H,2,0FDH,0BAH,4 DB 0FEH,17H,4,0FDH,73H,8 DB 01H,0,4,0FCH,0F8H,2 DB 0FCH,0F8H,2,0FDH,22H,6 DB 0FCH,0F8H,2,0FDH,22H,2 DB 0FEH,17H,6,0FCH,0F8H,8 DB 01H,0,2,0FEH,17H,2 DB 0FEH,17H,2,0FEH,17H,2 DB 0FDH,0FAH,6,0FDH,22H,2 DB 0FDH,22H,4,0FDH,0FAH,4 DB 0FDH,0FAH,8,01H,0,4 DB 0FDH,0BAH,2,0FDH,0FAH,2 DB 0FEH,17H,6,0FDH,0FAH,2 DB 0FEH,17H,4,0FEH,7CH,4 DB 0FDH,0FAH,8,01H,0,4 DB 0FCH,0F8H,2,0FCH,0F8H,2 DB 0FDH,0BAH,6,0FDH,73H,2 DB 0FDH,0BAH,4,0FEH,17H,4 DB 0FDH,73H,12,01H,0,2 DB 0FCH,0F8H,2,0FDH,22H,4 DB 0FEH,17H,2,0FDH,0FAH,2 DB 0FDH,0FAH,4,0FEH,17H,4 DB 0FEH,4CH,2,0FEH,4CH,2 DB 0FEH,7CH,2,0FEH,17H,4 DB 01H,0,4,0FEH,17H,4 DB 0FDH,0FAH,2,0FDH,0BAH,2 DB 0FDH,0BAH,2,0FDH,0FAH,4 DB 0FDH,73H,4,0FDH,0BAH,8 DB 01H,0,4,0FEH,17H,2 DB 0FEH,4CH,2,0FEH,7CH,6 DB 0FEH,4CH,2,0FEH,7CH,4 DB 0FEH,0B9H,4,0FEH,4CH,8 DB 01H,0,4,0FDH,73H,2 DB 0FDH,73H,2,0FEH,17H,2 DB 0FDH,0FAH,2,0FEH,17H,4 DB 0FEH,7CH,4,0FEH,7CH,8 DB 01H,0,4,01H,0,4 DB 0FDH,0BAH,2,0FDH,0FAH,2 DB 0FEH,17H,4,0FDH,0FAH,4 DB 0FEH,4CH,2,0FEH,4CH,2 DB 0FEH,17H,6,0FDH,73H,2 DB 0FDH,73H,4,01H,0,4 DB 0FEH,91H,4,0FEH,7CH,4 DB 0FEH,4CH,4,0FEH,17H,4 DB 0FEH,7CH,16,0FEH,7CH,8 DB 01H,0,4,0FEH,7CH,4 DB 0FEH,0DDH,8,0FEH,0B9H,4 DB 0FEH,0B9H,4,0FEH,7CH,2 DB 0FEH,4CH,2,0FEH,17H,4 DB 01H,0,2,0FEH,17H,2 DB 0FEH,4CH,4,0FEH,17H,2 DB 0FEH,4CH,2,0FEH,4CH,2 DB 0FEH,0B9H,4,0FEH,7CH,8 DB 01H,0,4,0FEH,7CH,4 DB 0FEH,0DDH,8,0FEH,0B9H,8 DB 0FEH,7CH,2,0FEH,4CH,2 DB 0FEH,17H,8,01H,0,2 DB 0FEH,17H,2,0FEH,4CH,4 DB 0FEH,17H,2,0FEH,4CH,2 DB 0FEH,4CH,2,0FDH,0FAH,4 DB 0FDH,0BAH,8,01H,0,4 DB 0FDH,0BAH,2,0FDH,0FAH,2 DB 0FDH,0BAH,16,0,0,0TONE3: DB 0FDH,73H,1,0FDH,0BAH,2 ;找朋友 DB 0FDH,73H,2,0FDH,0BAH,2 DB 0FDH,73H,2,0FDH,0BAH,2 DB 0FDH,73H,4,0FDH,73H,2 DB 0FEH,17H,2,0FDH,0FAH,2 DB 0FDH,0BAH,2,0FDH,73H,4 DB 0FCH,0F8H,4,0FDH,73H,2 DB 0FDH,73H,2,0FCH,0F8H,2 DB 0FDH,22H,2,0FDH,73H,2 DB 0FDH,73H,2,0FCH,0F8H,4 DB 0FCH,2FH,2,0FDH,22H,2 DB 0FCH,0F8H,2,0FCH,99H,2 DB 0FCH,2FH,2,0FCH,99H,2 DB 0FCH,2FH,4,0,0,0 END