武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx

上传人:b****5 文档编号:7475572 上传时间:2023-01-24 格式:DOCX 页数:23 大小:157.33KB
下载 相关 举报
武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx_第1页
第1页 / 共23页
武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx_第2页
第2页 / 共23页
武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx_第3页
第3页 / 共23页
武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx_第4页
第4页 / 共23页
武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx

《武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx》由会员分享,可在线阅读,更多相关《武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx(23页珍藏版)》请在冰豆网上搜索。

武汉理工大学微机原理课程设计之存储器扩展分析与设计.docx

武汉理工大学微机原理课程设计之存储器扩展分析与设计

学号:

课程设计

 

题目

存储器扩展分析与设计

学院

自动化学院

专业

自动化专业

班级

姓名

指导教师

向馗副教授

 

2013

1

10

课程设计任务书

学生姓名:

专业班级:

指导教师:

向馗副教授工作单位:

自动化学院

题目:

存储器扩展分析与设计

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.画出简要的硬件原理图,编写程序。

2.完成以下任务:

(1).设计一个EEPROM扩展电路,由两片2864扩展为16KB容量,并编程信息检索程序。

(2).编程内容:

在扩展的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日

系主任(或责任教师)签名:

年月日

目录

摘要1

1设计意义及任务2

1.1设计意义2

1.2设计任务2

2EEPROM扩展电路设计3

2.1方案设计3

2.2芯片选择3

2.3连线说明4

2.4硬件电路图5

3程序设计6

3.1设计思路6

3.2程序框图6

3.2.1主程序流程图6

3.2.2输入程序流程图6

3.2.3输出程序流程图6

3.3设计程序一8

3.4设计程序二10

3.5调试过程12

3.5.1调试过程12

3.5.2结果记录12

3.5.3调试过程中遇到的问题13

结束语14

参考文献15

附录一16

附录二19

摘要

存储器(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)编程内容:

在扩展的ROM中存入有9个不同的信息,编号0到8,每个信息包括40个字字符。

从键盘接收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

0

0

0

0

0000

0000

0000

0000

0

0

0

1

1111

1111

1111

0000

0

0

1

0

0000

0000

0000

0000

0

0

1

1

1111

1111

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

CMPAL,'q';判断是否输入字符与q相等,相等跳到EXIT退出

JZEXIT

CMPAL,'0';输入不在0-8范围则退出

JBERR;小于0跳转

CMPAL,'8'

JAERR;大于8跳转

SUBAL,30H;计算字符串的地址

MOVDH,28H;28H=40

MULDH

MOVBX,AX;数据放入BX

CALLDISP

JMPLOP;输出错误信息后,继续输入序号

ERR:

MOVDL,0DH;输出提示错误语句

MOVAH,02

INT21H

MOVDX,OFFSETErrmsg

MOVAH,9

INT21H

MOVDL,0DH;回车和换行

MOVAH,02

INT21H

JMPLOP;返回LOP继续输入序号

EXIT:

MOVAH,4CH;返回DOS

INT21

DISPPROCNEAR

MOVDL,0DH;回车换行

MOVAH,02

INT21H

MOVDL,0AH;多字符输入

MOVAH,02

INT21H

MOVCX,28H;28H=40控制循环次数即输出的信息字符个数

LOP1:

MOVDL,[BX];循环输出字符串

MOVAH,02H

INT21H

INCBX;BX打印字符

LOOPLOP1

MOVDL,0DH

MOVAH,02

INT21H

MOVDL,0AH

MOVAH,02

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;输入序号

INT21H

CMPAL,'Q';判断为‘Q’退出

JEEXIT

CMPAL,'q';判断为‘q’退出

JEEXIT

SUBAL,'0';小于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

CALLCRLF

LEADX,MSG9;提示语Themessageis:

MOVAH,09H

INT21H

MOVCX,40;设置循环次数

DISP1:

MOVDL,[BX];输出字符串

MOVAH,2

INT21H

INCBX

LOOPDISP1

CALLCRLF

JMPBEGIN

CALLCRLF

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

 

 

附录一

DATASEGMENT

MESSDB'----------------------------------',0DH,0AH

DB'|Inputanumberbetween0and8|',0DH,0AH

DB'|PressQORqtoquit|',0DH,0AH

DB'---------------------------------',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!

!

';错误信息

DATAENDS

STACKSEGMENT

DB256DUP(0);256字节堆栈空间

TOSLABELWORD

STACKENDS

CODESEGMENT

MAINPROCFAR

ASSUMECS:

CODE,DS:

DATA,SS:

STACK;段属性说明

START:

MOVAX,STACK;初始化SS

MOVSS,AX

MOVSP,OFFSETTOS;取TOS首地址

PUSHDS;保存旧数据段

SUBAX,AX;AX清零

PUSHAX;保存在堆栈中

MOVAX,DATA;初始化DS

MOVDS,AX

CALLSHOW;调用子程序SHOW

BEGIN:

CALLCRLF;回车换行

LEADX,MSG;输出提示语句Pleaseinputanumber:

MOVAH,09H

INT21H

MOVAH,1;输入序号

INT21H

CMPAL,'Q';判断为‘Q’退出

JEEXIT

CMPAL,'q';判断为‘q’退出

JEEXIT

SUBAL,'0';小于0跳转error

JBERROR

CMPAL,8;大于9跳转error

JAERROR

MOVBX,OFFSETMSG0;取第一个字符串的首地址

MULFORTY

ADDBX,AX;找到相应字符串的地址

CALLDISPLAY

ERROR:

CALLCRLF;回车换行

LEADX,ERRMSG;提示错误语

MOVAH,09H

INT21H

CALLCRLF

CALLCRLF

JMPBEGIN;返回BEGIN程序

DISPLAYPROCNEAR

CALLCRLF

LEADX,MSG9;提示语Themessageis:

MOVAH,09H

INT21H

MOVCX,40;设置循环次数

DISP1:

;输出字符串子程序

MOVDL,[BX]

MOVAH,2

INT21H

INCBX

LOOPDISP1

CALLCRLF

JMPBEGIN

CALLCRLF

RET;返回程序

DISPLAYENDP

CRLFPROCNAER;定义CRLF子程序

MOVDX,OFFSETCRLF1

MOVAH,9H

INT21H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1