微机原理课程设计电梯.docx_第1页
微机原理课程设计电梯.docx_第2页
微机原理课程设计电梯.docx_第3页
微机原理课程设计电梯.docx_第4页
微机原理课程设计电梯.docx_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二一四二一五学年 第一学期信息科学与工程学院自动化系课程设计报告书姓 名: 学 号: 班 级: 课程名称: 微机原理与应用课程设计 指导教师: 目录(一) 课程设计内容及要求(二) 课程设计所应用的基本知识点(三) 实验原理(四) 程序流程图(五) 程序详细执行过程(六) 程序清单(七) 程序运行结果(八) 收获与体会(九) 参考文献一、课程设计内容及要求:题目一 电梯仿真程序在读懂任务书给出的几个子程序的基础上,学习运用计算机动画技术等手段自己独立编制出一个完整的电梯运行计算机仿真程序.通过编制仿真程序的实践,加强同学们对计算机顺序控制的了解与认识,以达到掌握计算机顺序控制规律和计算机顺序控制技术所需的编程技巧以及相关的硬件基础知识的目的.设计要求: (1). 在 1- 8楼之间一次可输入多个任意楼层号连续控制电梯按指定楼层号顺序上升与下降.以上过程完成后可重新输入任意楼层号连续控制电梯按指定楼层号顺序上升与下降.只有按ESC键才退出程序返回DOS状态。例如 : 1-3-5-8-6-4-2-1 (可观察教六楼电梯的实际运行情况). (2). 在 1 - 8 楼之间按任意顺序不连续控制电梯上升与下降. 按一次计算机键盘的上箭头电梯上升一楼,按一次计算机键盘的下箭头电梯下降一楼. (上箭头的ASCII码19H , 下箭头的ASCII码1AH . ) (3). 在电梯上升与下降过程中,要显示出 1-8 楼之间所要到达的楼层数,同时还要用箭头显示电梯是上升状态还是下降状态. (4). 电梯运行到指定楼层后,打开电梯门,然后关门继续运行. (5). 电梯运行时, 在任意时刻遇到紧急情况时应能实时中断电梯运行.也可以在任意时刻恢复电梯运行.(按A/a 键模拟中断发生,电梯停止运行.按B/b 键恢复电梯运行) (6). 在计算机屏幕上将电梯的平面模型改成三维立体模型. (7). 在电梯旁画一个小方块.这个小方块随电梯上升而上升,下降而下降.以增加电梯运行时的动感. (8). 电梯仿真软件运行时,应在计算机屏幕上详细说明其使用方法,以及本软件作者姓名和日期.报告要求: (1). 在报告中应对电梯仿真软件的设计思想,设计方法用文字详细说明. (2). 在报告中应有完整的程序清单(必需加注释). (3). 在报告中应有完整的程序框图. (4). 谈谈自己通过这次设计实践的收获和体会.二、课程设计所应用的基本知识点生成文件(1).我使用的运行环境为虚拟机下的xp系统,汇编软件使用的是轻松汇编。 (2).打开轻松汇编,输入代码,保存为.asm格式文件。 (3).编译程序。可以直接使用轻松汇编菜单栏的按键 运行编译 和 运行生成 按钮进行编译,也可以进入dos环境,使用masm.exe编译源程序生成OBJ文件和一些交叉文件。 格式:masm exam1.asm;如果结尾不加分号,那么回车后会有一个提示,提示将生成的OBJ文件名和相应的其他一些文件名是什么?可以一路回车取默认值,即与源文件同文件名。如果加上分号,既可避免这些提示。直接生成同文件名的OBJ文件。 (4).连接程序。 用LINK.exe连接OBJ文件,生成可执行的exe文件。格式:link exam1.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)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等,见表8-4。下面做简单介绍。 表8-4中断类型10H的功能调用操作1)显示方式的设置INT10H的0H功能用来设置显示方式,详见表8-4。方式06是CGA卡的工作方式,其中,03是文本方式,46是图形方式。方式7是MDA卡的惟一工作方式。文本方式在屏幕上显示字符,字符在屏幕上的位置用行、列坐标表示,如图8.8所示。2580文本方式下的行号为024,列号为079,则屏幕左上角为第0行、第0列,右下角为第24行、第79列。也就是说,文本方式下屏幕上显示的字符位置是固定的。屏幕各行列号所确定的位置的显示内容,由显示卡上的显示存储器的对应位置的存储单元提供,这就是屏幕的“存储器映像”。即如果向某显示存储器写入字符的ASCII码,字符就会显示在屏幕的相应位置上。对应的显示在屏幕上的每个字符在存储器中由连续的两个字节表示,一个字节保存字符ASCII码,另一个字节保存字符属性。在屏幕上仅显示字母、数字和一些字符图形的方式就是文本方式。在文本方式下字符的属性字节既适用于单色显示也适用于彩色显示。(1) 单色字符显示。该显示方式定义了字符显示的特性,包括字符是否闪烁,是否加亮,是否反显(白底黑字)。单色字符显示属性字节的各位功能如图8.9所示,各位的不同组合将使字符呈现不同的属性,如表8-5所示。(2)彩色字符显示。在显示彩色文本时,字符的属性字节用于定义前景(显示的字符)和背景的颜色,每个字符可以选择16种颜色中的一种,而背景只能选择8种颜色之一。图8.10给出了以16色文本方式显示的属性字节的各位内容。前景的16种颜色由D0D3位组合,R、G和B分别代表红(Red)、绿(Green)和蓝(Blue),BL表示闪烁,I为亮度。闪烁和亮度仅适用于前景。表8-6列出了16色字符方式颜色的组合。(3)显示存储器。对所有的显示适配器,文本方式下显示字符的原理都是一样的,差别仅是不同适配器的视频显示存储器的起始地址不同:MDA的显存起始地址为B000:0000;CGA、EGA和VGA的显存起始地址为B800:0000。每个字符的ASCII码和属性码存放于连续的两个字节中。显示存储单元与屏幕上字符的对应关系如图8.11所示。在2580的文本显示方式下,屏幕有2000个字符位置,由于每个字符用两个字节表示,所以需要显存容量为4KB(4000B)。如果有16KB显存,则可以保存4屏显示字符的数据,通常称为4页数据。对CGA、EGA和VGA的80列显示方式,0页在显存中的起始地址为B800:0000,1页为B800:1000,2页为B800:2000,3页为B800:3000。屏幕上某一字符位置在显存中的偏移地址可用下列公式计算:字符偏址=页偏址+(行数行宽)+列数)字节数图形方式下,在屏幕上可以显示“点”,点也称为像素、像元。像素在屏幕上的位置也用行列坐标值表示。在分辨率为320200的图形方式下,行号为0199,列号为0319。2)光标的设置IBM-PC和PC/XT单色显示器上每个字符由79点阵组成,字符框点阵为914。彩色显示器字符点阵为57,字符框点阵为88,光标的宽度为一个字符的宽度,长度最大可充满字符框。光标在屏幕上指示字符的显示位置,它不是ASCII字符表中的字符。计算机有专门的硬件来控制光标,我们熟悉的光标符一般是一个下划线或方块符。(1)INT10H的01H功能是设置光标的大小和状态。光标起始行值放在CH的低4位,结束行值放在CL的低4位。CH的D4位为光标禁止位,用来表示光标的状态。当该位为1时,光标不显示。单色显示器的光标大小的范围从013。光标的默认方式是宽度为2列的闪烁的下划线。(2) INT10H的02H功能是设置光标位置。光标位置的行号设在DH寄存器中,列号设在DL中。在2580的显示方式中,坐标设在(0,0)是屏幕的左上角,(24,79)是屏幕的右下角。BH中必须包含被输出的页号,对单色显示器来说,页号总是0。 三、实验原理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,则直接回到该步骤。程序功能示意图:初始界面显示:四、程序流程图五、程序详细执行过程 在提示“input the floor(1-8F)(such as 1-3-4-1):”后面输入用户要去的楼层,可从任意楼层开始运行,指定楼层号顺序上升与下降,数字与数字之间用“-”连接,数字范围为1-8。在一轮运行完以后程序会清空楼层提示后面的数字,用户可再输入要去的楼层,若用户希望停止运行该程序,可以在下一轮开始时在楼层提示后面输入0或非数字键,可返回到DOS 在 1 - 8 楼之间按任意顺序不连续控制电梯上升与下降. 按一次计算机键盘的上箭头电梯上升一楼,按一次计算机键盘的下箭头电梯下降一楼. 电梯上升与下降过程中,在电梯三维模型的正上方的蓝色矩形框内,提示“now the floor is:”后面显示出当前所要在的楼层数,提示“TO:”后面显示1-8 楼之间所要到达的楼层数,提示“direction:”后面显示上下箭头,代表电梯当前是上升状态还是下降状态。 在电梯旁有一个小方块。这个小方块随电梯上升而上升,下降而下降。增加电梯运行时的动感.。小方块在一个8层的方框内上下移动,电梯每上升一层,小方块在方框内上升一层,电梯每下降一层,小方块在方框内下降一层。并且小方块在方框内的位置与电梯当前所在楼层时对应的,例如:若当前电梯运行到第3层,则小方块也位于第三层方框。为了使用户能更清晰地看到电梯的运行过程,小方块每到一层会停留1S的时间。电梯运行到指定楼层后,打开电梯门,然后关门继续运行,为了模拟真实的效果,电梯在指定楼层停下,大门依次闭合-半开门-全开门-半开门-闭合。 在 1 - 8 楼之间按任意顺序不连续控制电梯上升与下降。按一次计算机键盘的上箭头电梯上升一楼,按一次计算机键盘的下箭头电梯下降一楼。 由于所使用的计算机的某些原因,这里输入“w” 上升一楼,输入“s” 下降一楼。电梯的不连续控制只在电梯停在某一层且关上的门之后。提示是“up or down a floor only vailable when elevator stop(use w or s )”,当用户可以对电梯进行不连续控制时,会出现“now vailable”的提示。 电梯仿真软件运行时,在计算机屏幕上显示本软件作者姓名“wust zhengliming”和日期“2014. 12.18”。六、程序清单 CLEAR MACRO ; 清屏的宏 MOV BH,7 ; 卷入行属性,黑底白字,正常显示. MOV AX,0600H ; AH=6 屏幕初始化或上卷.AL=0 整个窗口空白. INT 10H ; CH=左上角行号,CL=左下角列号. ENDM ; DH=右上角行号,DL=右下角列号. ;- POS MACRO ; 移动光标的宏 MOV BH,00H ; BH=页号 DH,DL=行号,列号. MOV AH,02H ; AH=2 置光标位置. INT 10H ENDM;- HENG MACRO X1,Y1,COLOR,X2 ; 写横的宏 LOCAL BH1 ; 定义标号 MOV CX,X1 ; 起始点横作标-CX MOV DX,Y1 ; 起始点纵作标-DX BH1: MOV AH,0CH ; 写象素 MOV AL,COLOR ; 设定颜色参数-AL INT 10H INC CX CMP CX,X2 ; 写至终点横作标为止 JNZ BH1 ENDM;- SHU MACRO CX1,CY1,COLOR,CY2 ; 写竖的宏 LOCAL BH2 ; 定义标号 MOV CX,CX1 MOV DX,CY1 BH2: MOV AH,0CH MOV AL,COLOR ; AL=(00-0FH)共16种颜色. INT 10H INC DX CMP DX,CY2 JNZ BH2 ENDM;- DELAY MACRO ;延时1s的宏 LOCAL READ PUSH DX ;入栈,保护原有DX、CX中的数据 PUSH CX SUB AX,AX INT 1AH ;INT 1AH的0号功能读当前时钟值,CX:DX=时钟计数值 MOV TIME,DX MOV TIME2,CX READ: SUB AX,AX INT 1AH SUB DX,TIME SBB CX,TIME2 CMP DX,DLY JB READ POP CX ;出栈,恢复现场 POP DX ENDM;- UP MACRO N,DX1 ;小方块上升的宏 LOCAL UPA,UPB ; 定义标号 MOV AL,N ;小方块从N-1层上升至N层 MOV CH,30 ;小方块上升一层,并且将下一层的小方块清除 MUL CH ;30*N个像素 MOV DX,430 SUB DX,AX ;430-30*N个像素得到画小方块的纵坐标下限值 MOV DZ,DX ADD DX,20 ;每个小方块边长为20个像素 MOV DX1,DX ;得到纵坐标上限值 UPA: HENG 170,DZ,0CH,190 ;画小方块 INC DZ MOV AX,DX1 CMP DZ,AX JNZ UPA ADD DX,11 ;坐标调整到移动之前的坐标 MOV DZ,DX ADD DX,20 MOV DX1,DX UPB: HENG 170,DZ,00H,190 ;擦原小方块 INC DZ MOV AX,DX1 CMP DZ,AX JNZ UPB ENDM;- DOWN MACRO N,DX1 ;小方块下降的宏 LOCAL DOWNA,DOWNB ; 定义标号 MOV AL,N ;小方块从N+1层下降至N层 MOV CH,30 ;小方块下降一层,并且将上一层的小方块清除 MUL CH MOV DX,430 SUB DX,AX MOV DZ,DX ADD DX,20 MOV DX1,DX DOWNA: HENG 170,DZ,0CH,190 ;画小方块 INC DZ MOV AX,DX1 CMP DZ,AX JNZ DOWNA SUB DX,49 MOV DZ,DX ADD DX,20 MOV DX1,DX DOWNB: HENG 170,DZ,00H,190 ;擦原有小方块 INC DZ MOV AX,DX1 CMP DZ,AX JNZ DOWNB ENDM;- CLOSE MACRO ;画电梯关门状态的宏 LOCAL CE MOV DZ,220 CE: HENG 210,DZ,09H,370 ;电梯关门 INC DZ CMP DZ,420 JNZ CE SHU 291,220,02H,420 ;电梯大门缝隙 SHU 290,220,02H,420 SHU 289,220,02H,420 ENDM;- HALF MACRO ;画电梯半开门状态的宏 LOCAL HF MOV DZ,221 HF: HENG 210,DZ,09H,250 ;电梯半开门 HENG 252,DZ,07H,328 HENG 330,DZ,09H,370 INC DZ CMP DZ,420 JNZ HF SHU 251,220,02H,420 ;电梯大门缝隙 SHU 329,220,02H,420 ENDM;- FULL MACRO ;画电梯全开门状态的宏 LOCAL FL MOV DZ,221 FL: HENG 210,DZ,09H,215 ;电梯全开门 HENG 217,DZ,07H,363 HENG 365,DZ,09H,370 INC DZ CMP DZ,420 JNZ FL SHU 216,220,02H,420 ;电梯大门缝隙 SHU 364,220,02H,420 ENDM;- PAUSE MACRO ;电梯紧急暂停的宏 LOCAL WAIT,WAN SUB AX,AX MOV AH,1 INT 16H CMP AL,a ;读取键盘缓存中是否有a,有就进入暂停等待循环,没有则退出 JNZ WAN MOV DX,0301H POS MOV DX,OFFSET MSG7 ;显示MSG7 MOV AH,9 INT 21H MOV AH,0CH ;清空键盘缓存 INT 21H WAIT: CLC ;CF=0 MOV AH,1 INT 16H CMP AL,b ;检测键盘缓存中是否有b,有就退出暂停等待循环,没有则继续循环 JNZ WAIT WAN: MOV DX,0301H POS MOV DX,OFFSET MSG6 ;用于将MSG7的信息擦除 MOV AH,9 INT 21H MOV AH,0CH INT 21H ENDM;- DATA SEGMENT MSG1 DB Please press 1-8 or w/s ro others to terminate.(eg: 1-3-8/w): $ ; 输出多个空格是为了清空上一次的输入 MSG2 DB Please press any key.,$ MSG3 DB Floor: $ MSG4 DB Direction: $ MSG5 DB To: $ MSG6 DB When the elevator running, please press a to emergency stop. $ MSG7 DB Please press b to continue. $ MSG8 DB zhengliming2014.12.18$ DAT DB 0FFH,0,255 DUP(0) DLY EQU 18 DZ DW 0 TIME DW 0,0 NUM1 DB 1 NUM2 DB 1 COUNT DB 0 DX1 DW 0 DX2 DW 0 DATA ENDS;- STACKS SEGMENT STA DW 100 DUP(0) TOP DW ? STACKS ENDS;- CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKS;- START PROC FAR MOV AX,DATA MOV DS,AX MOV AX,STACKS MOV SS,AX MOV AX,DATA MOV ES,AX PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI MOV CX,0 MOV DX,2479H MOV BH,7 MOV AX,0601H INT 10H MOV AX,0012H ;置图形显示方式 INT 10H ;640列*480行,16色. MOV DX,0 ;光标位置初始化 POS HENG 220,99,0AH,420 ;信息栏外边框 HENG 220,151,0AH,420 SHU 220,99,0AH,151 SHU 420,99,0AH,151 HENG 223,102,0AH,417 ;信息栏内边框 HENG 223,148,0AH,417 SHU 223,102,0AH,148 SHU 417,102,0AH,148 CLOSE ;电梯大门处于关闭状态 HENG 210,220,02H,370 ;电梯大门缝隙边框 HENG 210,420,02H,370 SHU 210,220,02H,420 SHU 370,220,02H,420 HENG 209,219,02H,371 ;加粗边框 SHU 209,220,02H,420 SHU 371,220,02H,420 MOV DZ,219 MOV DX1,210 MOV DX2,370 SB1: HENG DX1,DZ,03H,DX2 ;三维电梯上侧面 DEC DZ INC DX1 INC DX2 CMP DZ,180 JNZ SB1 MOV DZ,371 MOV DX1,220 MOV DX2,420 SB2: SHU DZ,DX1,03H,DX2 ;三维电梯右侧面 INC DZ DEC DX1 DEC DX2 CMP DZ,410 JNZ SB2 MOV DZ,421 SB3: HENG 160,DZ,0EH,200 ;画电梯框架 SUB DZ,30 CMP DZ,151 JNZ SB3 SHU 160,181,0EH,422 SHU 200,181,0EH,422 MOV DZ,400 BRICK: HENG 170,DZ,0CH,190 ;画初始小方块 INC DZ MOV AX,420 CMP DZ,AX JNZ BRICK MOV DX,072BH POS MOV DL,NUM1 ADD DL,30H MOV AH,2 INT 21H ;初始楼层显示1 MOV DX,1C3BH POS MOV DX,OFFSET MSG8 ;显示MSG8 MOV AH,9 INT 21H MOV DX,0723H POS MOV DX,OFFSET MSG3 ;显示MSG3 MOV AH,9 INT 21H MOV DX,081DH POS MOV DX,OFFSET MSG4 ;显示MSG4 MOV AH,9 INT 21H MOV DX,082DH POS MOV DX,OFFSET MSG5 ;显示MSG5 MOV AH,9 INT 21H MOV DX,0301H POS MOV DX,OFFSET MSG6 ;显示MSG6 MOV AH,9 INT 21

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论