微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
微机原理课程设计
自动化专业课程设计报告
《微机原理及应用课程设计》
班级:
姓名:
学号:
指导教师:
地点:
电信实验中心第六实验室
大连海洋大学信息工程学院
自动化教研室
目录
一、课程设计目的与要求。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
2
二、课程设计课题的分析。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
三、课程设计结果。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
5
四、课程设计的心得与体会。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
12
五、参考文献。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
12
题目:
计算机仿真电子琴。
一、课程设计目的与要求
1、设计目的
本课程的课程设计是自动化专业学生学习完《微机原理及应用》课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。
本课程设计的目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法。
2、课程设计要求
(1)掌握本课程设计所涉及到的基本理论。
(2)理解硬件电路的工作原理。
(3)自行设计软件流程图,编制程序。
(4)调试程序使其能正常运行。
(5)设计完成后,必须写出设计总结。
内容包括:
原理介绍,简单的硬件电路图,较详细的程序流程图及完整的软件源程序清单。
3、主要技术指标
编写程序
1)在程序运行时使PC即成为一架可弹奏的电子琴。
当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I这八个音调。
自行设计按下某一键则退出电子琴状态。
2)在程序运行时通过按键使PC自动演奏乐曲。
二、课程设计课题的分析
扬声器工作原理:
通过8255B口控制扬声器的开关,8253计数器2通过输出不同频率的脉冲波使得扬声器发出不同频率的声音。
通过程序控制PB1高低电平的变化,开启或关闭扬声器。
程序可以设置开启关断的时间。
下图为扬声器接线图:
下面为主程序程序流程图:
三、课程设计的结果
DATASEGMENT
INFOR1DB0AH,0DH,'WELCOMETOTHEMUSICWORLD!
$'
INFOR2DB0AH,0DH,'PLEASESELECT!
$'
INFOR3DB0AH,0DH,'PLEASEINPUTTHESONG!
$'
INFOR4DB0AH,0DH,'INPUTERROR,PLEASEINPUTAGAIN!
$'
INFOR5DB0AH,0DH,'PRESS1-8TOPLAYANDRTORETURN$'
INFOR6DB0AH,0DH,'ITISOVER,PLEASESELECTAGAIN!
$'
INFOR7DB0AH,0DH,'========================='
DB0AH,0DH,'Press1SCALEPLAY'
DB0AH,0DH,'Press2AUTOPLAY'
DB0AH,0DH,'PressEEXIT'
DB0AH,0DH,'$'
MUSLISTDB0AH,0DH,'========================='
DB0AH,0DH,'Press1HuanLeSong'
DB0AH,0DH,'Press2KaiXin'
DB0AH,0DH,'Press3XiaoBuWuQu'
DB0AH,0DH,'Press4Wonderful'
DB0AH,0DH,'PressRRETURN'
DB0AH,0DH,'========================='
DB0AH,0DH,'$'
MUS_FRQ1DW330,330,350,393,393,350,330,294
DW262,262,294,330,330,294,294
DW330,330,350,393,393,350,330,294
DW262,262,294,330,294,262,262
DW294,294,330,262,294,330,350,330,262
DW294,330,350,330,262,262,294,393
DW330,330,350,393,393,350,330,294
DW262,262,294,330,294,262,262,-1
MUS_TIM1DW8DUP(100)
DW7DUP(100),200
DW8DUP(100)
DW7DUP(100),200
DW5DUP(100),50,50,2DUP(100)
DW100,50,50,4DUP(100),200
DW8DUP(100)
DW7DUP(100),200
MUS_FRQ2DW330,294,262,294,3DUP(330)
DW3DUP(294),330,392,392
DW330,294,262,294,4DUP(330)
DW294,294,330,294,262,-1
MUS_TIM2DW6DUP(100),200
DW2DUP(100,100,200)
DW8DUP(100)
DW4DUP(100),400
MUS_FRQ3DW392,262,294,330,350,392,262,262
DW440,350,392,440,494,524,262,262
DW350,392,350,330,294,330
DW350,330,294,262,294,330,294,262,247,262,-1
MUS_TIM3DW200,4DUP(100),200,200,200
DW200,4DUP(100),200,200,200
DW200,4DUP(100),200
DW4DUP(100),200,4DUP(100),400
MUS_FRQ4DW330,392,330,294,330,392,330,394,330
DW330,392,330,294,262,294,330,392,294
DW262,262,220,196,196,220,262,294,330,262,-1
MUS_TIM4DW3DUP(200),100,100,200,100,100,400
DW2DUP(200,200,100,100),400
DW3DUP(200,100,100),400
TABLEDW262,294,330,349,392,440,494,525
DATAENDS
STACKSEGMENTPARASTACK'STACK'
STADB200DUP('STACK')
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,STACK
MOVSS,AX
DISPLAYMACROINFORMATION
PUSHDX
MOVDX,OFFSETINFORMATION
MOVAH,09H
INT21H
POPDX
ENDM
DISPLAYINFOR1
DISPLAYINFOR2
INPUT:
DISPLAYINFOR7
MOVAH,01H
INT21H
SCALE:
CMPAL,31H
JNZAUTO
JMPSCALEPLAY
JMPINPUT
AUTO:
CMPAL,32H
JNZQUIT1
DISPLAYMUSLIST
JMPAUTOPLAY
QUIT1:
CMPAL,45H
JNZER
JMPFARPTRQUIT
ER:
DISPLAYINFOR4
JMPINPUT
MUSIC1PROC
MOVAH,01H
INT16H
JZAUTOPLAY
LEASI,MUS_FRQ1
LEABP,DS:
MUS_TIM1
FREQ1:
MOVDI,[SI]
CMPDI,-1
JEEND_MUS1
MOVBX,DS:
[BP]
CALLGENSOUND
ADDSI,2
ADDBP,2
JMPFREQ1
END_MUS1:
RET
MUSIC1ENDP
MUSIC2PROC
MOVAH,01H
INT16H
JZAUTOPLAY
LEASI,MUS_FRQ2
LEABP,DS:
MUS_TIM2
FREQ2:
MOVDI,[SI]
CMPDI,-1
JEEND_MUS2
MOVBX,DS:
[BP]
CALLGENSOUND
ADDSI,2
ADDBP,2
JMPFREQ2
END_MUS2:
RET
MUSIC2ENDP
MUSIC3PROC
MOVAH,01H
INT16H
JZAUTOPLAY
LEASI,MUS_FRQ3
LEABP,DS:
MUS_TIM3
FREQ3:
MOVDI,[SI]
CMPDI,-1
JEEND_MUS3
MOVBX,DS:
[BP]
CALLGENSOUND
ADDSI,2
ADDBP,2
JMPFREQ3
END_MUS3:
RET
MUSIC3ENDP
MUSIC4PROC
MOVAH,01H
INT16H
JZAUTOPLAY
LEASI,MUS_FRQ4
LEABP,DS:
MUS_TIM4
FREQ4:
MOVDI,[SI]
CMPDI,-1
JEEND_MUS4
MOVBX,DS:
[BP]
CALLGENSOUND
ADDSI,2
ADDBP,2
JMPFREQ4
END_MUS4:
RET
MUSIC4ENDP
SCALEPLAYPROCNEAR
PUSHAX
PUSHBX
PUSHCX
DISPLAYINFOR5
JMPINPUT1
INSTR:
DISPLAYINFOR4
INPUT1:
MOVAH,01H
INT21H
CMPAL,52H
JNZNEXT
JMPFARPTRINPUT
NEXT:
CMPAL,31H
JBINSTR
CMPAL,38H
JAINSTR
ANDAX,0FH
SHLAX,1
SUBAX,2
MOVSI,AX
MOVBX,OFFSETTABLE
MOVDI,[BX][SI]
MOVBX,100
CALLGENSOUND
JMPINPUT1
POPCX
POPBX
POPAX
RET
SCALEPLAYENDP
INSTRUCTION:
DISPLAYINFOR6
JMPB0
AUTOPLAY:
DISPLAYINFOR3
B0:
MOVAH,01H
INT21H
CMPAL,52H
JNZB1
JMPFARPTRINPUT
B1:
CMPAL,31H
JNZB2
CALLMUSIC1
JMPINSTRUCTION
B2:
CMPAL,32H
JNZB3
CALLMUSIC2
JMPINSTRUCTION
B3:
CMPAL,33H
JNZB4
CALLMUSIC3
JMPINSTRUCTION
B4:
CMPAL,34H
JNZB5
CALLMUSIC4
JMPINSTRUCTION
B5:
DISPLAYINFOR4
JMPB0
GENSOUNDPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
MOVAL,0B6H
OUT43H,AL
MOVDX,12H
MOVAX,533H*896
DIVDI
OUT42H,AL
MOVAL,AH
OUT42H,AL
INAL,61H
MOVAH,AL
ORAL,3
OUT61H,AL
PUSHAX
WAIT1:
MOVCX,1200
DELA1:
INAL,61H
ANDAL,10H
CMPAL,AH
JEDELA1
MOVAH,AL
LOOPDELA1
DECBX
JNZWAIT1
POPAX
MOVAL,AH
OUT61H,AL
POPDI
POPDX
POPCX
POPBX
POPAX
RET
GENSOUNDENDP
QUIT:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
实验结果:
运行程序后,界面显示WELCOMETOTHEMUSICWORLD!
PLEASESELECT!
=========================
Press1SCALEPLAY
Press2AUTOPLAY
PressEEXIT
=========================
按下E后程序结束,按下1,界面显示
=========================
Press1HuanLeSong
Press2KaiXin
Press3XiaoBuWuQu
Press4Wonderful
PressRRETURN
=========================
PLEASEINPUTTHESONG!
按下相应的键会播放相应歌曲,按下R返回到上级菜单,按下其他键会显示错误提示,当播放歌曲时,按下任意键会停止当前播放歌曲,进入到歌曲选择界面。
歌曲播放完成后显示ITISOVER,PLEASESELECTAGAIN!
然后返回到歌曲选择界面。
按下R返回到上级菜单后,按下2键,界面显示:
PRESS1-8TOPLAYANDRTORETURN
按下1-8会发出不同的音调,按下R返回,按下其他键会显示出错信息。
按下R返回到最上级菜单,按下E退出程序。
四、程序设计的心得与体会
一周的课程设计即将结束,在这一周中,感觉收获了许多。
首先,对微机原理这门课程有了更深入的了解,从最原始的对纯理论知识的理解到慢慢有了实践的想法,到现在能够用汇编语言在PC上编写简单的小程序,每一次提升,不仅是对自己的一种肯定,更是对自己的一种丰富,这时最大的收获。
其次,在这一周的课程设计中,不仅仅是对本门课程的提升,同时也是对其他课程的一种广泛意义上的提升。
作为自动化专业的一员,拥有较为扎实的编程能力是将来就业找工作不可或缺的。
这一周的课程设计让我对模块化编程有了更深入的了解,对于解决实际问题,能够从整体上,从更高的层面考虑,这是一种认识上的提升。
而且,通过学习汇编语言程序设计,让我对其他一些高级编程语言有了一些更为本质上的认识,为将来的学习能够奠定一些基础。
最后,在对一些问题的解决过程中,我的耐心得到了极大的锻炼,能够坚持,自己研究,设法找到问题的突破点,这也是作为一个新时代大学生必须具备的素质之一。
对于本次课程设计中的程序,我认为最大的优点就是程序的稳定性比较好,不会出现由于程序设计的问题而出现的意外结果和死机等情况,而且程序多处考虑优化的问题,增加了许多提示信息,程序流程和显示信息更加符合用户的要求。
而且在执行自动播放歌曲的部分中,支持随时按任意键停止当前播放并返回到歌曲选择界面的功能。
五、参考文献
《微型计算机原理(第二版)》王忠民西安电子科技大学出版社