单片机课程设计之音乐播放器Word文档格式.docx
《单片机课程设计之音乐播放器Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计之音乐播放器Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
表3-1C调各音符频率与计数值T的对照表
音符频率(Hz)简谱码(T值)音符频率(Hz)简谱码(T值)
低1DO26263628#4FA#74064860
#1DO#27763731中5SO78464898
低2RE29463835#5SO#83164923
#2RE#31163928中6LA88064968
低3M33064103#693264994
低4FA34964103中7SI98865030
#4FA#37064260高1DO104665058
低5SO39264260#1DO#110965085
#5SO#41564331高2RE117565110
低6LA44064400#2RE#124565124
#646664463高3M131865157
低7SI49464524高4FA139765178
中1DO52364580#4FA#148065198
(5)节拍:
每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。
但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。
假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。
所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。
表3-2节拍码对照表
1/4节拍1/8节拍
节拍码节拍数节拍码节拍数
11/4拍11/8拍
22/4拍21/4拍
33/4拍33/8拍
41拍41/2拍
51又1/4拍55/8拍
61又1/2拍63/4拍
71又3/4拍77/8拍
82拍81拍
92又1/4拍91又1/8拍
A2又1/2拍A1又1/4拍
B2又3/4拍B1又3/8拍
C3拍C1又1/2拍
D3又1/4拍D1又5/8拍
E3又1/2拍E1又3/4拍
F3又3/4拍F1又7/8拍
表3-3各调节拍的时间设定表
1/4节拍
1/8节拍
曲调值
DELAY
调4/4
125毫秒
62毫秒
调3/4
187毫秒
94毫秒
调2/4
250毫秒
1/4拍的延迟时间=187毫秒
DELAY:
MOVR7,#2
D2:
MOVR4,#187
D3:
MOVR3,#248
DJNZR3,$
DJNZR4,D3
DJNZR7,D2
RET
(6)移调
一般的歌曲,有3/8、2/4、3/4、4/4等节拍类型,但不管有几拍,基本上是在C调下演奏的。
如果是C调,则音名C唱Do,音名D唱Re,音名E唱Mi,音名E唱Mi,音名F唱Fa,音名G唱So,音名A唱La,音名B唱Ti等。
但是,并不是所有的歌曲都是在C调下演奏的,还有D调、E调、F调、G调等。
D调是将C调各音符上升一个频率实现的,即C调下的音名D在D调下唱Do,C调下的音名E在D调下唱Re,C大调的音名F在D调下上升高半音符F#唱Mi,C调下的音名G在D调下唱Fa,C调下的音名C在D调下上升高伴音C#符唱Ti。
这种唱法称为移调。
表3-4C调在各调中的音名
音名
调
Do
Re
Mi
Fa
So
La
Ti
C调
C
D
E
F
G
A
B
D调
F#
E调
G#
F调
G调
A调
C#
B调
三、方案与论证
1.单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。
MCS-51系列单片机主要包括8031、8051和8751等通用产品。
DP-51S单片机仿真实验仪是由广州致远电子有限公司设计的DP系列单片机仿真实验仪之一,是一种功能强大的单片机应用技术学习、调试。
2.基于单片机的音乐播放器可应用于mp3,MP4,扩音器等很多方面,并可作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括"
Do"
、"
Re"
Me"
--等音阶在内的各种频率声音。
将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。
基于这个思想,我设计了一款特殊的"
音乐播放器"
,本播放器可实现播放、暂停、复位等功能。
为了体现乐曲播放过程中的动态效果,增加了1只LED,作随机闪烁以指示旋律的节奏。
由于时间及条件限制,本设计实现了一种简单的音乐播放器,其核心器件采用AT89C51单片机,本播放器具有电路简单,功能强大,易于拓展等特点。
在此基础上,可以添加按键,LED显示屏等模块,实现切换歌曲,歌名显示,动感音乐屏等功能。
四、设计内容
(一)系统框图和设计原理图
1.电路原理图
图中,S1为复位键,S2-S17为键盘电路,可以进行选择曲目。
扬声器在每个操作后把程序中存储的信号进行放大还原成音乐播放出来,S1可以在死机等情况下进行系统复位。
2.矩阵键盘电路设计
由于设计要求使用键盘的按键数目较多,所以本设计采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。
其原理如图2所示。
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×
M个按键的键盘。
在这种行列式矩阵式键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就要识别哪一个按键按下。
对键的识别通常用逐行扫描查询法。
首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
方法是:
向行线输出全扫描字F0H,把全部行线置为低电平,然后将列线的电平状态读入累加器A中。
如果有按键按下,总会有一根列线电平被拉至低电平,从而使列线不全为1。
判断键盘中哪一个键被按下使通过将行线逐列置低电平后,检查行输入状态来实现的。
依次给行线送低电平,然后查所有列线状态,如果全为1,则所按下的键不在此行;
如果不全为1,则所按下的键必在此行,而且是在与零电平行线相交的交点上的那个键。
3.程序流程框图
3.1总体程序流程图
根据硬件设计结果,为满足要求,程序应有主程序、按键处理程序、中断服务程序和发声程序等部分构成。
主程序中主要是程序各部分的初始化;
按键处理程序处理五个按键的操作,包括各个按键的响应程序以及发声输出等;
(二)软件设计流程图
1.音乐软件的设计
1.1音乐代码库的建立方法
(1)先找出乐曲的最低音和最高音范围,然后确定音符表T的顺序。
(2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。
(3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。
(4)音符节拍码00H为音乐结束标记。
1.2选曲
在一个程序中,需要演奏两首或两首以上的歌曲时,音乐代码库的建立有两种方法:
(1)将每首歌曲建立相互独立的音符表T和发音符计数值TABLE。
(2)在建立公用音符表T后,再写每首歌的发音计数值TABLE中的代码
不管采用那种方法,每首歌曲结束时,在TABLE中均需加上音乐结束符00H。
1.3歌曲的设计
下面以歌曲《送别》和《三个和尚》的设计为例,讲述歌曲在单片机中的实现。
曲谱如下图所示
从两首歌中可看出,最低音为低7Si,最高音为高1Do。
根据音乐软件的设计方法,简谱对应的简谱码、T值、节拍数如表所示。
表3-5简谱对应的简谱码、T值、节拍数
简谱
发音
简谱码
T值
节拍码
节拍数
低7
低音Si
1
64524
1/4
中音Do
2
64580
2/4
中音Re
3
64684
3/4
中音Mi
4
64777
中音Fa
5
64820
1+1/4
中音So
6
64898
1+1/2
中音La
7
64968
8
中音Ti
65030
2+1/2
高1
高音Do
9
65058
低6
低音La
64400
3+3/4
低5
低音So
64260
五、总结
AT89C51芯片有多组引脚,可实现多种拓展功能,由于知识,能力,时间,条件所限,我只实现了播放自编歌曲的功能,其实,还可以同时拓展LED点阵屏幕,按键选歌,以及多组灯光闪亮等功能,换用更高档的芯片后,甚至可以实现MP3的丰富功能,在补充了相应知识后我将尝试实现更多的功能。
附录:
程序源代码如下:
ORG0000H
LJMPSTART
ORG001BH
LJMPTIME1
START:
MOVTMOD,#10H;
T1工作在方式1
MOVIE,#88H;
中断使能
MAIN:
MOV40H,#00H;
设简谱码指针初始值
NEXT:
MOVA,40H;
简谱码指针暂存累加器A
MOVDPTR,#TABLE;
设简谱码
MOVCA,@A+DPTR
CJNEA,#00H,PLAY;
取到的简谱码不是结束码,传PLAY取节拍码
LJMPSTOP;
是结束码,退出
PLAY:
MOVR1,A;
R1暂存简谱码
ANLA,#0FH;
取节拍码
MOVR2,A节拍码暂存R2
MOVA,R1
ANLA,#0F0H;
取音符码
CJNEA,#00H,MUSIC;
音符码不为0,调发音子程序
CLRTR1;
音符码为0,不发音
LJMPDEL
MUSIC:
SWAPA
DECA
MOV22H,A
ADDA,22H
MOVR3,A
MOVDPTR,#TABLE1;
取相应计数值
MOVCA,@A+DPTR
MOVTH1,A;
暂存高位字节
MOV21H,A
MOVA,R3
INCA
MOVCA,@A+DPTR;
取相应计数值的低位字节
MOVTL1,A;
暂存低位字节
MOV20H,A
SETBTR1;
启动定时器
DEL:
LCALLDELAY
INC40H;
指向下一个简谱码
LJMPNEXT
STOP:
停止计时器
LJMPMAIN
TIME1:
PUSHACC;
现场保护
PUSHPSW
CPLP1.7;
P1.7反相输出,演奏音乐
MOVTL1,20H;
重设计数值
MOVTH1,21H
POPPSW
POPACC
RETI
MOVR7,#02H;
4/4曲调,演示125ms子程序
DELA1:
MOVR6,#125
DELA2:
MOVR5,#248
DJNZR5,$
DJNZR6,DELA2
DJNZR7,DELA1
DJNZR2,DELAY
RET
TABLE1:
DW64524,64580,64684,64777;
简码值
DW64820,64898,64968,65030,65058
DW64400,64260
TABLE:
DB14H,42H,62H,98H;
歌曲《送别》
DB74H,92H,72H,68H
DB64H,22H,32H,44H,32H,22H
DB3CH
DB64H,42H,62H,94H,04H,82H
DB74H,94H,68H
DB64H,32H,42H,54H,04H,12H
DB2CH
DB74H,94H,98H
DB84H,72H,82H,98H
DB72H,82H,92H,72H,72H,62H,42H,22H
DB64H,42H,62H,94H,04H,82H
DB42H,62H,72H,41H,61H,41H,31H,22H,0B2H;
歌曲《三个和尚》
DB62H,61H,61H,71H,61H,41H,64H
DB0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H
DB42H,62H,72H,41H,61H,41H,31H,22H,0B2H
DB22H,31H,41H,31H,21H,0A2H,0B4H
DB0A2H,21H,32H,42H,62H,61H,41H,62H,71H
DB42H,41H,61H,42H,32H,22H,31H,21H,0A2H
DB62H,61H,42H,62H,71H,61H,72H,62H,71H
DB62H,61H,71H,32H,42H,64H
DB00H
END