模拟电梯控制系统-微机原理
- 格式:doc
- 大小:111.50 KB
- 文档页数:8
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。
摘要本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯内外电路按键模拟检测模块、电梯外请求发光管显示模块、楼层显示数码管模块、电梯上下行模块及模拟传感器模块等5部分组成。
该系统采用单片机(AT89C51)作为控制核心,内外均使用按键按下与否引起的单片机相应端口电平变化的原理,作为用户请求信息发送到单片机,单片机根据判断的结果最终驱动步进电机做相应的运动,在运动的过程中,单片机依照请求信息通过模拟的传感器使步进电机停止运动,并利用彩灯作为上升和下降的状况显示,七段数码管实时显示当前楼层,完成整个请求和响应的过程。
软件部分使用汇编语言实现,利用查询方式来检测用户请求的按键信息。
根据电梯运行到相应楼层时,模拟按键引起的电平变化,进行判断和执行实现电梯的控制,并且将程序模块化,方便了修改和调用。
硬件设计简单可靠,结合软件,基本实现了四层电梯的模拟运行。
关键词:单片机,AT89C51,电梯控制,步进电机目录摘要 (I)目录 (II)第1章绪论 (1)1.1电梯的研究背景及意义 (1)1.2 电梯的国内外发展状况 (1)第2章电梯设计任务与要求 (2)2.1设计任务 (2)2.2设计要求 (2)第3章总体设计方案 (3)3.1设计思路 (3)3.2总体设计框图 (3)第4章电梯控制系统 (4)4.1电梯控制系统 (4)4.2主要硬件设计器件介绍 (5)4.3 软件设计 (9)第5章个人心得体会 (12)参考文献 (13)致谢 (14)附录I: (15)附录II: (17)第1章绪论1.1电梯的研究背景及意义电梯是高层宾馆、商城、住宅、多层厂房和仓库等高层建筑不可缺少的垂直方向的交通工具。
随着社会的发展,建筑物规模越来越大,楼层越来越多,对电梯的可靠性、舒适感和美学等方面的要求也有了更高的要求。
电梯是集机电一体的复杂系统,涉及机械传动、电气控制和土建等工程领域,而对现代电梯而言,应具有高度的安全性。
微机原理课程设计(电梯)计算机原理课程设计实验报告学院:专业:班级:姓名:学号:成绩:目录1.实验题目------------------------------------------3 ------------------------------------------3分析------------------------------------------3------------------------------------------4----------------------------------------5------------------------------------------5------------------------------------------7------------------------------------------13一、实验题目垂直电梯运行曲线控制(一)模拟题:在实际中,电梯是我们的交通工具,电梯从静止开始,慢慢加速,当到达某个值时,转入匀速运动,根据电梯运行的速度,电梯快要到达停止层时,开始减速,直到平层停止,打开轿厢门,客人安全走下电梯,无人上下电梯,电梯关门,向另一个目的层运动,火灾时,电梯自动归位到首层。
二、题目分析从题目要求来看,需要实现的功能有:3.电梯所在楼层的显示三、原理分析本课程设计以步进电机为驱动电机,通过8086处理器、8259A中断控制器、8255可编程接口为核心芯片,并辅以开关、LED,构成一个控制系统,用以模拟电梯正常运行过程。
其中的实验器材原理分别为:步进电机:作为被控制的电机,电机每走一步转过度,转一圈需要48步才能转一圈。
电梯的控制方法为:A-AB-B-BC-C-CD-D-DA-A,一个周期内有八步,按照这个规律不断循环就能实现电机的连续运转。
8086:作为CPU,控制步进电机、8259A可编程中断控制器、8255可编程接口以及LED,使用汇编语言编程。
单片机原理与应用技术课程设计报告基于C51单片机控制的电梯自动控制系统专业班级: _____计算机xx_____姓名: ___xxx__时间: ______2012年6月 __指导教师: ______xxx _____一、设计要求1.基本功能:(1)显示:本设计要求实现5层控制,实时显示电梯所在楼层位置。
(2)升降控制:采用一台步进电机的正反转来实现电梯的升降。
(3)具备不可逆响应的功能:电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向呼叫均无效。
2.设计内容:(1)基于功能进行初步设计;(2)编写代码,实现功能;(3)完成课程设计报告。
二、电梯控制系统原理1.系统总体实现原理:本电梯模拟系统是基于C51单片机、4*4矩阵式键盘、步进电机和LED数码管来实现的。
通过4*4矩阵式键盘输入控制信息,C51单片机程序处理后来直接控制步进电机转动、LED 数码管显示。
电梯运行基本过程是:电梯默认初始停在一楼,LED数码管显示1,当按键按下1~5中的数时,通过程序进行判断是否升降(即步进电机正转反转)、升降几层(转几圈)。
与此同时,LED 数码管显示当前所在楼层(1~5)。
电梯在升降过程中,按其他键无效,即只有在电梯停下后,才可以进行下一轮的升降。
另外,站在电梯外边的人可以通过按上下键(一层只有上键,五层只有下键)来控制电梯到人所在楼层,例如,你站在3层,你按了上键,电梯不论在1~5层的哪一层都会先升降到3层,然后你进电梯,向前面所说的进行控制电梯升降。
图1 设计电路总框图3938373635343332212223242526272829301110图2 单片机最小系统电路2.各组成部分原理: (1)信号输入电路现以呼叫信号的输入为例,来说明信号输入及单片机识别原理。
如图3所示,采用P0口外接上拉电阻的并行输入形式,来输入外呼叫信号,本电路采用4×4矩阵键盘,列扫描法识别键值的原理,具体原理如下:a) 判断键盘中有无键按下:将全部行线P0.0-P0.3置低电平,列线P0.4-P0.7置高电平,然后检测列线的状态。
;用于在模拟楼房方框左边显示楼层号码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=显示方式。
2011年9月目录一理论部分 (2)1课题要求与内容 (2)2 系统方案设计 (3)3 系统硬件设计 (3)4 系统软件设计 (5)二实践部分 (5)1 系统硬件原理简介 (6)2 系统硬件调试中出现的问题及解决措施 (6)3 系统软件 (6)3.1 软件设计 (6)3.2软件调试中出现的问题及解决措施 (6)三附录 (10)一、理论部分理论设计课题名称:模拟电梯的设计与实现1课题要求与内容1.1设计基本要求用键盘、按钮、发光二极管和LED显示单元来模拟电梯工作过程。
楼层设为8层,用键盘键入希望停的楼层,8 个发光二极管显示希望停的楼层,LED 指示电梯当前所在楼层,按钮用来启、停电梯。
电梯正常运行时以每 2 秒1层的速度上升或下降。
并在到达相关楼层时发错声音提示。
1.2提高要求设计几个按钮,模拟更多的电梯运行功能,如:直达按钮。
若按此按钮,电梯按直达方式运行,即对运行期间新键入的停靠楼层(即使是同方向未到楼层)亦不停,直达终点楼层;急停按钮。
电梯运行中,若按此按钮,则电梯立即停在下一到达的楼层。
2.实验内容电梯工作按以下方式运行:2.1假设当前电梯停在某层(LED显示相应楼层,8个发光二极管全灭)。
键入数字键,如键入的数字与当前电梯停靠层相同,则什么也不做,若不同则相应楼层的发光二极管亮;电梯自动判别上升或下降(在运行过程中用八段码来显示楼层变化)一直到达希望停的楼层(八段码显示该楼层,相应LED 灭)。
2.2假设当前电梯正在上升或下降运行(此时八段码显示楼层变化,LED 指示希望抵达的楼层),若键入新的希望停靠的楼层数字(相应的LED 亮),则对同方向(上升或下降)未到的楼层能停靠,对其它情况则先停靠原先希望停的楼层,然后继续运行)。
如下几例:1)设电梯当前在2层,向上运行,LED指示希望在4层停,此时若键入3,则电梯将在3楼停,然后继续运行至4层停;2)同上情况,若键入的不是3而是5,则电梯将先停在4层,然后运行至5层停;同上情况,若键入的不是3(或5),而是1,则电梯先停在4层,然后运行至1层停。
沈阳航空航天大学课程设计报告课程设计名称:微机系统综合课程设计课程设计题目:模拟电梯控制系统院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:2013年7月9日目录第1章总体设计方案 (1)1.1课程设计的内容和要求 (1)1.2课程设计原理 (2)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件设计 (3)2.2主程序设计 (3)2.3功能模块的设计与实现 (4)2.3.1 电梯调度子程序 (4)2.3.2 发出中断扫描时间程序 (5)2.3.3 中断子程序 (6)2.3.4 LED显示程序 (7)第3章结果测试及分析 (8)3.1结果测试 (8)3.2结果分析 (8)参考文献 (9)附录(源程序) (10)第1章总体设计方案1.1 课程设计的内容和要求一、课程设计内容:用键盘、按键、八段码和LED模拟电梯的工作过程,具体内容如下:1.键盘数字键1~8用来键入希望停的楼层,并用八段数码管显示;2.使用8个LED指示电梯当前所在楼层;3.设计两个按键分别表示人上、下电梯,每按一次上或下一人,每上下一人,都要设置目的地址;4.电梯正常运行时以每2秒1层的速度上升或下降。
若无请求就继续按原方向运行,上升和下降要有指示。
二、课程设计要求:1.独立完成课程设计任务;2.通过老师当场验收;3.交出完整的课程设计报告。
1.2 课程设计原理本设计利用8255,8253,8259,8279芯片,发光二极管,八段数码管和键盘模拟电梯的工作过程。
运用8253芯片产生20ms的脉冲给中断提供中断信号,8259芯片主要用于中断处理, 8279芯片用于扫描键盘和显示所在楼层,8255芯片主要用于信号的输入输出。
程序运行时,用键盘的“-”和“+”号表示电梯上和下的选择状态,利用八段数码管显示目的楼层,8个发光二极管显示电梯的运行状态。
初始状态时,电梯处在第一层,等待电梯的人选择“+”后,电梯打开电梯门等待选择按下按键1~8并显示在八段数码管上,按下后电梯开始运行,发光二极管右移逐个点亮直至目的楼层停止。
河北工业大学城市学院本科毕业设计(论文)前期报告毕业设计(论文)题目:利用PLC实现四层电梯控制系统的模拟适用专业:自动化专业学生信息:074040、袁超、自动化C072指导教师信息:周颖、副教授报告提交日期:2010年3月25日一、课题的研究背景及意义随着科学技术和社会经济的发展,建筑物的高层化已成为现代城市的标志。
电梯作为垂直运输工具,承担着大量的人流和物流的输送,其作用在建筑物中至关重要。
近年来,国内外的电梯生产技术得到了迅速发展。
一些电梯厂也在不断改进设计、修改工艺、更新换代,生产新型的电梯[1-2]。
电梯系统主要分为机械系统与控制系统两大部份,随着自动控制理论与微电子技术的发展,电梯的拖动方式与控制手段均发生了很大的变化,交流调速是当前电梯拖动的主要发展方向[3-4]。
目前电梯控制系统主要有三种控制方式:继电器逻辑控制系统、PLC控制系统、微型计算机控制系统。
继电器控制系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,目前已逐渐被淘汰。
微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差、系统设计复杂、一般维修人员难以掌握其维修技术等缺陷。
而采用 PLC 对电梯进行控制,通过合理的选择和设计,能够有效的提高电梯的控制水平,极大地改善了电梯运行的舒适感,使电梯的控制达到了比较理想的控制效果,PLC控制系统已成为目前在电梯控制系统中使用最多的控制方式[5-7]。
PLC控制系统有以下优点:(1)PLC不需要大量的活动部件和电子元器件,它的接线也很少。
与此同时,系统的维修简单、维修时间缩短。
(2)PLC采用了一系列可靠性设计的方法进行设计,例如,冗余设计、掉电保护、故障诊断和信息保护及恢复等。
(3)PLC具有较强的易操作性,它具有编程简单、操作方便、维修容易等特点,因对操作和维修人员的技能要求降低,容易学习和掌握,不容易发生操作的失误[8-10]。
因此,PLC控制系统已成为目前在电梯控制系统中使用最多的控制方式,倍受人们重视和喜爱。
(完整word版)PLC三层电梯控制系统的模拟编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)PLC三层电梯控制系统的模拟)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)PLC三层电梯控制系统的模拟的全部内容。
实验十三层电梯控制系统的模拟在三层电梯控制系统的模拟实验区完成本实验一、实验目的1、通过对工程实例的模拟,熟练地掌握PLC的编程和程序调试方法。
2、进一步熟悉PLC的I/O连接。
3、熟悉三层楼电梯采用轿厢内外按钮控制的编程方法。
二、控制要求电梯由安装在各楼层厅门口的上升和下降呼叫按钮进行呼叫操纵,其操纵内容为电梯运行方向。
电梯轿厢内设有楼层内选按钮S1~S3,用以选择需停靠的楼层。
L1为一层指示、L2为二层指示、L3为三层指示,SQ1~SQ3为到位行程开关.电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向的呼叫均无效。
例如,电梯停在一层,在三层轿厢外呼叫时,必须按三层上升呼叫按钮,电梯才响应呼叫(从一层运行到三层),按三层下降呼叫按钮无效;反之,若电梯停在三层,在一层轿厢外呼叫时,必须按一层下降呼叫按钮,电梯才响应呼叫,按三层上升呼叫按钮无效,依此类推.三、编制梯形图并写出程序,248LD M3.1280AN I0.0 249AN I0。
1281AN T43250TON T75,282AN T61251+30283AN T71252TON T76,284= Q0。
5 253+50285= M1.2 254LD I0.1286LD M0。
1 255O I0.1287AN T43256 A I0。
《微机应用系统设计》课程设计报告
题目:基于数码管的电梯显示系统
专业班级:电子信息科学与技术12101班
设计学生:
指导教师:
完成时间:2014年6 月23 日
物理与电子科学学院
源程序:
DATA SEGMENT
SEGCOD DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
LDKEY DW ? ;保存的楼层
LDKEY1 DW ? ;取到的楼层
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START: MOV AX,DATA
MOV DS,AX
MOV AX,0
MOV LDKEY,AX ;将变量的值赋值为0
;初始化8255,
MOV DX,0206H ;8255控制口地址
MOV AL,83H ;A口作为输出,B口作为输入,C口低4位作为输入,高4
位作为输出
OUT DX,AL
;初始化8253
MOV DX,0406H ;初始化8253工作方式
MOV AL,36H ;计数器0,方式3
OUT DX,AL
MOV CX,0
MOV DX,0400H ;装入计数初值
MOV AL,7CH ;37500分频
OUT DX,AL
MOV AL,92H
OUT DX,AL
;楼层处理部分
XU: CALL KEY ;调用扫描按键
GO: MOV DX,0204h
IN AL,DX
TEST AL,1
JNZ GO ;等待按下OK键
MOV AX,LDKEY1
CMP AX,LDKEY
JB JIAN ;取到的楼层比目前楼层低
JMP JIA
;上升处理
JIA: CMP AX,LDKEY
JE XU ;按键与原来值相等,则继续扫描
MOV CX,10H
CALL DENG ;点亮上升灯
CALL DELAY
MOV AX,LDKEY1
JIAE: MOV CX,LDKEY ;LDKEY加1
ADD CX,1
MOV LDKEY,CX
CALL DISP
CALL DELAY
CMP AX,LDKEY
JNZ JIAE
CALL SPEAK
JMP XU
;下降处理
JIAN: MOV CX,20H
CALL DENG ;点亮下降灯
CALL DELAY
MOV AX,LDKEY1
JIANE: MOV CX,LDKEY ;LDKEY减1
SUB CX,1
MOV LDKEY,CX
CALL DISP
CALL DELAY
CMP AX,LDKEY
JNZ JIANE
CALL SPEAK
JMP XU
;发声子程序
SPEAK: MOV DX,0204H
MOV AL,40H
OUT DX,AL
CALL DELAY
MOV DX,0204H ;灯灭部分
MOV AL,0H
OUT DX,AL
RET
;灯显示
DENG: MOV DX,0204H ;PC口地址
MOV AX,CX
OUT DX,AL
RET
;数码管显示
DISP: MOV BX,OFFSET SEGCOD
ADD BX,LDKEY
MOV AL,[BX]
MOV DX,0200H ;向端口A输出,使数码管显示
OUT DX,AL
SUB BX,LDKEY ;将BX值变为原来值
MOV AX,LDKEY1
RET
;按键扫描
KEY: MOV DX,0202H
IN AL,DX
CMP AL,0FFH
JZ KEY ;等待按键按下
NOT AL ;将键值取反
MOV BL,1
MOV CX,8
JIXUY: SHR AL,1 ;判断按键值
JC FOUND
INC BL
JMP JIXUY
FOUND: MOV BH,0
MOV LDKEY1,BX
RET
;延迟子程序
DELAY: MOV CX,0FFFFH
DELAY1: NOP
NOP
NOP
LOOP DELAY1
RET
CODE ENDS
END START
设计总结:。