最新微机原理课程设计之存储器扩展分析与设计Word文件下载.docx
- 文档编号:16596550
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:22
- 大小:157.47KB
最新微机原理课程设计之存储器扩展分析与设计Word文件下载.docx
《最新微机原理课程设计之存储器扩展分析与设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《最新微机原理课程设计之存储器扩展分析与设计Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
在扩展的ROM中存入有9个不同的信息,编号0到8,每个信息包括40个字字符。
从键盘接收0到8之间的一个编号,然后在屏幕上显示出相应的编号的信息内容,按“q”键退出。
3.撰写课程设计说明书。
内容包括:
摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:
设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:
2012年12月30日-----12月31日查阅资料及方案设计
2013年01月01日-----01月05日编程
2013年01月06日-----01月08日调试程序
2013年01月09日-----01月10日撰写课程设计报告
指导教师签名:
2013年1月11日
系主任(或责任教师)签名:
年月日
摘要
存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据。
有了存储器,计算机才有记忆功能,才能保证正常工作。
按存储介质分可分为半导体存储器和磁表面存储器。
按存储器的读写功能分可分为只读存储器(ROM)和随机读写存储器(RAM)。
只读存储器ROM是一种对其内容只能读,不能写的存储器。
随着半导体技术的发展,只读存储器也根据不同需要设计出不同的种类。
其中电可擦除只读存储器(EEPROM)是一种可用电气方法在线擦除和再编程的只读存储器,它既有RAM可读可改写的特性,又有非易失性存储器ROM在掉电后仍能保持所存数据的优点。
因此,EEPROM在单片机存储器扩展中可以作程序存储器,也可以用作数据存储器,基于EEPROM存储器的扩展设计有十分重要的意义。
建立一个信息检索系统,每个序号对应一个不同的信息。
通过键盘输入不同的指令序号,在电脑屏幕上会输出想要得到的信息。
当超出序号范围的时候,屏幕会显示错误。
程序还附加一个进一步查询的子程序。
在输出信息后,可以对该信息进行查寻,当输入信息与序号相对应的信息完全相同时,会在屏幕上显示NO字样,然后继续进行下一次的提示输入。
关键字:
存储器EEPROM信息检索
1设计意义及任务
1.1设计意义
《微机原理与接口技术》主要培养统筹运用课本所学的理论知识,掌握程序设计模块化基本理论和基本方法。
EEPROM(电可擦写可编程只读存储器)是用户可更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。
EEPROM在单片机存储器扩展中可以作程序存储器,也可以用作数据存储器。
建立一个信息检索系统,然后通过键盘输入不同的指令,输出想要得到的信息。
信息检索是为了满足用户的查询需求,本次课程设计是针对我们平时学习的理论知识的检验,在实践中考察我们的掌握能力,更好的存储器的一些问题。
1.2设计任务
(1)画出简要的硬件原理图,编写程序。
(2)完成以下任务:
1)设计一个EEPROM扩展电路,由两片2864扩展为16KB容量,并编程信息检索程序。
2)编程内容:
从键盘接收0到8之间的一个编号,然后在屏幕上显示出相应的编号的信息内容,按‘Q’或‘q’键退出。
2EEPROM扩展电路设计
2.1方案设计
8086通过控制138译码器来实现控制EEPROM扩展电路,即两片2864芯片。
通过D0
D7数据总线来传输数据,通过地址总线来实现读写的输入输出,同时数据可以先放在74LS373锁存器中存放来保护数据。
硬件原理图如图2-1所示。
图2-1硬件原理图
2.2芯片选择
EEPROM芯片在写入时能自动完成擦除,而且不需要专用的编程电源,可直接使用5V电源。
在芯片引脚设计上,2KB的EEPROM2816与相同容量的EPROM2716和静态RAM6116兼容,8KB的EEPROM2864A与相同容量的EPROM2764A和静态RAM6264兼容,这些特点给硬件电路设计和调试带来了方便。
常用的并行EEPROM芯片有2816/2816A、2817/2817A、2864A等,本次设计要形成16KB容量,若采用2816/2816A、2817/2817A,需用8块芯片,连接线麻烦,所以采用2864芯片扩展。
2816、2817、2864的读出数据时间均为250ns,写入时间为10ms。
2864引脚图如图2-2所示。
图2-22864引脚图
计算芯片数量:
2864芯片容量是64/8=8,即8KB。
,所以需用两片2864芯片。
2.3连线说明
数据线:
2864的8位数据线直接与8086的数据线相连。
地址线:
根据选择的芯片进行地址分配,由于选择芯片分别是8KB,这样片内寻址需要的地址线是13根,因使用138译码器来片选,所以8086上的地址线
作为片内寻址与8KB的ROM的
地址连接。
通过一片74LS138译码器来控制片选。
将
控制低8位的2864
(1)的
,
控制高8位的2864
(2)的
,138译码器的输入端连接到8086的地址线的高位
,地址分配表如表2-1所示。
所以2864
(1)的地址范围为0000H至1FFFH,2864
(2)的地址范围为2000H至3FFFH,两片加起来一共是16KB。
为了防止CPU在读取数据时,数据发生变化,在硬件电路上采用了74LS373锁存器。
控制线:
取
中的两根地址线如
和
分别控制两片2864的读写端。
地址分配表如表2-1所示。
表2-1地址分配表
C
B
A
0000
1111
2.4硬件电路图
存储器扩展硬件电路图如图2-3所示。
图2-3存储器扩展硬件电路图
3程序设计
3.1设计思路
在存储器的数据段里分配10个小数据段,每个小数据段分配40个字符,0-8这9个信息存储信息内容,另外一个输出错误信息,Q或q退出。
取MSG0的首地址作为整个信息段的首地址,根据输入的信号的不同,用序号乘40再加到首地址上找到相应序号的信息内容。
步骤为:
(1)开始,等待信息输入;
(2)输入序号,判断是否为Q。
若是转(7),否则转(3);
(3)判断是否满足要求的序号范围。
满足转(4),否则转(6);
(4)根据输入的序号,计算出相关信息的物理地址;
(5)输出结果,跳转到
(2);
(6)输出错误信息提示,转
(2);
(7)结束,退出程序。
3.2程序框图
3.2.1主程序流程图
主程序流程图如图3-1所示。
3.2.2输入程序流程图
输入程序流程图如图3-2所示。
程序中需使用DOS调用程序来显示一串字符串:
MOVAH,9
INT21H
3.2.3输出程序流程图
输出程序流程图如图3-3所示。
图3-1主程序流程图
图3-2输入程序流程图
图3-3输出程序流程图
从键盘输入序号,并运用DOS命令将所得结果显示在屏幕上,随后返回输入序号提示语句。
3.3设计程序一
根据题目,尝试编写了一个简单程序。
为与最后的程序作比较,将此程序列出,如下:
DATASEGMENT
n0db'
0000000000000000000000000000000000000000'
n1db'
1111111111111111111111111111111111111111'
n2db'
2222222222222222222222222222222222222222'
n3db'
3333333333333333333333333333333333333333'
n4db'
4444444444444444444444444444444444444444'
n5db'
5555555555555555555555555555555555555555'
n6db'
6666666666666666666666666666666666666666'
n7db'
777'
n8db'
888'
ErrmsgDB'
No!
Input0-8!
Qorq,Exit$'
;
输出错误信息
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA;
段属性说明
START:
MOVAX,DATA;
初始化DS
MOVDS,AX
LOP:
MOVAH,01H;
输入一个数字
INT21H
CMPAL,'
Q'
判断是否输入字符与Q相等,相等跳到EXIT退出
JZEXIT
q'
判断是否输入字符与q相等,相等跳到EXIT退出
0'
输入不在0-8范围则退出
JBERR;
小于0跳转
8'
JAERR;
大于8跳转
SUBAL,30H;
计算字符串的地址
MOVDH,28H;
28H=40
MULDH
MOVBX,AX;
数据放入BX
CALLDISP
JMPLOP;
输出错误信息后,继续输入序号
ERR:
MOVDL,0DH;
输出提示错误语句
MOVAH,02
MOVDX,OFFSETErrmsg
MOVAH,9
INT21H
MOVDL,0DH;
回车和换行
返回LOP继续输入序号
EXIT:
MOVAH,4CH;
返回DOS
INT21
DISPPROCNEAR
回车换行
MOVDL,0AH;
多字符输入
MOVCX,28H;
28H=40控制循环次数即输出的信息字符个数
LOP1:
MOVDL,[BX];
循环输出字符串
MOVAH,02H
INCBX;
BX打印字符
LOOPLOP1
MOVDL,0DH
MOVDL,0AH
INT21H
RET
DISPENDP
CODEENDS
ENDSTART;
源程序结束
调试结果如图3-4所示。
图3-4调试结果
出现的问题有:
问题1:
开始输入序号时,只能显示在屏幕的第一个空间。
问题2:
在输出没有写满40个字符的字符串时,输出是乱码。
问题3:
按Q或q退出时,还会显示一串数字再退出。
3.4设计程序二
在程序一调试的基础上,检查程序发现一些问题,在输入不是Q或q或0至8的数字时,没有写输出显示字符的程序;
输入是应该是字符串,因为有回车。
在此基础上,继续改善设计的程序,设计出程序二,即最终程序。
输入一个序号,首先判断是否是Q或q。
如果是,则直接跳出,结束程序。
如果不是,就在已设定好的信息库中检索相应信息,并将信息显示在屏幕上,紧接着跳入下一次序号输入界面。
如果没有相应的序号所对应的信息,即超出序号范围会自动报错,并跳到下一次序号输入界面。
主体部分程序如下:
BEGIN:
CALLCRLF;
LEADX,MSG;
输出提示语句Pleaseinputanumber:
MOVAH,09H
INT21H
MOVAH,1;
输入序号
CMPAL,'
判断为‘Q’退出
JEEXIT
CMPAL,'
判断为‘q’退出
JEEXIT
SUBAL,'
小于0跳转ERROR
JBERROR
CMPAL,8;
大于9跳转ERROR
JAERROR
MOVBX,OFFSETMSG0;
取第一个字符串的首地址
MULFORTY
ADDBX,AX;
找到相应字符串的地址
CALLDISPLAY;
调用DISPLAY子程序
定义ERROR程序:
提示错误,重新要求输入序号,再次检测。
ERROR:
CALLCRLF;
LEADX,ERRMSG;
提示错误语句
MOVAH,09H
INT21H
CALLCRLF
JMPBEGIN;
返回BEGIN程序
定义显示信息程序:
将字符信息一个个输出。
DISPLAYPROCNEAR
LEADX,MSG9;
提示语Themessageis:
MOVCX,40;
设置循环次数
DISP1:
MOVDL,[BX];
输出字符串
MOVAH,2
INCBX
LOOPDISP1
CALLCRLF
JMPBEGIN
RET;
返回程序
DISPLAYENDP
完整程序见附录一。
3.5调试过程
3.5.1调试过程
调试过程主要由编辑、汇编、链接和执行等几个步骤组成。
当编辑好汇编语言源程序后,将其保存为.ASM文件。
再调用汇编程序对源程序进行翻译,生成.OBJ的目标文件。
在汇编过程中,源程序有错误则不能生成目标文件,经过多次修改最终生成无错误目标文件。
之后,调用链接程序(LINK)将用户目标程序和库文件进行链接、定位,生成.EXE可执行文件。
如果刚开始可执行程序运行之后没有得到预想的结果,又要重新检查源程序的算法错误,重新编辑、汇编、链接和执行,最终得到预期的结果。
3.5.2结果记录
经过多次调试、修改、测试结果,最后基本符合要求。
调试最终结果如图3-5所示。
完整的调试见附录二。
图3-5调试最终结果
3.5.3调试过程中遇到的问题
(1)问题1:
程序运行后无法生成.obj文件。
首先,由于软件缺陷,要先运行一遍软件自带的程序之后,运行自己编写的程序,才能运行。
另外,在程序有错误时,当错误被改正之后,即能正常生成.obj文件。
(2)问题2:
检查程序发现一些问题,在输入不是Q或0至8的数字时,没有写输出显示字符的程序;
输入是应该是字符串而不是字,因为需要有回车。
(3)问题3:
选择序号后,屏幕上出现错误附加信息。
这是由于,设计的是40个字符空间,当某一条序号所对应的信息达不到四十个字符时,由于是顺序存储,计算机会自动用下一个序号所对应的信息填补上一条信息未满40个字符的空间,保证输出一定是40个字符。
于是,当调整每个信息的字符数均为40个字符时,即将空白写上空格符,将不会再出现错误的附加信息。
(4)问题4:
输入正确的序号后,会输出两个字符串。
这是由于在显示程序的问题,在显示程序块结束的地方加入返回BEGIN语句,程序可以运行处正确的结果。
结束语
通过本次课程设计让我学到了很多东西,受益匪浅。
虽然刚才拿到任务,不知从何下手,对编程也是一头雾水,但在通过看书和网上查阅了相关芯片资料,了解了一些设计原理,对硬件设计有了一定了想法,顺利用PROTUS软件画出硬件电路图,编写程序时,先简化了题目,从简单的开始写,再不断加入新的功能,逐渐完善所设计的程序。
通过运用微机原理专用汇编程序软件MF2KP,大大提高了我们的程序设计部分的效率,可见,这次课程设计,还锻炼了我们在短期内熟练掌握新软件,新知识的能力。
当然,通过这次课程设计,我还发现了自己的不少问题。
首先是理论知识掌握得不够牢固,常常忘记一些知识点,对设计的过程和效率有很大影响。
其次是动手能力还有待提高,虽然这次没有操纵实物,但在计算机上编程和发现问题解决问题的能力上有所欠缺。
设计过程中不仅要求我对知识的掌握能力,还要细心和耐心。
在几天的时间中,我感到自己的知识还是比较匮乏,所以平时还是需要多锻炼自己,加深对所学的知识的了解。
本次设计涉及到了书本的绝大部分内容,将课本中所学的知识一一串联起来,考验了自己的基础知识,也提升了学会串联知识的能力。
在今后的学习中我要锻炼自己独立分析问题,解决问题的能力,端正态度努力学习,不断的完善自己,充实自己。
参考文献
[1]彭虎.微机原理与接口技术(第三版).电子工业出版社.2011
[2]张小鸣.微机原理与接口技术(第一版).清华大学出版社.2009
[3]康华光.电子技术基础数字部分(第五版).高等教育出版社.2005
[4]李志明.计算机原理与汇编语言程序设计.中南大学出版社.2005
[5]潘名莲.微计算机原理.电子工业出版社.2004
附录一
MESSDB'
----------------------------------'
0DH,0AH
DB'
|Inputanumberbetween0and8|'
|PressQORqtoquit|'
---------------------------------'
0DH,0AH,'
$'
提示语句
FORTYDB40
MSG0DB'
Iamveryhappy'
MSG1DB'
TodayisMonday'
MSG2DB'
TodayisTuesday'
MSG3DB'
TodayisWesnesday'
MSG4DB'
TodayisThursday'
MSG5DB'
TodayisFriday'
MSG6DB'
TodayisSaturday'
MSG7DB'
TodayisSunday'
MSG8DB'
Todayisagoodday'
MSGDB'
Pleaseinputanumber:
MSG9DB'
Themessageis:
$'
MESS1DB'
no!
CRLF1DB0DH,0AH,'
ERRMSGDB'
error!
invaliedparameter!
!
'
错误信息
STACKSEGMENT
DB256DUP(0);
256字节堆栈空间
TOSLABELWORD
STACKENDS
MAINPROCFAR
DATA,SS:
STACK;
MOVAX,STACK;
初始化SS
MOVSS,AX
MOVSP,OFFSETTOS;
取TOS首地址
PUSHDS;
保存旧数据段
SUBAX,AX;
AX清零
PUSHAX;
保存在堆栈中
MOVAX,DATA;
MOVDS,AX
CALLSHOW;
调用子程序SHOW
小于0跳转error
大于9跳转error
CALLDISPLAY
提示错误语
输出字符串子程序
MOVDL,[BX]
INCBX
CALLCRLF
JMPBEGIN
DISPLAYENDP
CRLFPROCNAER;
定义CRLF子程序
MOVDX,OFFSETCRLF1
MOVAH,9H
INT21H
RET
CRLFENDP
SHOWPROCNEAR;
定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 微机 原理 课程设计 存储器 扩展 分析 设计