武汉科技大学微机原理课程设计-模拟电梯系统_第1页
武汉科技大学微机原理课程设计-模拟电梯系统_第2页
武汉科技大学微机原理课程设计-模拟电梯系统_第3页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、二O三二O四学年第 二学期电子技术学院电子信息工程系课程设计报告书班级:姓名:课程名称:微机原理及应用课程设计学时学分:1周1学分指导老师:杨君二O三年十二月三一日一、课程设计目的:综合运用本课程知识, 利用集成电路设计实现一些中小规模电子电路或者完 成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、 绘制系统电路图的能力,为实际应用奠定一定的基础。二、课程设计时间安排: 第一天:教师布置设计任务,讲解设计要求,提示设计要点。 第二三天:查阅资料(在图书馆或上网),提出设计方案。第三七天:画出详细设计图(电路图),编写程序,调试程序,得出实验结果 并写出设计报告。三、课程设

2、计选题:设计要求 :(1) . 在 1- 8 楼之间一次可输入多个任意楼层号连续控制电梯按指定楼层号顺 序上升与下降 .以上过程完成后可重新输入任意楼层号连续控制电梯按指定楼层 号顺序上升与下降.只有按 ESC 键才退出 程序返回 DOS 状态。 例如 : 1-3-5-7-6-4-2-1 (可观察教十楼电梯的实际运行情况 ).(2) . 在 1 - 7 楼之间按任意顺序不连续控制电梯上升与下降 . 按一次计算机键盘的上箭头电梯上升一楼 ,按一次计算机键盘的下箭头电梯下降一楼 .(上箭头的 ASCII 码 19H , 下箭头的 ASCII 码 1AH . )(3) . 在电梯上升与下降过程中 ,

3、要显示出 1-7 楼之间所要到达的楼层数 ,同时 还要用箭头显示电梯是上升状态还是下降状态 .(4) . 电梯运行到指定楼层后 , 打开电梯门,然后关门继续运行 .(5) . 电梯运行时 , 在任意时刻遇到紧急情况时应能实时中断电梯运行 .也可以 在任意时刻恢复电梯运行 .(按 A/a 键模拟中断发生 ,电梯停止运行 .按 B/b 键恢复 电梯运行 )(6) . 在计算机屏幕上将电梯的平面模型改成三维立体模型 .(7) . 在电梯旁画一个小方块 .这个小方块随电梯上升而上升 ,下降而下降 .以增加电梯运行时的动感(8) .电梯仿真软件运行时,应在计算机屏幕上详细说明其使用方法,以及本软件 作者

4、姓名和日期.报告要求:(1) .在报告中应对电梯仿真软件的设计思想,设计方法用文字详细说明.(2) .在报告中应有完整的程序清单(必需加注释).(3) .在报告中应有完整的程序框图.(4) .谈谈自己通过这次设计实践的收获和体会.参考文献:1 朱定华,微机原理、汇编与接口技术,清华大学出版社,20052 徐士良,PC机C图形编程手册,清华大学出版社,1994四、课程设计内容:1、程序模块:2、程序流程图:4、程序代码及注释:CLEAR MACRO ;MOV BH,7 ;MOV AX,0600H ; AH=6INT 10H ; CH=ENDM; DH=POS MACRO;MOVBH,00H ;

5、BH=MOVAH,02H ; AH=2INT 10HENDM移动光标的宏页号 DH,DL= 行号 , 列号 .口7=1、/置光标位置3、程序设计思路:电梯模拟程序主要是一个画图程序, 程序需要利用一连串的画图指令来实现 动画效果。首先,程序中将用到 INT 10H 的一系列指令来实现画图功能。要实 现动画效果,如电梯门开关、 电梯上下移动就必须在生成新的图形同时将老的图 形擦去,所以运动的过程分为擦去原有图像和画新图像两部分完成。 当新的图形 可以直接覆盖原有效果时则直接画新图形即可, 新图形无法覆盖老效果时则首先 要用背景颜色将原有图形重绘一次,这样就达到了擦出的效果。CPU完成一连串画图指

6、令速度是非常迅速的,为了清除观察到动画效果所以添加了一个延时模 块,在画图命令中调用此命令可以清晰观察到动画效果。其次,还需要 INT 21H 的 9H 号功能实现字符串的显示功能。由于需要键盘输入电梯控制相关指令,所以需要用到INT 16H的1H号功能 停止和继续电梯的运动;还需要 INT 21H 的 0AH 号功能实现输入兵显示字符串; 以及 INT 21H 的 0CH 号功能清空键盘缓存。在此基础上, 用一系列的循环、 判断、跳转命令将各种功能结合起来最终搭 建成模拟电梯程序。清屏的宏卷入行属性 , 黑底白字 , 正常显示 . 屏幕初始化或上卷 .AL=0 整个窗口空白 左上角行号 ,C

7、L= 左下角列号 . 右上角行号 ,DL= 右下角列号 .HENG MACRO X1,Y1,COLOR,X2J写横的宏LOCALBH1 ;定义标号MOVCX,X1 ;起始点横作标->CXMOVDX,Y1 ;起始点纵作标->DXBH1: MOVAH,0CH ;写象素MOVAL,COLOR ;设定颜色参数->ALINT10HINCCXCMPCX,X2 ;写至终点横作标为止JNZBH1ENDMSHU MACRO CX1,CY1,COLOR,CY2J写竖的宏LOCALBH2 ;定义标号MOVCX,CX1MOVDX,CY1BH2: MOVAH,0CHMOVAL,COLOR ; AL=(

8、00-0FH)共 16 种颜色INT10HINCDXCMPDX,CY2JNZBH2ENDMDELAY MACRO ; 延时 1s 的宏LOCALREADPUSHDX ;入栈,保护原有 DX CX中的数据PUSHCXSUBAX,AXINT1AH ;INT 1AH的0号功能读当前时钟值,CX:DX钟计数值MOV TIME,DXMOV TIME2,CXREAD: SUB AX,AXINT SUB SBB CMP JB POP POP ENDM1AHDX,TIMECX,TIME2DX,DLYREADCX;DX出栈,恢复现场UP MACRO N,DX1 ;小方块上升的宏LOCALUPA,UPB ;定义标

9、号MOVAL,N ;小方块从 N-1 层上升至 N 层MOVCH,30;小方块上升一层,并且将下一层的小方块清除MULCH;30*N个像素MOVDX,430SUBDX,AX ;430-30*N个像素得到画小方块的纵坐标下限值MOVDZ,DXADDDX,20 ;每个小方块边长为 20 个像素MOVDX1,DX ;得到纵坐标上限值UPA: HENG 170,DZ,0CH,190; 画小方块INCDZMOVAX,DX1CMPDZ,AXJNZUPAADDDX,11 ;坐标调整到移动之前的坐标MOVDZ,DXADDDX,20MOVDX1,DXUPB: HENG 170,DZ,00H,190; 擦原小方块

10、INCDZMOVAX,DX1CMPDZ,AXJNZUPBENDMDOWN MACRO N,DX1 ;小方块下降的宏LOCALDOWNA,DOWNB ;定义标号MOVAL,N ;小方块从 N+1 层下降至 N 层MOVCH,30 ;小方块下降一层,并且将上一层的小方块清除MULCHMOVDX,430SUBDX,AXMOVDZ,DXADDDX,20MOVDX1,DXDOWNA: HENG 170,DZ,0CH,190; 画小方块INCDZMOVAX,DX1CMPDZ,AXJNZDOWNASUBDX,49MOVDZ,DXADDDX,20MOVDX1,DXDOWNB: HENG 170,DZ,00H,

11、190; 擦原有小方块INCDZMOVAX,DX1CMPDZ,AXJNZDOWNBCLOSE MACRO ;LOCALCEMOVDZ,220CE: HENG210,DZ,09H,370INCDZCMPDZ,420JNZCESHU291,220,02H,420SHU290,220,02H,420SHU289,220,02H,420ENDMHALF MACRO ;LOCALHFMOVDZ,221HF: HENG210,DZ,09H,250HENG252,DZ,07H,328HENG330,DZ,09H,370INCDZCMPDZ,420JNZHFSHU251,220,02H,420SHU329,2

12、20,02H,420ENDMFULL MACRO ;LOCALFLMOVDZ,221FL: HENG210,DZ,09H,215HENG217,DZ,07H,363HENG365,DZ,09H,370INCDZCMPDZ,420JNZFLSHU216,220,02H,420SHU364,220,02H,420ENDMENDMPAUSE MACRO LOCAL WAIT,WAN SUB AX,AX MOV AH,1画电梯关门状态的宏电梯关门电梯大门缝隙画电梯半开门状态的宏电梯半开门电梯大门缝隙画电梯全开门状态的宏电梯全开门电梯大门缝隙电梯紧急暂停的宏INT 16HCMP AL,'a

13、9; ;JNZ WANMOV DX,0301HPOSMOV DX,OFFSET MSG7MOV AH,9INT 21HMOV AH,0CH ;INT 21HWAIT: CLC ;CF=0MOV AH,1INT 16HCMP AL,'b' ;JNZ WAITWAN: MOV DX,0301HPOSMOV DX,OFFSET MSG6MOV AH,9INT 21HMOV AH,0CHINT 21HENDM读取键盘缓存中是否有环,没有则退出清空键盘缓存显示"a" ,有就进入暂停等待循MSG7检测键盘缓存中是否有环,没有则继续循环"b" ,有就退

14、出暂停等待循用于将MSG力勺信息擦除data segmentMSG1 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 theelev

15、ator running, please press "a" to emergencystop. $'MSG7 DB 'Please press "b" to continue. $'MSG8 DB'WUST LiGang 2014.2.5 $DAT DB0FFH,0,255 DUP(0)DLY EQU18DZ DW0TIME DW0,0NUM1 DB1NUM2 DB1COUNT DB0DX1 DW0DX2 DW0data endsstacks segmentSTA DW100 DUP(0)TOP DW?stacks en

16、dscode segmentassume cs:code,ds:data,ss:stacksstart procfarmovax,datamovds,axmovax,stacksmovss,axmovax,datamoves,axpushaxpushbxpushcxpushdxpushsipushdiMOVCX,0MOVDX,2479HMOVBH,7MOVAX,0601HINT10HMOVAX,0012H ;置图形显示方式INT10H ;640列*480 行,16 色 .MOVDX,0 ;光标位置初始化POSHENG220,99,0AH,420; 信息栏外边框HENG220,151,0AH,4

17、20SHU220,99,0AH,151SHU420,99,0AH,151HENG223,102,0AH,417; 信息栏内边框HENG223,148,0AH,417SHU223,102,0AH,148SHU417,102,0AH,148CLOSE ;电梯大门处于关闭状态HENG210,220,02H,370 ;电梯大门缝隙边框HENG210,420,02H,370SHU210,220,02H,420SHU370,220,02H,420HENG209,219,02H,371 ;加粗边框SHU209,220,02H,420SHU371,220,02H,420MOVDZ,219MOVDX1,210M

18、OVDX2,370SB1: HENG DX1,DZ,03H,DX2; 三维电梯上侧面DECDZINCDX1INCDX2CMPDZ,180JNZSB1MOVDZ,371MOVDX1,220MOVDX2,420SB2: SHUDZ,DX1,03H,DX2; 三维电梯右侧面INCDZDECDX1DECDX2CMPDZ,410JNZSB2MOVDZ,421SB3: HENG 160,DZ,0EH,200; 画电梯框架SUBDZ,30CMPDZ,151JNZSB3SHU160,181,0EH,422SHU200,181,0EH,422MOVDZ,400BRICK: HENG 170,DZ,0CH,190

19、; 画初始小方块INCDZMOVAX,420CMPDZ,AXJNZBRICKMOVDX,072BHPOSMOVDL,NUM1ADDDL,30HMOVAH,2INT21H ;初始楼层显示 "1"MOVDX,1C3BHPOSMOVDX,OFFSETMSG8; 显示MSG8MOVAH,9INT21HMOVDX,0723HPOSMOVDX,OFFSETMSG3; 显示MSG3MOVAH,9INT21HMOVDX,081DHPOSMOVDX,OFFSETMSG4; 显示MSG4MOVAH,9INT21HMOVDX,082DHPOSMOVDX,OFFSETMSG5; 显示MSG5MOV

20、AH,9INT21HMOVDX,0301HPOSMOVDX,OFFSETMSG6; 显示MSG6MOV AH,9INT 21HINPUT: MOV DX,0101HPOSMOVDX,OFFSET MSG1 ;显示 MSG1MOVAH,9INT21HMOVDX,0143HPOSMOVDX,OFFSET DAT ;输入并显示字MOVAH,10INT21HMOVAL,DAT+1MOVCOUNT,AL ;记录输入的字符个数MOVBP,2MOVAL,DATBPCMPAL,'w' ;输入 w 则上升一层JEUP1CMPAL,'s' ;输入 s 则下降一层JEDOWN1CMP

21、AL,31H ;输入小于1的Acsn码则退出JBOVERCMPAL,38H ;输入大于8的ACSn码则退出JAOVERANDAL,0FH ;输入 1 至 8 则进入多楼层控制命令循环 TARGET1MOVNUM1,AL因为输入格式为 "1-2-6" ,每次 BP 偏移两位起到 了仅取有效位数字的作用TARGET1: ADD BP,2MOVAL,DATBPANDAL,0FH ;CMPAL,1;JBINPUTCMPAL,8JAINPUTMOVNUM2,ALMOVDX,0831HPOSMOVDL,DATBPMOVAH,2INT21HDELAY将字符转换为数字 检测后续输入的字符是

22、否合法,超出 18 范围则 返回输入界面显示电梯下一站要停的楼层数TARGET2:MOV AL,NUM2CMPAL,NUM1 ;:l 亠.亠 H来 I 十、【/来 Imrf t?Jkx< pyt若下一站楼层大于当前楼层,则跳至上升命令段JATARGET3 ;若下一站楼层小于当前楼层,则在当前命令段MOVAL,NUM2CMPAL,NUM1 ;第二次比较,若到达目标楼层或两站楼层相同则跳至SHOV命令显示开关门动画JZSHOWDECNUM1PAUSE;在画图命令之前插入暂停命令,确保电梯在任何楼层时都能暂停DOWNNUM1,DX1 ;电梯下降MOVDX,0829HPOSMOVDL,19H ;

23、显示下箭头MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1 ;显示当前楼层数ADDDL,30H ;将数字转换为ASCH码MOV AH,2INT 21HDELAY ; 电梯在每一层停留 1S 以便观察 JMP TARGET2TARGET3: INC NUM1PAUSE;在画图命令之前插入暂停命令,确保电梯在任何楼层时都能暂停UPNUM1,DX1 ;电梯上升MOVDX,0829HPOSMOVDL,18H ;显示上箭头MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1 ;显示当前楼层数ADDDL,30H ;将数字转换为ASCH码MOVAH,2INT2

24、1HDELAYJ电梯在每一层停留 1S 以便观察JMPTARGET2UP1: CMPNUM1,8JNBINPUTINCNUM1MOVDX,0831HPOSMOVDL,NUM1 ;显示电梯下一站要停的楼层数ADDDL,30HMOVAH,2INT21HUPNUM1,DX1 ;电梯上一层MOVDX,0829HPOSMOVDL,18H ;显示上箭头MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1 ;显示当前楼层数ADDDL,30H ;将数字转换为ASCH码MOVAH,2INT21HJMPSHOWDOWN1: CMP NUM1,1JNAINPUTDECNUM1MOVDX,083

25、1HPOSMOVDL,NUM1 ;显示电梯下一站要停的楼层数ADDDL,30HMOVAH,2INT21HDOWNNUM1,DX1 ;电梯下一层MOVDX,0829HPOSMOVDL,19H ;显示下箭头MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1 ;显示当前楼层数ADDDL,30H ;将数字转换为ASCH码MOVAH,2INT21HSHOW: MOV DX,0829HPOSMOVDL,'-' ;到达楼层时 "Direction" 显示 "-"MOVAH,2INT21HDELAYJ电梯门开关每个动作间停留1S以便观察PAUSEJ每个动作后插入 PAUSE使电梯能在开关门时暂停HALFDELAYPAUSEFULLDELAYPAUSEHALFDELAYPAUSECLOSEDELAYPAUSESUBAX,AXINT1AHMOVTIME,DXMOVTIME2,CXMOVAH,0CHINT21H ;MOVAL,COUNTCBWJCMPBP,AX ;JBTARGET1JMPINPUT清空键盘缓冲区将字节扩展为字 若此时没到输入数据最后一位则进入TARGET,1若已到最后一位则进入 INPUT开始新一轮运

温馨提示

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

评论

0/150

提交评论