音乐播放器单片机课程设计Word格式.docx
《音乐播放器单片机课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《音乐播放器单片机课程设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
64524
中1Do
523
0.95
FC4AH
64580
中2Re
587
0.85
FCAEH
64684
中3Mi
659
0.76
FD08H
64777
中4Fa
698
0.72
FD30H
64820
中5So
784
0.64
FD80H
64896
中6La
880
0.57
FDC6H
64966
中7Si
988
0.51
FE02H
65030
高1Do
1046
0.47
FE2AH
65058
高2Re
1175
0.42
FE5CH
65110
高3Mi
1318
0.38
FE84H
65157
高4Fa
1397
0.36
FE98H
65178
高5So
1568
0.32
FEC0H
65217
高6La
1760
0.28
FEE8H
65252
高7Si
1967
0.25
FF06H
65283
图2-1
本设计用89C51单片机为核心,利用8段数码管显示器.采用动态显示输出,声音输出用蜂鸣器来实现。
采用8段数码管显示器进行动态显示需要占用4根I/O线,蜂鸣器占用1根I/O线,89C51单片机有足够的线,不用扩展I/O口。
用一片单片机即可满足本设计的输入输出。
系统框图如图1-2所示:
时钟电路
复位电路
单片机(AT89C51)控制系统
8段数码管显示器
蜂鸣器发声电路
图2-2
通过对音乐播放器主体部分的电路进行模仿设计,达到播放器固有的基本功能,设定按钮K1、K2和K3。
按钮K1打开并自动播放乐曲1;
按钮K2打开并自动播放乐曲2;
按钮K3为手动控制音乐停止的按键。
根据设计要求该播放器能实现音键的控制。
除此之外还实现了存储并读出几首音乐的功能。
通过中断INT-1来实现功能的选择,当未按下中断按钮时,当按下中断按钮式,执行1,即可以播放音乐,共有两首音乐,由两个键来分别控制它们,此外,还设计了一个键来停止音乐的播放。
系统主要由播放器发声模块、按键选择控制模块和存储器模块构成。
播放器发声模块负责发出音键相应的音符;
选择控制模块负责由外部控制播放器的各项功能的实现;
显示模块负责按键时产生相应的值,由数码管来实现。
在只实现基本功能时(由功能控制键控制),本文的主要内容是用AT89C51单片机为核心控制元件,系统程序主要包括主程序,定时器中断程序,音乐播放程序,延迟子程序等。
三.硬件设计
3.189C51单片机
本设计使用的是ATMEL公司生产的AT89C51高性能8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器和256bytes的随机存取数据存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS—51指令系统及8051产品引脚兼容,片内置8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机适合于许多较为复杂控制应用场合。
如图2-1和2-2所示:
端口引脚
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
图3-1和3-2
3.2I/O并行口直接驱动LED显示
由于要显示每个按键的键值,就需要用到数码管LED显示模块。
本设计一共用了一个数码管显示器。
利用AT89S51单片机的P0端口的P2.0-P2.4连接到一个共阴数码管的笔段上,数码管的公共端接地。
在数码管上循环显示0-9数字,如图3-3所示:
图3-3
3.3发音电路
发音电路有三极管,电阻和扬声器组成,三极管的基极接在单片机的P1.0端口,通过定时器溢出的时间不同,P1.0端口输出不同频率的高低电平,P1.0输出的脉冲频率不同,三极管导通的频率也不相同,从而扬声器根据不同频率的脉冲发出的声音也不相同,发音电路如下图2-4所示:
图3-4
四.软件设计
4.1.软件设计
主程序设计的第一步为初始化,初始化I/O口,设置定时器定时时间,写定时器工作方式寄存器,设置允许T0中断。
刚开始需要将存储单元置1,全部置1之后更新显示缓冲区。
接着进行显示初始化,开定时器T0,这样就可以开始显示了。
设置完以后程序就不断检测按键情况。
检测使用软件去抖,也就是第一次检测到有键按下后,如果有键按下则执行相应指令。
本设计还设计了防误操作程序,也就是对于一个键,按一下和一直按着的效果是一样的,这样可以防止用户还没放开此键时,程序已进行第二次或多次同样的操作。
图4-1
程序中根音选取的是C调三个8度内的音符,共21个音。
每个音符对应频率由定时器T0产生(音符频率及对应计数初值见附表)。
为了程序调用方便,每个音符都对应一个编码,占用一个字节。
在程序中以查表的方式加载计数初值。
当值为00H时表示空拍,与节拍码配合完成节拍发音。
节拍码也占一个字节,其总时间长度等于基本时间乘以节拍码的值。
节拍码值为01H时,表示当前乐曲结束,为00H时,表示全部乐曲结束。
为了编码简单,一般节拍码高半字节表示整拍,低半字节表示分数,只要基本延时设定恰当即可,为了及时响应键盘操作,键扫描指令安排在基本延时时间子程序中。
按键每按下一次,乐曲数目计数器R5加"
1"
或减"
,然后根据R5的内容转向不同的乐曲。
系统初始化后,进入播放功能。
开始从第一首曲目开始循环播放。
播放过程中如果出现跳选曲目.则进入相应的曲目程序.程序设计流程如图4-1所示。
程序初始化
开始
开始键盘扫描
是否有键按下?
键值编码送到P3.4
扬声器发音
RET
N
Y
五.系统调试与仿真
5.1软件仿真阶段
单片的程序用KEIL编写的。
在keil内建立工程后建立汇编文件,编写MCS-51程序。
1、编译成功后,分模块调试,分别采用“白盒”和“黑盒”测试法验证程序的正确性
2、将调试成功的各模块,合并到总程序中,进行总体性能测试。
3、联调PROTEUS进行硬件仿真,单步,断点调试,观察运行结果,并修改源程序
5.2系统的仿真调试阶段
基于单片机的音乐播放器的是利用PROTEUS软件来实现电脑仿真的,仿真步骤如下:
4、打开PROTEUS软件,选择器件,连接电路图;
5、添加已经编译的HEX文件到单片机内;
6、单步运行,观察结果,比较预定结果,修改源程序;
7、总体调试运行;
8、分组测试,看是否达到任务要求。
5.3硬件安装调试
单片机系统进行软件盒硬件调试成功后最后一步是进行硬件的连接和物制作,我们的硬件是在试验台上进行的,虽然与设计的电路不太相同,不过可以适当修改源程序,以适应实验台的要求
9、根据实验台情况和设计要求连接电路图;
10、在连接的电路上,进行模块测试,就是用简单的程序进行调试以确定电路连接正确;
11、将修改后的程序下载到单片机里,可以用伟福仿真系统,进行单步和断点调试,将运行结果和实验现象与预定值进行比较,再适当修改程序以达到要求。
六.总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会前所遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在周向红老师的辛勤指导下,终于游逆而解。
同时,在周老师那里我学得到很多实用的知识,在次我表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
参考文献
1、《单片机原理与应用》王迎旭等编机械工业出版社
2、《51系列单片机设计实例》楼然苗等编北京航空航天大学出版社
3、《计算机硬件技术基础实验教程》黄勤等编重庆大学出版社
4、《微型计算机接口技术及应用》刘乐善主编华中科技大学出版社
5、《单片微型计算机原理及接口技术》陈光东等编华中科技大学出版社
6、《单片机典型模块设计实例导航》求是科技编著人民邮电出版社出版
7、《单片机程序设计实例》先锋工作室编著清华大学出版社出
附录A:
音乐播放器电路设计图
附录B:
程序清单
OUTBITP3.7
NEQU10
PLAY_KBITP3.2
XSDATBITP1.4
GWBITP1.0
SWBITP1.1
BWBITP1.2
QWBITP1.3
SJGWEQU2AH
SJSWEQU2BH
SJBWEQU2CH
SJQWEQU2DH
ORG0000H
LJMPMAIN
ORG0003H
LJMPPGINT0
ORG000BH
LJMPPGT0
ORG0013H
LJMPPGINT1
ORG001BH
LJMPPGT1
ORG0023H
LJMPWRONG
NOP
ORG0030H
MAIN:
MOVSP,#60H
MOVTMOD,#01H
SET_TAB:
MOVA,R2
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCR2
MOVA,R2
INCR3
CJNER3,#N+1,SET_TAB
MOVR0,#40H
MOV31H,#01
AJMPK1
START:
MOV30H,#2
MOVDPL,@R0
MOVDPH,@R0
ANLA,#0FH
C2_4:
CJNEA,#2,C3_4
MOVA,23H
SWAPA
CJNEA,#4,C2P1_8
C2P1_4:
MOV24H,#250
SJMPNOTE
C2P1_8:
MOV24H,#125
SJMPNOTE
C3_4:
CJNEA,#3,C4_4
MOVA,23H
SWAPA
ANLA,#0FH
CJNEA,#4,C3P1_8
C3P1_4:
MOV24H,#187
C3P1_8:
MOV24H,#94
C4_4:
ANLA,#0FH
CJNEA,#4,C4P1_8
C4P1_4:
C4P1_8:
MOV24H,#62
NOTE:
MOVA,#1
MOV25H,A
NEXT:
MOVA,30H
DECR0
MOVR2,A
JZSTOP
MOVR5,A
JNZSING
CLRTR0
AJMPSING1
SING:
DECA
ADDA,25H
RLA
MOV22H,A
MOVDPTR,#TABLE2
MOVA,22H
INCA
MOVTH0,A
MOV21H,A
SETBTR0
SING1:
LCALLDELAY1
INC30H
JNBPLAY_K,PUSE
LJMPNEXT
PUSE:
LCALLDISP
LCALLDISPLAY
JNBPLAY_K,$-3
STOP:
CLRTR0
K1:
JBNEXT_K,K2
LCALLDISPLAY
JNBNEXT_K,$-3
MOVA,31H
CJNEA,#N,K1_2
K1_1:
MOVR0,#40H
MOV31H,#01
SJMPK2
K1_2:
INC31H
INCR0
K2:
JBLAST_K,K3
LCALLDISP
CJNEA,#1,K2_2
K2_1:
MOVR0,#40H+2*(N-1)
MOV31H,#N
SJMPK3
K2_2:
DEC31H
DECR0
K3:
JBPLAY_K,K1
JNBPLAY_K,$-3
AJMPSTART
PGT0:
MOVTL0,20H
MOVTH0,21H
CPLP3.7
RETI
PGINT0:
RETI
PGINT1:
DELAY1:
MOVR7,#02
DELAY2:
MOVR4,24H
DELAY3:
MOVR3,#248
DJNZR3,$
DJNZR4,DELAY3
DJNZR7,DELAY2
DJNZR5,DELAY1
PGT1:
DELAY4:
MOVR4,#20
DELAY5:
DJNZR4,DELAY5
RET
TABLE1:
DWSONG1,SONG2,SONG3
TABLE2:
DW63628,63835,64021,64103,64260,64400,64524
DW64538,64684,64777,64820,64898,64968,65030
DW65058,65110,65157,65178,65217,65252,65282
SONG1:
DB44H,02H
DB42H,82H,82H,82H,84H,02H,72H
DB62H,72H,62H,52H,48H
DB12H,62H,62H,52H,44H,02H,82H
DB72H,62H,52H,32H,48H
DB00H
SONG2:
DB43H,04H
DB82H,01H,81H,94H,84H
DB0B4H,0A4H,04H
DB82H,01H,81H,0F4H,0D4H
DB0E2H,01H,0E1H,0D4H,0B4H
DB0C4H,0B4H,04H
DB0C4H,0B4H,04H,00H
SONG3:
DB44H,04H
DB44H,54H,64H,44H
DB64H,74H,88H
DB82H,92H,82H,72H,64H,44H
DB44H,84H,48H
DB44H,14H,48H
DISPLAY:
PUSHACC
PUSHPSW
MOVDPTR,#XSTAB
MOVA,SJGW
ACALLDSOUT
CLRGW
ACALLDS1MS
SETBGW
MOVA,SJSW
CLRSW
SETBSW
MOVA,SJBW
CLRBW
SETBBW
MOVA,SJQW
CLRQW
SETBQW
POPPSW
POPACC
DSOUT:
MOVR0,#8
DSLOOP:
RLCA
MOVXSDAT,C
SETBXSCLK
CLRXSCLK
DJNZR0,DSLOOP
DS1MS:
MOVR1,#10
DS1LO:
MOVR2,#100
DJNZR2,$
DJNZR1,DS1LO
XSTAB:
DB3FH,06H,5BH,4FH;
"
0"
"
2"
3"
DB66H,6DH,7DH,07H;
4"
5"
6"
7"
DB7FH,6FH,77H,7CH;
8"
9"
A"
B"
DB39H,5EH,79H,71H;
C"
D"
E"
F"
DISP:
MOV26H,#5
MOVB,#10
DIVAB
MOVSJGW,B
MOVSJSW,A
MOVSJBW,#0
WRONG:
CLREA
MOVDPTR,#ERR
PUSHDPL
PUSHDPH
ERR:
CLRA
PUSHACC
END
电气与信息工程系课程设计评分表
项目
评价
设计方案的合理性与创造性
硬件制作或软件编程完成情况*
硬件制作测试或软件调试结果*
设计说明书质量
设计图纸质量
答辩汇报的条理性和独特见解
答辩中对所提问题的回答情况
完成任务情况
独立工作能力
组织纪律性(出勤率)
综合评分
指导教师签名:
________________
日期:
________________
注:
①表中标*号项目是硬件制作或软件编程类课题必填内容;
②此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。