单片机课程设计音乐播放器Word下载.docx
- 文档编号:22627288
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:35
- 大小:538.57KB
单片机课程设计音乐播放器Word下载.docx
《单片机课程设计音乐播放器Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计音乐播放器Word下载.docx(35页珍藏版)》请在冰豆网上搜索。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。
1.2课题概述
MP3的作用是用来播放优美的音乐让人们处在轻松快乐的环境中。
随着便携式消费类音频设备,MP3播放器已成为当代年轻人必不可少的一种东西。
现当今,单片机的应用无处不在。
利用单片机控制音乐播放也多不胜举,音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛。
它有功能多、价格优、外部电路简单的特点,深受音乐爱好者及音乐芯片制造商的青睐。
对于单片机产生音乐,关键是控制频率的输出。
我们知道,不同的声音对应不同的频率,产生有规律的频率输出就可以得到响相应规律的声音。
音乐中,有8个基本音符:
do、re、mi、fa、so、la、xi、do,8个不同的音符对应着不同的频率。
只要我们找最与音符输出相应的频率,就可以产生美妙的音乐了。
基于这个思想,我设计了款特殊的"
音乐播放器"
,本播放器可实现播放、暂停、复位等功能。
为了体现乐曲播放过程中的动态效果,增加了1只LED,作随机闪烁以指示旋律的节奏。
由于时间及条件限制,本设计实现了一种简单的音乐播放器,其核心器件采用AT89S52单片机,本播放器具有电路简单,功能强大,易于拓展等特点。
在此基础上,可以添加按键,数码管显示屏等模块,实现切换歌曲,歌序显示等功能。
第2章设计目的、要求、仪器及芯片
2.1设计目的
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,电子宠物等等,这些都离不开单片机。
在音乐播放方面,利用单片机储存音乐,控制播放也越来越广泛。
为了更好的掌握单片机的应用,用单片机设计一个音乐播放器。
这样可以有效的将理论知识与实践相结合。
2.2设计要求
设计一个音乐播放器,有四个按键:
复位、播放/暂停、下一曲、上一曲;
1位LED灯显示器,用来显示所选曲目,该显示器在音乐播放中关闭,一曲演奏结束时,或选曲时才显示曲目信息。
2.3设计使用的仪器
制作过程中要使用的仪器如下表2-1所示。
表2-1使用仪器
型号
名称
数量
安泰信
示波器
1
函数发生器件
数字万用表
UT39A
稳压电源
烙铁
AVRVimil1
下载仿真器
焊锡丝
一字口
十字口
手动吸锡器
扁口钳
镊子
2.4单片机芯片介绍
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
单片机引脚如图2-1所示。
图2-1AT89S52单片机引脚图
各引脚功能介绍如下:
(1)VCC:
供电电压
(2)GND:
接地
(3)P0口:
P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。
当P1口的管脚写“1”时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。
(4)P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
(5)P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。
作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
(5)P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0(外部中断0)
P3.3INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接收一些控制信号。
(6)RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高平时间。
(7)ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
(8)PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取址期间,每个机器周期PSEN两次有效。
但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现。
(9)EA/VPP:
当EA保持低电平时,访问外部ROM;
注意加密方式1时,EA将内部锁定为RESET;
当EA端保持高电平时,访问内部ROM。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
(10)XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
(11)XTAL2:
来自反向振荡器的输出。
3.1总体设计方案
本系统以89S52单片机为控制核心,以按键开关作为控制元件,以蜂鸣器和以为共阴数码管作为执行器件,再结合12MHZ的晶振电路,共同构成音乐播放器系统。
AT89S52
单片机
电源电路
12MHZ
晶振电路
复位电路
键控电路
显示电路
发声电路
图3-1系统硬件组成框图
3.2单元电路设计
3.2.1晶振电路
晶振电路由两个30pF的电容和一个12Mhz的晶体振荡器组成。
节点1与单片机的XTAL2相连接,节点2与单片机的XTAL1相连接。
如图3-2所示。
图3-2晶振电路
3.2.2复位电路
复位电路由复位键、22uF的电解电容C3、200Ω的电阻R3、1000Ω的电阻R4组成。
节点3与单片机的RST相连接。
如图3-3所示。
图3-3复位电路
3.2.3发声电路
发声电路由蜂鸣器、5V的电源和一个200Ω电阻组成。
电阻R1一端接扬声器另一端接单片机的P1.7。
如图3-4所示。
图3-4发声电路
3.2.4显示电路
显示电路是一个1位共阴极LED数码管。
单片机的P0.0-P0.7分别与数码管的A、B、C、D、E、F、G、DP相连接。
单片机的P2.0与数码管片选段COM相连接。
这样就可以通过控制P0口的高低电平进行控制数码管显示正在的播放歌曲数。
共阴极数码管和共阳极数码管的引脚排列相同,主要区别就是公共极共阴极接的是低电平,共阳极接的是高电平数码管才可以正常显示。
实际的一位共阴极数码管引脚图和内部结构图,如图3-5所示。
图3-51位LED数码管引脚和内部结构图
3.3总体电路
下图就是音乐播放器用protuse仿真软件完成的电路仿真总体图,如图3-6所示,P1口接的是一位共阴数码管,P3.2、P3.3、P3.4分别接一按键,分别控制上一曲、下一曲和暂停,P1.7接一蜂鸣器,构成发声电路。
除此之外,就是单片机最小系统部分。
图3-6总体电路图
第4章系统的软件设计
4.1音乐产生原理
音调的高低用音阶表示,不同的音阶对应不同的频率。
因此,不同频率的方波就可以产生音阶,音阶与频率的关系见下表。
由于频率的倒数是周期,因此可由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。
将与扬声器连接的P1.7取反后就可得到方波的周期,从而达到了控制频率,即音阶的目的。
4.1.1音调和节拍
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。
不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。
把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。
两个音之间的距离有两个“半音”,就叫“全音”。
在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;
E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。
通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。
﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。
例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266Hz)的一倍;
同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294Hz)的一倍。
(1)要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。
利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
(2)利用AT89S52的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。
此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;
若查表结果为FFH,则产生相应的停顿效果。
(3)例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次技术956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系公式如下:
N=Fi
2
Fr
N:
计算值;
Fi:
内部计时一次为1us,故其频率为1MHz;
(4)其计数值的求法如下:
T=65536-N=65536-Fi
例如:
设K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。
中音DO(523Hz)。
高音的DO(1046Hz)的计算值
Fr=65536-1000000
Fr=65536-500000/Fr
低音DO的T=65536-500000/262=63627
低音DO的T=65536-500000/523=64580
低音DO的T=65536-500000/1047=65059
(5)C调各音符频率与计数值T的对照表如表所示。
表4-1C调各音符频率与计数值T的对照表
低音
频率
T
参数
中音
高音
Do
262
1908
229
523
956
115
1046
57
Do﹟
277
1805
217
554
903
108
1109
54
Re
294
1701
204
587
852
102
1175
51
Re﹟
311
1608
193
622
804
97
1245
48
Mi
330
1515
182
659
759
91
1318
45
Fa
349
1433
172
698
716
86
1397
43
Fa﹟
370
1351
162
740
676
81
1480
41
So
392
1276
153
784
638
77
1568
38
So﹟
415
1205
145
831
602
72
1661
36
La
440
1136
136
880
568
68
1760
34
La﹟
464
1078
129
932
536
64
1865
32
Si
494
1012
121
988
506
61
1976
30
4.1.3编码
doremifasolasi分别编码为1~7,重音do编为8,重音re编为9,停顿编为0。
播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。
音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。
以0xff作为曲谱的结束标志。
举例1:
音调do,发音长度为两拍,即二分音符,将其编码为0x18。
举例2:
音调re,发音长度为半拍,即八分音符,将其编码为0x22。
歌曲播放的设计。
先将歌曲的简谱进行编码,储存在一个数据类型为unsignedchar的数组中。
程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;
接着分离出该数的低4位,得到延时时间,接着调用软件延时。
表4-2简谱对应的简谱码、T值、节拍数
简谱
发音
简谱码
T值
节拍码
节拍数
5
低音SO
64260
1/4拍
6
低音LA
64400
2/4拍
7
低音TI
3
64524
3/4拍
中音DO
4
64580
1拍
中音RE
64684
1又1/4拍
中音MI
64777
1又1/2拍
中音FA
64820
8
2拍
中音SO
64898
A
2又1/2拍
中音LA
9
64968
C
3拍
中音TI
65030
F
3又3/4拍
高音DO
B
65058
高音RE
65110
高音MI
D
65157
高音FA
E
65178
高音SO
65217
每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,图5.2为节拍码的对照。
如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。
假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。
所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图所示,为1/4和1/8节拍的时间设定。
表4-31/4和1/8节拍的时间设定
曲调值
DELAY
调4/4
125毫秒
62毫秒
调3/4
187毫秒
94毫秒
调2/4
250毫秒
4.2总体流程图
主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。
确定歌曲曲目后,数码管再进行显示。
然后,子程序对是否播放进行循环判断,得到播放中断的指令后再进行播放。
执行播放后,关闭数码管显示并调用查表子程序进行播放音乐。
在播放音乐的过程中,查表子程序循环判断音乐是否结束。
当音乐结束时,程序跳转回曲目识别子程序。
总体流程如图4-1所示。
图4-1总体流程图
4.3键控子程序
4.3.1播放/暂停子程序
播放/暂停在程序利用内部中断T0口。
将T0口设为计数中断并工作在方式2下。
标识符初值赋值为R1=00H,计数初值设为TH0=0FFH,TL0=0FFH。
当按键第一次产生中断信号时,播放/暂停子程序改变标志符R1,将其赋值为01H。
此时播放器由暂停状态进入播放状态。
当按键第二次产生中断信号时,播放/暂停子程序判断R1是否为02H后,将R1再次赋值为00H。
此时,播放器由播放状态进入暂停状态。
如图4-2所示。
图4-2播放/暂停子程序流程图
4.3.2曲目选择子程序
曲目选择子程序分为上一曲子程序和下一曲子程序。
上一曲和下一曲功能实现方式类似,分别由外部中断
和外部中断
。
下面以实现上一曲功能为例:
首先设置标识符R7初始值为00H。
当按键产生中断信号,上一曲中断子程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 音乐 播放