版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、装订线模拟电梯11基本内容2实训要求21总体思路3硬件设计4软件设计69心得体会1一实训目的了解电梯调度算法,运用汇编语言编写程序。2利用微机实验系统来模拟电梯,实现电梯功能。3进一步掌握微机接口的设计方法,正确连各芯片引脚。4. 加强学生实际应用能力及综合知识运用能力的培养。1二实训内容与要求装订线基本内容绘制流程图、根据流程图编写程序、选用硬件电路编制应用软件、自主选择硬编制应用软件,并画出详细原理图。实训要求用键盘、按钮、八段码和 LED 模拟电梯工作过程。楼层设为 8 层,键盘数字键18 用来键入希望停的楼层,8 个 LED 显示希望停的楼层,八段码指示电梯当前所在楼层,按钮用来启、停
2、电梯。电梯正常运行时以每 2 秒层的速度上升或下降。要求“电梯”能按以下方式运行:(1)设电梯停在某层。键入18 数字键,如数字与当前电梯停层同,则什么亦不动作,若不同则相应楼层的 LED 亮;如按运行键,则电梯自动判别上升或下降一直到达希望停的楼层。(2)设电梯正在上升或下降运行,若键入新的希望停的楼层数字,则对同方向如下几例:电梯在 2 层,向上运行,LED 希望在 6 层停,若键入4,则将在4 楼停,若按运行键,则运行至 6 层停;若键入的不是 4 而是 8,则电梯将先停在 6 层,再按运行键,运行至 8 层停若键入的不是 4(或 8 1,则电梯先停在 6 层,再按运行键,运行至层停。2
3、三实训设计思路装订线总体思路LED88个按键模8个按键模拟88个模拟8个楼层每层向下请求的按钮。非编码键盘有16个键,可以用1-8号键模拟电梯内的按钮。当电梯静止状态时,无论外部哪一层有请求,电梯都由静止状态转入向上或向下运行的状态,直到到达请求的楼层;当电梯处于向上运行的状态时,此时高于该楼层向上的请求和内部请求级别最高,其次是所有楼层向下的请求,再次是低于该楼层向上的请求;当电梯处于向下运行的状态时则情况相反。由于中断级别在随着电梯所处楼层的不同而变化,定义三个单字节变量REQ_U、REQ_D和REQ_IN分别存储电梯每一层向上、向下和内部的请求,每一个变量用低8位,每一位代表一层。825
4、3定时器每隔20ms产生一次中断,中断程序便去执行扫描键盘,当扫描到有电梯内部或者外部按键时,将请求存储到变量中。每到一个状态时再检查请求变量REQ_U、REQ_D和REQ_IN的值,根据电梯的运行方向和变量中的请求,来决定电梯下一步的运行。设电梯的当前楼层为floor(floor=18dir(dir=0dir=1, floor值显示当前的楼层。LED输出REQ_IN的值显示电梯内已经请求的楼层。3装订线量?1 硬件设计由于采用了PC机资源和微机实验平台,不需要其他的硬件电路。利用了微机平台上的8253定时/计数器、8255并行接口单元、LED单元、非编码键盘、数码管显示单元等等。4 装订线|
5、 2主要的模块如下:可编程定时/计数器8253定时/计数器8253主要是用于定时20ms,触发中断进行键盘扫描。电路连线是CLOCK0接Q6,分频后频率为46875Hz,OUT0接中断IRQ2,每20ms中断一次,GATE0接5v。计数器的初值应该是3A9H。8255并行接口单元8255主要是用于键盘的扫描和发光二极管的数据输出。所以用8255A口的低5位接5个发光二极管,B口低4位接非编码键盘的列线,高4位接键盘的行线。LED显示系统用1格LED从而实时地被显示出来。已知用于LED数码管显示的编码表为:LEDtable DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0
6、f8hDB80h,90h,88h,83h,0c6h,0c1h,86h,8eh 它依次表示09AF这16个数码的显示编码。数字对应数码管显示控制转换字节(共阴编码)显示HGFE,DCBA编码0 0011,11110 x3F;1 0000,01100 x06;52 0101,10110 x5B;3 0100,11110 x4F;4 0110,01100 x66;5 0110,11010 x6D;6 0111,11010 x7D;7 0000,01110 x07;8 0111,11110 x7F;9 0110,11110 x6F;装订线非编码键盘TESTFLOOR后,程序中的变量FLOORFLOOR
7、为0FFH015 则按照上往下从左往右的顺序分别代表每一个按键按下的信息。5.74ls273带有清除端的8D触发器,在清除端保持高电平时,具有锁存功能,锁存控制端为11脚CLK,采用上升沿锁存。1D8D为数据输入端,1Q8Q为数据输出端,正脉冲触发,低电平清除。软件设计设计思路:通过软件编程使8253输出定时信号申请中断,在中断服务程序中扫描键盘,如果有按键,修改相应的变量位,并输出内部请求变量REQ_IN到发光二极管显示当前的内部请求楼层。在主程序中,查询变量的值,根据电梯调度算法运行电梯。(1)主要设计模块程序主要包括以下主要模块:键盘扫描程序、LED显示程序、电梯调度算法。1)键盘扫描程
8、序:采用的是行反转法来扫描键盘的。2LEDLED,只要将floor转换为相应的段码。先输出位码,再输出段码,循环输出就可以动态显示。为了循环的显示,将LED显示程序6装订线放在中断服务程序中。3)电梯调度算法:在设计时将电梯一次从下到上视为一次运行(注意不一定向上运行时处理;位于当前层以上的向上请求都被记录留到此次运行处理;无论哪层的向下请求都被忽略留到下次向下运行时处理。 当电梯向下运行时:位于当前层以下的向上请求都被忽略留到下次位于当前层以上的向下请求都被忽略留到下次向下运行时处理;位于当前层以下的向下请求都被记录留到此次运行处理;无论哪层的向上请求都被忽略留到下次向上运行时处理。(2)程
9、序流程图1)主程序框图如图23 2)中断服务程序框图如图37装订线floor4 3)电梯算法流程图如图4其中,dir代表电梯的运行方向, 0代表电梯向上运行, 1代表向下运动。设REQ_U(n)代表第nREQ_D(n) 代表第n层向下的请求,REQ_IN(n)代表第n层内部的请求。求next的方法为:电梯向上时,next为内部请求的最小值和向上请求的大于floornext为内部请求的最大值和向下请求中小于floor的最大值之间的大者。没有满足要求的时返回0。8装订线NYNYYYNN5 四模拟电梯源代码data segmentioportequ 0c400h-0280h9ls273 equ io
10、port+2a8h;74ls273芯片地址io8255a equ ioport+288h;8255控制端以及a,c端口地址io8255b equ ioport+28bhio8255c equ ioport+28ahio8253a equ ioport+280h;8253控制端以及0,1计数端口地址io8253b equ ioport+281hio8253c equ ioport+283hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;七段码data ends装订线code segmentassume cs:code,ds:datastart:mov
11、 ax,datamov ds,axmov dx,io8255b;8255初始化,a口输出,c口输入mov al,8bhout dx,almov cl,31h;cl代表当前电梯所在楼层,初始值设为1main: mov al,0call disp;显示当前楼层mov bl,0;bl为第一次输入的要去的楼层mov ch,0;ch为在中途中再次输入的要去的楼层call disp8ledmov ah,01;键盘输入blint 21hcmp al,1bh;是esc则退出je exitcmp al,31h;在1-8之间?如不是重新输入jl main10cmp al,38hjg main装订线mov bl,a
12、lcall disp8led;8led显示bl对应的楼层cmp bl,cl;bl与cl比较je main;相等则返回重新输入jg up;大于则向上运行jl down;小于则向下运行up: call stop;调用暂停子程goup:add cl,1call updelay;调用向上运行延时子程序call disp;调用显示子程序,用于显示当前楼层clcmp cl,bl;cl,bl不等则继续je main;相等则返回jmp gouptomain:jmp mainupgetch:mov ah,1;在上升过程中如在有按键则跳转此处int 21hcmp al,73h;s键断电待修,验收时改用开关改变82
13、53门控信号实现该功能je uprepaircmp al,70h;p键急停键je urgentcmp al,31h;在1-8之间?如不是继续上行jl gotoupcmp al,38hjg gotoupmov ch,al11call disp8led;显示cl对应楼层ledcall delay2;两秒计时时间到装订线call disp;显示当前楼层call blequcl;判断bl与cl是否相等cmp ch,cl;比较ch与cl的区别je stopupbl;相等着在该层停,等待运行信号输入jl upbldownch;ch小于cl则先上行至bl在下行至chcmp ch,bl;ch大于cl则在判断c
14、h与bl的大小关系je jmpupbl;相等则一直上行至bljl upchupbl;ch大于cl小于bl则先上行到ch在上行到bljg toupblupch;ch大于bl则先上行到bl在上行到chgotoup:call delay2jmp goupuprepair:mov al,0;验收时未用mov ah,1int 21hcmp al,73hjne uprepaircall delay2call dispjmp goupurgent:call delay2;急停功能call dispjmp mainupdelay proc near;向上运行延时子程序call delay;用于初始化8253p
15、ush dxud: mov ah,1;键盘是否有输入12int 16hjne upgetch;如有则跳转到输入处理装订线mov dx,io8255c;8255c口输入in al,dxand al,01;是否计时结束jz udpop dxretupdelay endptoupblupch:jmp upblupchdown: call stop;调用暂停子程序godown:sub cl,1call downdelay;调用向下运行延时子程序call disp;调用显示子程序,用于显示当前楼层clcmp cl,bl;cl,bl不等则继续je tomain;相等则返回jmp godownstopupb
16、l:call dispmov ch,0call disp8ledcall stop2call upbljmp mainupbldownch:call disp8ledcall upblmov bl,0call disp8ledcall stop213call downchjmp mainjmpupbl:mov ch,0装订线call disp8ledcall upbljmp mainupchupbl:call disp8ledcall upchmov ch,0call disp8ledcall stop2call upbljmp mainupblupch:call disp8ledcall u
17、pblmov bl,0call disp8ledcall stop2call upchjmp maindowndelay proc near;向下运行延时子程序,与向上运行延时子程序大体相同call delaypush dxdd: mov ah,1int 16hjne downgetchmov dx,io8255cin al,dx14and al,01装订线jz ddpop dxretdowndelay endpdowngetch:mov ah,1;在下降过程中如在有按键则跳转此处int 21hcmp al,73h;s键断电待修,验收时改用开关改变8253门控信号实现该功能je downrep
18、aircmp al,70h;p键急停键je urgent2cmp al,31h;在1-8之间?如不是继续下降jl gotodowncmp al,38hjg gotodownmov ch,alcall disp8led;显示cl对应楼层ledcall delay2;两秒计时时间到call disp;显示当前楼层call blequcl;判断bl与cl是否相等cmp ch,cl;比较ch与cl的区别je stopdownbl;相等着在该层停,等待运行信号输入jg downblupch;ch大于cl则先下行至bl在上行至chcmp ch,bl;ch小于cl则在判断ch与bl的大小关系je jmpdo
19、wnbl;相等则一直下行至bljl downbldownch;ch小于cl小于bl则先下行到bl在下行到chjg downchdownbl;ch大于bl则先下行到ch在下行到bl15gotodown:call delay2jmp godowndownrepair:mov al,0mov ah,1装订线int 21hcmp al,73hjne downrepaircall delay2call dispjmp godownstopdownbl:call disp8ledmov ch,0call disp8ledcall stop2call downbljmp maindownblupch:cal
20、l disp8ledcall downblmov bl,0call disp8ledcall stop2call upchjmp mainurgent2:call delay2;急停功能call dispjmp mainjmpdownbl:mov ch,0call disp8led16call downbljmp main装订线downbldownch:call disp8ledcall downblmov bl,0call disp8ledcall stop2call downchjmp maindownchdownbl:call disp8ledcall downchmov ch,0cal
21、l disp8ledcall stop2call downbljmp mainvip: cmp bl,cl;直达功能jl vipdownjg vipupjmp mainvipup:add cl,1call vipdelaycall dispjmp vipvipdown:sub cl,1call vipdelaycall dispjmp vip17vipgetch:mov ah,1;直达过程中对急停以及断电待修的处理int 21hcmp al,73hje viprepaircmp al,70hje urgent2call delay2jmp vip装订线viprepair:mov al,0mov
22、 ah,1int 21hcmp al,73hjne viprepaircall delay2call dispjmp vipvipdelay proc near;直达的延时子程序call delaypush dxvd: mov ah,1int 16hjne vipgetchmov dx,io8255cin al,dxand al,01jz vdpop dxret18vipdelay endp装订线stop proc near;暂停子程序,实现按回车继续和判断是否为直达键gostop:mov al,0mov ah,1int 21hcmp al,76h;是否为直达键je vipcmp al,13;
23、是否为运行键jne gostopmov al,0retstop endpupbl proc near;上行到bl的子程序upbl1:add cl,1call dirdelaycall dispcmp cl,bljl upbl1retupbl endpupch proc near;上行到ch的子程序upch1:add cl,1call dirdelaycall dispcmp cl,chjl upch1retupch endp19downbl proc near;下行到bl的子程序downbl1:sub cl,1call dirdelay装订线call dispcmp cl,bljg downb
24、l1retdownbl endpdownch proc near;下行到ch的子程序downch1:sub cl,1call dirdelaycall dispcmp cl,chjg downch1retdownch endpdelay proc near;初始化8253的子程序,两计数器连级push dxmov dx,io8253c;8253的计数器0置方式3mov al,36hout dx,almov dx,io8253a;计数器0初始值为10000mov ax,10000out dx,almov al,ahout dx,almov dx,io8253c;8253的计数器1置方式0mov
25、al,70h20out dx,almov dx,io8253b;计数器1初始值为200装订线mov ax,200out dx,almov al,ahout dx,alpop dxretdelay endpurgent3:call delay2call dispjmp mainblequcl proc nearcmp bl,cljne backcmp bl,chje blequchmov bl,0call dispcall disp8ledcall stop2cmp ch,cljg upchherejl downchhereupchhere:call upchjmp maindownchhere
26、:call downchjmp main21blequch:mov ch,0call disp8led装订线call delay2jmp mainretback:blequcl endpdirdelay proc near;直接上下行的延时子程序call delaypush dxdirback:mov ah,1int 16hjne dirgetchmov dx,io8255cin al,dxand al,01jz dirbackpop dxretdirdelay endpdirgetch:mov ah,1;直接上下行对按键的处理int 21hcmp al,73hje dirrepaircmp
27、al,70hje urgent3jmp dirbackdirrepair:mov al,0mov ah,122int 21h装订线cmp al,73hjne dirrepaircall delay2call dispjmp dirbackstop2 proc near;没有直达键的暂停子程序gostop2:mov al,0mov ah,1int 21hcmp al,13jne gostop2mov al,0retstop2 endpdelay2 proc near;判断延市时是否结束的子程序push dxdelay3:mov dx,io8255cin al,dxand al,01jz dela
28、y3pop dx;查询8255的Pc0是否为高电平retdelay2 endpdisp proc near;显示当前楼层的子程序mov dl,clmov ah,2int 21h;用于在屏幕上显示23mov dl,0dhmov ah,2int 21h;回车符;换行符装订线mov dl,0ahmov ah,2int 21hsub cl,30h;七段码显示mov al,clpush bxpush dxmov bx,offset ledxlatmov dx,io8255aout dx,alpop dxpop bxadd cl,30hmov al,0retdisp endpdisp8led proc n
29、ear;8led显示,显示bl与cl对应的楼层push axcmp bl,0hje n0cmp bl,31hje n1cmp bl,32hje n224cmp bl,33hje n3装订线cmp bl,34hje n4cmp bl,35hje n5cmp bl,36hje n6cmp bl,37hje n7cmp bl,38hje n8n0: mov al,0bjmp chledn1: mov al,1bjmp chledn2: mov al,10bjmp chledn3: mov al,100bjmp chledn4: mov al,1000bjmp chledn5: mov al,10000bjmp chledn6: mov al,100000bjmp chledn7: mov al,1000000bjmp chled25n8: mov al,10000000bjmp chledchled:cmp ch,0je m0装订线cmp ch,31hje m1cmp ch,32hje m2cmp ch,33hje m3cmp ch,34hje m4cmp ch,35hje m5cmp ch,36hje m6cmp ch,37hje m7c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度木材行业节能减排技术改造合同范本8篇
- 2025年洗车场场地租赁合同:专业洗车服务协议范本3篇
- 2025版外架班组劳务分包及智慧工地合同2篇
- 碎石购买与工程预算控制2025年度合同2篇
- 2025版卫生间装修施工与环保材料采购合同2篇
- 羽绒制品企业发展战略咨询2025年度合同3篇
- 2025版图书馆特色馆藏建设采购合同3篇
- 2025年度高科技产品买卖合同书样本4篇
- D打印技术在建筑外立面设计的应用考核试卷
- 二零二五版4S店尊贵订车合同模板2篇
- 2025年山东浪潮集团限公司招聘25人高频重点提升(共500题)附带答案详解
- 2024年财政部会计法律法规答题活动题目及答案一
- 2025年江西省港口集团招聘笔试参考题库含答案解析
- (2024年)中国传统文化介绍课件
- 液化气安全检查及整改方案
- 《冠心病》课件(完整版)
- 2024年云网安全应知应会考试题库
- 公园保洁服务投标方案
- 光伏电站项目合作开发合同协议书三方版
- 2024年秋季新沪教版九年级上册化学课件 第2章 空气与水资源第1节 空气的组成
- 香港中文大学博士英文复试模板
评论
0/150
提交评论