单片机课程设计(论文)音乐播放器.doc
《单片机课程设计(论文)音乐播放器.doc》由会员分享,可在线阅读,更多相关《单片机课程设计(论文)音乐播放器.doc(30页珍藏版)》请在三一办公上搜索。
1、摘 要现当今,单片机的应用无处不在.利用单片机控制音乐播放也多不胜举,音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛.它有功能多价格优外部电路简单的特点,深受音乐爱好者及音乐芯片制造商的青昧,用AT89C52单片机及少数外部点路控制MUSIC播放,通过扬声器进行乐曲播放。AT89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。 对于单片机产生音乐,关键是控制频率的输出.我们知道,不同的声音对应不同的频率,产生有规律的频率输出就可以得到
2、相应規律的声音.音乐中,有8个基本音符:doremifasolaxido,八个不同的音符对应著不同的頻率.只要我们对照音符输出相对应的频率,就可以产生美妙的音乐了.本文中采用了T0中断的方法产生不同频率,并用三键控制暂停和选曲。关键词:单片机 AT89C52 音乐芯片目 录摘 要I1 前言12方案设计12.1要求12.2工程方案12.3开发工具23硬件设计23.1电路原理图23.2各单元电路详细设计24 软件设计54.1数码音乐产生原理54.2 分析与设计64.3程序流程图74.4具体代码实现75 仿真分析255.1 仿真步骤255.2仿真结果分析256 课程设计总结27参考文献281 前言目
3、前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。在音乐播放方面,利用单片机储存音乐,控制播放也越来越广泛。为了更好的掌握单片机的应用,用单片机设计一个音乐播放器。这样可以有效的将理论知识与实践相结合。本文基于AT89C52单片机的实时控制和数据处理的基本原理,综合运用大学所学的电子技术进行了分析,并给出了具体的实例。设计了一个以单片机为核心的音乐播放系统。其中利用数码管显示播放曲目,使用三个按键开关进行
4、调节,分别是上一曲、下一曲以及开始暂停。经过实践证明,本系统运行稳定,具有一定的实用价值。2方案设计2.1要求(1)设计能通过扬声器播放存储于单片机中的音乐,并能通过键盘进行选曲,在数码管中显示曲目。(2)以单片机为控制核心,实现硬件电路的设计、程序设计,并在PROTEUS平台实现仿真;课程设计论文内容正确,结构合理。2.2工程方案单 片机按键控制模块数码管显示模块音乐播放模块图1 系统实现方框图2.3开发工具(1)PROTEUS7.1仿真软件(2)WAVE编译软件3硬件设计3.1电路原理图图2 音乐播放器电路图 3.2各单元电路详细设计(1)单片机简介:89C52单片机拥有8KB的片内ROM
5、和128B的片内RAM。ROM和RAM的片外寻址范围都为64KB。单片机拥有32个并行口和1个串行口。在89C52单片机中存在5个中断源,其中有两个外部中断源、两个内部中断源和一个串行中断源。图3 AT89C52单片机(2)振荡器电路:AT89C52单片机单片机内部的振荡电路是一个到增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。单片机内部虽然有振荡电路,但要形成时钟,外部还需要附加电路。由于本设计需要高精度参考时钟,故采用石晶振荡和电容构成谐振电路,晶振频率为11.0592MHz。为了保证振
6、荡器振荡的稳定性和起振的快速性,电容选择22pF,设计如图:图4 振荡器电路图(3)显示电路:本设计采用LED数码管作为显示模块,由于该系统仅需显示一位数字,故采用七段数码管静态驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动。静态驱动的优点是编程简单,显示亮度高。 图5 数码管显示电路图(4)键盘接口电路:对于任何电子产品,为了实现人机对话,方便用户使用,键盘是必不可少功能配置。由于本系统对键盘要求不高,在这里我们采用独立连接式键盘,简单实用。一般情况下,所有数据输入线都被接成高电平。当键按下时,与之相连的数据输入线将被拉成低电平。并直接使用I/O中的P3口作为键盘
7、的接口端,可省掉输出锁存器和输入缓冲器,节省成本。设计如图所示:图6 键盘接口电路图(5)发声电路:发声电路由数字扬声器、接地线组成。声音通过单片机的P2.0口输出不同电平使扬声器发声。 图7 发声电路图4 软件设计4.1数码音乐产生原理音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方波就可以产生音阶,音阶与频率的关系见表1。由于频率的倒数是周期,因此可由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。将与扬声器连接的P1.7取反后就可得到方波的周期,从而达到了控制频率,即音阶的目的表1 音阶与频率的关系及方式1下定时器的初值音阶频率(Hz)定时器初值音阶频率(Hz)
8、定时器初值音阶频率(Hz)定时器初值1234567013114716517519622024700F85EH0F933H0F9F0H0FA49H0FAE6H0FB74H,0FBF4H0100H1234567026229433034939244049400FC2FH0FC99H0FCF8H0FD22H0FD73H0FDBAH0FDFAH0100H1234567052358765969878488098800FE17H0FE4CH0FE7CH0FE91H0FEB9H0FEDDH0FEFDH0100H低八度音中音高八度音注:0表示简谱中的空拍当晶体振荡频率为6.144MHz,定时器工作在方式1下时,
9、若各音阶相对应的定时器计数初值为X,则可根据下式计算X:音调的长短用节拍数表示(例如1/4拍、2/4拍、),不同节拍数的不同音符的组合形成乐谱。程序中,音的节拍可由延时子程序实现。延时子程序设定为四分之一拍,节拍值只能是它的整数倍。4.2 分析与设计程序设计是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件也占有重要的地位。为了完成本次课程设计,在进行软件设计时,充分利用单片机的特点。AT89C52有五个中断,其中有两
10、个外部中断。在设计时,将外部中断0和外部中断1用于曲目的选择,具体设计如下:OUT BIT P2.0 ;定义音频输出端口p2.0N EQU 3;歌曲总数OUT_NUM EQU P1;数码管显视当前所放歌曲曲数 ORG 0000H AJMP MAIN ORG 0003H AJMP LAST_SONG ;外部中断0用于接上一曲歌按键 ORG 000BH AJMP F_T0 ;定时器0用于定时,作音符发生器用 ORG 0013Hq4: AJMP NEXT_SONG ;外部中断1接下一曲歌按键 ORG 001BH AJMP START_PAUSE ;定时器1用计数,这里用作中断,接开始/暂停键,初值为
11、0ffH,方式24.3程序流程图图8 系统流程图4.4具体代码实现OUT BIT P2.0 ;定义音频输出端口,p2.0N EQU 3;歌曲总数OUT_NUM EQU P1;数码管显视当前所放歌曲曲数 ORG 0000H AJMP MAIN ORG 0003H AJMP LAST_SONG ;外部中断0用于接上一曲歌按键 ORG 000BH AJMP F_T0 ;定时器0用于定时,作音符发生器用 ORG 0013Hq4: AJMP NEXT_SONG ;外部中断1接下一曲歌按键 ORG 001BH AJMP START_PAUSE ;定时器1用计数,这里用作中断,接开始/暂停键,初值为0ffH
12、,方式2 ORG 0030HMAIN: MOV SP,#60H MOV DPTR,#TABLE ;DPRT指向每首歌曲的入口地址的地址。 MOV R0,#30H ;R0中存入数据30H MOV R5,#00H;R5中存放表TABLE中正在执行操作的序号 MOV R6,#1 ;R6存放正在设置入口信息的歌曲数SET_TAB: MOV A,R5 ;设置每首歌曲的入口信息,存放在以30H开始的存储单元中。 MOVC A,A+DPTR MOV R0,A INC R5 INC R0 MOV A,R5 MOVC A,A+DPTR ;取出第一节拍数,将表中地址送入累加器A MOV R0,A INC R5 I
13、NC R0 MOV A,R5 MOVC A,A+DPTR MOV R0,A ;将累加器A的内容放入R0内的地址中 INC R0 INC R5 MOV A,R5 MOVC A,A+DPTR MOV R0,A INC R0 INC R5 INC R6 ;设置完一首歌曲后,歌曲数加一 CJNE R6,#N+1,SET_TAB ;是否设置完,没有便继续,否则进行下面的操作*对中断,计数器的相关参数进行设置* MOV TMOD, #61H;计数器0工作方式1,计数器1工作方式2 MOV TH1,#0FFH;给计数器1置初值0FFH,又由于是工作方式2,所以 MOV TL1,#0FFH;计数器计数为1,相
14、当于一外部中断。 SETB ET1;允许计数器1中断 SETB ET0 ;允许计数器具0中断 CLR PT0 ;计数器0为低优先级 SETB PT1;计数器1为高优先级 SETB IT0 ;外部中断0为跳沿触发 SETB PX0 ;高优先级 SETB IT1 ;外部中断1为跳沿触发 SETB PX1 ;高优先级 SETB EX1 ;允许外部中断1中断 SETB EX0 ;允许外部中断定0中断 SETB EA ;开中断总开关 SETB TR1 ;定时器1开始工作,作中断用 SETB OUT;音频输出端口初始化 ;* ;设置结束 CLR F0 ;设置F0=0,用来作暂停/播放的标置位用 MOV 2
15、2H,#01H ;22H单元中存放正在播放的歌曲编号 MOV DPTR,#OUT_TAB ;将正在播放的歌曲编号送数码管显视 MOV A,22H MOVC A,A+DPTR MOV OUT_NUM,A MOV R7,#00H ;R7中存放歌曲总信息的入口地址 START0:MOV R4,#00H ;R4存放当前正在播放歌曲的第几个节拍数 MOV R0,#30H ;30H开始的单元中存放歌曲的入口信息 MOV A,R7 ;将歌曲的节拍表的入口地址送到DPTR ADD A,R0 MOV R0,A MOV DPH,R0 INC R0 MOV DPL,R0 INC R0 MOV A,R4 INC R4
16、 MOVC A,A+DPTR ;取出第一节拍数,其实第一个节拍不是歌曲的第一个节拍,而是表示几分音符 MOV 26H,A;将取出的音符数+节拍数保存在26H单元中NEXT: MOV R0,#30H ;开始取出歌曲的第一个数据 MOV A,R7 ADD A,R0 MOV R0,A MOV DPH,R0 INC R0 MOV DPL,R0 INC R0 MOV A,R4 INC R4 MOVC A,A+DPTR ;放在A中;* JZ END0 ;若为0,则表示为休止符,不唱,本次音符不唱, MOV R1,A ;不为0,取出节拍数 ANL A,#0FH MOV R2,A MOV A,R1 SWAP
17、A ANL A,#0FH JNZ SING ;音符不为0,唱 CLR TR0 ;为0,不唱,关频率发生器 SJMP SING1 SING: DEC A ;开始唱,进行相应的数据处理 MOV R3,A RL A MOV DPH,R0 INC R0 MOV DPL,R0 INC R0 MOVC A,A+DPTR MOV 21H,A MOV TH0,A MOV A,R3 RL A INC A MOVC A,A+DPTR MOV 20H,A MOV TL0,A SETB TR0 ;开唱SING1:LCALL DELAY ;每个音符唱多久 JB F0,FOR ;是否暂停, AJMP NEXT ;没有暂停
18、,继续FOR: CLR TR0 ;暂停,不唱 JB F0,$ ;等待播放 AJMP NEXT ;开始播放END0: CLR TR0 ;不唱 MOV A,22H ;唱完处理 CJNE A,#N,WW ;是不是全部歌曲都唱完 MOV 22H,#01H ;全部唱完,则从第一首开始再唱 MOV R7,#00H MOV OUT_NUM,#06H ;数码管显视第一首歌曲编号 AJMP WWWWW: MOV A,R7 ;没有全部唱完,唱下一首,歌曲的入口信息调整 ADD A,#4 MOV R7,A INC 22H CLR EA PUSH DPH PUSH DPL MOV A,22H MOV DPTR,#OU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 论文 音乐 播放
链接地址:https://www.31ppt.com/p-3936713.html