微机原理课程设计电子琴.docx
- 文档编号:8367756
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:17
- 大小:251.62KB
微机原理课程设计电子琴.docx
《微机原理课程设计电子琴.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电子琴.docx(17页珍藏版)》请在冰豆网上搜索。
微机原理课程设计电子琴
自动化专业课程设计报告
《微型计算机原理课程设计》
班级自动化12-3
姓名金星
学号23
时间2014.12.18
地点电信实验中心第六实验
指导教师李向军
大连海洋大学信息工程学院
自动化教研室
题目:
计算机仿真电子琴
一、课程设计的目的与要求
1、设计目的
本课程课程设计是自动化专业学生学习完《微机原理及应用》课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。
本课程设计的目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法。
2、设计要求
从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:
1)掌握汇编语言程序设计的基本方法。
2)Dos的基本调用。
3)进一步理解各种接口电路的应用。
(8255并行接口,8254定时器等)。
4)掌握利用PC机扬声器发出不同频率声音的方法。
3、主要技术指标
编写程序
1)在程序运行时使PC即成为一架可弹奏的电子琴。
当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I这八个音调。
按下CTRL+C或者回车则退出电子琴状态。
2)在程序运行时使PC自动按要求提示演奏乐曲。
音符
1
2
3
4
5
6
7
频率(低)
131
147
165
175
196
220
247
频率(中)
262
294
330
349
392
440
494
频率(高)
524
588
660
698
784
880
988
二、课程设计课题的分析
8255/8245的硬件:
电子琴的设计实际上就是要设计一个程序,能够通过该程序控制PC机内扬声器的发声规律,按下相应的按键后,扬声器能发出指定频率的声音。
PC机内的扬声器是通过并行接口芯片8255和定时芯片8253来控制发音的,其电路连接方式如下图所示。
图1.扬声器工作原理图示
图2.主程序工作流程图
图3.乐曲演奏子程序工作流程图图4.电子琴子程序工作流程图
图5.扬声器工作流程图
8255的内部结构图如图2所示,它有3个数据端口,分为两组,A组由A口和C口高四位组成,B组由B口和C口低四位组成。
其方式控制字如图3所示。
图28255内部结构图
PC机内8255的A口,B口,C口和控制口的端口地址分别为:
60H,61H,62H,63H。
2.28253工作原理
8253芯片中有3个计数通道,称为通道0,1,2,它们与外部电路相连的信号线有3根:
CLK,GATE,OUT,CLK是脉冲输入端,GATE是门控信号,OUT是输出信号,计数器工作在减1状态。
其内部结构图和方式控制字格式如图4,图5所示。
其中当计数器工作在方式3时,输出信号为方波信号。
内
部
总
线
A1
GATE0
CLK0
OUT0
GATE1
CLK1
OUT1
GATE2
CLK2
OUT2
D0-D7
计数器0
计数器2
计数器1
控制寄存器
A0
数据总线缓冲器
R/W逻辑电路
图48253内部结构图
D7
D6
D5
D4
D3
D2
D1
D0
计数器选择
00计数器0
01计数器1
10计数器2
11不用
00计数器锁存
01读写低8位
10读写高8位
11读写16位
工作方式选择
000方式0
001方式1
×10方式2
×11方式3
100方式4
101方式5
计数方式
0二进制
1BCD计数
图58253控制字格式
PC机内8253的通道0,通道1,通道2,控制口的端口地址分别为:
40H,41H,42,43H。
因为扬声器是由通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。
三、课程设计的结果
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
DISPLYMACROB
MOVDX,OFFSETB
MOVAH,09H
INT21H
ENDM
DISPLYINFO1
LOP:
DISPLYMUSLIST
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
DISPLYNUMB
CALLMUSIC5
EXIT1:
DISPLYINFO5
JMPLOP
EXIT:
DISPLYINFO4
DISPLYINFO5
JMPLOP
RETU:
MOVAX,4C00H
INT21H
MUSIC1PROC
LEASI,MUS_FRQ1
LEABP,DS:
MUS_TIM1
FREQ1:
MOVDI,[SI]
CMPDI,-1
JEEND_MUS1
MOVBX,DS:
[BP]
CALLSOUND
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]
CALLSOUND
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]
CALLSOUND
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]
CALLSOUND
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
CALLSOUND
JMPLOP5
EXIT5:
POPCX
POPBX
POPAX
RET
MUSIC5ENDP
SOUNDPROC
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界面进行汇编链接并生成可执行文件.exe
2.双击可执行文件KS.exe(这里我把程序取名为KS)进入操作界面如图6所示
图6.操作界面初始界面
图8.按数字键5后进入电子琴界面
图9.按回车后退出电子琴界面
3.在进行操作的时候只要在键盘上按1-4这四个数字键就可以任意听取歌曲1—歌曲4,按数字键5时进入电子琴界面,这时候1-8分别表示音乐CDEFGABC这几个音符。
按回车后退出电子琴操作界面,这时候按6退出程序。
四、课程设计的心得与体会
通过这次微机原理课设,我发现所有的理论都是要通过实践来精进的。
从一开始的什么都不会,到现在的点点理解,几天下来感触颇多。
通过电子琴的制作,使我更为深刻的掌握理解编程,让我充分认识了每个指令的作用,每个定义的含义;为今后学习和制作打下了良好的基础。
对编程还是有很多的不理解,不懂,以后还是要认真的学习,学好编程
五、参考文献
[1]王忠民.微型计算机原理(第二版).西安:
西安电子科技大学出版社,2007年
[2]马春燕.微机原理与接口技术实验与学习辅导.北京:
电子工业出版社.2007年
[3]沈美明,温东婵主编IBM-PC汇编语言程序设计第二版,清华大学出版社,2001年。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计 电子琴
![提示](https://static.bdocx.com/images/bang_tan.gif)