单片机音乐播放器毕业设计资料.docx
《单片机音乐播放器毕业设计资料.docx》由会员分享,可在线阅读,更多相关《单片机音乐播放器毕业设计资料.docx(14页珍藏版)》请在冰豆网上搜索。
![单片机音乐播放器毕业设计资料.docx](https://file1.bdocx.com/fileroot1/2023-2/1/1a12d20f-0e41-49f2-b5ef-bc37bf8fa734/1a12d20f-0e41-49f2-b5ef-bc37bf8fa7341.gif)
单片机音乐播放器毕业设计资料
自主创新实践
题目单片机音乐播放器
院系中德机电学院
专业机电一体化技术
班级机电1002班
姓名刘兆华
学号100101239
指导教师龚运新
2012年11月
音乐播放器
摘要:
目前市场上有许多音乐播放器或音乐盒,可以说是各式各样,有的使用了单片机控制、有的没有使用到单片机,但是最终都能实现播放音乐的效果。
本次项目主要研究了以单片机控制音乐的播放,使我们实现对单片机的功能和编程有一定的了解。
单片机的发展趋势是不断地实行微型化、低功耗、高速化、集成更多资源、通信及网路功能加强、专用型单片机发展加快。
关键字:
单片机、控制、音乐
前言
自从1975年美国德克萨斯仪器公司(TI公司)的第一个单片机TMS-1000问世以来,迄今为止,仅30多年的历史,单片机技术已发展成为计算机技术的一个独特分支,在众多领域尤其是在智能化仪器仪表、检测和控制系统中得到了广泛应用。
目前,单片机的应用领域极为广泛,已深入到国民经济的各个领域,对各行各业的技术改造和产品的更新换代起着积极的推动作用。
单片机的应用领域主要有以下几个方面:
生产自动化、实时测控、智能化产品、智能化仪表、信息通讯技术、科学研究、国防现代化。
本次项目所研究的是以单片机来实现对音乐的播放功能,通过最简单的元件组合实现应有的音乐播放效果,从而通过此项目的研究学习能够对单片机的工作原理及其应用具有一定的了解和认知。
本次项目中所介绍的单片机是人们常用的AT89C51单片机,经过这次项目的研究分析,对AT89C51单片机的结构、程序编写、端口及其各端口的作用等都有着严谨的控制应用。
本次的项目是我们高职高专生自己研究的一个课题,在编写或研究中难免存在一些疏漏之处,恳请老师及相关读者不吝赐教,以利进步。
编者:
刘兆华
2012年11月
目录
前言…………………………………………………………………………………2
第1章、音乐播放器的结构…………………………………………………………4
1.1音乐播放器的组成……………………………………………………4
1.2单片机的引脚图……………………………………………………………5
第2章、音乐播放器的工作原理……………………………………………………6
2.1用定时器发音设计……………………………………………………6
2.2硬件原理图…………………………………………………………………7
2.3单片机发音原理……………………………………………………………8
第3章、音乐播放器的音乐处理及单片机的程序…………………………………10
3.1乐曲预处理………………………………………………………………10
3.2音符序列进行处理………………………………………………………11
3.3乐曲播放程序设计………………………………………………………12
附录………………………………………………………………………………17
参考文献…………………………………………………………………………18
第1章、音乐播放器的结构
1.1音乐播放器的组成
元件
规格
数量
单片机
AT89C51
1个
单片机插槽
1个
晶振
12MHz
1个
普通陶瓷电容
20pf
2个
电解电容
10uf
1个
电阻
4.7k、10k
各一个
复位按钮
1个
三极管
9013
2个
蜂鸣器
有源
1个
数据线插槽
2*5
1个
USB接口
1个
万用板
一块
导线
若干
表1-1
1.2单片机的引脚图
图1-1
第2章、音乐播放器的工作原理
2.1用定时器发音设计
1.设定TCi定时、模式1
2.单片机晶振频率fosc、机器周期Tcy=12/fosc、待发音符频率fx、半周期Tx=1/(2*fx)
3.TCi计数初值X=2n–N=2n–Tx/Tcy=2n–(1/(2*fx))/(12/fosc)
=2n–fosc/(24*fx)
4.THi=(216–fosc/(24*fx))/256
TLi=(216–fosc/(24*fx))-((216–fosc/(24*fx))/256)*256
2.2硬件原理图
图2-1
2.3单片机发音原理
1.发声电路:
见解例2
2.一段音乐需要的是两个元素:
一个是音符,另一个是节拍
3.发声参数:
以高音Si为例,其频率f=1976Hz,则周期T=506µS,半周期T1=253µS
4.为使各音调发音比较准确,采用以相对较小的时间单位(8.33µS)循环特定次数(发音参数)以产生各音的半周期T1。
用此关系,列出如下3个8度音阶的发音参数表:
3个8度音阶的发音参数表
低音
频率
T1
参数
中音
频率
T1
参数
高音
频率
T1
参数
Do
262
1908
219
Do
523
956
115
Do
1046
478
57
Do#
277
1805
217
Do#
554
903
108
Do#
1109
451
54
Re
294
1701
204
Re
587
852
102
Re
1175
426
51
Re#
311
1608
193
Re#
622
804
97
Re#
1245
402
48
Mi
330
1515
182
Mi
659
759
91
Mi
1318
379
45
Fa
349
1433
172
Fa
698
716
86
Fa
1397
358
43
Fa#
370
1351
162
Fa#
740
676
81
Fa#
1480
338
41
So
392
1276
153
So
784
638
77
So
1568
319
38
So#
415
1205
145
So#
831
602
72
So#
1661
301
36
La
440
1136
136
La
880
568
68
La
1760
284
34
La#
464
1078
129
La#
932
536
64
La#
1865
268
32
Si
494
1012
121
Si
988
506
61
Si
1976
253
30
注:
例如高音Si的发音参数=253/8.33=30
表2-1
5.节拍产生:
本例以4分音符为1拍,速度每分钟120拍。
最短音符是8分音符(时值250ms),可设定1个延时函数或定时中断控制节拍
第3章、音乐播放器的音乐处理及单片机的程序
3.1乐曲预处理
1.乐曲由音阶和节拍形成
2.软件包括:
1个程序,3个乐曲数据数组(音符名序列、对应时值数、对应发声参数)
3.演奏歌谱:
图3-1
3.2音符序列进行处理
为了便于编程(查表法获取音阶等参数)
1.先列出歌中所出现的音符由低到高序列5612356ì
2.再将其编号0、1、2、3、4、5、6、7
3.对照歌谱,将谱中音符序列用对应的音符编号代替,获得歌曲数据654576564565421543345564325432120(每个用逗号隔开)
4.再产生每个音符对应的时值数(50ms的倍数)15、5、10、10、10、5、5、20、10、5、5、10、10、5、5、5、5、20、15、5、10、5、5、10、10、20、15、5、5、5、5、5、30
5.按首列音符高低序列从音阶表中找出对应发声参数依次列出:
153、136、115、102、91、77、68、57
6.上面后3个数据序列(数组)即是本例播放的歌曲数据
3.3乐曲播放程序设计
1.音阶和节拍可分别用延时函数或定时器中断方法实现
2.本例音阶用延时函数,节拍用T0定时中断
3.程序
;music.asm
;世上只有妈妈好
;使用延时函数产生音阶
;T0定时控制节拍
;因3个数组均在ROM中,只能用查表指令取数,DPTR要分别作
;3个数组的基址指针,其中音阶、节拍数组指针是移动的
;音调转换数据(延时参数表)基址是固定的
ORG0
BZBITP1.0
AJMPMAIN
ORG000BH
AJMPSVT0
ORG0030H
MAIN:
MOVSP,#60H
SJMPMAMA
;小提琴定音
RING:
MOVR2,#10
G:
MOVR5,#0
G1:
MOVR6,#255
G0:
MOVR7,#2
DJNZR7,$
DJNZR6,G0
CPLBZ
DJNZR5,G1
DJNZR2,G
MOVR2,#15
D:
MOVR5,#0
D1:
MOVR6,#170
D0:
MOVR7,#2
DJNZR7,$
DJNZR6,D0
CPLBZ
DJNZR5,D1
DJNZR2,D
MOVR2,#22
AA:
MOVR5,#0
A1:
MOVR6,#114
A0:
MOVR7,#2
DJNZR7,$
DJNZR6,A0
CPLBZ
DJNZR5,A1
DJNZR2,AA
MOVR2,#33
E:
MOVR5,#0
E1:
MOVR6,#76
E0:
MOVR7,#2
DJNZR7,$
DJNZR6,E0
CPLBZ
DJNZR5,E1
DJNZR2,E
SJMPRING
AJMPMAIN
ORG000BH
AJMPSVT0
ORG0030H
MAIN:
MOVSP,#60H
MOVDPTR,#BEATD;ROM数据区首址
MOVR6,#33;33音符数据
PLAY:
MOVTMOD,#01H;T0定时50ms
MOVTH0,#15536/256
MOVTL0,#15536-(15536/256)*256
MOVIE,#82H;允许T0中断
PUSHDPH;保存当前音符节拍基址
PUSHDPL
MOVA,#0;发1个音,取音符节拍时值
MOVCA,@A+DPTR
MOVB,#5;250ms=50msx5
MULAB
MOVR5,A;节拍控制时值
MOVA,DPL;计算音阶数据表基址
ADDA,#33
MOVDPL,A
JNC$+4
INCDPH
MOVA,#0;取音阶参数
MOVCA,@A+DPTR
MOVDPTR,#TONED;设置音调转换数据基址
MOVCA,@A+DPTR
SETBTR0;节拍控制开始(T0中断)
PLAY0:
ACALLSONG;发声
CJNER5,#0,PLAY0;节拍时值控制
CLRTR0;时值到,关T0
POPDPL;恢复上一音符基址
POPDPH
INCDPTR;指向下一音符
DJNZR6,PLAY;控制全曲
AJMPMAIN;重复
SVT0:
MOVTH0,#15536/256
MOVTL0,#15536-(15536/256)*256
DECR5
RETI
SONG:
MOVR3,A;R3放延时参数
SONG1:
MOVR2,#4
DJNZR2,$;8uS
DJNZR3,SONG1
CPLP1.0
RET
BEATD:
DB3,1,2,2,2,1,1,4;节拍控制nx250ms
DB2,1,1,2,2,1,1,1,1,4
DB3,1,2,1,1,2,2,4
DB3,1,1,1,1,1,6
SONGD:
DB6,5,4,5,7,6,5,6;音符数据
DB4,5,6,5,4,2,1,5,4,3
DB3,4,5,5,6,4,3,2
DB5,4,3,2,1,2,0
TONED:
DB153,136,115,102,91,77,68,57;延时参数表
END
附录
以单片机控制的音乐播放器在设计时常用的网站
XX
单片机爱好者
单片机学习网
全国大学生电子设计竞赛网
参考文献
[1]董少明,单片机原理与应用,中国铁道出版社,2007年
[2]付晓光,单片机原理与应用技术,清华大学出版社,2004年
[3]徐仁贵,微型计算机接口技术及应用,机械工业出版社,1997年