微机课程设计计算机仿真电子琴.docx
《微机课程设计计算机仿真电子琴.docx》由会员分享,可在线阅读,更多相关《微机课程设计计算机仿真电子琴.docx(17页珍藏版)》请在冰豆网上搜索。
![微机课程设计计算机仿真电子琴.docx](https://file1.bdocx.com/fileroot1/2023-2/24/9078b61c-2b16-4fe6-91f4-bea6cf79f01f/9078b61c-2b16-4fe6-91f4-bea6cf79f01f1.gif)
微机课程设计计算机仿真电子琴
题目:
计算机仿真电子琴
一、课程设计的目的与要求
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
MESG1DB0AH,0DH,'#######################'
DB0AH,0DH,'#----MUSICPROGRAMDesignByYeLinping!
-----#'
DB0AH,0DH,'#----------LetusEnjoyTheMusic!
----------#$'
MESG2DB0AH,0DH,'#######################'
DB0AH,0DH,'--->SimulatingaPiano:
PleasePress1'
DB0AH,0DH,'--->MusicStar,PleasePress2'
DB0AH,0DH,'--->TheExamplePress3'
DB0AH,0DH,'--->RETURNPleasePress4'
DB0AH,0DH,'--->EXITPRESS5'
DB0AH,0DH,'------------------------------------------'
DB0AH,0DH,'$'
MESG3DB0AH,0DH,'************PressQtoreturnmainmenu!
************'
DB0AH,0DH,'$'
ERDB01H,0DH,'INPUTERROR$'
MESG4DB0AH,0DH,'PRESSENTERTOEXIT!
$'
INFDB0AH,0DH,'PRESSA-S-D-F-G-H-J-KOR12345678'
DB0AH,0DH,'$'
MUS_FRQ1DW262,262,392,392,440,440,392
DW347,347,330,330,294,294,262
DW392,392,347,347,330,330,294
DW392,392,347,347,330,294,294
DW262,262,392,392,440,440,392
DW347,347,330,330,294,294,262,0
MUS_TIM1DW6DUP(100),200
DW7DUP(100)
DW6DUP(100),200
DW7DUP(100)
DW6DUP(100),200
DW7DUP(100)
MUS_FRQ2DW330,294,262,294,3DUP(330)
DW294,294,294,330,392,392
DW330,294,262,294,4DUP(330)
DW294,294,330,294,262,262,0
MUS_TIM2DW6DUP(25),50
DW2DUP(25,25,50)
DW12DUP(25),100
TABLEDW262,294,330,349,392,440,494,525
TABLE1DW130,146,164,174,196,220,246,261
DATAENDS
STACKSEGMENTPARASTACK'STACK'
SKDB200DUP('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
SHOWMESG1
MPR:
SHOWMESG2
MOVAH,01H
INT21H
CMPAL,'1'
JNZN1
SHOWMESG3
SHOWINF
CALLPIANO
JMPEXIT
N1:
CMPAL,'2'
JNZN2
CALLMUSIC
JMPEXIT
N2:
CMPAL,'3'
JNZN3
CALLMUSIC2
JMPEXIT
N3:
CMPAL,'4'
JZEXIT
CMPAL,'5'
JZREMU
SHOWER
EXIT:
JMPMPR
REMU:
MOVAX,4C00H
INT21H
MUSICPROC
LEASI,MUS_FRQ1
LEABP,DS:
MUS_TIM1
SHOWMESG4
PA:
MOVAH,01H
INT16H
CMPAL,0DH
JNZFREQ1
JMPREMU
FREQ1:
MOVDI,[SI]
CMPDI,0
JEEND_MUS1
MOVBX,DS:
[BP]
CALLGENSOUND
ADDSI,2
ADDBP,2
JMPPA;FREQ1
END_MUS1:
RET
MUSICENDP
示例音乐:
MUSIC2PROC
LEASI,MUS_FRQ2
LEABP,DS:
MUS_TIM2
SHOWMESG4
PB:
MOVAH,01H
INT16H
CMPAL,0DH
JNZFREQ2
JMPREMU
FREQ2:
MOVDI,[SI]
CMPDI,0
JEEND_MUS2
MOVBX,DS:
[BP]
CALLGENSOUND
ADDSI,2
ADDBP,2
JMPPB
END_MUS2:
RET
MUSIC2ENDP
电子琴:
PIANOPROCNEAR
PUSHAX
PUSHBX
PUSHCX
LOP:
MOVAH,01H
INT21H
CMPAL,'Q'
JEEXIT1
CMPAL,31H
JBLOP1
CMPAL,38H
JALOP1
ANDAX,0FH
SHLAX,1
SUBAX,2
MOVSI,AX
MOVDI,TABLE[SI]
MOVBX,100
CALLGENSOUND
JMPPIANO
LOP1:
CMPAL,'A'
JNZY1
MOVAX,00H
JMPSD
Y1:
CMPAL,'S'
JNZY2
MOVAX,02
JMPSD
Y2:
CMPAL,'D'
JNZY3
MOVAX,04H
JMPSD
Y3:
CMPAL,'F'
JNZY4
MOVAX,06
JMPSD
Y4:
CMPAL,'G'
JNZY5
MOVAX,08
JMPSD
Y5:
CMPAL,'H'
JNZY6
MOVAX,10
JMPSD
Y6:
CMPAL,'J'
JNZY7
MOVAX,12
JMPSD
Y7:
CMPAL,'K'
JNZLOP
MOVAX,14
JMPSD
SD:
MOVSI,AX
MOVBX,OFFSETTABLE1
MOVDI,[BX][SI]
MOVBX,100
CALLGENSOUND
JMPLOP
EXIT1:
POPCX
POPBX
POPAX
JMPMPR
PIANOENDP
发生子程序
GENSOUNDPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
MOVAL,0B6H
OUT43H,AL
MOVDX,15H
MOVAX,533H*896
DIVDI
OUT42H,AL
MOVAL,AH
OUT42H,AL
INAL,61H
MOVAH,AL
ORAL,3
OUT61H,AL
PUSHAX
WAIT1:
MOVCX,3000
DELAY:
INAL,61H
ANDAL,10H
CMPAL,AH
JEDELAY
MOVAH,AL
LOOPDELAY
DECBX
JNZWAIT1
MOVAL,AH
OUT61H,AL
POPAX
POPDI
POPDX
POPCX
POPBX
POPAX
RET
GENSOUNDENDP
CODEENDS
ENDSTART
2、实验现象
1.进入DOS后在DOS界面(图6)运行已经编译好的文件(文件名为yelinping.exe)
图6.DOS调试界面
2.按上述步骤,出现的运行界面如下:
图7.操作界面初始界面
图8.按数字键1后进入电子琴界面
图9.按2后播放小星星
图10.按ENTER后退出播放
3.操作说明:
在主菜单界面,输入1,可以进行仿真电子琴,此时按1~8或者A-K可以发出相应的声音。
在电子琴状态下,按Q即可回到主菜单。
在主菜单下按2可以播放歌曲小星星,如果想结束可以按回车键可以退出,歌曲播放结束也可以自动回到主菜单。
四、课程设计的心得与体会
通过这次课程设计,我完成了我的第一个算是比较大的汇编程序。
这次课程设计给我映像最深刻的是抱着书本仅仅靠书本的一些知识,而不去动手实践的话,编程的时候让我无从下手。
通过查阅资料,第一次接触到了DOS下的菜单设计。
这次设计我努力让我设计的菜单更加美观,实用,更人性化。
每一次的调试,我在程序大体上已经实现基本需要的功能之后,不断的完善程序,不断地增强程序的功能。
例如:
在电子琴仿真的功能方面,我在1—8这几个按键的基础上,增加了A、S、D、F、G、H、J、K这几个按键,实现低音段按键。
在播放歌曲的时候,增加ENTER键退出播放。
在输入的按键在菜单提示在外时,增加错误提示。
五、参考文献
[1]王忠民.微型计算机原理(第二版).西安:
西安电子科技大学出版社,2007年
[2]马春燕.微机原理与接口技术实验与学习辅导.北京:
电子工业出版社.2007年