单片机音乐播放器程序设计DOC.docx
- 文档编号:4866184
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:11
- 大小:118.59KB
单片机音乐播放器程序设计DOC.docx
《单片机音乐播放器程序设计DOC.docx》由会员分享,可在线阅读,更多相关《单片机音乐播放器程序设计DOC.docx(11页珍藏版)》请在冰豆网上搜索。
单片机音乐播放器程序设计DOC
实验报告 51单片机设计音乐播放器
随着科技的发展,音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。
目前单片机以其体积小、价格低、编程灵活等特点在这一领域独领风骚。
一、系统功能要求:
1、具有自动循环播放所有乐曲功能。
2、具有单独选择某首乐曲循环播放功能。
3、具有顺序查找乐曲循环播放功能。
4、具有停止播放功能。
二、系统整体方案提示:
利用AT89S52产生乐曲音符,再把乐普翻译成计算机音乐语言,由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声。
由于音符和节拍是由计算机产生的,所以发音音符和节拍准确。
1、循环播放:
按下K1键即可实现。
2、顺序查找乐曲循环播放:
按下K2键即可实现。
3、停止播放:
按下K3键即可实现。
4、单独选择某首乐曲循环播放:
按下K4~K7键即可实现。
系统整体方案框图如下:
利用AT89C51产生乐曲音符,再把乐普翻译成绩算计音乐语言,由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声。
由于音符和节拍是由计算机产生的,所以发音音符和节拍准确。
整体框图如图图一所示。
三、硬件系统原理图:
硬件系统原理图如下页图:
1)单片机:
选择AT89S52,由于AT89S52是一个低电压,高性能CMOS8位单片机,内含4kbytes的可反复擦鞋的制度程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS—51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机AT89S52提供了高性价比的解决方案。
其内部有足够本系统对存储器的要求,不用外扩。
2)按键控制电路:
如图由P1口作为输入,构成矩阵式按键接口方式。
3)输出控制:
此部分的放大电路简单容易实现。
主要采用了一个小功率PNP型硅管9012,利用“分压偏置式工作点稳定直流通路”,达到了对静态工作点的稳定。
分压电阻分别选择1K和5.5K。
嗡宁器一端接+5V电压,一端接晶体管的发射极。
由P3.0输出预定的方波,加到晶体管进行放大,再输出到蜂鸣器,很好的实现了频率、声音的转换。
4)复位:
复位是由外部的复位电路来实现的。
四、系统软件设计
1、单片机演奏乐曲的原理
通过控制定时器的定时时间来产生不同频率的方波,驱动喇叭发出不同音阶的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。
把乐谱中的音符和相应的节拍变换为定常数和延迟常数,作为数据表格存放在存储器中。
由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。
当延迟时间到时,再查下一个音符的定时常数和延迟常数。
依次下去,就可以自动演奏乐曲。
单片机所用的晶振的频率为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乐曲存放约定:
连续两个单元的内容为0FFH,0FFH作为上一首乐曲结束标志。
2)系统程序流程图:
3、乐演奏程序清单
ORG 0000H
LJMPKEY1
ORG 001BH
MOV TH1,R1
MOV TL1,R0
CPL P3.0
RETI
ORG 300H
AJMP KEY1
KS1:
MOV A,#FFH
MOV P1,A
MOV A,P1;读P1口键值
CPL A;A取反,无键按下则全“0”
ANL A,0FH;屏蔽A高半字节
RET
KEY1:
ACALL KS1;检查是否有键闭合
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:
MOV P1,A;扫描初值送P1口
MOV A,P1;读P1口
JB ACC.0,LONE;ACC.0=1,第0行无键闭合,转LONE
MOV A,#00H;装第0行行值
AJMP LKP
LONE:
JB ACC.1,LTWO;ACC.1=1,第1行无键闭合,转LTWO
MOV A,#04H;装第1行行值
AJMP LKP
LTWO:
JB ACC.2,LTHR;ACC.2=1,第2行无键闭合,转LTHR
MOV A,#08H;装第2行行值
AJMP LKP
LTHR:
JB ACC.3,NEXT;ACC.3=1,第3行无键闭合则转NEXT
MOV A,#0CH;装第3行行值
LKP:
ADD A,R4;计算键值
PUSH ACC;保护键值,将键值入栈
LK3:
ACALL D10ms;延时10ms消抖
ACALL KS1;查键是否继续闭合,若闭合再延时
JNZ LK3
POP ACC;若键起,则键码送A
RET
NEXT:
INC R4;扫描列号加1
MOV A,R2
JNB ACC.3,KND;笫3位为“0”,已扫完最高列则转KEND
RLA A;循环左移一位
MOV R2,A
AJMP LK4;进行下一列扫描
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
K1:
MOV DPTR,#TAB1
LJMP START
K2:
MOV DPTR,#TAB2
LJMP START
K3:
MOV DPTR,#TAB3
LJMP START
K4:
MOV DPTR,#TAB4
LJMP START
K5:
MOV DPTR,#TAB5
LJMP START
START:
MOV TMOD,#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,NEXT
SJMP KEY
NEXT:
MOV TH1,R1
MOV TR1,R0
SETB TR1
SJMP NEXT1
NEXT0:
CLR TR1
NEXT1:
CLR A
INC DPTR
MOVC A,@A+DPTR
MOV R2,A
LOOP1:
LCALL D200
DJNZ R2,LOOP1
INC DPTR
LJMP LOOP
D200:
MOV R4,#81H
D200B:
MOV A,#0FFH
D200A:
DEC A
JNZ D200A
DEC R4
CJNE R4,#00H,D200B
RET
D10ms:
MOV R7,#05H
LP1:
MOV R6,#0F9H
NOP
NOP
LP2:
DJNZ R6,LP2
DJNZ R7,LP1
RET
RETI
TAB1:
DB 0FEH,25H,02H,0FEH,25H,02H
DB 0FEH,25H,04H,0FDH,80H,04H
DB 0FEH,84H,02H,0FEH,84H,02H
DB 0FEH,84H,04H,0FEH,25H,04H
DB 0FEH,25H,02H,0FEH,84H,02H
DB 0FEH,0C0H,04H,0FEH,0C0H,04H
DB 0FEH,98H,02H,0FEH,84H,02H
DB 0FEH,57H,08H,00H,00H,04H
DB 0FFH,0FFH
TAB2:
DB 0FEH,0E3H,01H,0FEH,0E3H,02H,0FEH,0E3H,01H
DB 0FEH,033H,01H,0FEH,0C0H,01H,0FEH,84H,02H
DB 0FEH,84H,02H,0FEH,57H,02H
DB 0FEH,57H,04H
DB 0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H
DB 0FEH,57H,01H,0FEH,57H,02H,0FEH,84H,01H,0FDH,0C8H,01H
DB 0FEH,57H,04H
DB 00H,00H,04H
DB 0FFH,0FFH
TAB3:
DB 0FEH,0C0H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H,
DB 0FEH,0E3H,03H,0FEH,57H,02H,0FEH,0C0H,04H,00H,00H
DB 01H,00H,00H,01H,00H,00H,01H,0FEH,0C0H,04H,0FEH,0C0H,02H
DB 0FEH,0E3H,02H,0FEH,84H,04H,0FEH,84H,04H,0FEH,57H,02H
DB 0FEH,25H,04H,00H,00H,01H,00H,00H,01H,00H,00H,01H
DB 0FEH,0E3H,04H,0FEH,0E3H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H
DB 0FEH,57H,04H,0FEH,84H,04H,0FEH,01H,04H,0FEH,0E3H,04H
DB 0FEH,0E3H,04H,0FEH,0C0H,04H,0FEH,0E3H,04H,0FEH,84H,04H
DB 0FEH,0C0H,04H,00H,00H,02H,00H,00H,02H,00H,00H,02H
DB 0FFH,0FFH
TAB4:
DB 0FEH,84H,04H,0FEH,84H,02H,0FEH,84H,02H
DB 0FEH,0C0H,02H,0FEH,0C0H,04H,0FEH,0E3H,04H
DB 0FEH,0C0H,04H,0FEH,57H,02H,0FEH,84H,02H
DB 0FEH,25H,04H,00H,00H,04H
DB 0FEH,57H,04H,0FEH,57H,02H,0FEH,57H,02H
DB 0FEH,57H,02H,0FEH,57H,04H,0FEH,25H,02H
DB 0FEH,07H,04H,0FEH,57H,02H,0FDH,0C6H,02H
DB 0FDH,80H,04H,00H,00H,04H
DB 0FEH,25H,04H,0FEH,25H,02H,0FEH,25H,02H
DB 0FEH,25H,02H,0FEH,25H,04H,0FEH,57H,04H
DB 0FEH,0E3H,04H,0FEH,0E3H,04H
DB 0FEH,0E3H,02H,0FEH,0C0H,02H,0FEH,98H,04H
DB 0FFH,0FFH
TAB5:
DB 0FEH,25H,02H,0FEH,25H,02H
DB 0FEH,25H,04H,0FDH,80H,04H
DB 0FEH,84H,02H,0FEH,84H,02H
DB 0FEH,84H,04H,0FEH,25H,04H
DB 0FEH,25H,02H,0FEH,84H,02H
DB 0FEH,0C0H,04H,0FEH,0C0H,04H
DB 0FEH,98H,02H,0FEH,84H,02H
DB 0FEH,57H,08H,00H,00H,04H
DB 0FEH,0E3H,01H,0FEH,0E3H,02H,0FEH,0E3H,01H
DB 0FEH,033H,01H,0FEH,0C0H,01H,0FEH,84H,02H
DB 0FEH,84H,02H,0FEH,57H,02H
DB 0FEH,57H,04H
DB 0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H
DB 0FEH,57H,01H,0FEH,57H,02H,0FEH,84H,01H,0FDH,0C8H,01H
DB 0FEH,57H,04H
DB 00H,00H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H,
DB 0FEH,0C0H,04H,0FEH,0E3H,03H,0FEH,57H,02H
DB 0FEH,0C0H,04H,00H,00H,01H,00H,00H,01H,00H,00H,01H,0FEH,0C0H,04H
DB 0FEH,0C0H,02H,0FEH,0E3H,02H,0FEH,84H,04H,0FEH,84H,04H
DB 0FEH,57H,02H0FEH,25H,04H,00H,00H,01H,00H,00H,01H,00H,00H,01H
DB 0FEH,0E3H,04H,0FEH,0E3H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H
DB 0FEH,57H,04H,0FEH,84H,04H,0FEH,01H,04H,0FEH,0E3H,04H
DB 0FEH,0E3H,04H,0FEH,0C0H,04H,0FEH,0E3H,04H,0FEH,84H,04H
DB 0FEH,0C0H,04H,00H,00H,04H,00H,00H,04H,00H,00H,04H
DB 0FEH,84H,04H,0FEH,84H,02H,0FEH,84H,02H
DB 0FEH,0C0H,02H,0FEH,0C0H,04H,0FEH,0E3H,04H
DB 0FEH,0C0H,04H,0FEH,57H,02H,0FEH,84H,02H
DB 0FEH,25H,04H,00H,00H,04H
DB 0FEH,57H,04H,0FEH,57H,02H,0FEH,57H,02H
DB 0FEH,57H,02H,0FEH,57H,04H,0FEH,25H,02H
DB 0FEH,07H,04H,0FEH,57H,02H,0FDH,0C6H,02H
DB 0FDH,80H,04H,00H,00H,04H
DB 0FEH,25H,04H,0FEH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 音乐 播放 程序设计 DOC