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

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。
电梯模拟课程设计方案模板

随着城市化进程的加快,电梯作为一种重要的交通工具,其安全性和智能化程度日益受到重视。
为了让学生更好地了解电梯的工作原理、控制方法及维护保养,本课程设计旨在通过模拟电梯运行,让学生在理论与实践相结合的过程中,掌握电梯相关知识和技能。
二、课程目标1. 理解电梯的基本组成和工作原理;2. 掌握电梯控制系统的编程方法;3. 熟悉电梯的维护保养流程;4. 培养学生的创新思维和团队协作能力。
三、课程内容1. 电梯基本知识(1)电梯的组成及工作原理;(2)电梯的驱动方式及控制系统;(3)电梯的运行参数及安全标准。
2. 电梯控制系统设计(1)PLC编程基础;(2)电梯控制系统的硬件设计;(3)电梯控制系统的软件设计;(4)电梯控制系统的调试与优化。
3. 电梯维护保养(1)电梯的日常维护保养;(2)电梯的故障排除及应急处理;(3)电梯的定期检修与维护。
1. 教学方法(1)理论教学:采用多媒体教学手段,结合实物展示,使学生了解电梯的基本知识;(2)实践教学:通过模拟电梯运行,让学生亲自动手操作,掌握电梯控制系统的编程、调试与优化;(3)项目教学:以实际电梯为例,让学生参与电梯维护保养的全过程,提高学生的实际操作能力。
2. 教学过程(1)课堂讲授:教师讲解电梯基本知识、控制系统设计及维护保养等内容;(2)实验操作:学生在教师指导下,完成电梯控制系统的编程、调试与优化;(3)项目实践:学生分组进行电梯维护保养,完成项目任务。
五、课程评价1. 课堂表现:学生出勤率、课堂纪律及参与度;2. 实验操作:学生完成电梯控制系统的编程、调试与优化情况;3. 项目实践:学生参与电梯维护保养的项目完成情况;4. 期末考核:理论考试、实践操作考核及项目答辩。
六、课程总结通过本课程设计,学生能够全面了解电梯的相关知识,掌握电梯控制系统的编程、调试与优化方法,以及电梯的维护保养流程。
同时,培养学生的创新思维和团队协作能力,为今后从事电梯行业打下坚实基础。
电梯课程设计---电梯模拟控制系统设计

电气控制技术课程设计任务书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可编程控制器在工厂中的应用也越来越广泛,而且几乎涉及到工厂的各个方面,包括供电、生产、物料管理、运输等等。
电梯模拟程序课程设计

电梯模拟程序课程设计一、课程目标知识目标:1. 让学生理解电梯的工作原理,掌握电梯运行的模拟编程知识。
2. 使学生掌握利用流程图描述电梯运行逻辑的方法。
3. 帮助学生理解并运用条件语句和循环语句实现电梯模拟程序。
技能目标:1. 培养学生运用编程语言(如Scratch或Python)编写简单电梯模拟程序的能力。
2. 培养学生通过流程图分析问题、解决问题的能力。
3. 提高学生团队协作、沟通交流的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生主动探索新知识的热情。
2. 培养学生严谨、细心的学习态度,增强面对困难的勇气和毅力。
3. 培养学生遵守程序设计规范,养成良好的编程习惯。
课程性质:本课程为信息技术学科的课程,以项目式学习为主,注重实践操作和团队合作。
学生特点:学生为五年级学生,具备一定的信息技术基础,对新事物充满好奇,喜欢动手操作。
教学要求:教师需引导学生通过自主探究、小组合作等方式完成课程内容,注重培养学生的实践能力和创新精神。
同时,关注学生的个体差异,提供有针对性的指导。
通过本课程的学习,使学生能够达到上述课程目标,实现具体的学习成果。
二、教学内容1. 电梯工作原理介绍:包括电梯的基本结构、运行原理、信号控制系统等,让学生对电梯的运行机制有整体认识。
2. 编程语言基础:回顾并巩固Scratch或Python编程语言的基础知识,如变量、列表、条件语句、循环语句等,为编写电梯模拟程序打下基础。
3. 流程图设计:学习如何利用流程图描述电梯运行的逻辑过程,分析电梯运行中的各种情况,并进行流程图设计。
4. 电梯模拟程序编写:根据流程图,运用所学编程知识,分组合作编写电梯模拟程序,实现基本的运行、停止、开门、关门等功能。
5. 程序调试与优化:指导学生如何调试程序,发现并解决程序中的问题,提高程序的稳定性和运行效率。
教学内容安排和进度:第一课时:电梯工作原理介绍,回顾编程语言基础知识。
第二课时:学习流程图设计,分析电梯运行逻辑。
电梯微机原理课程设计

电梯微机原理课程设计一、课程目标知识目标:1. 学生能够理解电梯微机原理的基本概念,掌握电梯控制系统的组成及其功能。
2. 学生能够描述电梯运行的常见信号流程,了解电梯故障诊断的基本方法。
3. 学生掌握电梯速度、加速度及制动力等关键参数的计算与应用。
技能目标:1. 学生能够运用所学知识,分析电梯运行过程中可能出现的故障,并提出合理的解决方案。
2. 学生能够设计简单的电梯控制系统,运用编程实现电梯的基本功能。
3. 学生通过实际操作,掌握电梯维护保养的基本技能,提高实践操作能力。
情感态度价值观目标:1. 学生对电梯微机原理产生兴趣,培养主动学习和探究的精神。
2. 学生认识到电梯安全运行的重要性,增强安全意识,养成遵守规范的良好习惯。
3. 学生通过小组合作,培养团队协作精神,提高沟通与交流能力。
课程性质:本课程为电气工程及其自动化专业选修课,旨在帮助学生掌握电梯微机原理及控制技术。
学生特点:学生具备一定的电气基础知识,对电梯控制技术有一定了解,但实践经验不足。
教学要求:结合理论与实践,注重培养学生的动手能力和创新能力,提高学生分析问题、解决问题的能力。
通过本课程的学习,使学生能够将理论知识应用于实际工作中,为未来从事电梯行业及相关领域工作奠定基础。
二、教学内容1. 电梯概述:电梯的发展历程、分类及主要技术参数。
教材章节:第一章 电梯概述2. 电梯控制系统:电梯控制系统的组成、工作原理及功能。
教材章节:第二章 电梯控制系统3. 电梯微机原理:微机在电梯控制中的应用,微机控制系统硬件、软件设计。
教材章节:第三章 电梯微机原理4. 电梯运行控制算法:电梯速度、加速度、制动力等参数的计算与应用。
教材章节:第四章 电梯运行控制算法5. 电梯故障诊断与维修:电梯故障分类、诊断方法及维修措施。
教材章节:第五章 电梯故障诊断与维修6. 电梯安全与防护:电梯安全系统设计,防护措施及安全规范。
教材章节:第六章 电梯安全与防护7. 电梯控制系统设计:电梯控制系统的设计方法、步骤及实例。
微机原理课程设计(电梯)

微机原理课程设计(电梯)计算机原理课程设计实验报告学院:专业:班级:姓名:学号:成绩:目录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,使用汇编语言编程。
武科大微机原理课程设计

一、设计题目键控数据采集及数值显示电路设计二、设计任务按不同的数字键(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”键后显示程序终止正常,退出系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二○一三~二○一四学年第二学期电子技术学院电子信息工程系课程设计报告书班级:姓名:课程名称:微机原理及应用课程设计学时学分: 1 周 1 学分指导老师:**二○一三年十二月三十一日一、课程设计目的:综合运用本课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。
二、课程设计时间安排:第一天:教师布置设计任务,讲解设计要求,提示设计要点。
第二~三天:查阅资料(在图书馆或上网),提出设计方案。
第三~七天:画出详细设计图(电路图),编写程序,调试程序,得出实验结果并写出设计报告。
三、课程设计选题:设计要求:(1). 在1-- 8楼之间一次可输入多个任意楼层号连续控制电梯按指定楼层号顺序上升与下降.以上过程完成后可重新输入任意楼层号连续控制电梯按指定楼层号顺序上升与下降.只有按ESC键才退出程序返回DOS状态。
例如: 1-3-5-7-6-4-2-1 (可观察教十楼电梯的实际运行情况).(2). 在1 -- 7 楼之间按任意顺序不连续控制电梯上升与下降. 按一次计算机键盘的上箭头电梯上升一楼,按一次计算机键盘的下箭头电梯下降一楼. (上箭头的ASCII码19H , 下箭头的ASCII码1AH . )(3). 在电梯上升与下降过程中,要显示出1--7 楼之间所要到达的楼层数,同时还要用箭头显示电梯是上升状态还是下降状态.(4). 电梯运行到指定楼层后,打开电梯门,然后关门继续运行.(5). 电梯运行时, 在任意时刻遇到紧急情况时应能实时中断电梯运行.也可以在任意时刻恢复电梯运行.(按A/a 键模拟中断发生,电梯停止运行.按B/b 键恢复电梯运行)(6). 在计算机屏幕上将电梯的平面模型改成三维立体模型.(7). 在电梯旁画一个小方块.这个小方块随电梯上升而上升,下降而下降.以增加电梯运行时的动感.(8). 电梯仿真软件运行时,应在计算机屏幕上详细说明其使用方法,以及本软件作者姓名和日期.报告要求:(1). 在报告中应对电梯仿真软件的设计思想,设计方法用文字详细说明.(2). 在报告中应有完整的程序清单(必需加注释).(3). 在报告中应有完整的程序框图.(4). 谈谈自己通过这次设计实践的收获和体会.参考文献:[1] 朱定华,微机原理、汇编与接口技术,清华大学出版社,2005[2] 徐士良,PC机C图形编程手册,清华大学出版社,1994四、课程设计内容:1、程序模块:2、程序流程图:3、程序设计思路:电梯模拟程序主要是一个画图程序,程序需要利用一连串的画图指令来实现动画效果。
首先,程序中将用到INT 10H的一系列指令来实现画图功能。
要实现动画效果,如电梯门开关、电梯上下移动就必须在生成新的图形同时将老的图形擦去,所以运动的过程分为擦去原有图像和画新图像两部分完成。
当新的图形可以直接覆盖原有效果时则直接画新图形即可,新图形无法覆盖老效果时则首先要用背景颜色将原有图形重绘一次,这样就达到了擦出的效果。
CPU完成一连串画图指令速度是非常迅速的,为了清除观察到动画效果所以添加了一个延时模块,在画图命令中调用此命令可以清晰观察到动画效果。
其次,还需要INT 21H 的9H号功能实现字符串的显示功能。
由于需要键盘输入电梯控制相关指令,所以需要用到INT 16H的1H号功能停止和继续电梯的运动;还需要INT 21H的0AH号功能实现输入兵显示字符串;以及INT 21H的0CH号功能清空键盘缓存。
在此基础上,用一系列的循环、判断、跳转命令将各种功能结合起来最终搭建成模拟电梯程序。
4、程序代码及注释: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 10HENDM;---------------------------------------HENG MACRO X1,Y1,COLOR,X2 ; 写横的宏LOCAL BH1 ; 定义标号MOV CX,X1 ; 起始点横作标-->CXMOV DX,Y1 ; 起始点纵作标-->DXBH1: MOV AH,0CH ; 写象素MOV AL,COLOR ; 设定颜色参数-->ALINT 10HINC CXCMP CX,X2 ; 写至终点横作标为止JNZ BH1ENDM;---------------------------------------SHU MACRO CX1,CY1,COLOR,CY2 ; 写竖的宏LOCAL BH2 ; 定义标号MOV CX,CX1MOV DX,CY1BH2: MOV AH,0CHMOV AL,COLOR ; AL=(00--0FH)共16种颜色.INT 10HINC DXCMP DX,CY2JNZ BH2ENDM;---------------------------------------DELAY MACRO ;延时1s的宏LOCAL READPUSH DX ;入栈,保护原有DX、CX中的数据PUSH CXSUB AX,AXINT 1AH ;INT 1AH的0号功能读当前时钟值,CX:DX=时钟计数值MOV TIME,DXMOV TIME[2],CXREAD: SUB AX,AXINT 1AHSUB DX,TIMESBB CX,TIME[2]CMP DX,DLYJB READPOP CX ;出栈,恢复现场POP DXENDM;---------------------------------------UP MACRO N,DX1 ;小方块上升的宏LOCAL UPA,UPB ; 定义标号MOV AL,N ;小方块从N-1层上升至N层MOV CH,30 ;小方块上升一层,并且将下一层的小方块清除 MUL CH ;30*N个像素MOV DX,430SUB DX,AX ;430-30*N个像素得到画小方块的纵坐标下限值 MOV [DZ],DXADD DX,20 ;每个小方块边长为20个像素MOV DX1,DX ;得到纵坐标上限值UPA: HENG 170,[DZ],0CH,190 ;画小方块INC [DZ]MOV AX,DX1CMP [DZ],AXJNZ UPAADD DX,11 ;坐标调整到移动之前的坐标MOV [DZ],DXADD DX,20MOV DX1,DXUPB: HENG 170,[DZ],00H,190 ;擦原小方块INC [DZ]MOV AX,DX1CMP [DZ],AXJNZ UPBENDM;---------------------------------------DOWN MACRO N,DX1 ;小方块下降的宏LOCAL DOWNA,DOWNB ; 定义标号MOV AL,N ;小方块从N+1层下降至N层MOV CH,30 ;小方块下降一层,并且将上一层的小方块清除 MUL CHMOV DX,430SUB DX,AXMOV [DZ],DXADD DX,20MOV DX1,DXDOWNA: HENG 170,[DZ],0CH,190 ;画小方块INC [DZ]MOV AX,DX1CMP [DZ],AXJNZ DOWNASUB DX,49MOV [DZ],DXADD DX,20MOV DX1,DXDOWNB: HENG 170,[DZ],00H,190 ;擦原有小方块INC [DZ]MOV AX,DX1CMP [DZ],AXJNZ DOWNBENDM;---------------------------------------CLOSE MACRO ;画电梯关门状态的宏LOCAL CEMOV [DZ],220CE: HENG 210,[DZ],09H,370 ;电梯关门INC [DZ]CMP [DZ],420JNZ CESHU 291,220,02H,420 ;电梯大门缝隙 SHU 290,220,02H,420SHU 289,220,02H,420ENDM;---------------------------------------HALF MACRO ;画电梯半开门状态的宏LOCAL HFMOV [DZ],221HF: HENG 210,[DZ],09H,250 ;电梯半开门 HENG 252,[DZ],07H,328HENG 330,[DZ],09H,370INC [DZ]CMP [DZ],420JNZ HFSHU 251,220,02H,420 ;电梯大门缝隙 SHU 329,220,02H,420ENDM;---------------------------------------FULL MACRO ;画电梯全开门状态的宏LOCAL FLMOV [DZ],221FL: HENG 210,[DZ],09H,215 ;电梯全开门 HENG 217,[DZ],07H,363HENG 365,[DZ],09H,370INC [DZ]CMP [DZ],420JNZ FLSHU 216,220,02H,420 ;电梯大门缝隙 SHU 364,220,02H,420ENDM;---------------------------------------PAUSE MACRO ;电梯紧急暂停的宏LOCAL WAIT,WANSUB AX,AXMOV AH,1CMP AL,'a' ;读取键盘缓存中是否有"a",有就进入暂停等待循环,没有则退出JNZ WANMOV DX,0301HPOSMOV DX,OFFSET MSG7 ;显示MSG7MOV AH,9INT 21HMOV AH,0CH ;清空键盘缓存INT 21HWAIT: CLC ;CF=0MOV AH,1INT 16HCMP AL,'b' ;检测键盘缓存中是否有"b",有就退出暂停等待循环,没有则继续循环JNZ WAITWAN: MOV DX,0301HPOSMOV DX,OFFSET MSG6 ;用于将MSG7的信息擦除MOV AH,9INT 21HMOV AH,0CHINT 21HENDM;---------------------------------------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 the elevator running, please press "a" to emergency stop. $'MSG7 DB 'Please press "b" to continue. $'MSG8 DB 'WUST LiGang 2014.2.5 $'DAT DB 0FFH,0,255 DUP(0)DLY EQU 18DZ DW 0TIME DW 0,0NUM1 DB 1NUM2 DB 1COUNT DB 0DX2 DW 0data ends;---------------------------------------stacks segmentSTA DW 100 DUP(0)TOP DW ?stacks ends;---------------------------------------code segmentassume cs:code,ds:data,ss:stacks;---------------------------------------start proc farmov ax,datamov ds,axmov ax,stacksmov ss,axmov ax,datamov es,axpush axpush bxpush cxpush dxpush sipush diMOV CX,0MOV DX,2479HMOV BH,7MOV AX,0601HINT 10HMOV AX,0012H ;置图形显示方式INT 10H ;640列*480行,16色.MOV DX,0 ;光标位置初始化POSHENG 220,99,0AH,420 ;信息栏外边框 HENG 220,151,0AH,420SHU 220,99,0AH,151SHU 420,99,0AH,151HENG 223,102,0AH,417 ;信息栏内边框 HENG 223,148,0AH,417SHU 223,102,0AH,148SHU 417,102,0AH,148CLOSE ;电梯大门处于关闭状态HENG 210,220,02H,370 ;电梯大门缝隙边框 HENG 210,420,02H,370SHU 210,220,02H,420SHU 370,220,02H,420HENG 209,219,02H,371 ;加粗边框SHU 209,220,02H,420SHU 371,220,02H,420MOV [DZ],219MOV DX1,210MOV DX2,370SB1: HENG DX1,[DZ],03H,DX2 ;三维电梯上侧面 DEC [DZ]INC DX1INC DX2CMP [DZ],180JNZ SB1MOV [DZ],371MOV DX1,220MOV DX2,420SB2: SHU [DZ],DX1,03H,DX2 ;三维电梯右侧面 INC [DZ]DEC DX1DEC DX2CMP [DZ],410JNZ SB2MOV [DZ],421SB3: HENG 160,[DZ],0EH,200 ;画电梯框架SUB [DZ],30CMP [DZ],151JNZ SB3SHU 160,181,0EH,422SHU 200,181,0EH,422MOV [DZ],400BRICK: HENG 170,[DZ],0CH,190 ;画初始小方块INC [DZ]MOV AX,420CMP [DZ],AXJNZ BRICKMOV DX,072BHPOSMOV DL,NUM1ADD DL,30HMOV AH,2INT 21H ;初始楼层显示"1"MOV DX,1C3BHPOSMOV DX,OFFSET MSG8 ;显示MSG8MOV AH,9INT 21HMOV DX,0723HPOSMOV DX,OFFSET MSG3 ;显示MSG3MOV AH,9INT 21HMOV DX,081DHPOSMOV DX,OFFSET MSG4 ;显示MSG4MOV AH,9INT 21HMOV DX,082DHPOSMOV DX,OFFSET MSG5 ;显示MSG5MOV AH,9INT 21HMOV DX,0301HPOSMOV DX,OFFSET MSG6 ;显示MSG6MOV AH,9INT 21HINPUT: MOV DX,0101HPOSMOV DX,OFFSET MSG1 ;显示MSG1MOV AH,9INT 21HMOV DX,0143HPOSMOV DX,OFFSET DAT ;输入并显示字符串MOV AH,10INT 21HMOV AL,DAT+1MOV COUNT,AL ;记录输入的字符个数MOV BP,2MOV AL,DAT[BP]CMP AL,'w' ;输入w则上升一层JE UP1CMP AL,'s' ;输入s则下降一层JE DOWN1CMP AL,31H ;输入小于1的ACSⅡ码则退出JB OVERCMP AL,38H ;输入大于8的ACSⅡ码则退出JA OVERAND AL,0FH ;输入1至8则进入多楼层控制命令循环TARGET1 MOV NUM1,ALTARGET1: ADD BP,2 ;因为输入格式为"1-2-6",每次BP偏移两位起到了仅取有效位数字的作用MOV AL,DAT[BP]AND AL,0FH ;将字符转换为数字CMP AL,1 ;检测后续输入的字符是否合法,超出1~8范围则返回输入界面JB INPUTCMP AL,8JA INPUTMOV NUM2,ALMOV DX,0831HPOSMOV DL,DAT[BP] ;显示电梯下一站要停的楼层数MOV AH,2INT 21HDELAYTARGET2: MOV AL,NUM2CMP AL,NUM1 ;若下一站楼层大于当前楼层,则跳至上升命令段 JA TARGET3 ;若下一站楼层小于当前楼层,则在当前命令段MOV AL,NUM2CMP AL,NUM1 ;第二次比较,若到达目标楼层或两站楼层相同则跳至SHOW命令显示开关门动画JZ SHOWDEC NUM1PAUSE ;在画图命令之前插入暂停命令,确保电梯在任何楼层时都能暂停DOWN NUM1,DX1 ;电梯下降MOV DX,0829HPOSMOV DL,19H ;显示下箭头MOV AH,2INT 21HMOV DX,072BHPOSMOV DL,NUM1 ;显示当前楼层数ADD DL,30H ;将数字转换为ASCⅡ码MOV AH,2INT 21HDELAY ;电梯在每一层停留1S以便观察JMP TARGET2TARGET3: INC NUM1PAUSE ;在画图命令之前插入暂停命令,确保电梯在任何楼层时都能暂停UP NUM1,DX1 ;电梯上升MOV DX,0829HPOSMOV DL,18H ;显示上箭头MOV AH,2INT 21HMOV DX,072BHPOSMOV DL,NUM1 ;显示当前楼层数ADD DL,30H ;将数字转换为ASCⅡ码MOV AH,2INT 21HDELAY ;电梯在每一层停留1S以便观察JMP TARGET2UP1: CMP NUM1,8JNB INPUTINC NUM1MOV DX,0831HPOSMOV DL,NUM1 ;显示电梯下一站要停的楼层数ADD DL,30HMOV AH,2INT 21HUP NUM1,DX1 ;电梯上一层MOV DX,0829HMOV DL,18H ;显示上箭头MOV AH,2INT 21HMOV DX,072BHPOSMOV DL,NUM1 ;显示当前楼层数ADD DL,30H ;将数字转换为ASCⅡ码MOV AH,2INT 21HJMP SHOWDOWN1: CMP NUM1,1JNA INPUTDEC NUM1MOV DX,0831HPOSMOV DL,NUM1 ;显示电梯下一站要停的楼层数ADD DL,30HMOV AH,2INT 21HDOWN NUM1,DX1 ;电梯下一层MOV DX,0829HPOSMOV DL,19H ;显示下箭头MOV AH,2INT 21HMOV DX,072BHPOSMOV DL,NUM1 ;显示当前楼层数ADD DL,30H ;将数字转换为ASCⅡ码MOV AH,2INT 21HSHOW: MOV DX,0829HPOSMOV DL,'-' ;到达楼层时"Direction"显示"-"MOV AH,2INT 21HDELAY ;电梯门开关每个动作间停留1S以便观察PAUSE ;每个动作后插入PAUSE使电梯能在开关门时暂停 HALFDELAYPAUSEDELAYPAUSEHALFDELAYPAUSECLOSEDELAYPAUSESUB AX,AXINT 1AHMOV TIME,DXMOV TIME[2],CXMOV AH,0CHINT 21H ;清空键盘缓冲区MOV AL,COUNTCBW ;将字节扩展为字CMP BP,AX ;若此时没到输入数据最后一位则进入TARGET1,若已到最后一位则进入INPUT开始新一轮运行 JB TARGET1JMP INPUTOVER: MOV DX,101CH ;显示MSG2POSMOV DX,OFFSET MSG2MOV AH,9INT 21HMOV DL,0FFHMOV AH,6INT 21HJZ OVERMOV CX,0MOV DX,2479HCLEARMOV AX,4C00HINT 21H ; 返回DOS.MOV AH,02HINT 10H ; 恢复文本显示方式.pop dipop sipop dxpop cxpop bxpop axstart endp;---------------------------------------- code endsend start5、程序运行截图:程序初始界面电梯移动界面开关门状态(半开)暂停状态(第二行提示语句改变)程序退出界面五、心得体会:此次课程设计是我首次使用汇编语言进行大规模编程,在这个过程中我学到了很多“微机原理及应用”课堂上未曾提到的知识,也加深了在课堂上学到的知识,使我对于微机原理和汇编语言的掌握程度达到了新的高度。