单片机系统课程设计报告大学论文.docx
《单片机系统课程设计报告大学论文.docx》由会员分享,可在线阅读,更多相关《单片机系统课程设计报告大学论文.docx(23页珍藏版)》请在冰豆网上搜索。
单片机系统课程设计报告大学论文
单片机系统课程设计报告
专业:
光电信息科学与工程
学生姓名:
学号:
指导教师:
完成日期:
2016年5月20日
目录
1设计任务和要求3
1.1设计任务
1.2设计要求
1.3方案论证
1.4模拟仿真结果
2实际制作与调试1
2.1测试方法和测试仪器
2.2软件调试
2.3硬件调试
2.4调试中的问题记录
3发挥部分设计与调试5
4测试结果分析8
5课程设计总结8
附录程序清单............................................................................................................17
1.设计任务和要求
1.1设计任务
简易音乐播放器
1.2设计要求
基本要求:
设计一个简易音乐播放器,要求能播放至少三首内置音乐曲目;用按键控制曲目的选择,音乐的播放和暂停,关闭音乐和系统复位;用数码管显示当前播放曲目编号.
扩展要求:
用LCD代替数码管显示当前播放曲目的编号和名称,以及下一首即将播放的曲目的编号和名称;用按键控制三种不同播放状态之间的切换:
顺序播放,随机播放,单曲循环。
1.3方案论证
以AT89C52单片机为核心,通过对其定时器的设定来实现音乐的播放
,通过对键盘的设置可以实现人机对话,借助键盘可以向计算机系统输入程序,置数,送操作命令,控制程序的执行走向等,并最终通过LCD显示器显示出播放的乐曲.
系统方案:
1.音乐播放器的组成
根据系统音乐播放器的功能要求,一个完整的音乐播放器电路相当于一个简单的单片机系统,改系统由按键开关,单片机,LCD显示电路,蜂鸣器控制电路4个方面构成
●52单片机。
52单片机为整个系统的核心部分,是带动整个系统工作的重要部件.
●键盘输入。
键盘输入用来控制输入指令,发出指令至单片机,使单片机按照指令工作。
●扬声器。
扬声器作为输出部分按照键盘给单片机的指令发出乐曲。
●LCD显示电路。
LCD显示器作为输出部分,按照键盘给单片机的指令,显示正在演奏的乐曲。
音乐播放的系统组成框图见下
系统总设计框图
理论计算
1.音阶对应频率计算初值的计算
元器件确定
AT89C521
1K电阻11
100u电容1
8位开关1
4位开关1
74ls02 2
导线若干共阴极LCD1
1.4模拟仿真结果
2.实际制作与调试
2.1测试方法和测试仪器
测试仪器:
protuse.万用表
测试条件:
仿真图
测试方法:
通过仿真图进行测试.看是否能正常运行.连线中用万用表检测连线是否正确
2.2软件调试
ORG0000H
AJMPSTART;FOSC=12MHZ
ORG000BH;T0中断入口地址
AJMPINT_T0
ORG001BH;T1中断入口地址
AJMPINT_T1
START:
MOVSP,#60H
MOVTMOD,#11H
MOVIE,#8AH
MOVIP,#08H;T1中断优先于T0
MOVTH1,#3CH
MOVTL1,#0BH;初始化.T60MS
W1:
MOVP2,#10001110B;等待提示'F'
LCALLGETKEY
CJNEA,#0FFH,W1
MOVA,B
CJNEA,#0AH,W2
LCALLKEY_A;输入键是A。
转KEY_A
SJMPW1
W2:
CJNEA,#OBH,W3
LCALLKEY_B;输入键是B。
转KEY_B
W3:
CJNEA,#0CH,W4
LCALLKEY_C;输入键是C。
转KEY_C
W4:
CJNEA,#0DH,W5
LCALLKEY_D;输入键是D。
转KEY_D
SJMPW1
W5:
SJMPW1
2.3硬件调试
并无任何波形
2.4调试中的问题记录
在仿真与调试中的问题:
最初没有弄懂低音高音的选择.歌曲选择了低32H进行测试.导致歌曲一变成杂音使测试失败.
在选择数码管时因为极性问题.数码管无法显示
调试时因为开关需要按下弹起才算一个完整输出.导致在控制开关闭合上耗费大量的时间去揣摩
在实际接线与实际调试中的问题:
开关最开始选择错误导致无法进行切歌.后来换成8位开关解决了这个问题.
因为实验室没有共阳极的数码管.所以不得不临时改变仿真.加了一个非门使共阴极数码管工作
因为连线过程较为繁杂.所以出现了线接反的情况.导致数码管显示异常.
3.发挥部分设计与调试
单曲循环
KEY_C:
;选择一首歌循环播放
T3:
LCALLGETWORD
CJNEA,#0FFH,T3
MOVA,B
CJNEA,#00H,D1
SJMPE0
D1:
CJNEA,#01H,D2
SJMPE1
D2:
CJNEA,#02H,E3
SJMPE2
E0:
LCALLMUSIC1
SJMPE0
E1:
LCALLMUSIC2
SJMPE1
E2:
LCALLMUSIC3
SJMPE2
E3:
LCALLMUSIC4
SJMPE3
RET
顺序播放
KEY_A:
;1-4顺序播放
LCALLMUSIC1;《精忠报国》
LCALLMUSIC2;《月亮代表我的心》
LCALLMUSIC3;《看我七十二变》
LCALLMUSIC4;《同一首歌》
RET
4.测试结果分析
测试的结果与我们理想设计的情况相同
与设计指标要求进行比较:
符合基本设计.并完成了扩展要求中的顺序播放及单曲循环.缺陷在于.没有实现扩展要求中的当前播放曲目名称,以及下一首即将播放的曲目的编号的名称.随机播放
5.课程设计总结
此次设计比较成功.团队之间合作密切.使得设计开展以及完成情况都非常不同.问题在于.很多时候一些细微的差错就让我们组耗费大量的时间.例如:
数码管选择,开关选择.不然完成时间将会提前.并且很有可能有时间去完成剩下的扩展内容.但很可惜因为时间原因没能完成.为此次实验的遗憾.但收获颇多.对52单片机的了解与.程序的读写有了更深层次的印象
附录:
程序清单
ORG0000H
AJMPSTART;FOSC=12MHZ
ORG000BH;T0中断入口地址
AJMPINT_T0
ORG001BH;T1中断入口地址
AJMPINT_T1
START:
MOVSP,#60H
MOVTMOD,#11H
MOVIE,#8AH
MOVIP,#08H;T1中断优先于T0
MOVTH1,#3CH
MOVTL1,#0BH;初始化.T60MS
W1:
MOVP2,#10001110B;等待提示'F'
LCALLGETKEY
CJNEA,#0FFH,W1
MOVA,B
CJNEA,#0AH,W2
LCALLKEY_A;输入键是A。
转KEY_A
SJMPW1
W2:
CJNEA,#OBH,W3
LCALLKEY_B;输入键是B。
转KEY_B
W3:
CJNEA,#0CH,W4
LCALLKEY_C;输入键是C。
转KEY_C
W4:
CJNEA,#0DH,W5
LCALLKEY_D;输入键是D。
转KEY_D
SJMPW1
W5:
SJMPW1
KEY_A:
;1-4顺序播放
LCALLMUSIC1;《精忠报国》
LCALLMUSIC2;《月亮代表我的心》
LCALLMUSIC3;《看我七十二变》
LCALLMUSIC4;《同一首歌》
RET
KEY_B:
;1-4循环播放
T11:
LCALLKEY_A
SJMPT11
RET
KEY_C:
;选择一首歌循环播放
T3:
LCALLGETWORD
CJNEA,#0FFH,T3
MOVA,B
CJNEA,#00H,D1
SJMPE0
D1:
CJNEA,#01H,D2
SJMPE1
D2:
CJNEA,#02H,E3
SJMPE2
E0:
LCALLMUSIC1
SJMPE0
E1:
LCALLMUSIC2
SJMPE1
E2:
LCALLMUSIC3
SJMPE2
E3:
LCALLMUSIC4
SJMPE3
RET
KEY_D:
;选择一首歌播到最后一首
T2:
LCALLGETWORD
CJNEA,#0FFH,T2
MOVA,B
CJNEA,#00H,B1
SJMPC0
B1:
CJNEA,#01H,B2
SJMPC1
B2:
CJNEA,#02H,C3
SJMPC2
C0:
LCALLMUSIC1;乐曲《精忠报国》
C1:
LCALLMUSIC2;乐曲《月亮代表我的心》
C2:
LCALLMUSIC3;乐曲《看我七十二变》
C3:
LCALLMUSIC4;乐曲《同一首歌》
RET
MUSIC1:
MOVP2,#11111001B;显示1
MOVR5,#11111001B
MOV52H,#HIGHTABLE10
MOV32H,#LOWTABLE10
LCALLmusic
RET
MUSIC2:
MOVP2,#10100100B;显示2
MOVR5,#10100100B
MOV52H,#HIGHTABLE20
MOV53H,#LOWTABLE20
LCALL:
music
RET
MUSIC3:
MOVP2,#10110000B;显示3
MOVR5,#10110000B
MOV52H,#HIGHTABLE30
MOV53H,#LOWTABLE30
LCALLmusic
RET
MUSIC4:
MOVP2,#10011001B;显示4
MOVR5,#10011001B
MOV52H,#HIGHTABLE40
MOV53H,#LOWTABLE40
LCALLmusic
RET
music:
MOVR3,#00H;音乐解码器
NEXT20:
MOVA,R3
MOVDPH,52H
MOVDPL,53H
MOVCA,@A+DPTR
MOVR2,A
JZSTOP
ANLA,#0FH
MOVR1,A
MOVA,R2
SWAPA
ANLA,#OFH
JNZSING
CLRTR0
JMPW11
SING:
DECA
MOV22H,A
RLA
MOVDPTR,#TABLE00
MOVCA,@A+DPTR
MOVTH0,A
MOV21H,A
MOVA,22H
RLA
INCA
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
SETBTR0
SETBTR1
W11:
LCALLDELAY3
INCR3
LJMPNEXT20
STOP:
CLRTR0
CLRTR1
RET
**************
定时器0中断子程序
**************
INT_T0:
CLRTR0
MOVTL0,20H
MOVTH0,21H
CPLP3.0
SETBTR0
RET1
**************
定时器1中断子程序
**************
INT_T1:
CLRTR1
CLRTR0
LCALLKEY_E
MOVTH1,#3CH
MOVTL1,#0BH
DJNZ60H,OUT
MOV60H,#20
OUT:
SETBTR1
RTEI
KEY_E:
JBP3.1,L2;中断键盘检测
LCALLDELAY2;消除抖动
JBP3.1,L2;如果是高电平就跳到L2
JNBP3.1,$;如果仍是低电平执行中断程序
MOVP2,#10000110B;LED显示E
L3:
JBP3.1,$;检测到低电平,直到低电平跳出该指令
LCALLDELAY2
JBP3.1,L3
JNBP3.1,$;如果再来一个高电平跳出指令
MOVP2,P5
L2:
SETBTR0
RET
GETKEY:
;读A,B,C,B键盘子程序
SA:
JBP1.0,SB;读A
LCALLDELAY2
JBP1.0,SA
JNBP1.0,$
MOVP2,#10001000B;显示A
MOVR5,#10001000B
MOVA,#0FFH
MOVB,#0AH
RET
SB:
JBP1.1,C11;读B
LCALLDELAY2
JBP1.1,SB
JNBP1.1,$
MOVP2,#10000011B;显示B
MOVR5,#10000011B
MOVA,#0FFH
MOVB,#0BH
RET
C11:
JBP1.2,ED1;读C
LCALLDELAY2
JBP1.2,C11
JNBP1.2,$
MOVP2,#11000110B;显示C
MOVR5,#11000110B
MOVA,#0FFH
MOVB,#0CH
RET
ED1:
JBP1.3,L0;读D
LCALLDELAY2
JBP1.3,ED1
JNBP1.3,$
MOVP2,#10100001B;显示D
MOVR5,#10100001B
MOVA,#0FFH
MOVB,#0DH
L0:
RET
GETWORD:
;读音乐序号子程序
S1:
JBP1.4,S2;读1键
LCALLDELAY2
JBP1.4,S1
JNBP1.4,$
MOVP2,#11111001B;显示1
MOVR5,#11111001B
MOVA,#0FFH
MOVB,#00H
RET
S2:
JBP1.5,S3;读2键
LCALLDELAY2
JBP1.5,S2
JNBP1.5,$
MOVP2,#10100100B;显示2
MOVR5,#10100100B
MOVA,#0FFH
MOVB,#01H
RET
S3:
JBP1.6,S4;读3键
LCALLDELAY2
JBP1.6,S3
JNBP1.6,$
MOVP2,#10110000B;显示3
MOVR5,#10110000B
MOVA,#0FFH
MOVB,#0AH
RET
S4:
JBP1.7,l1;读4键
LCALLDELAY2
JBP1.7,S1
JNBP1.7,$
MOVP2,#10011001B;显示4
MOVR5,#10011001B
MOVA,#0FFH
MOVB,#03H
RET
L1:
RET
DELAY:
;延时子程序
PUSH0;保存现场
PUSH1
MOV0,#0H
DELAY1:
MOV1,#0H
DJNE1,$
DJNE0,DELAY1
POP1;恢复现场
POP0
RET
DELAY2:
;延时子程序2
MOV41H,#100
F1:
MOV42H,#250
DJNE42H,$
DJNE41H,F1
RET
DELAY3:
;延时子程序3
MOVR7,#2
W22:
MOVR4,#125
W33:
MOVR0,248
DJNZR0,$
DJNZR4,W33
DJNZR7,W22
DJNER1,DELAY3
RET
TABLE00:
DW64260,64400,64524,64580;简码值低音5,低音6,低音7.1
DW64684,64777,64820,64898;简码值2,3,4,5
DW64968,65030,65058,65110;简码值6,7,高音1,高音
DW65157,65178,65217;简码值高音3,高音4,高音5
;第一首《》
TABLE10:
DB66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H
DB32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H
DB24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22H
DB12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H
DB66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H
DB22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H
DB62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H
DB64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H
DB52H,62H,7FH,74H,04H,58H,6FH
DB00
;第二首《》
TABLE20:
DB02H,82H
DB16H,32H,54H,02H,52H
DB0A6H,32H,54H,02H,52H
DB64H,74H,0B6H,64H
DB52H,5CH,32H,22H
DB16H,12H,14H,32H,22H
DB16H,12H,14H,22H,32H
DB26H,12H,94H,22H,32H
DB2CH
DB32H,52H
DB36H,22H,14H,54H
DB0ACH,92H,0A2H
DB96H,0A2H,96H,82H
DB3CH,54H
DB36H,22H,14H,54H
DB0ACH,92H,0A2H
DB16H,12H,14H,22H,32H
DB2CH,02H,82H
DB16H,32H,56H,12H
DB0A6H,32H,56H,52H
DB66H,72H,0B6H,62H
DB62H,52H,58H,32H,22H
DB16H,12H,14H,32H,22H
DB16H,12H,14H,22H,32H
DB26H,92H,0A4H,12H,22H
DB1CH
DB00
;第三首《》
TABLE30:
DB0d4H,84H,94H,82H,92H
DB12H,22H,82H,92H,02H,92H,82H,0d2H
DB82H,92H,14H,84H,02H,0d1H,0d1H
DB0c2H,0d2H,84H,0d2H,0d2H,82H,82H
DB84H,82H,82H,94H,82H,0d2H
DB82H,82H,82H,92H,02H,82H,82H,0d2H
DB0c4H,84H,0d4H,92H,0d2H
DB82H,0d2H,82H,92H,98H
DB04H,94H,88H
DB04H,94H,88H
DB04H,94H,88H
DB04H,94H,88H,04H
DB32H,32H,22H,12H,02H,92H,12H,92H
DB32H,32H,22H,12H,02H,92H,12H,92H
DB32H,32H,22H,12H,02H,92H,12H,22H
DB54H,44H,34H,12H,22H
DB34H,22H,12H,02H,92H,12H,92H
DB32H,32H,22H,12H,02H,92H,12H,92H
DB32H,32H,22H,12H,02H,92H,12H,22H
DB54H,44H,32H,22H,12H,92H
DB00
;第四首《》
TABLE40:
DB88h,14h,24h,36H,42H,34H,14H,28H,14H,94H
DB1fH,88H,14H,24H,34H,32H,42H,54H,14H
DB46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74H
DB76H,62H,68H,54H,52H,62H,74H,62H,52H,3fH
DB46H,42H,54H,64H,54H,42H,32H,28H,0a4H,0a2H
DB92H,84H,94H,1fH,0b8H,68H,46H,52H,68H
DB74H,72H,72H,74H,62H,52H,3fH,0b8H,68H
DB46H,52H,68H,64H,62H,62H,64H,42H,32H,2fH
DB58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12H
DB94H,9cH,0a8H,0a6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5fH
DB00