课设.docx
- 文档编号:16567686
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:24
- 大小:233.89KB
课设.docx
《课设.docx》由会员分享,可在线阅读,更多相关《课设.docx(24页珍藏版)》请在冰点文库上搜索。
课设
目录
摘要···················································2
1设计目的及内容·······································3
1.1设计目的···········································3
1.2设计内容···········································3
2设计方案、组成框图及原理说明·························4
2.1设计方案···········································4
2.2设计思路···········································4
2.3程序流程图·········································5
3系统组成及程序分析···································7
3.1系统组成········································7
3.2程序分析········································7
4程序运行及调试·······································9
4.1程序运行结果····································9
4.2调试过程········································11
5小结与体会···········································12
参考文献···············································13
附录···················································14
摘要
微机原理与接口技术,是掌握微型计算机的硬件组成及使用;学会运用指令系统和汇编语言进行程序设计;熟悉各种类型的接口及其应用,树立起微型计算机体系结构的基本概念。
存储系统:
存储器的分类(原理、存取方式)、半导体存储器工作原理、存储器的扩展、校验码、虚拟存储系统、Cache系统、地址映像、存储系统的组织。
中央处理器:
CPU组成、主机与外设间的数据传送方式、同步和异步的概念、时序划分、组合及微程序控制方式的微操作命令产生部件的工作原理
输入/出设备:
掌握I/O设备的分类,键盘、显示器、打印机的工作原理
输入/出系统:
掌握总线的功能及分类、接口的功能及分类、直接程序传送方式接口的工作原理、程序中断方式接口的工作原理、DMA接口的工作原理
关键词:
指令系统、汇编语言,存储系统
1设计目的及内容
1.1设计目的
通过8255和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。
输入部分:
主要是由8255和8个常开型开关来完成。
发音部分:
CUP通过对定时器8253的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。
本实验用到的是8253的方式3——方波发生器。
在掌握基本的微机原理与接口技术专业知识的基础上,完成课程设计任务,并可以灵活运用相关知识自主创新,真正做到将知识运用于实践,将知识转化为自身能力。
1.2设计内容
1、从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:
1)掌握汇编语言程序设计的基本方法。
2)进一步理解各种接口电路的应用。
3)掌握利用PC机扬声器发出不同频率声音的方法。
2、从设计功能出发使PC机能实现以下功能:
(1)使计算机的数字键1、2、3、4、5、6、7、8作为电子琴按键,按下即发出do、re、mi、fa、sol、la、si、do相应的音阶,按下CTRL+C或回车则退出电子琴状态。
(2)按下A、B、C程序自动按要求提示演奏乐曲。
2设计方案、组成框图及原理说明
2.1设计方案
(1)以K1-K8接8255的A口做为电子琴的键盘分别输入静音、do、re、mi、fa、sol、la、si的音,以8255的B口作为输出。
用8253定时器产生频率控制扬声器发生。
(2)以8255接八个开关K1-K8,做电子琴按键输入。
(3)以8253控制扬声器,发出相应的音阶。
============================================================
音阶 频率:
(单位Hz)代码
1 261.1262
2 293.7294
3 329.6330
4 349.2350
5 392.0392
6 440.0440
7 493.9494
523.0523
==============================================================
2.2设计思路
通过8255和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。
(1)输入部分:
主要是由8255和8个常开型开关来完成。
(2)发音部分:
CUP通过对定时器的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。
当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可由下式计算
计数值=533H*896/f=1234DCH/f
当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。
从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。
送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。
显然只有PB0和PB1都是1时,才能使扬声器发出声音。
控制音长的时间可以简单地通过反复执行指令来得到。
2.3程序流程图
电子琴琴键工作流程图如下
Y
N
Y
N
演奏乐曲子程序图如下
N
Y
3系统组成及程序分析
3.1系统组成
PC机扬声器电路以及相关接口电路如下:
3.2程序分析
(1)整体思路:
首先设置界面显示,提示输入相应数字将播放相应的歌曲,这些歌曲都是存入固定地址的。
输入相应的数字计算机识别后调用相应的地址程序,进而播放相应歌曲。
按5进入电子琴界面,提示1~8数字会发出相应音阶,此音阶也是存入相应地址的。
按下回车界面返回歌曲播放可继续播放歌曲,也可按6退出程序。
所以其工作原理实际是取地址调发音子程序的过程。
(2)输出一个字符串到标准输出设备上;如果输出操作被重定向,那么,将无法判断磁盘已满。
入口参数:
AH=09HDS:
DX=待输出字符的地址.待显示的字符串以’$’作为其结束标志
SHOWMACROb
LEADX,b
MOVAH,9
INT21H
ENDM
(3)发音部分程序源代码如下
把计数值送8253前,必须先把8253进行初始化,使其选用通道2,工作在方式3下。
MOVAL,0B6H
OUT43H,AL;43H为8253的控制字端口
计算计数初值,计数值送到8253,用以产生需要的发音频率利用定时器发声。
这里是通过硬件即8253定时器产生声音。
CUP通过对定时器的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。
当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可由下式计算:
计数值=533H*896/f=1234DCH/f
MOVDX,12H
MOVAX,348CH
DIVDI;(DI)=频率
OUT42H,AL;42H为8253的通道2端口
MOVAL,AH
OUT42H,AL
(4)送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。
显然只有PB0和PB1都是1时,才能使扬声器发出声音。
INAL,61H
MOVAH,AL
ORAL,3
OUT61H,AL;开扬声器
(5)控制音长的时间可以简单地通过反复执行指令来得到。
我们知道执行1200次
LOOP指令约需要10MS的时间。
因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。
WAIT1:
MOVCX,1200;向CX写入数
DELA1:
INAL,61H
ANDAL,10H
CMPAL,AH
JEDELA1
MOVAH,AL
LOOPDELA1;延时
DECBX;BX-1
JNZWAIT1;运算结果不为零则ZF=0,则转移
POPAX
MOVAL,AH
OUT61H,AL;从61h端口输入一个字节
4程序运行及调试
4.1程序运行结果
把编号的源程序命名保存为dianziqin.asm在MF2KP集成环境中进行调试,首先点运行选项中的调试,如果编译成功,就选择运行选项中的生成exe文件,这样就产生了一个可运行程序,然后点击运行,就会看到与题目相符的界面。
程序运行截图如下:
开始界面运行开始后,显示提示语言。
播放界面:
输入1后开始正常播放音乐
下一首界面:
正常播放时再按下5,就跳到电子琴界面。
此时按1~8分别可听到do、re、mi、fa、sol、la、si、do的音阶。
按回车推出电子琴界面,按6退出程序。
4.2调试过程
编好源程序后,需要对其进行修改和完善,具体做法是:
把源程序放在MF2KP集成环境中进行编译,如果原程序有错误,在编译时系统就会给出提示,根据提示可找到错误出现在哪行,对其进行修改,重新编译,直到编译时系统对那一行没有提示错误为止。
如果系统提示程序存在多处错误,就按上述方法逐条进行修改,直到编译成功。
此时运行程序,就可得到任务书中要求的功能。
在调试过程中出现了很多问题,刚开始对源程序进行编译时,总是出现多处错误:
(1)DW0DHOAH在起初根本不知道什么意思,后来我把这段代码给删了,发现原本漂亮的界面一下子就乱七八糟了,这下恍然大悟,原来这句代码的意思是换行和定格写;
(2)在键入程序音乐频率的时候总是漏打-1造成的结果就是在播放音乐的时候,音乐根本无法辨别,后来才知道,是结束符;
(3)在调试过程中,经常出现运行不了文件后发现是系统兼容问题,windows7的扬声器地址与windowsXP不同
5小结与体会
经过一周的努力和不断调试,我的微机原理课设终于完成了,回想一周的课设,颇有一些感慨。
此次课程设计对我来说并不简单,由于汇编知识匮乏,在前面几天时间基本是看课本,去东院图书馆查资料,补充一些课本上没有的知识,讲将书上例题看懂,并在MF2KP集成环境中进行运行调试,观察结果。
几天摸索才逐渐编写出简易电子琴程序的思路及程序模块的具体编写。
尽管一周的课程设计时间是短暂并且困办重重的,但是我还是在自己的不懈努力和同学的帮助下完成率任务。
在汇编过程中我感觉到汇编语言的神奇。
几句简短的语言,竟有如此强大的功能。
我从开始的担心害怕渐渐变成了享受。
看到自己编写的程序可以运行很有成就感,那是会突然觉得其实生活中的一些常用的家电什么的工作原理其实不是那么深不可测。
也感受到知识的力量,感觉大学真的学到了知识。
通过微机原理的课程设计我深刻体会到,大学应该关注自学能力,课堂时间有限老师教授的这也只能是大概内容,具体指示还要自己课下翻阅资料补充,学习就是不但补充不断摸索的过程。
总的来说,这次的课程设计让我受益匪浅,既锻炼了自我能力,磨练了意志,有培养了我的兴趣,让我慢慢的尝试独立分析问题解决问题,这对我以后的学习和工作都是非常重要的,我会珍惜以后的课设机会,不断完善自己。
参考文献
[1]《微型计算机原理与接口技术》,电子工业出版社,周佩玲,2005年
[2]《微型计算机原理及应用》,清华大学出版社,谭浩强,2001年
[3]《8086汇编语言程序设计》,机械工业出版社,马力妮,2009年
[4]《系统软件设计》,哈尔滨工业大学出版社,王开涛,2001年
[5]《微型计算机原理(第二版)》,西安电子科技大学出版社,王忠民,2007年
[6]《微机原理与接口技术实验与学习辅导》,电子工业出版社,马春燕,2007年
附录
DATASEGMENT
INFO1DB0AH,0DH,'WELCOMEYOUTOCOMEHERE!
$'
DB0AH,0DH,'THISISAMUSICPROGRAM!
$'
DB0AH,0DH,'PLEASESELECLT!
$'
INFO4DB0AH,0DH,'INPUTERROR!
$'
INFO5DB0AH,0DH,'PLEASEINPUTAGAIN!
$'
MUSLISTDB0AH,0DH,'========================='
DB0AH,0DH,'Press1KaiXin'
DB0AH,0DH,'Press2HuaXin'
DB0AH,0DH,'Press3XiaoBuWuQu'
DB0AH,0DH,'Press4Wonderful'
DB0AH,0DH,'Press5SCALEPLAY'
DB0AH,0DH,'Press6EXIT'
DB0AH,0DH,'========================='
DB0AH,0DH,'$'
MUS_FRQ1DW330,294,262,294,3DUP(330)
DW3DUP(294),330,392,392
DW330,294,262,294,4DUP(330)
DW294,294,330,294,262,-1
MUS_TIM1DW6DUP(100),200
DW2DUP(100,100,200)
DW8DUP(100)
DW4DUP(100),200
MUS_FRQ2DW1568,1318,1318,1175,1046,1175,1175,1568,1318
DW1568,1318,1318,1175,1046,1175,1175,1568,1760,1318
DW1568,1318,1318,1175,1046,1175,1046,988,1046,1175
DW988,784,659,988,880,880,1318,1175,1046,988
DW988,988,880,-1
MUS_TIM2DW8DUP(200),400
DW6DUP(200),200,200,200,200
DW10DUP(200)
DW10DUP(200)
DW200,200,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;调用中断,返回dos
CMPAL,36H;是否按下6
JZRETU;是则跳转,不是则向下进行
CMPAL,31H
JNZB0;不是1则继续向下进行
CALLMUSIC1;跳转到music1程序
JMPEXIT1;跳转到exit1
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;调用dos中断
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;调用中断,返回dos
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;写8253的控制字选中8253通道1读写16位工作方式3二进制计数方式
OUT43H,AL;向8253中写入上述功能的控制字
MOVDX,12H
MOVAX,533H*896
DIVDI
OUT42H,AL;将AL中数放到8253计数器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课设.docx