单片机 音乐播放器设计解读.docx

上传人:b****6 文档编号:7080883 上传时间:2023-01-17 格式:DOCX 页数:25 大小:372.83KB
下载 相关 举报
单片机 音乐播放器设计解读.docx_第1页
第1页 / 共25页
单片机 音乐播放器设计解读.docx_第2页
第2页 / 共25页
单片机 音乐播放器设计解读.docx_第3页
第3页 / 共25页
单片机 音乐播放器设计解读.docx_第4页
第4页 / 共25页
单片机 音乐播放器设计解读.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

单片机 音乐播放器设计解读.docx

《单片机 音乐播放器设计解读.docx》由会员分享,可在线阅读,更多相关《单片机 音乐播放器设计解读.docx(25页珍藏版)》请在冰豆网上搜索。

单片机 音乐播放器设计解读.docx

单片机音乐播放器设计解读

单片机原理与应用

综合实验报告

 

题目:

音乐播放器设计

 

专业班级:

姓  名:

学号:

指导教师:

时间:

 

题目:

音乐播放器设计

班级:

姓名:

摘要:

本设计是基于AT89C51单片机的可控数字音乐播放器的程序设计。

该音乐播放器是一个依据单片机技术原理,通过PROTEUS仿真软件对硬件电路进行仿真制作以及利用KEIL软件对音乐播放器源程序进行C语言编译,而设计制作出的一个多功能数字音乐播放器。

该音乐播放器通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐。

该程序通过把乐谱转化成相应的定时常数来驱动发音设备演奏出悦耳动听的音乐。

本音乐盒一共设计了五首歌曲,同时还设计了三种LED彩灯的变化花样。

在演奏歌曲时彩灯随音调闪烁。

在停止演奏歌曲时彩灯花样开始闪烁。

歌曲和花样均可随意切换。

与此同时,数码管也不断变化数字,以此显示歌曲和彩灯花样的序号。

关键词:

数字音乐播放器;AT89C51;KEIL;PROTEUS;数码管

1引言

随着科技越来越发达,单片机技术也越来越纯熟,单片机的应用也越来越广泛,可以说几乎很难找到哪个领域没有单片机的踪迹。

如今,单片机在各个领域都起着至关重要的作用[1]。

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

随着人类社会的发展,人们对于视听方面的享受提出了更高的要求。

而传统的音乐播放器大部分是机械型的,体积庞大,而且沉重,发音单调,且不悦耳,不能实现大批量的生产,所以很难满足当代人们的需求。

但是本文设计的数字音乐播放器是以单片机为核心元件的数字音乐播放器。

单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。

因此该数字音乐播放器也就具有体积小,重量轻,能演奏各种各样的音乐,功能多,外观绚丽多彩,使用非常方便等诸多优点。

而且具有一定的开发价值。

2总体设计方案

根据音乐播放器系统的功能与组成,进行系统分析,系统除单片机核心部分外还需要与按键连接以接收输入指令,连接LED显示器将要演奏的乐曲序号显示出来,通过连接扬声器使其发出音乐。

2.1设计思路

该音乐播放器主要是通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐。

如图:

图2-1音乐播放器主体结构框图

本设计是一个基于AT89C51系列单片机的数字音乐播放器,一共设计了五首不同风格的歌曲,在播放歌曲同时八路LED彩灯随音调变化而变化,同时利用数码管显示歌曲的序号,以便切换歌曲。

在不播放歌曲的时候还设计了八路LED彩灯,给人们带来视听的双重享受。

一共设计了两个开关,一个用以切换LED彩灯花样,一个用以切换歌曲。

 

2.2设计方框图

图2-2总设计框图

3设计原理分析

硬件除了AT89C51芯片外,主要的就是时钟振荡电路、LED彩灯以及数码管的设计。

3.1时钟振荡电路

AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。

这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。

外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。

对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易、程序及温度稳定性。

如果使用石英晶体,我们推荐电容使用30PF-10PF,而如果使用陶瓷振荡器建议选择40PF-10PF。

用户也可以采用外部时钟。

采用外部时钟的电路如图示。

这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。

由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。

振荡器电路图如下:

图3.1单片机内部、外部振荡电路

3.2LED和数码管的设计

(1)八路LED彩灯,分别接在P1.0-P1.7这八个端口上,连接方式为共阳极,若为低电平,可使LED亮起。

发光二极管的亮、熄由内部程序控制,八个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮、熄。

设计如图:

图3-2LED设计图

(2)数码管接在AT89C51的P0端口上,数码管采用的是共阴极数码管[5],在数码管与端口之间接了上拉电阻以使数码管能正常工作。

如图所示:

图3-3数码管设计图

3.3音调和节拍的设计

3.3.1音调和节拍的设计以及音乐基础知识

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间[6]。

不同音高的乐音是用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/频率),然后将此周期除以2,即为半周期的时间。

利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。

此外结束符和休止符[7]可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。

在简谱中,数字上面带一个点就是高8度,两个点代表高16度。

数字下面带一个点就是低8度,两个点代表低16度。

若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。

“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。

若1拍实0.5s,则1/4拍为0.125s。

至于1拍多少秒,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。

音持续时间的长短即时值,一般用拍数表示。

休止符表示暂停发音。

一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。

了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。

对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时、计数器来产生这样的方波频率信号。

因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。

而节拍的定义如表所示:

表3.3.1节拍的定义

音符名称

写法

时值

全音符

5———

四拍

二分音符

5—

二拍

四分音符

5

一拍

八分音符

5

半拍

十六分音符

5

四分之一拍

三十二分音符

5

-

八分之一拍

每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,图5.2为节拍码的对照。

如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。

假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。

所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图5.3为1/4和1/8节拍的时间设定。

表3.3.21/4和1/8节拍的时间设定

曲调值

DELAY

曲调值

DELAY

调4/4

125毫秒

调4/4

62毫秒

调3/4

187毫秒

调3/4

94毫秒

调2/4

250毫秒

调2/4

125毫秒

3.3.2音调和节拍的编码

doremifasolasi分别编码为1-7,重音do编为8,重音re编为9,重音mi编为A,重音fa编为B,重音so编为C,重音la编为D,重音si编为E,停顿编为0。

播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。

音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。

以0xff作为曲谱的结束标志。

举例1:

音调do,发音长度为两拍,即二分音符,将其编码为0x18。

举例2:

音调re,发音长度为半拍,即八分音符,将其编码为0x22。

歌曲播放的设计。

先将歌曲的简谱进行编码,储存在一个数据类型为unsignedchar的数组中。

程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。

表3.3.3简谱对应的简谱码、T值、节拍数

简谱

发音

简谱码

节拍码

节拍数

1

中音DO

1

1

1/4拍

2

中音RE

2

2

2/4拍

3

中音MI

3

3

3/4拍

4

中音FA

4

4

1拍

5

中音SO

5

5

1又1/4拍

6

中音LA

6

6

1又1/2拍

7

中音SI

7

8

2拍

1

高音DO

8

A

2又1/2拍

2

高音RE

9

C

3拍

3

高音MI

A

F

3又3/4拍

4

高音FA

B

5

高音SO

C

6

高音LA

D

7

高音SI

E

3.4C源程序设计

3.4.1音乐程序

音乐程序根据上面的音调节拍编码方案,用第一首歌《劳动最光荣》为例[8],编码如下:

ucharcodeldzgr[]={//劳动最光荣

0x52,0x82,0x82,0x52,0x62,0x62,0x54,0x32,0x52,0x12,0x32,0x28,

//太阳光,金亮亮,雄鸡唱三唱;

0x52,0x84,0x52,0x62,0x62,0x54,0x52,0x81,0xA1,0x92,0x52,0x88,

//花儿醒来了,鸟儿忙梳妆

0x83,0x91,0x82,0x52,0x62,0x62,0x54,0x33,0x81,0x62,0x52,0x12,0x32,0x24,

//小喜鹊造新房,小蜜蜂采蜜糖

0x12,0x11,0x21,0x32,0x51,0x51,0x62,0x52,0x84,0x82,0x51,0x61,0x84,0xA4,0x92,

0x52,0x86,0x02,

//幸福的生活从哪里来?

要靠劳动来创造

0x52,0x81,0x81,0x82,0x52,0x62,0x61,0x81,0x54,0x32,0x51,0x61,0x53,0x31,0x12,

0x32,0x24,

//青青的叶儿红红的花,小蝴蝶贪玩耍

0x52,0x82,0x82,0x52,0x62,0x62,0x54,0x51,0x61,0x81,0xA1,0x92,0x52,0x88,

//不爱劳动不学习,我们大家不学它

0x83,0x91,0x82,0x52,0x62,0x62,0x54,0x33,0x81,0x62,0x52,0x12,0x32,0x24,

//要学喜鹊造新房,要学蜜蜂采蜜糖

0x12,0x11,0x21,0x32,0x52,0x82,0x52,0x68,0x52,0x61,0x61,0x84,0xA4,0x92,0x52,

0x84,0xff

//劳动的快乐说不尽,劳动的创造最光荣

};

3.4..2LED花样程序

LED彩灯一共有三种花样:

(1)第一种花样:

花灯先从左到右依次亮、熄,然后在从右到左一次亮、熄。

如图:

图3.4.1LED花样一

程序如下:

ucharcodehuayang1[]=

{0x7f,0xbf,0xdf,0xef,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//花样一

(2)第二种花样:

花灯从左右两边同时开始亮、熄,并向中间靠拢,然后再一次从中间同时向两边亮、熄。

如图:

图3.4.2LED花样二

程序如下:

ucharcodehuayang2[]=

{0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e};//花样二

(3)第三种花样:

奇数灯依次亮且不熄灭,奇数灯亮完后全部熄灭,接着偶数灯亮且不熄灭,偶数灯亮完后全部熄灭,然后相邻两个灯同时亮,并从左向右依次亮灯齐亮、熄,最后全部都亮、熄。

如图:

图3.4.3LED花样三

程序如下:

ucharcodehuayang3[]=

{0x7f,0x5f,0x57,0x55,0xbf,0xaf,0xab,0xaa,0x3f,0xcf,0xf3,0xfc,0x00};//花样三

3.4.3数码管程序

数码管用以显示序号,当播放第一首歌曲是显示‘1’,第二首为‘2’,第三首为‘3’,依此类推,当不播放歌曲只显示三种花灯花样时始终显示‘0’。

如图所示:

图3.5数码管仿真运行图

程序如下[9]:

ucharcodenum[6]={0x3f,0x06,0x5b,0x4f,0x66,0x6d};

switch(count2)

{case0:

P0=num[0];break;

case1:

P0=num[1];break;

case2:

P0=num[2];break;

case3:

P0=num[3];break;

case4:

P0=num[4];break;

case5:

P0=num[5];break;

}

4结束语

通过本次设计,我更加清楚地了解单片机的功能与价值,而且在设计过程中所遇到的问题,最终都通过老师和同学的帮助再加上自己的努力一一解决,因此我从中不仅获得了很多知识,而且还获得了很多宝贵经验,这都是我终身难忘的。

本次论文设计,除了知识的增长外,我从中找到了成功后的自信。

这必将激励我在以后的生活和工作中更加努力奋斗,更加斗志昂扬。

参考文献

[1]王玉凤/刘湘黔/杨欣.51单片机应用从零开始.北京:

清华大学出版社,2008

[2]陈卫兵.单片机技术与应用基础.北京:

人民邮电出版社,2010

[3]张毅刚/彭喜元.单片机原理及接口技术.北京:

人民邮电出版社,2008

[4]杜树春.基于Proteus和KeilC51的单片机设计与仿真.北京:

电子工业出版社,2012

[5]郭天祥.51单片机C语言教程.北京:

电子工业出版社,2009:

56

[6]东方.卓越.简谱入门基础教程.北京:

同心出版社出版,2009

附录

Proteus仿真总设计图:

仿真结果图:

1

2

3

4

程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitduan=P2^6;

sbitkey1=P3^2;//按key1可切换花样

sbitkey2=P3^3;//按key2可切换歌曲

sbitfm=P3^7;//蜂鸣器连续的IO口

sbitP34=P3^4;//矩阵键盘的一列

ucharcodehuayang1[]=

{0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//花样1

ucharcodehuayang2[]=

{0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e};//花样2

ucharcodehuayang3[]=

{0x7f,0x5f,0x57,0x55,0xbf,0xaf,0xab,0xaa,0x3f,0xcf,0xf3,0xfc,0x00};//花样3

ucharcount1;//花样标志

ucharcount2;//歌曲标志

uchartimeh,timel,i;

ucharcodeldzgr[]={//劳动最光荣

0x52,0x82,0x82,0x52,0x62,0x62,0x54,0x32,0x52,0x12,0x32,0x28,

//太阳光,金亮亮,雄鸡唱三唱;

0x52,0x84,0x52,0x62,0x62,0x54,0x52,0x81,0xA1,0x92,0x52,0x88,

//花儿醒来了,鸟儿忙梳妆

0x83,0x91,0x82,0x52,0x62,0x62,0x54,0x33,0x81,0x62,0x52,0x12,0x32,0x24,

//小喜鹊造新房,小蜜蜂采蜜糖

0x12,0x11,0x21,0x32,0x51,0x51,0x62,0x52,0x84,0x82,0x51,0x61,0x84,0xA4,0x92,

0x52,0x86,0x02,

//幸福的生活从哪里来?

要靠劳动来创造

0x52,0x81,0x81,0x82,0x52,0x62,0x61,0x81,0x54,0x32,0x51,0x61,0x53,0x31,0x12,

0x32,0x24,

//青青的叶儿红红的花,小蝴蝶贪玩耍

0x52,0x82,0x82,0x52,0x62,0x62,0x54,0x51,0x61,0x81,0xA1,0x92,0x52,0x88,

//不爱劳动不学习,我们大家不学它

0x83,0x91,0x82,0x52,0x62,0x62,0x54,0x33,0x81,0x62,0x52,0x12,0x32,0x24,

//要学喜鹊造新房,要学蜜蜂采蜜糖

0x12,0x11,0x21,0x32,0x52,0x82,0x52,0x68,0x52,0x61,0x61,0x84,0xA4,0x92,0x52,

0x84,0xff//歌曲结束符号

//劳动的快乐说不尽,劳动的创造最光荣

};

ucharcodewy[]={//唯一[10]

0x33,0x53,0x63,0x53,0x63,0x73,0x63,0x33,0x53,0x03,0x53,0x53,0x53,0x43,0x44,

0x52,0x43,0x33,0x22,0x14,0x38,

//我的天空多么的清新,透明的承诺是过去的空气

0x04,0x43,0x43,0x43,0x33,0x23,0x13,0x38,0x03,0x13,0x23,0x13,0x33,0x26,0x04,

0x33,0x23,0x13,0x2c,0x04,

//牵着我的手是你,但你的笑容却看不清

0x33,0x53,0x63,0x53,0x63,0x73,0x63,0x33,0x55,0x03,0x53,0x53,0x53,0x43,0x44,

0x52,0x43,0x33,0x23,0x13,0x35,

//是否一颗星星变了心,从前的愿望也全都被抛弃

0x04,0x43,0x43,0x43,0x33,0x23,0x13,0x33,0x54,0x83,0x83,0x93,0xA3,0x92,0x81,

0x63,0x62,0xA3,0x93,0x83,0x96,0x04,0x04,

//最近我无法呼吸,连自己的影子也都想逃避

0xA4,0x94,0x82,0x82,0x82,0x52,0x82,0x92,0xA4,

//BaBy你就是我的唯一

0x72,0x72,0x72,0x52,0x72,0x82,0x94,0x04,0xA2,0xA2,0xB2,0xA2,0x82,0x92,

//两个世界都变心,回去谈何容易

0x04,0xA4,0x94,0x82,0x82,0x82,0x52,0x82,0x92,0xA4,

//确定你就是我的唯一

0x72,0x72,0x72,0x52,0x72,0x82,0x92,0xA2,0x84,0x64,0x03,0x51,0xB2,0xA2,0x82,

0x61,0x51,

//独自对着电话说我爱你,我真的爱你

0x04,0xA4,0x94,0x82,0x82,0x82,0x82,0x72,0x82,0x52,0x32,0x68,

//BABY我已不能多爱你一些

0x02,0xA4,0x94,0x82,0x82,0x82,0x82,0x72,0x82,0x54,0x42,0x66,0xff

//其实早已超过了爱的极限

};

ucharcodetzdn[]={//同桌的你[11]

0x56,0x56,0x32,0x42,0x52,0x76,0x66,0x56,0x52,0x22,0x32,0x46,0x16,0x26,0x04,

//前奏

0x52,0x52,0x52,0x52,0x32,0x42,0x56,0x86,0x62,0x62,0x62,0x62,0x42,0x62,0x56,

0x04,

//明天你是否会想起,昨天你写的日记

0x52,0x52,0x52,0x52,0x72,0x62,0x52,0x44,0x02,0x42,0x42,0x42,0x42,0x33,0x21,

0x16,0x02,

//明天你是否还惦记,曾经最爱哭的你

0x82,0x82,0x82,0x82,0x52,0x32,0x86,0x82,0xA4,0x92,0x92,0x92,0x93,0x81,0x72,

0x66,0x02,

//谁娶了多愁善感的你,谁看了你的日记

0x72,0x72,0x72,0x72,0x72,0x82,0x96,0x54,0x02,0x72,0x72,0x82,0x92,0x82,0x72,

0x16,0x02,

//谁把你的长发盘起,谁给你做的嫁衣

0x84,0x82,0x82,0x52,0x62,0x86,0xA6,0x94,0x92,0x92,0x82,0x72,0x66,0x74,0x72,

0x72,0x72,0x82,0x96,0x56,

//啦…

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1