微型计算机技术及应用1.docx
《微型计算机技术及应用1.docx》由会员分享,可在线阅读,更多相关《微型计算机技术及应用1.docx(15页珍藏版)》请在冰豆网上搜索。
微型计算机技术及应用1
实验题目:
计算机仿真电子琴
一、课程设计的目的与要求
1、设计目的
本课程的课程设计是通信专业学生学习完《微型计算机技术及应用》课程后,进行的一次以汇编语言为主,硬件微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本设计为辅的综合训练。
本课程设计的目的在于加深学生对课本理论知识的理解
2、设计要求
从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:
1)掌握汇编语言程序设计的基本方法。
2)进一步理解各种接口电路的应用。
例如8255并行接口,8253定时器等。
3)掌握利用PC机扬声器发出不同频率声音的方法。
3、主要技术指标
编写程序
1)在程序运行时使PC即成为一架可弹奏的电子琴。
当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I这八个音调。
按下CTRL+C或者回车则退出电子琴状态。
2)在程序运行时使PC自动按要求提示演奏乐曲。
二、课程设计分析
图1.扬声器工作原理图示
图2.主程序工作流程图
图3.乐曲演奏子程序工作流程图图4.电子琴子程序工作流程图
图5.扬声器工作流程图
三、课程设计的结果
1、实验代码
DATASEGMENT
INFO1DB0AH,0DH,'WELCOMEYOUTOCOMEHERE!
$'
DB0AH,0DH,'THISISAMUSICPROGRAM!
$'
DB0AH,0DH,'PLEASESELECLT!
$'
INFO4DB0AH,0DH,'INPUTERROR!
$'
INFO5DB0AH,0DH,'PLEASEINPUTAGAIN!
$'
MUSLISTDB0AH,0DH,'========================='
DB0AH,0DH,'Press1HuanLeSong'
DB0AH,0DH,'Press2KaiXin'
DB0AH,0DH,'Press3XiaoBuWuQu'
DB0AH,0DH,'Press4Wonderful'
DB0AH,0DH,'Press5SCALEPLAY'
DB0AH,0DH,'Press6EXIT'
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
NUMBDB0AH,0DH,'Keyboardnumber1~8keysplaynotesofthescale'
DB0AH,0DH,'EnterorCtrl+Ctoexit'
DB0AH,0DH,'$'
DATAENDS
STACKSEGMENTPARASTACK'STACK'
STADB200DUP('STACK')
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,STACK
MOVSS,AX
SHOWMACROB
MOVDX,OFFSETB
MOVAH,09H
INT21H
ENDM
SHOWINFO1
LOP:
SHOWMUSLIST
MOVAH,01H
INT21H
CMPAL,36H
JZRETU
CMPAL,31H
JNZB0
CALLMUSIC1
JMPEXIT1
B0:
CMPAL,32H
JNZC0
CALLMUSIC2
JMPEXIT1
C0:
CMPAL,33H
JNZD0
CALLMUSIC3
JMPEXIT1
D0:
CMPAL,34H
JNZE0
CALLMUSIC4
JMPEXIT1
E0:
CMPAL,35H
JNZEXIT
SHOWNUMB
CALLMUSIC5
EXIT1:
SHOWINFO5
JMPLOP
EXIT:
SHOWINFO4
SHOWINFO5
JMPLOP
RETU:
MOVAX,4C00H
INT21H
MUSIC1PROC
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
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
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
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
MUSIC5PROCNEAR
PUSHAX
PUSHBX
PUSHCX
LOP5:
MOVAH,01H
INT21H
CMPAL,0DH
JEEXIT5
CMPAL,31H
JBLOP5
CMPAL,38H
JALOP5
ANDAX,0FH
SHLAX,1
SUBAX,2
MOVSI,AX
MOVBX,OFFSETTABLE
MOVDI,[BX][SI]
MOVBX,100
CALLGENSOUND
JMPLOP5
EXIT5:
POPCX
POPBX
POPAX
RET
MUSIC5ENDP
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
CODEENDS
ENDSTART
2、实验现象
1.进入DOS后在DOS界面(图6)进行汇编链接并生成可执行文件.exe
图6.DOS调试界面
2.双击可执行文件KS.exe(这里我把程序取名为KS)进入操作界面如图7所示
图7.操作界面初始界面
图8.按数字键5后进入电子琴界面
图9.按回车后退出电子琴界面
3.在进行操作的时候只要在键盘上按1-4这四个数字键就可以任意听取歌曲1—歌曲4,按数字键5时进入电子琴界面,这时候1-8分别表示音乐CDEFGABC这几个音符。
按回车后退出电子琴操作界面,这时候按6退出程序。
四、课程设计的心得与体会
通过整整两个星期的摸索和编程,查资料,终于把课程设计完成了,我们小组的成员一起讨论问题,分析问题,发现问题,解决问题,也收获了不少,我们的编程技术都有所提高,我们的体会就是:
要提高自己的编程能力,你必须亲自去体验、去设计、编辑、编译、调试、运行。
当然设计时用流程图,这也很重要,这样整个思路就很清晰,而且是按照软硬件语言的逻辑顺序进行,就很方便。
设计过程可以分模块,不要一开始就想把所有的功能都实现了,应该一个模块一个模块的实现,再总的连起来,实现最后的总模块。
因此,微机实验这种形式的课程设计是很好也是很有必要的,使我们对微机实验有了更深刻的理解。
五、参考文献
[1]王忠民.微型计算机原理(第二版).西安:
西安电子科技大学出版社,2007年
[2]马春燕.微机原理与接口技术实验与学习辅导.北京:
电子工业出版社.2007年