模拟电梯接口技术课设.docx

上传人:b****5 文档编号:5596984 上传时间:2022-12-28 格式:DOCX 页数:23 大小:122.46KB
下载 相关 举报
模拟电梯接口技术课设.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

模拟电梯接口技术课设

河南理工大学

计算机科学与技术学院

课程设计报告

2015—2016学年第二学期

 

课程名称微机原理与接口技术

设计题目模拟电梯

姓名。

学号36130901021

专业班级计科13-02

指导教师李莹莹

2016年1月9日

目录

一、课程设计题目3

二、设计要求3

三、设计目的3

四、设计方案3

五、原理分析4

六、硬件设计4

七、软件分析6

八、总结与展望20

一、课程设计题目

模拟电梯

二、设计要求

用键盘用键盘、按钮、八段码和LED发光管模拟电梯工作过程。

楼层设为8层,键盘数字键1-8用来键入希望停的楼层,8个LED发光管显示希望停的楼层,八段码指示电梯当前所在楼层,按钮用来开停电梯。

电梯正常运行时以每0.5秒一层的速度上升或下降。

三、设计目的

在读懂任务书给出的几个子程序的基础上,学习运用计算机动画技术等手段自己独立编制出一个完整的电梯运行计算机仿真程序.通过编制仿真程序的实践,加强同学们对计算机顺序控制的了解与认识,以达到掌握计算机顺序控制规律和计算机顺序控制技术所需的编程技巧以及相关的硬件基础知识的目的

四、设计方案

①在提示“inputthefloor(1-8F)(suchas1-3-4-1):

”后面输入用户要去的楼层,可从任意楼层开始运行,指定楼层号顺序上升与下降,数字与数字之间用“-”连接,数字范围为1-8。

在一轮运行完以后程序会清空楼层提示后面的数字,用户可再输入要去的楼层,若用户希望停止运行该程序,可以在下一轮开始时在楼层提示后面输入0或非数字键,可返回到DOS

②在1--8楼之间按任意顺序不连续控制电梯上升与下降.按一次计算机键盘的上箭头电梯上升一楼,按一次计算机键盘的下箭头电梯下降一楼.

③电梯上升与下降过程中,在电梯三维模型的正上方的蓝色矩形框内,提示“nowtheflooris:

”后面显示出当前所要在的楼层数,提示“TO:

”后面显示1--8楼之间所要到达的楼层数,提示“direction:

”后面显示上下箭头,代表电梯当前是上升状态还是下降状态。

④在电梯旁有一个小方块。

这个小方块随电梯上升而上升,下降而下降。

增加电梯运行时的动感.。

小方块在一个8层的方框内上下移动,电梯每上升一层,小方块在方框内上升一层,

电梯每下降一层,小方块在方框内下降一层。

并且小方块在方框内的位置与电梯当前所在楼层时对应的,例如:

若当前电梯运行到第3层,则小方块也位于第三层方框。

为了使用户能更清晰地看到电梯的运行过程,小方块每到一层会停留1S的时间。

电梯运行到指定楼层后,打开电梯门,然后关门继续运行,为了模拟真实的效果,电梯在指定楼层停下,大门依次闭合-半开门-全开门-半开门-闭合。

⑤在1--8楼之间按任意顺序不连续控制电梯上升与下降。

按一次计算机键盘的上箭头电梯上升一楼,按一次计算机键盘的下箭头电梯下降一楼。

由于所使用的计算机的某些原因,这里输入“w”上升一楼,输入“s”下降一楼。

电梯的不连续控制只在电梯停在某一层且关上的门之后。

提示是“upordownaflooronlyvailablewhenelevatorstop(usewors)”,当用户可以对电梯进行不连续控制时,会出现“~nowvailable”的提示。

⑥电梯仿真软件运行时,在计算机屏幕上显示本软件作者姓名“wustzhengliming”和日期“2014.12.18”。

五、原理分析

1、在主程序的最前面是宏,将具有特定功能的画图代码打包成一个个宏放在住程序的最前面。

有清屏的宏,移光标的宏,写横的宏,写竖的宏,画小方块上升的宏,画小方块下降的宏,画初始小方块的宏,画电梯关门状态的宏,画电梯半开门状态的宏,画电梯全开门状态的宏。

由于这段画图的代码在程序中会经常使用,所将他们编成宏使用起来更方便。

除了主程序外还有一个延时1S的子程序。

2、开始主程序的运行后,先运行一段初始化程序,然后设置图形显示方式,再显示提示信息以及有关信息,然后再画电梯的三维模型,这样整个初始界面就完成了。

3、然后再提示信息下,用户输入要去的楼层,判断该字符串的第一个字符的ASCII码是否在1-8范围,如果不是则结束并返回DOS界面,如果是则继续进行下一步程序。

将第1个数字代表的楼层设为当前站X(n),并赋给COUNT(该变量用来记录当前层)。

将下个数字代表的层数设为下一站(如果当前站为最后一站,则重新回到开头提示用户输入信息),将COUNT与下一站X(n+1)相比较,若COUNT大于下一站,则小方块下降一层,COUNT--,并显示当前层和目标层以及下箭头,一直循环直到相等;若COUNT小于下一站,则小方块上升一层,COUNT++,并显示当前层和目标层以及下箭头,一直循环直到相等;相等时,则电梯大门大门依次闭合-半开门-全开门-半开门-闭合。

大门关上后,调用MOVAH,1;

4、INT16H检测是否有按键按下,若没有键盘按下,则X(n)=X(n+1),读取下一个字符,将该字符所代表的楼层赋给X(n+1),并回到前面检测X(n)是否为最后目标层的程序段。

若有键盘按下,则判断AL的值(该值为输入的字符的ASCII码),若AL为‘w’则小方块上升一层,COUNT++;若AL为‘s’则小方块下降一层,COUNT--;两者最后都回到“X(n)=X(n+1),读取下一个字符,将该字符所代表的楼层赋给X(n+1)”这一步,若AL即不为‘w’也不为‘s’,则直接回到该步骤。

六、硬件设计

生成文件

(1).我使用的运行环境为虚拟机下的xp系统,汇编软件使用的是轻松汇编。

(2).打开轻松汇编,输入代码,保存为.asm格式文件。

(3).编译程序。

可以直接使用轻松汇编菜单栏的按键运行—编译和运行—生成按钮进行编译,也可以进入dos环境,使用masm.exe编译源程序生成OBJ文件和一些交叉文件。

格式:

masmexam1.asm;

如果结尾不加分号,那么回车后会有一个提示,提示将生成的OBJ文件名和相应的其他一些文件名是什么?

可以一路回车取默认值,即与源文件同文件名。

如果加上分号,既可避免这些提示。

直接生成同文件名的OBJ文件。

(4).连接程序。

用LINK.exe连接OBJ文件,生成可执行的exe文件。

格式:

linkexam1.obj;

如果原程序无堆栈段,则在连接完后,有一个警告提示,提示程序无堆栈段。

(5).运行。

直接在轻松汇编菜单栏中单击运行按钮或在dos环境中执行debug将生成的可执行exe文件装入内存后,用G命令来运行

(6).查看程序运行结果。

BIOS显示功能调用

显示器是微型机系统重要的输出设备。

显示器与微型机之间的接口电路又称做显示适配器(显示卡)。

显示卡的种类很多,有MDA卡、HGC卡、CGA卡、EGA卡和VGA卡等。

IBM-PC和PC/XT单色显示器使用单色显示器适配器MDA(MonochromeDisplayAdapter)卡,它不支持图形方式,只支持80列和25行的文本方式。

文本方式又称为字符方式、字符/数字方式。

IBM-PC和PC/XT彩色显示器使用彩色/图形适配器CGA(ColorGraphicsAdapter)卡,支持文本和图形两种方式且有单色、彩色两种显示。

有关显示输出的DOS功能调用不多,而BIOS调用(INT10H)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等

七、软件分析

程序功能示意图↑

初始界面示意图↑

流程图:

程序清单:

CLEARMACRO;清屏的宏

MOVBH,7;卷入行属性,黑底白字,正常显示.

MOVAX,0600H;AH=6屏幕初始化或上卷.AL=0整个窗口空白.

INT10H;CH=左上角行号,CL=左下角列号.

ENDM;DH=右上角行号,DL=右下角列号.

;---------------------------------------

POSMACRO;移动光标的宏

MOVBH,00H;BH=页号DH,DL=行号,列号.

MOVAH,02H;AH=2置光标位置.

INT10H

ENDM

;---------------------------------------

HENGMACROX1,Y1,COLOR,X2;写横的宏

LOCALBH1;定义标号

MOVCX,X1;起始点横作标-->CX

MOVDX,Y1;起始点纵作标-->DX

BH1:

MOVAH,0CH;写象素

MOVAL,COLOR;设定颜色参数-->AL

INT10H

INCCX

CMPCX,X2;写至终点横作标为止

JNZBH1

ENDM

;---------------------------------------

SHUMACROCX1,CY1,COLOR,CY2;写竖的宏

LOCALBH2;定义标号

MOVCX,CX1

MOVDX,CY1

BH2:

MOVAH,0CH

MOVAL,COLOR;AL=(00--0FH)共16种颜色.

INT10H

INCDX

CMPDX,CY2

JNZBH2

ENDM

;---------------------------------------

DELAYMACRO;延时1s的宏

LOCALREAD

PUSHDX;入栈,保护原有DX、CX中的数据

PUSHCX

SUBAX,AX

INT1AH;INT1AH的0号功能读当前时钟值,CX:

DX=时钟计数值

MOVTIME,DX

MOVTIME[2],CX

READ:

SUBAX,AX

INT1AH

SUBDX,TIME

SBBCX,TIME[2]

CMPDX,DLY

JBREAD

POPCX;出栈,恢复现场

POPDX

ENDM

;---------------------------------------

UPMACRON,DX1;小方块上升的宏

LOCALUPA,UPB;定义标号

MOVAL,N;小方块从N-1层上升至N层

MOVCH,30;小方块上升一层,并且将下一层的小方块清除

MULCH;30*N个像素

MOVDX,430

SUBDX,AX;430-30*N个像素得到画小方块的纵坐标下限值

MOV[DZ],DX

ADDDX,20;每个小方块边长为20个像素

MOVDX1,DX;得到纵坐标上限值

UPA:

HENG170,[DZ],0CH,190;画小方块

INC[DZ]

MOVAX,DX1

CMP[DZ],AX

JNZUPA

ADDDX,11;坐标调整到移动之前的坐标

MOV[DZ],DX

ADDDX,20

MOVDX1,DX

UPB:

HENG170,[DZ],00H,190;擦原小方块

INC[DZ]

MOVAX,DX1

CMP[DZ],AX

JNZUPB

ENDM

;---------------------------------------

DOWNMACRON,DX1;小方块下降的宏

LOCALDOWNA,DOWNB;定义标号

MOVAL,N;小方块从N+1层下降至N层

MOVCH,30;小方块下降一层,并且将上一层的小方块清除

MULCH

MOVDX,430

SUBDX,AX

MOV[DZ],DX

ADDDX,20

MOVDX1,DX

DOWNA:

HENG170,[DZ],0CH,190;画小方块

INC[DZ]

MOVAX,DX1

CMP[DZ],AX

JNZDOWNA

SUBDX,49

MOV[DZ],DX

ADDDX,20

MOVDX1,DX

DOWNB:

HENG170,[DZ],00H,190;擦原有小方块

INC[DZ]

MOVAX,DX1

CMP[DZ],AX

JNZDOWNB

ENDM

;---------------------------------------

CLOSEMACRO;画电梯关门状态的宏

LOCALCE

MOV[DZ],220

CE:

HENG210,[DZ],09H,370;电梯关门

INC[DZ]

CMP[DZ],420

JNZCE

SHU291,220,02H,420;电梯大门缝隙

SHU290,220,02H,420

SHU289,220,02H,420

ENDM

;---------------------------------------

HALFMACRO;画电梯半开门状态的宏

LOCALHF

MOV[DZ],221

HF:

HENG210,[DZ],09H,250;电梯半开门

HENG252,[DZ],07H,328

HENG330,[DZ],09H,370

INC[DZ]

CMP[DZ],420

JNZHF

SHU251,220,02H,420;电梯大门缝隙

SHU329,220,02H,420

ENDM

;---------------------------------------

FULLMACRO;画电梯全开门状态的宏

LOCALFL

MOV[DZ],221

FL:

HENG210,[DZ],09H,215;电梯全开门

HENG217,[DZ],07H,363

HENG365,[DZ],09H,370

INC[DZ]

CMP[DZ],420

JNZFL

SHU216,220,02H,420;电梯大门缝隙

SHU364,220,02H,420

ENDM

;---------------------------------------

PAUSEMACRO;电梯紧急暂停的宏

LOCALWAIT,WAN

SUBAX,AX

MOVAH,1

INT16H

CMPAL,'a';读取键盘缓存中是否有"a",有就进入暂停等待循环,没有则退出

JNZWAN

MOVDX,0301H

POS

MOVDX,OFFSETMSG7;显示MSG7

MOVAH,9

INT21H

MOVAH,0CH;清空键盘缓存

INT21H

WAIT:

CLC;CF=0

MOVAH,1

INT16H

CMPAL,'b';检测键盘缓存中是否有"b",有就退出暂停等待循环,没有则继续循环

JNZWAIT

WAN:

MOVDX,0301H

POS

MOVDX,OFFSETMSG6;用于将MSG7的信息擦除

MOVAH,9

INT21H

MOVAH,0CH

INT21H

ENDM

;---------------------------------------

DATASEGMENT

MSG1DB'Pleasepress"1-8"or"w/s"rootherstoterminate.(eg:

1-3-8/w):

$';输出多个空格是为了清空上一次的输入

MSG2DB'Pleasepressanykey.','$'

MSG3DB'Floor:

$'

MSG4DB'Direction:

$'

MSG5DB'To:

$'

MSG6DB'Whentheelevatorrunning,pleasepress"a"toemergencystop.$'

MSG7DB'Pleasepress"b"tocontinue.$'

MSG8DB'zhengliming2014.12.18$'

DATDB0FFH,0,255DUP(0)

DLYEQU18

DZDW0

TIMEDW0,0

NUM1DB1

NUM2DB1

COUNTDB0

DX1DW0

DX2DW0

DATAENDS

;---------------------------------------

STACKSSEGMENT

STADW100DUP(0)

TOPDW?

STACKSENDS

;---------------------------------------

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACKS

;---------------------------------------

STARTPROCFAR

MOVAX,DATA

MOVDS,AX

MOVAX,STACKS

MOVSS,AX

MOVAX,DATA

MOVES,AX

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

PUSHDI

MOVCX,0

MOVDX,2479H

MOVBH,7

MOVAX,0601H

INT10H

MOVAX,0012H;置图形显示方式

INT10H;640列*480行,16色.

MOVDX,0;光标位置初始化

POS

HENG220,99,0AH,420;信息栏外边框

HENG220,151,0AH,420

SHU220,99,0AH,151

SHU420,99,0AH,151

HENG223,102,0AH,417;信息栏内边框

HENG223,148,0AH,417

SHU223,102,0AH,148

SHU417,102,0AH,148

CLOSE;电梯大门处于关闭状态

HENG210,220,02H,370;电梯大门缝隙边框

HENG210,420,02H,370

SHU210,220,02H,420

SHU370,220,02H,420

HENG209,219,02H,371;加粗边框

SHU209,220,02H,420

SHU371,220,02H,420

MOV[DZ],219

MOVDX1,210

MOVDX2,370

SB1:

HENGDX1,[DZ],03H,DX2;三维电梯上侧面

DEC[DZ]

INCDX1

INCDX2

CMP[DZ],180

JNZSB1

MOV[DZ],371

MOVDX1,220

MOVDX2,420

SB2:

SHU[DZ],DX1,03H,DX2;三维电梯右侧面

INC[DZ]

DECDX1

DECDX2

CMP[DZ],410

JNZSB2

MOV[DZ],421

SB3:

HENG160,[DZ],0EH,200;画电梯框架

SUB[DZ],30

CMP[DZ],151

JNZSB3

SHU160,181,0EH,422

SHU200,181,0EH,422

MOV[DZ],400

BRICK:

HENG170,[DZ],0CH,190;画初始小方块

INC[DZ]

MOVAX,420

CMP[DZ],AX

JNZBRICK

MOVDX,072BH

POS

MOVDL,NUM1

ADDDL,30H

MOVAH,2

INT21H;初始楼层显示"1"

MOVDX,1C3BH

POS

MOVDX,OFFSETMSG8;显示MSG8

MOVAH,9

INT21H

MOVDX,0723H

POS

MOVDX,OFFSETMSG3;显示MSG3

MOVAH,9

INT21H

MOVDX,081DH

POS

MOVDX,OFFSETMSG4;显示MSG4

MOVAH,9

INT21H

MOVDX,082DH

POS

MOVDX,OFFSETMSG5;显示MSG5

MOVAH,9

INT21H

MOVDX,0301H

POS

MOVDX,OFFSETMSG6;显示MSG6

MOVAH,9

INT21H

INPUT:

MOVDX,0101H

POS

MOVDX,OFFSETMSG1;显示MSG1

MOVAH,9

INT21H

MOVDX,0143H

POS

MOVDX,OFFSETDAT;输入并显示字符串

MOVAH,10

INT21H

MOVAL,DAT+1

MOVCOUNT,AL;记录输入的字符个数

MOVBP,2

MOVAL,DAT[BP]

CMPAL,'w';输入w则上升一层

JEA1

JMPB1

A1:

JMPUP1

B1:

CMPAL,'s';输入s则下降一层

JEA2

JMPB2

A2:

JMPDOWN1

B2:

CMPAL,31H;输入小于1的ACSⅡ码则退出

JBA3

JMPB3

A3:

JMPOVER

B3:

CMPAL,38H;输入大于8的ACSⅡ码则退出

JAA4

JMPB4

A4:

JMPOVER

B4:

ANDAL,0FH;输入1至8则进入多楼层控制命令循环TARGET1

MOVNUM1,AL

TARGET1:

ADDBP,2;因为输入格式为"1-2-6",每次BP偏移两位起到了仅取有效位数字的作用

MOVAL,DAT[BP]

ANDAL,0FH;将字符转换为数字

CMPAL,1;检测后续输入的字符是否合法,超出1~8范围则返回输入界面

JBINPUT

CMPAL,8

JAINPUT

MOVNUM2,AL

MOVDX,0831H

POS

MOVDL,DAT[BP];显示电梯下一站要停的楼层数

MOVAH,2

INT21H

DELAY

TARGET2:

MOVAL,NUM2

CMPAL,NUM1;若下一站楼层大于当前楼层,则跳至上升命令段

JAA5

JMPB5

A5:

JMPTARGET3;若下一站楼层小于当前楼层,则

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

当前位置:首页 > 医药卫生 > 临床医学

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

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