武汉科技大学微机原理课程设计模拟电梯系统(汇编)

合集下载

微机综合课程设计,模拟电梯控制系统

微机综合课程设计,模拟电梯控制系统

data segmentioport equ 0ec00h-0280hio8253a equ ioport+280h;0计数端口计数为10000,方式3io8253b equ ioport+281h;1计数端口计数为200,方式0io8253c equ ioport+283h;8253控制端io8255a equ ioport+288h;8255控制端以及a,b,c端口地址io8255b equ ioport+289hio8255c equ ioport+28ahio8255 equ ioport+28bhproth equ ioport+290h;点阵灯显示,行阵protlr equ ioport+298h;点阵灯显示,列阵number db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;七段码min db 00h,01h,02h,03h,04h,05h,06h,07h;点阵的行buff1 db 10h,30h,7fh,0ffh,0ffh,7fh,30h,10h;向上箭头buff2 db 08h,0ch,0feh,0ffh,0ffh,0feh,0ch,08h;向下箭头menu db '************************************************',0DH,0AH db '* elevator procedures *',0DH,0AH db '* 8253cs~280h 8255cs~288h *',0Dh,0Ah db '* lightrow~290h lightred~298h *',0Dh,0Ah db '* 数码管s0---0 s1-----5V *',0Dh,0Ah db '* pa0~pa6-----a~g pb0-pb7-----led0~led7 *',0Dh,0Ahdb '* out1--------pc0 gate0&&gate1--5V *',0Dh,0Ah db '* clk0---1MHZ clk1---out0 *',0Dh,0Ah db '* *',0Dh,0Ahdb '* 08008XXX by XXXXXXXX *',0Dh,0Ahdb '************************************************',0Dh,0Ahdb '1~8------1 ~ 8floor!',0DH,0AHdb 'esc----------exit!',0DH,0AHdb 'enter--------run!',0DH,0AHdb 'a------------go directly!',0Dh,0Ahdb 'b------------emergentstop!',0Dh,0Ahdb 'c------------elctricityfix!',0Dh,0Ah,'$'data endsstacks segment stackdb 100 dup (?)stacks endscode segmentassume cs:code,ds:data,ss:stacksstart:mov ax,data;初始化mov ds,axmov dx,offset menu;打印菜单,说明硬件电路的连接等mov ah,09int 21hmov dx,io8255;8255初始化,a、b输出,c口输入mov al,89hout dx,almov bl,31h;bl代表当前电梯所在楼层,初始值设为1main: mov al,0call shownumber;显示当前楼层mov cl,0;cl为第一次输入的要去的楼层mov ch,0;ch为在中途中再次输入的要去的楼层call showledmov ah,01;通过键盘输入第一次要去得楼层clint 21hcmp al,1bh;是esc则退出je exitcmp al,31h;键入的数字是否在1-8之间,如不是重新输入jl maincmp al,38hjg mainmov cl,alcall showled;8个led灯显示cl对应的楼层cmp cl,bl;cl与bl比较je main;相等则返回重新输入jg up;大于则向上运行jl todown;小于则向下运行exit: mov ah,4chint 21h;---------------------------------------------------------------------------------电梯上行up: call panduan;电梯上行的情况up1: add bl,1call updelay;调用向上运行延时子程序,出现向上的箭头call shownumber;调用显示子程序,通过数码管显示当前楼层blcmp bl,cl;bl,cl不等则继续je main;相等则返回jmp up1upgetch:mov ah,1;在上升过程中如果有其他的键按下时int 21hcmp al,62h;判断是否为急停键bje jitcmp al,63h;判断是否为断电待修键cje noelccmp al,31h;数字是否在1-8之间如不是继续上行jl gotoupcmp al,38hjg gotoupmov ch,alcall showledcall delayupcall shownumbercall clequbl;判断当前楼层与第一次要去的楼层是否相同cmp ch,bl;比较ch与bl的区别je stopupcl;相等则在该层停,等待运行信号输入jl upcldownch;ch小于bl则先上行至cl在下行至chcmp ch,cl;ch大于bl则在判断ch与cl的大小关系je jmpupcl;相等则一直上行至cljl upchupcl;ch大于bl小于cl则先上行到ch在上行到cljg toupclupch;ch大于cl则先上行到cl在上行到chgotoup: call delayupjmp up1noelc: mov al,0;上升时遇到了断电的情况,则等待键入,除非再次键入的为c才继续运行mov ah,7int 21hcmp al,63hjne noelccall delayupcall shownumberjmp up1jit: call delayup;上升时遇到了急停的情况,则停在下一层,然后回到main call shownumberjmp maintodown: jmp downupdelay proc near;向上运行的延时子程序call delayfirst;用于初始化8253push dxcall dianqing ;调用使其能够清零updelay1:call dianshang;循环调用向上的箭头显示mov ah,1;键盘是否有输入int 16hjne upgetch;如有则跳转到输入处理mov dx,io8255c;8255c口输入,看2s延时是否结束in al,dxand al,01;是否计时结束jz updelay1pop dxretupdelay endptomain: jmp maintoupclupch:jmp upclupch;---------------------------------------------------------------------------------上行中遇到的各种情况列举stopupcl:call shownumber;第二次要去得楼层与当前楼层相同,直接停在该层mov ch,0call showledcall stop2call upcljmp mainupcldownch:call showled;先上行到cl再下行到chcall upclmov cl,0call showledcall stop2call downchjmp mainjmpupcl:mov ch,0;第二次要去的楼层与第一次要去的相同,直接上行到第一次要取得楼层call showledcall upcljmp mainupchupcl:call showled;同方向的楼层,先上行到ch再上行到clcall upchmov ch,0call showledcall stop2call upcljmp mainupclupch:call showled;同方向的楼层,先上行到cl再上行到chcall upclmov bl,0call showledcall stop2call upchjmp mainjittt: jmp jit;----------------------------------------------------------电梯下行,与电梯上行的情况基本类似,稍作修改即可down: call panduandown1: sub bl,1call downdelaycall shownumbercmp bl,clje tomainjmp down1downgetch:mov ah,1cmp al,62hje jit1cmp al,63hje noelc1cmp al,31hjl gotodowncmp al,38hjg gotodownmov ch,alcall showledcall delaydowncall shownumbercall clequblcmp ch,blje stopdowncljg downclupch;ch大于bl则先下行至cl在上行至chcmp ch,cl;ch小于bl则在判断ch与cl的大小关系je jmpdowncl;相等则一直下行至cljl downcldownch;ch小于bl小于cl则先下行到cl在下行到chjg todownchdowncl;ch大于cl则先下行到ch在下行到clgotodown:call delaydownjmp down1noelc1: mov al,0;下降遇到了断电的情况,则等待键入,除非再次键入的为c才继续运行mov ah,7int 21hcmp al,63hjne noelc1call delaydowncall shownumberjmp down1jit1: call delaydown;下降时遇到了急停的情况,则停在下一层,然后回到main call shownumberjmp maindowndelay proc near;向下运行延时子程序,与向上运行延时子程序大体相同call delayfirstpush dxcall dianqing;调用使其能够清零ddy: call dianxia;循环调用向下的箭头显示mov ah,1int 16hjne downgetchmov dx,io8255cin al,dxjz ddypop dxretdowndelay endptodownchdowncl:jmp downchdowncl;---------------------------------------------------------------------------------下行中遇到的各种情况列举stopdowncl:call showledmov ch,0call showledcall stop2call downcljmp maindownclupch:call showledcall downclmov cl,0call showledcall stop2call upchjmp mainjmpdowncl:mov ch,0call showledcall downcljmp maindowncldownch:call showledcall downclmov cl,0call showledcall stop2call downchjmp maindownchdowncl:call showledcall downchmov ch,0call showledcall stop2call downcljmp main;--------------------------------------------------------------------电梯上、下行中遇到的各种情况处理方法jitt: jmp jitttclequbl proc near ;判断当前楼层与第一次要去的楼层的关系cmp cl,bljne backje clequchmov cl,0call shownumbercall showledcall stop2cmp ch,bljg upchherejl downchhere upchhere:call upchjmp main downchhere:call downchjmp mainclequch:mov ch,0call showledcall onlydelay;jmp mainback: retclequbl endpupcl proc near;上行到cl的子程序upcl1: add bl,1call dirdelay1call shownumbercmp bl,cljl upcl1retupcl endpjitt1: jmp jit1upch proc near;上行到ch的子程序upch1: add bl,1call dirdelay1call shownumbercmp bl,chjl upch1retupch endpdowncl proc near;下行到cl的子程序downcl1:sub bl,1call dirdelay2call shownumbercmp bl,cljg downcl1retdowncl endpdownch proc near;下行到ch的子程序downch1:sub bl,1call dirdelay2call shownumbercmp bl,chjg downch1retdownch endp;----------------------------------------------------------------------直接上下行时对按键情况的处理stop2 proc near;没有直达键的暂停子程序gostop2:mov al,0mov ah,1int 21hcmp al,13jne gostop2mov al,0retstop2 endpdirgetch1:mov ah,1;直接上行对按键的处理int 21hcmp al,63hje dirnoelc1cmp al,62hje jit21jmp dirback1dirgetch2:mov ah,1;直接下行对按键的处理int 21hcmp al,63hje dirnoelc2cmp al,62hje jit22jmp dirback2jit21: call delayup;call shownumberjmp mainjit22: call delaydown;call shownumberjmp maindirnoelc1:mov al,0;直接上行时遇到了断电待修的情况mov ah,1int 21hcmp al,63hjne dirnoelc1call delayup;call shownumberjmp dirback1dirnoelc2:mov al,0;直接下行时遇到了断电待修的情况mov ah,1int 21hcmp al,63hjne dirnoelc2call delaydown;call shownumberjmp dirback2tojit: jmp jittdirdelay1 proc near;直接上行的延时子程序call delayfirstpush dxcall dianqingdirback1:call dianshang;mov ah,1int 16hjne dirgetch1mov dx,io8255cin al,dxand al,01jz dirback1pop dxretdirdelay1 endptojit1: jmp jitt1dirdelay2 proc near;直接下行的延时子程序call delayfirstpush dxcall dianqingdirback2:call dianxia;mov ah,1int 16hjne dirgetch2mov dx,io8255cin al,dxand al,01jz dirback2pop dxretdirdelay2 endp;----------------------------------------------------------------------直达情况的处理panduan proc near;判断是否为直达键,如果是就直接到达,如果为enter正常执行next1: mov al,0mov ah,1int 21hcmp al,61h;是否为直达键je zhidacmp al,13jne next1mov al,0retpanduan endpzhida: cmp cl,bljl zhidadownjg zhidaupjmp mainzhidadown:call delaydownsub bl,1call zhidadelay2call shownumberjmp zhidazhidaup:call delayupadd bl,1call zhidadelay1call shownumberjmp zhidazhidabutton1:mov ah,1;直达对按键情况的处理,在上升时跳到此处int 21hcmp al,63hje zhidanoelc1cmp al,62hje tojitjmp zhidazhidabutton2:mov ah,1;直达对按键情况的处理,在下降时跳到此处int 21hcmp al,63hje zhidanoelc2cmp al,62hje tojit1jmp zhidazhidanoelc1:mov al,0;上升时遇到断电待修时mov ah,1int 21hcmp al,63hjne zhidanoelc1call delayup;call shownumberjmp zhidazhidanoelc2:mov al,0;下降时遇到断电待修时mov ah,1int 21hcmp al,63hjne zhidanoelc2call delaydown;call shownumberjmp zhidazhidadelay1 proc near;直达延时程序call delayfirstpush dxcall dianqingnext21: call dianshang;mov ah,1int 16hjne zhidabutton1mov dx,io8255cin al,dxand al,01jz next21pop dxretzhidadelay1 endpzhidadelay2 proc near;直达延时程序call delayfirstpush dxcall dianqingnext22: call dianxia;mov ah,1int 16hjne zhidabutton2mov dx,io8255cin al,dxand al,01jz next22pop dxretzhidadelay2 endp;------------------------------------------------------------------------------判断延时是否结束以及8253初始化delayfirst proc near;初始化8253的子程序,两计数器连级,接入1MHZ的脉冲,2s每次第二个out接pc0push 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 al,70hout dx,almov dx,io8253b;计数器1初始值为200mov ax,200out dx,almov al,ahout dx,alpop dxretdelayfirst endponlydelay proc near;判断延时时是否结束的子程序,注意由于点阵灯的显示要写进循环中,所以分类,该延时仅用于延时push dxdelayx: mov dx,io8255cin al,dx ;查询8255的Pc0是否为高电平and al,01jz delayxpop dxretonlydelay endpdelayup proc near;判断上升延时是否结束的子程序,包括了显示向上箭头的部分push dxcall dianqingdelayy: call dianshangmov dx,io8255cin al,dx ;查询8255的Pc0是否为高电平and al,01jz delayypop dxretdelayup endpdelaydown proc near;判断下降延时是否结束的子程序,包括了显示向下箭头的部分push dxcall dianqingdelayz: call dianxiamov dx,io8255cin al,dx ;查询8255的Pc0是否为高电平and al,01jz delayzpop dxretdelaydown endp;----------------------------------------------------------------------------------------------显示的子程序dianqing proc near;用于对点阵显示的清零,在第一次要循环前使用push dxpush axmov al,00mov dx,protlrout dx,alpop axpop dxdianqing endpdianshang proc near;点阵箭头的显示,向上箭头的显示子程序push cxpush axpush bxmov cx,0008hmov si,offset minmov ah,01movex: mov al,[si]mov bx,offset buff1xlat ;得到第一行码mov dx,prothout dx,almov al,ahmov dx,protlrout dx,al ;显示第一行红shl ah,01inc sipush cxmov cx,0ffffhdelayp: loop delayp ;延时pop cxloop movexpop bxpop axpop cxretdianshang endpdianxia proc near;点阵箭头的显示,向下箭头的显示子程序push cxpush axpush bxmov cx,0008hmov si,offset minmov ah,01movey: mov al,[si]mov bx,offset buff2xlat ;得到第一行码mov dx,prothout dx,almov al,ahmov dx,protlrout dx,al ;显示第一行红shl ah,01inc sipush cxmov cx,0ffffhdelayq: loop delayq ;延时pop cxloop moveypop bxpop axpop cxretdianxia endpshownumber proc near;用七段码显示当前楼层的子程序(a口输出)mov dl,blmov ah,2int 21h;用于在屏幕上显示mov dl,0dhmov ah,2;回车符int 21hmov dl,0ahmov ah,2;换行符int 21hsub bl,30h;七段码显示mov al,blpush bxpush dxmov bx,offset numberxlatmov dx,io8255aout dx,alpop dxpop bxadd bl,30hmov al,0retshownumber endpshowled proc near;8led显示,显示cl与ch对应的楼层,从8255b口输出push axcmp cl,0hje l0cmp cl,31hje l1cmp cl,32hje l2cmp cl,33hje l3cmp cl,34hje l4cmp cl,35hje l5cmp cl,36hje l6cmp cl,37hje l7cmp cl,38hje l8l0: mov al,0bjmp addledl1: mov al,1bjmp addledl2: mov al,10bjmp addledl3: mov al,100bjmp addledl4: mov al,1000bjmp addledl5: mov al,10000bjmp addledl6: mov al,100000bjmp addledl7: mov al,1000000bjmp addledl8: mov al,10000000bjmp addledaddled: cmp ch,0je h0cmp ch,31hje h1cmp ch,32hje h2cmp ch,33hje h3cmp ch,34hje h4cmp ch,35hje h5cmp ch,36hje h6cmp ch,37hje h7cmp ch,38hje h8h0: add al,0bjmp showh1: add al,1bjmp showh2: add al,10bjmp showh3: add al,100bjmp showh4: add al,1000bjmp showh5: add al,10000bjmp showh6: add al,100000bjmp showh7: add al,1000000bjmp showh8: add al,10000000bjmp showshow: push dxmov dx,io8255b ;8255b口输出out dx,alpop dxpop axmov al,0ret showled endp code ends end start。

电梯课程设计---电梯模拟控制系统设计

电梯课程设计---电梯模拟控制系统设计

电气控制技术课程设计任务书20 11 -20 12 学年第 2学期第 19 周- 19 周题目电梯模拟控制系统设计内容及要求运行要求:运行程序时,电梯停在一楼。

如按下A3,电梯从一楼到二楼,并等待再按选择楼层按钮,如再按A6按钮则电梯从二楼到四楼,然后再按A1按钮电梯会从四楼到一楼。

其它情形实验者可多做几次,其具体效果与实际电梯相类似。

根据运行要求,画出控制系统线路图、列输入输出分配表、编写梯形图并逐条加注释,且写出程序流程图。

完成课程设计说明书与课程设计报告。

进度安排1、讲授课程设计的要求、任务和方法,布置设计题目(0.5天);2、查阅资料,确定设计方案(1天);3、设计、实验调试并完成课程设计报告(2.5天);4、当场个人答辩及报告评阅(1天)。

学生姓名:蔡系海指导时间 2012 年6月 18日至2012年6月 22日指导地点: F楼 212室任务下达2012 年 6月 15日任务完成2012年6月 22日考核方式 1.评阅□ 2.答辩□ 3.实际操作□ 4.其它□指导教师系(部)主任摘要随着我国经济的高速发展,微电子技术、计算机技术和自动控制技术也得到了迅速发展,电梯也已成为人类现代生活中广泛使用的运输工具。

随着人们对电梯运行的安全性、舒适性等要求的提高,电梯得到了快速发展,其拖动技术已经发展到了调频调压调速,其逻辑控制也由 PLC 代替原来的继电器控制。

可编程控制器(PLC)因为稳定可靠、结构简单、成本低廉、简单易学、功能强大和使用方便已经成为应用最广泛的通用工业控制装置,成为当代工业自动化的主要支柱之一。

电梯控制要求接入设备使用简便,对应系统组态的编程简单,具有人性化的人机界面,配备应用程序库,加快编程和调试速度。

通过 PLC 对程序设计,提高了电梯的控制水平,并改善了电梯的电梯运行的舒适感。

本文争对以上优点,对电梯运行进行了改进,使其达到了比较理想的控制效果。

关键词 PLC 电梯控制系统目录前言.......................................................... .5一. 四层电梯控制上下行主电路 (7)二. 四层电梯控制电路图 (7)三. 四层电梯门电机控制电路原理 (7)四. 程序流程图 (8)五. 输入/输出的分配表 (8)六.四层电梯控制程序梯形图 (9)七. 心得体会 (13)八. 参考文献 (14)前言伴随着工厂自动化程度的提高,PLC可编程控制器在工厂中的应用也越来越广泛,而且几乎涉及到工厂的各个方面,包括供电、生产、物料管理、运输等等。

武科大微机原理课程设计

武科大微机原理课程设计

一、设计题目键控数据采集及数值显示电路设计二、设计任务按不同的数字键(0、1、2、3、4、5、6、7)采集0809相应数据通道的模拟量,并在LED 数码管上显示值。

设定输入模拟量在0—5V范围内,显示值在0—255范围内。

三、设计要求1.画出连接线路图或功能模块引脚连接图。

2.采用8088CPU作主控制器,0809作A/D转换器,采用直接地址译码方法,给各芯片分配地址,选取芯片中必须包含有8255。

3.采用3个共阴极型LED动态显示,只需显示0—255范围内的值。

四、设计思想及需要用的主要芯片1、设计思想首先通过编程对8255初始化,然后通过8255对ADC0809转换器初始化,通过0~7号按键(在这里0~7号按键用开关实现,有按键的过程中会有抖动,所以需要加入一个74LS244芯片,用于缓冲),经8088微处理器处理后选择ADC0809的模拟通道,将0~5V内的模拟量通过选择的模拟通道传递给模数转换器,通过转换器把模拟量转换为0~255之间的数字量,将数字量通过可编程并行接口8255(在这里端口A作为数据输入端,端口B作为数据输出端,端口C作为控制端),送给LED数码管显示。

2.主要芯片及其功能ADC0809与系统的接口包括两个输出口和一个输入口,第一个输出口用于控制芯片内部的模拟通道选择,CPU输出的通道地址从ADC0809的引脚ADDA、ADDB、ADDC输入,并利用ALE信号触发锁存;第二个输出口是哑元,用以触发ADC0809的引脚START启动转换。

当转换结束后,ADC0809的引脚EOC会产生一个高电平的状态信号,该信号用于检测,也可用于申请中断。

随后,CPU可以从ADC0809的引脚D0-D7输入转换后的数据。

其芯片引脚图如下8255是并行通信接口芯片,其基本功能是以并行的方式在系统总线与I/O设备之间传送数据。

8255A共有三个I/O端口,其中A口和B口J均为8位,而C口既可以作为8位端口,又可以分成两个4位端口。

武汉科技大学微机原理课程设计

武汉科技大学微机原理课程设计

课程设计报告学号:姓名:学院:信息科学与工程学院专业:电子信息工程班级:电信班指导教师:熊庆国用汇编语言实现电话本功能一、目的:运用所学汇编语言知识,编写一个具有电话本功能的程序,达到提高动手能力以及检验对微机原理课程学习和掌握的程度。

二、内容及要求:1)能够储存50个电话号码,其中包括人名(20个字符),电话号码(11个字符)。

2)系统可以随时接收新的人名及电话号码。

3)系统具有随时查询号码的功能,输入人名后,在屏幕上显示其相应的电话号码。

4)运行此系统后,显示菜单选项进行功能选择。

三、数据存储方案:对于电话薄的每一位联系人,姓名占20个字符,加上结束标志$共21字符;电话占11个字符,加上结束标志$共12个字符。

所以每一位联系人共占据33个单元,这样我们可以在存储区开辟33*50=1650字节的地址空间。

四、流程图:(1)程序框图:在主菜单界面下有三大模块,分别是:添加联系人信息,搜索联系人信息,退出系统。

(2)汇编流程图:有错误有错误有错误建立、修改asm 文件 汇编生成obj 文件正确? 链接、生成exe 可执行文件正确? Debug 调试 正确? 结束 开始五、汇编运行效果:(1)在win7命令窗口下使用MASM对源程序进行编译,生成目标文件weiji.obj;(2)对生成的weiji.obj文件使用link命令进行链接生成weiji.exe可执行文件;(3)在win7继续执行debug weiji.exe,会出现如下结果,这是由于版本不兼容造成的。

我之后的实验步骤均是在DOSBox软件下完成的。

(4)打开DOSBox,找到汇编路径。

执行命令debug.exe,然后使用U命令进行反汇编。

(5)继续使用G命令运行程序,得到如下界面菜单显示。

按“1”键后显示添加联系人信息,添加完毕后显示菜单。

(6)按“2”键后显示搜索联系人姓名,回车后显示对应联系人电话号码,同时显示菜单界。

(7)按“3”键后显示程序终止正常,退出系统。

电梯运行模拟状态——微机原理课程设计

电梯运行模拟状态——微机原理课程设计

;用于在模拟楼房方框左边显示楼层号码FNUM MACROLOCAL ML1PUSH CXPUSH AXPUSH DXPUSH SIMOV CH,13HMOV CL,31HMOV SI,9ML1: MOV AH,02H ;2号功能调用,设置光标位置MOV DH,CHMOV DL,1FHINT 10HMOV AH,02HMOV DL,CLINT 21HDEC CHINC CLDEC SIJNZ ML1POP SIPOP DXPOP AXPOP CXENDM;用于显示未上电梯时的模拟状态图形SITUA TION MACRO NOWFLOCAL L1,L2,L3,L4,L5,L6,L7,L8,PASS1MOV AH,03HINT 10HFNUMMOV AH,02HINT 10HMOV SI,101HL0: MOV AH,0CHMOV DX,LASTFMOV CX,SIMOV AL,0INT 10HINC SICMP SI,120HMOV BH,1HMOV SI,100H L1: MOV AH,0CHMOV DX,20HMOV CX,SIMOV AL,BHINT 10HADD SI,1HINC BHCMP SI,120HJNE L1MOV SI,20HMOV BH,1H L2: MOV AH,0CHMOV DX,SIMOV CX,100HMOV AL,BHINT 10HADD SI,1HINC BHCMP SI,9BHJNE L2MOV SI,100HMOV BH,1H L3: MOV AH,0CHMOV DX,9BHMOV CX,SIMOV AL,BHINT 10HINC BHINC SICMP SI,120HJNE L3MOV SI,20HMOV BH,1H L4: MOV AH,0CHMOV DX,SIMOV CX,120HMOV AL,BHINT 10HADD SI,1HINC BHCMP SI,9BHMOV FLAG1,1MOV DI,NOWF ;NOWFLOORMOV SI,101HL5: MOV AH,0CHMOV DX,DIMOV CX,SIMOV AL,1INT 10HINC SICMP SI,120HJNE L5ENDM;用于显示电梯运动MOVEF MACRO NOWF,LASTF LOCAL L1,L2,L3,L4,L5,L6,L7,L8,PASS1 MOV BH,1HMOV SI,100HL1: MOV AH,0CHMOV DX,20HMOV CX,SIMOV AL,BHINT 10HADD SI,1HINC BHCMP SI,120HJNE L1MOV SI,20HMOV BH,1HL2: MOV AH,0CHMOV DX,SIMOV CX,100HMOV AL,BHINT 10HADD SI,1HINC BHCMP SI,9BHJNE L2MOV SI,100HMOV BH,1HL3: MOV AH,0CHMOV DX,9BHMOV CX,SIMOV AL,BHINT 10HINC BHINC SICMP SI,120HJNE L3MOV SI,20HMOV BH,1HL4: MOV AH,0CHMOV DX,SIMOV CX,120HMOV AL,BHINT 10HADD SI,1HINC BHCMP SI,9BHJNE L4MOV FLAG1,1MOV DI,NOWF ;NOWFLOOR L6: MOV SI,101HL5: MOV AH,0CHMOV DX,DIMOV CX,SIMOV AL,1INT 10HINC SICMP SI,120HJNE L5MOV AX,FLAG1CMP AX,1JNE PASS1XOR AX,AXMOV FLAG1,AXMOV AH,09HMOV DX,OFFSET MSGENINT 21HMOV DX,OFFSET MSG3INT 21HMOV AH,01HINT 21HPASS1:MOV BX,06FFH ;可修改速度MOV CX,0FFFFHTIME: LOOP TIME ;延时DEC BXCMP BX,0JNE TIMEMOV SI,101HL7: MOV AH,0CHMOV DX,DIMOV CX,SIMOV AL,0INT 10HINC SICMP SI,120HJNE L7MOV AX,NOWFCMP AX,LASTFJA PASS2INC DIJMP PASS3PASS2: CMP AX,LASTFJNE PASS4JMP PASS3PASS4: DEC DIPASS3:CMP DI,LASTF ;LASTFLOORJNE L6MOV SI,101HL8: MOV AH,0CHMOV DX,DIMOV CX,SIMOV AL,1INT 10HINC SICMP SI,120HJNE L8ENDM;定义程序中要用到的数据段DA TA SEGMENTMSG1 DB 'FLOOR YOU SIT NOW(JUST 1-9F):$'MSG2 DB 'FLOOR YOU W ANT GO(JUST 1-9F):$' MSG3 DB 'INPUT ANY KEY TO START...$' MSG4 DB 'WANT EXPERIENCE AGAIN (Y/N)..$' MSGEN DB 0AH,0DH,'$'NOWF DW ? ;NOWF变量表示原在楼层号码LASTF DW ? ;LASTF表示目的楼层号码FLAG1 DW 1 ;起一定小作用的变量DA TA ENDS;定义程序中用到的堆栈段STACK SEGMENTBUFS DB 100 DUP(?)TOPS LABEL WORDSTACK ENDS;主代码段CODE1用于程序的执行或结束CODE1 SEGMENTASSUME CS:CODE1, DS:DA TA, SS:STACK MAIN PROCSTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,TOPSMOV AH,0HMOV AL,04HINT 10HREPEAT1:CALL FAR PTR ELEV ATORMOV AH,09HMOV DX,OFFSET MSGENINT 21HMOV DX,OFFSET MSG4INT 21HMOV AH,01HINT 21HCMP AL,'Y'JE REPEAT1CMP AL,'y'JE REPEAT1MOV AH,4CHINT 21HRETMAIN ENDPCODE1 ENDS;子段码CODE2用于控制楼层状态和运动CODE2 SEGMENTELEVATOR PROC FARASSUME CS:CODE2, DS:DA TA, SS:STACK MOV AX,DATAMOV DS,AXMOV AX,SSMOV SS,AXREPUT1:MOV AH,09HMOV DX,OFFSET MSGENINT 21HMOV DX,OFFSET MSG1INT 21HMOV AH,01HINT 21HCMP AL,'1'JB REPUT1CMP AL,'9'JA REPUT1SUB AL,30HXOR AH,AHDEC AXMOV DX,08HMUL DXMOV DX,AXMOV AX,9BHSUB AX,DXMOV NOWF,AXSITUA TION NOWFREPUT2: MOV AH,09HMOV DX,OFFSET MSGENINT 21HMOV DX,OFFSET MSG2INT 21HMOV AH,01HINT 21HXOR AH,AHCMP AL,'1'JB REPUT2CMP AL,'9'JG REPUT2SUB AL,30HXOR AH,AHDEC AXXOR DX,DXMOV DX,AXMOV AX,08HSUB AX,DXMOV DX,AXMOV AX,08HMUL DXADD AX,5BHMOV LASTF,AXCMP AX,NOWFJE REPUT2 MOVEF NOWF,LASTF RETF ELEVATOR ENDP CODE2 ENDSEND STARTBIOS中断表10设置显示方式AL=00 40×25黑白方式AL=01 40×25彩色方式AL=02 80×25黑白方式AL=03 80×25彩色方式AL=04 320×200彩色图形方式AL=05 320×200黑白图形方式AL=06 320×200黑白图形方式AL=07 80×25单色文本方式AL=08 160×200 16色图形(PCjr) AL=09 320×200 16色图形(PCjr) AL=0A 640×200 16色图形(PCjr) AL=0B 保留(EGA)AL=0C 保留(EGA)AL=0D 320×200 彩色图形(EGA) AL=0E 640×200 彩色图形(EGA) AL=0F 640×350 黑白图形(EGA) AL=10 640×350 彩色图形(EGA) AL=11 640×480 单色图形(EGA) AL=12 640×480 16色图形(EGA) AL=13 320×200 256色图形(EGA) AL=40 80×30 彩色文本(CGE400) AL=41 80×50 彩色文本(CGE400) AL=42 640×400 彩色图形(CGE400)101置光标类型(CH)0-3=光标起始行(CL)0-3=光标结束行102置光标位置BH=页号DH,DL=行,列103读光标位置BH=页号CH=光标起始行DH,DL=行,列104读光笔位置AH=0 光笔未触发=1 光笔触发CH=象素行BX=象素列DH=字符行DL=字符列105置显示页AL=页号106屏幕初始化或上卷AL=上卷行数AL=0 整个窗口空白BH=卷入行属性CH=左上角行号CL=左上角列号DH=右下角行号DL=右下角列号107屏幕初始化或下卷AL=下卷行数AL=0 整个窗口空白BH=卷入行属性CH=左上角行号CL=左上角列号DH=右下角行号DL=右下角列号108读光标位置的字符和属性BH=显示页AH=属性AL=字符109在光标位置显示字符及属性BH=显示页AL=字符BL=属性CX=字符重复次数10A在光标位置显示字符BH=显示页AL=字符CX=字符重复次数10B置彩色调板(320×200图形) BH=彩色调板IDBL=和ID配套使用的颜色10C写象素DX=行(0-199)CX=列(0-639)AL=象素值10D读象素DX=行(0-199) CX=列(0-639) AL=象素值10E显示字符(光标前移)AL=字符BL=前景色10F取当前显示方式AH=字符列数AL=显示方式。

电梯模拟系统(2020年整理).doc

电梯模拟系统(2020年整理).doc

目录一:问题描述—————————————————————————第2页二:问题分析—————————————————————————第2页三:数据结构—————————————————————————第2页四:算法设计—————————————————————————第4页五设计与调试分析———————————————————————第6页六:体会及建议————————————————————————第7页七:参考文献—————————————————————————第7页八:原代码——————————————————————————第7页一:问题描述设计一个电梯模拟系统。

这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活动体”够成的集合,虽然他们彼此交互作用,但是他们的行为是基本独立的。

在离散的模拟中,一模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。

二:问题分析(1)、模拟某校五层教学楼的电梯系统。

该楼有一个自动电梯,能在每层停留。

五个楼层由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来该层候命。

五个楼层从下到上的编号为:0、1、2、3、4。

除了地下层外,每一层都有一个要求向下的按钮除了第四层外,每一层都有一个要求向上的按钮。

对应的变量为:CallUp[0..3]和CallDown[1..4]。

电梯内的五个目标层按钮对应的变量为:CallCar[0..4]。

(2)、电梯一共有七个状态,即正在开门(Opening)、已开门(Opened)、正在关门(Closing)、已关门(Closed)、等待(Waiting)、移动(Moving)、减速(Decelerate)。

(3)、乘客可随机地进出于任何层。

对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。

微机原理扩展实验:单片机制作模拟电梯

微机原理扩展实验:单片机制作模拟电梯

微机原理扩展实验:单片机制作模拟电梯
本实验采用51单片机制作电梯的控制系统,能够实现电梯的上下运行、楼层的选择放和打开/关闭门等功能。

具体步骤如下:材料准备:
- 51单片机开发板
- 光电开关
- 驱动电机
- 七段数码管
- LED灯
- 按键开关
- 杜邦线
电路连接步骤:
1. 驱动电机正负极连接相应的接口,设置相关参数。

2. 光电开关连接到51单片机开发板上,用于检测电梯是否到达目标楼层。

3. 七段数码管用于显示当前所在楼层。

4. LED灯用于指示电梯门的状态。

5. 按键开关用于选择电梯要去的楼层以及开/关电梯门。

软件编写步骤:
1. 定义各个相关的IO口。

2. 编写楼层显示程序:通过IO口和七段数码管将电梯当前所在楼层显示出来。

3. 编写选择楼层程序:当按键按下时,将要去的楼层存储在一个变量中。

4. 编写电梯上下运行程序:通过光电开关检测电梯是否到达目
标楼层,从而控制电梯的上下运动。

5. 编写开/关门程序:通过LED灯的状态来指示电梯门的状态,同时通过电梯内部的按键开关来控制电梯门的开/关。

以上就是制作模拟电梯的基本步骤,这样的实验既有硬件的搭建,又涉及到的软件编写,能够很好地锻炼学生的综合能力。

模拟电梯课程设计方案模板

模拟电梯课程设计方案模板

一、课程名称模拟电梯控制系统课程设计二、课程背景随着现代建筑的高度化,电梯作为重要的垂直交通工具,其控制系统的研究与开发显得尤为重要。

本课程设计旨在通过模拟电梯控制系统,让学生深入了解电梯控制系统的原理、设计方法以及实现过程,培养学生的动手能力、创新能力和工程实践能力。

三、课程目标1. 理解电梯控制系统的基本原理和组成;2. 掌握电梯控制系统的设计方法;3. 熟悉常用电梯控制元器件及其应用;4. 培养学生的动手能力、创新能力和工程实践能力;5. 提高学生对电梯控制系统的认识,为今后从事电梯行业打下基础。

四、课程内容1. 电梯控制系统的基本原理与组成2. 电梯控制系统的设计方法3. 常用电梯控制元器件及其应用4. 电梯控制系统的模拟实验5. 电梯控制系统的编程与调试五、课程实施1. 教学方法:采用理论教学与实验实践相结合的方式,注重培养学生的动手能力和创新思维。

2. 教学步骤:(1)理论教学:讲解电梯控制系统的基本原理、组成、设计方法及常用元器件;(2)实验实践:学生分组完成电梯控制系统的模拟实验,包括电路设计、元器件选型、编程与调试;(3)课程设计:学生独立完成电梯控制系统的课程设计,包括设计任务书、电路图、程序代码等。

六、课程评价1. 课堂表现:包括课堂提问、讨论等;2. 实验实践:实验报告、实验成绩;3. 课程设计:设计报告、电路图、程序代码等;4. 期末考核:书面考试、答辩。

七、课程资源1. 教材:《电梯控制系统》、《可编程控制器原理与应用》等;2. 教学课件、实验指导书、设计指南等;3. 电梯控制元器件、实验器材等。

八、课程进度安排1. 第1周:课程介绍、基本原理与组成;2. 第2周:设计方法与常用元器件;3. 第3周:模拟实验(电路设计、元器件选型);4. 第4周:编程与调试;5. 第5周:课程设计(设计任务书、电路图、程序代码);6. 第6周:课程设计(答辩);7. 第7周:课程总结与评价。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档