单片机音乐播放器程序设计DOC.docx
《单片机音乐播放器程序设计DOC.docx》由会员分享,可在线阅读,更多相关《单片机音乐播放器程序设计DOC.docx(22页珍藏版)》请在冰豆网上搜索。
单片机音乐播放器程序设计DOC
随着科技的发展,音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。
目前单片机以其体积小、价格低、编程灵活等特点在这一领域独领风骚。
、系统功能要求:
1、具有自动循环播放所有乐曲功能。
2、具有单独选择某首乐曲循环播放功能。
3、具有顺序查找乐曲循环播放功能。
4、具有停止播放功能。
二、系统整体方案提示:
利用AT89S52产生乐曲音符,再把乐普翻译成计算机音乐语言,由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声。
由于音符和节拍是由计算机
产生的,所以发音音符和节拍准确。
4、
单独选择某首乐曲循环播放:
按下K4~K7键即可实现。
系统整体方案框图如下:
利用AT89C51产生乐曲音符,再把乐普翻译成绩算计音乐语言,由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声。
由于音符和节拍是由计算机产生的,所以发音音符和节拍准确。
整体框图如图图一所示。
三、硬件系统原理图:
硬件系统原理图如下页图:
1)单片机:
选择AT89S52,由于AT89S52是一个低电压,高性能CMOS位单片机,内含4kbytes的可反复擦鞋的制度程序存储器(PERO)和128bytes的随机存取数据存储器(RAM,器件采用ATME公司的高密度、非易失性存储技术生产,兼容标准MC—51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机AT89S52提供了高性价比的解决方案。
其内部有足够本系统对存储器的要求,不用外扩。
2)按键控制电路:
如图由P1口作为输入,构成矩阵式按键接口方式。
3)输出控制:
此部分的放大电路简单容易实现。
主要采用了一个小功率PNP型硅管9012,利用“分压偏置式工作点稳定直
流通路”,达到了对静态工作点的稳定。
分压电阻分别选择1K和5.5K。
嗡宁器一端接+5V电压,一端接晶体管的发射极。
由P3.0输出预定的方波,加到晶体管进行放大,再输出到蜂鸣器,很好的实现了频率、声音的转换。
4)复位:
复位是由外部的复位电路来实现的。
VCC
L5
jSW-PB
't
L7
J^Sw-PB
c
L8
jSW-PB
t
1
jSw-PB
1
310
2
rSW-PB
3
rSw-PB
4
jSw-PB
5
jSw-PB
)11
6
7
H1
H2
rSW-PB
rSw-PB
jSw-PB
rSw-PB
A16
A20
A19
A12
\
rSw-PB
W-PB
rSw-PB
rSw-PB
>14
>15
\
>16
\
Fi7
\
3-5K
1^14^
\~R155K
i【
T014
/P112'
/pra—'
厂14—”
i
P101
19
U3
U1
EA
VCC
CAP1
10UF
R20
P10
P11
P12
P13
P14
P15
P16
P17
INT1
INT0
T1
T0
P00
P01
P02
P03
P04
P05
P06
P07
P20
P21
P22
P23
P24
P202
1A1
sW^B
1.5K
四、系统软件设计
XT
30PF—_
口
于C2
丁30PF
R21
8.2K
1、单片机演奏乐曲的原理
X1
U4
RYSTAL
RESET
P25
P26
P27
RD
WREA/VFRXDTXDALE/PPSEN
37
36
35
34'
33
32
21P20
~2?
■p2i
23P22
24P23
25P24
26p25
27P26
28P27
7171>36
:
16P37
31EA~TTP^C
11>31
30、
39
38
/P364
/
P3911
L^366'
沪38
FP4013
1ilT?
AT89S52
通过控制定时器的定时时间来产生不同频率的方波,
的声音,再利用延迟来控制发音时间的长短,
1A2
1A3
1A4
2A1
2A2
2A3
2A4
18
1Y1
9
1Y2>
1Y3
1Y4
14
2Y1工
2Y2J.
2Y3b
2Y4卜
1G
2G74LS240
.1A1
1Y1
.1A2
1Y2
1A3
1Y3
1A4
1Y4
-2A1
2Y1
-2A2
2Y2
2A3
2Y3
2A4
2Y4
1G
2G74LS240
U2
P302
18
16
9
4
14
T0R18
11
13
15
17
1K
Title
R17
L1
"hJ
VCC
L3
Ul14
L15UP!
一
L9
¥y
—LTi~
l1~—
J2
VCC
SPEAKER
wR519
5.5K
彳VCC
驱动喇叭发出不同音阶ber
即可控制音调中的节拍。
File:
的音符和相应的节拍变换为定常数和延迟常数,作为数据表格存放在存储器中。
申静
Sheetof
申静电子与MP3.dbDrawnBy:
由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。
当延迟时间到时,再查下一个音符的定时常数和延迟常数。
依次下去,就可以自动演奏乐曲。
单片机所用的晶振的频率为6MHz琴键所对应音符、频率及定时常数三者之
C调音符
7
1
2
3
4
5
6
7
频率(Hz)
494
524
588
660
698
784
880
988
半周期
(ms)
1.01
0.95
0.85
0.76
0.72
0.64
0.57
0.51
定时值
FE07
FE25
FE57
FE84
FE98
FEC0
FEE3
FF01
间的对应关系如下所示。
2、程序执行流程图1)说明:
l软件执行顺序:
先识别按键,再计算键值,根据键值执行相应的音乐播放程序。
2乐曲存放约定:
连续两个单元的内容为offh,offH乍为上一首乐曲结束标志。
2)系统程序流程图:
开始
键扫
吹〔有无键按下/
去抖动I键码计算键释放
JMP@A+DPTR
3、乐演奏程序清单
ORG
OOOOH
LJMPKEY1
ORG
001BH
MOV
TH1,R1
MOV
TL1,R0
CPL
P3.0
RETI
ORG
300H
KS1:
MOVA,#FFH
MOVP1,A
MOV
A,P1;读P1口键值
CPL
A;A取反,无键按下则全“0”
ANL
A,0FH屏蔽A高半字节
RET
KEY1:
ACALLKS1;检查是否有键闭合
JNZ
LK1;A非“0”则转移
ACALL
D10ms;显示一次(延时10ms)
AJMP
KEY1
LK1:
ACALL
D10ms有键闭合二
次消抖延时20ms
ACALL
D10ms
ACALL
KS1;再检查有键闭合否
JNZ
LK2;有键闭合,转LK2
ACALL
D10ms
AJMP
KEY1经去抖动确认无键闭合,
延时10ms后转KEY1
LK2:
MOV
R2,#0EH扫描初值进R2
MOV
R4,#00H扫描列号送R4
LK4:
MOVP1,A;扫描初值送P1口
MOV
A,P1;读P1口
JB
ACC.0,LONE;
ACC.0=1,第0行无键闭合,
转LONE
A,#00H装第0行行值
MOV
LKP
AJMP
LONE:
合,转
LTWO
JB
ACC.1,LTWOACC.1=1,第1行无键闭
MOV
A,#04H;装第1行行值
AJMP
LKP
LTWO:
合,转
LTHR
JB
ACC.2,
LTHRACC.2=1第2行无键闭
MOV
A,#08H;装第2行行值
AJMP
LKP
LTHR:
合则转
NEXT
LKP:
LK3:
闭合再延时
NEXT:
JB
ACC.3,
MOV
ADD
PUSH
ACALL
ACALL
JNZ
POP
RET
INC
NEXTACC.3=1第3行无键闭
A,#0CH装第3行行值
A,R4;计算键值
ACC;保护键值,将键值入栈
D10ms;延时10ms消抖
KS1;查键是否继续闭合,若
LK3
ACC;若键起,则键码送A
0”,已扫完最高列则转KEND
MOV
A,R2
JNB
ACC.3,KND笫3位为
RLA
A;循环左移一位
MOV
R2,A
AJMP
LK4;进行下一列扫描
R4;扫描列号加1
KEND:
一轮
AJMP
KEY1;扫描完毕,开始新的
LONE:
JB
ACC.1,LTWO
MOV
A,#04H
AJMP
LKP
LTWO:
JB
ACC.2,LTHR
MOV
A,#08H
AJMP
LKP
LTHR:
JB
ACC.3,NEXT
MOV
A,#0CH
LKP:
ADD
A,R4
PUSH
ACC
LK3:
ACALL
D10ms
JNZ
LK3
POP
ACC
RET
NEXT:
INC
R4
MOV
A,R2
JNB
ACC.3,KND
RLA
A
MOV
R2,A
AJMP
LK4
KEND:
AJMP
KEY1
MOVDPTR,#TAB1
K1:
LJMP
START
K2:
MOVDPTR,#TAB2
LJMP
START
K3:
MOVDPTR,#TAB3
LJMP
START
K4:
MOVDPTR,#TAB4
LJMP
START
K5:
MOVDPTR,#TAB5
LJMP
START
START:
MOVTMOD,#10H
MOV
IE,#88H
MOVC
A,@A+DPTR
MOV
R0,A
INC
DPTR
CLR
A
MOVC
A,@A+DPTR
MOV
R0,A
ORL
A,R1
JZ
NEXT0
MOV
R0,A
ANL
A,R1
CJNE
A,#0FFH,NEX
SJMP
KEY
NEXT:
MOVTH1,R1
MOV
TR1,R0
SETB
TR1
SJMP
NEXT1
NEXT0:
CLRTR1
NEXT1:
CLRA
INC
DPTR
MOVCA,@A+DPTR
MOVR2,A
LOOP1:
LCALLD200
DJNZ
R2,LOOP1
INC
DPTR
LJMP
LOOP
D200:
MOV
R4,#81H
D200B: