基于C51的简易音乐播放器Word文档格式.docx
《基于C51的简易音乐播放器Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于C51的简易音乐播放器Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
![基于C51的简易音乐播放器Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/9/930a05a5-8763-46a7-bf8b-03e30adb94a5/930a05a5-8763-46a7-bf8b-03e30adb94a51.gif)
单片机的应用刚好适应了人们的需求,同时它更加贴近于生活。
本文介绍了一种基于MCS-51单片机的简单音乐播放器设计。
该设计以8051单片机为主体,结合播放等设备,实现单首歌曲循环播放及暂停功能,同时以指示灯显示播放状态。
整个实验设计过程如下五部分:
设计构建电路图,程序流程图设计,确定音符与节拍数据,书写程序,实验仿真。
关键词:
音乐播放器;
AT89C51;
计数器
TOC\o"
1-3"
\h\z\uHYPERLINK\l"
_Toc325289019"
摘要PAGEREF_Toc325289019\hI
HYPERLINK\l"
_Toc325289020"
第1章概述PAGEREF_Toc325289020\h1
_Toc325289021"
1.1MCS-51单片机简介PAGEREF_Toc325289021\h1
_Toc325289022"
1.2音乐播放器功能PAGEREF_Toc325289022\h1
_Toc325289023"
1.3本文工作PAGEREF_Toc325289023\h1
_Toc325289024"
第2章预备知识PAGEREF_Toc325289024\h2
_Toc325289025"
2.1单片机最小系统PAGEREF_Toc325289025\h2
_Toc325289026"
2.2发光二级管闪烁PAGEREF_Toc325289026\h3
_Toc325289027"
2.3扬声器工作原理PAGEREF_Toc325289027\h3
_Toc325289028"
2.4按键的抖动PAGEREF_Toc325289028\h3
_Toc325289029"
第3章设计原理PAGEREF_Toc325289029\h5
_Toc325289030"
3.1电路原理图PAGEREF_Toc325289030\h5
_Toc325289031"
3.2音乐PAGEREF_Toc325289031\h6
_Toc325289032"
3.2.1播放音乐简谱PAGEREF_Toc325289032\h6
_Toc325289033"
3.2.2乐曲的硬件实现原理PAGEREF_Toc325289033\h6
_Toc325289034"
第4章程序流程图PAGEREF_Toc325289034\h8
_Toc325289035"
第5章仿真结果PAGEREF_Toc325289035\h9
_Toc325289036"
第6章总结PAGEREF_Toc325289036\h10
_Toc325289037"
附录PAGEREF_Toc325289037\h11
概述
1.1MCS-51单片机简介
单片机具有功能强、价格低、体积小、使用方便等特点,在工农业生产、航空航天、日常生活等各个领域都得到了广泛应用。
目前单片机种类繁多,性能各异,但是原理都是相通的。
目前产量最大、应用最广泛的当属MCS-51系列单片机。
MCS-51单片机主要由运算器、控制器、定时器/计数器、存储器、串/并行I/O口、中断控制系统、时钟电路和总线等工作部件组成。
MCS-51单片机DIP封装为40引脚。
1.2音乐播放器功能
本设计中音乐播放器具有以下功能:
循环播放一段音乐,同时八个发光二级管随着音调变化闪烁;
当开关拨下时,暂停音乐播放,同时八个发光二级管同时闪烁;
当开关拨回后,继续播放音乐。
1.3本文工作
构建音乐播放器电路图,其中包括MCS-51单片机最小系统和扬声器、发光二级管等设备;
确定程序流程图;
计算延时以及定时时间,确定音符和节拍对于的数据,建立曲谱表;
编写汇编程序及程序调试;
在Proteus软件中仿真。
预备知识
2.1单片机最小系统
单片机最小系统是单片机工作时应具备的最基本条件,因单片机型号不同,最小系统也有差异。
对于8051系列单片机,最小系统如图所示。
图18051系列单片机,最小系统
单片机第40引脚(VCC)接电源+5V,第20引脚(VSS)接地,为单片机工作提供电源。
单片机内部已具备振荡电路,只要在引脚19和18上连接石英晶体及相关电容即可构成时钟电路。
8051单片机复位引脚(Reset)是第9引脚,当此引脚处于高电平并超过2个机器周期时即可产生复位动作。
在上图中,电源接上瞬间,电容C3电位不能突变,相当于短路,所以第9引脚为高电平,即单片机开始执行复位动作。
随着时间的增加,电容上的电压逐渐增加,而第9引脚上的电压逐渐下降,当第9引脚上的电压降至低电平时,单片机结束复位,恢复正常状态。
在电容两端并联一个按钮开关,提供手动复位。
由于8051单片机片内带有程序存储器,如果把31引脚(/VPP)接VCC,则使用内部程序存储器;
如果把31引脚(/VPP)接地,则使用外部扩展程序存储器。
在实践中,如果程序容量不大,多采用内部程序存储器,所以把31引脚(/VPP)通过限流电阻接电源+5V。
2.2发光二级管闪烁
实现发光二极管(LED)闪烁实际上就是让LED亮一下灭一下,即让LED导通一会儿关断一会即可。
因此,只需要将LED发光二极管的一个极接到电源上,另一个极接到单片机32个I/O口的任何一个即可。
2.3扬声器工作原理
扬声器中的线圈通电时,其线圈就会产生磁场,在与磁铁的磁场相互作用下,线圈就会振动,振动就会发出声音。
简单来说是通电导体在磁场内的受力作用。
扬声器的工作是将电能转化为机械能,机械能转化为声能的过程。
具体是扬声器中的线圈通电时,其线圈就会产生磁场,线圈就受磁场力的作用而上下运动,从而带动鼓纸的振动.鼓纸排开空气发出声。
2.4按键的抖动
在单片机应用系统中,为了控制设备的运行状态,需要向系统输入一些命令或数据,按键就是单片机应用系统中最常见的输入部件。
按键的工作过程可以等效为一个开关的断开、闭合过程。
但由于按键机械触点的弹性作用,按键在闭合和断开的瞬间,电接触是不稳定的,即按键在闭合时不会马上问道地接通,在断开时也不会马上断开,而是在闭合、断开的瞬间伴随有一连串的抖动。
按键抖动会引起按下一次按键被单片机误读多次的错误。
为了确保单片机对按键的一次动作仅作一次处理,必须去除抖动。
去抖动的方法有硬件和软件两种方法。
本设计采用硬件法去除抖动,常用电路图如下:
图2硬件方法去抖动电路
图中用两个与非门构成一个RS触发器。
当按键未被按下而处于A处时,触发器输出为“1”。
当按键按下处于B处时,输出为“0”。
此时即使由于按键的机械弹性,因抖动产生瞬间断开,只要按键不返回原始状态A,双稳态电路的状态就不改变,输出保持为“0”,不会产生抖动。
所以,经RS触发器输出的电平便不再受按键抖动的影响。
按键在闭合时有抖动,在断开时也有抖动,去抖动的原理是相同的。
设计原理
3.1电路原理图
图3音乐播放器电路原理图
表1电路设计中所以器件列表
3.2音乐
3.2.1播放音乐简谱
图4《宾克斯的酒》简谱
3.2.2乐曲的硬件实现原理
组成乐曲的每个音符的发音频率值及其持续的诗句是乐曲能连续演奏所需的2个基本要素。
根据相关计算可以得出音符对应的频率。
表2简谱音符与频率对应图
根据程序设定的延时,一周期的时间为0.0398ms,因为中音1对应的频率为523Hz,所以频率的控制值(TAB中的值)为十六进制的30H,用十进制表示为48。
表3部分音符对于程序所需TAB中的值
歌曲是速度决定时间,但是时值是相对的。
本设计中利用计数器完成10毫秒延时,设置1拍的长度为640毫秒,则对于TAB中的值用十六进制表示为40h。
程序流程图
仿真结果
1.仿真开始,需要按按钮才能开始播放音乐,八个发光二级管的闪烁规律由音符与节拍控制。
2.与P3.2口连接的开关拨下,音乐播放暂停,八个发光二级管同时闪烁。
3.开关拨回,则音乐继续播放。
当一段音乐播放结束后,将延时1秒后循环播放。
总结
该设计实现的是简单的音乐播放功能,通过外部控制能实现的功能仅有暂停。
在功能上还有较大改进空间。
整个程序在实现上也存在一点瑕疵,当开关拨回,暂停结束继续播放音乐时,会在短暂的时间内出现噪音。
附录
程序
ORG0000H
LJMPSTART
ORG0003
LJMPSECOND
ORG000BH
LJMPCOUNT
ORG0100H
START:
MOVP0,#0FFH
MOVSP,#50H
MOVP1,#0FFH
MOVTH0,#0D8H;
设置初值10毫秒
MOVTL0,#0EFH
MOVTMOD,#01H
SETBIT0;
边沿触发
SETBEX0;
允许外中断0中断
SETBET0;
允许定时器中断
SETBEA
LOOP:
JNBP0.5,MUSIC0;
1键按下?
转MUSIC0
AJMPLOOP
MUSIC0:
NOP
MOVDPTR,#TAB;
表头地址送DPTR
MOV20H,#00H;
中断计数器清0
MOVB,#00H;
表序号清0
MUSIC1:
CLRA
MOVCA,@A+DPTR;
查表取代码
JZEND0;
A中内容为00H,则跳转
MUSIC2:
MOVR6,A
INCDPTR
取节拍代码送R7
MOVR7,A
SETBTR0;
启动计数
MUSIC3:
CPLP2.3;
取反
MOVA,R6
MOVR3,A
MOVP1,A
LCALLDEL
MOVA,R7;
R7,节拍代码
CJNEA,20H,MUSIC3;
中断计数器(20H)=R7否?
;
不等,则继续循环
等于,则取下一代码
LJMPMUSIC1
END0:
MOVR2,#64H;
歌曲结束,延时2秒后继续
DEL1:
MOVR3,#00H
DJNZR2,DEL1
LJMPMUSIC0
DEL:
DEL3:
MOVR4,#02H