课设 模拟电梯工作过程.docx
《课设 模拟电梯工作过程.docx》由会员分享,可在线阅读,更多相关《课设 模拟电梯工作过程.docx(15页珍藏版)》请在冰豆网上搜索。
课设模拟电梯工作过程
沈阳航空航天大学
课程设计报告
课程设计名称:
微机系统综合课程设计
课程设计题目:
模拟电梯工作过程
院(系):
计算机学院
专业:
计算机科学与技术
班级:
94010101
学号:
20090401
姓名:
指导教师:
完成日期:
2012年7月15日
目录
第1章总体设计方案1
1.1课程设计的内容和要求1
1.2课程设计原理1
1.3课程设计思路2
第2章详细设计方案2
2.1实现方法2
2.2模块设计3
2.2.1主程序流程图3
2.2.2中断程序流程图4
2.2.3电梯调度算法图5
2.3程序连线图6
第3章调试及结果分析6
3.1调试步骤及方法6
3.2实验结果7
参考文献8
附录(源程序)9
第1章总体设计方案
1.1课程设计的内容和要求
一、课程设计内容:
1.假设电梯共有3层,每层有两个按键,为等电梯的人选择上下使用。
2.电梯内和各楼层有数码指示电梯所在楼层。
3.用发光二极管提示电梯运行状态。
4.电梯内有3个按键择楼层。
二、课程设计要求:
1.认真查阅相关资料;
2.独立设计、调试并通过知道教师现场验收;
3.撰写课程设计报告。
1.2课程设计原理
根据课设题目的要求,本设计主要是利用微机应用实验平台来模拟电梯的运行,用到了平台上的一个非编码键盘、发光二极管显示、八段数码管等模块。
由于电梯有3层,则在电梯内部需要3个按键供乘电梯的人选择所要到达的楼层,而在电梯外,为等待电梯的人提供两个按键以选择电梯上和下,可以用1到3号表示电梯内可以选择的楼层,可以用键盘的“-”和“+”号表示电梯上和下的选择状态。
利用3个8段数码管显示电梯所在的楼层,1个发光二极管显示电梯的运行状态。
初始状态时候电梯处在第一层,等待电梯的人选择“+”后,电梯打开电梯门等待选择按下按键2或者3,按下后电梯开始运行,发光二极管显示相应的状态,到达所选择的楼层后,发光二极管发生相应的转变,八段数码管显示相应的楼层数字。
1.3课程设计思路
在这个模拟电梯工作过程的设计中,主要运用到了8253芯片,用于产生20ms的脉冲的用于给中断提供中断信号。
8259芯片主要用于中断处理,芯片8259则用于扫描键盘和显示所在楼层的功能,8255芯片主要用于信号的输入输出的功能。
第2章详细设计方案
2.1实现方法
通过软件编程使8253输出定时信号申请中断,在中断服务程序中扫描键盘,如果有按键,修改相应的变量位,并输出内部请求变量到8段数码管显示当前的内部请求楼层。
在主程序中,查询变量的值,根据电梯调度算法运行电梯。
程序主要包括以下主要模块:
键盘扫描程序、中断服务程序、发出中断扫描时间程序,电梯调度算法
2.2模块设计
2.2.1主程序流程图
图2.2.1主程序流程图
2.2.2中断程序流程图
图2.2.2中断程序流程图
2.2.3电梯调度算法图
图2.2.3电梯调度算法图
2.3程序连线图
图2.3程序连线图
第3章调试及结果分析
3.1调试步骤及方法
程序编写的时候,指令写错,导致软件调试出现问题,解决措施是认真阅读程序,把错误找出并改正。
实验仪器的电源没打开就开始运行程序,结果造成死机,解决措施是重新正确运行。
3.2实验结果
程序开始运行时,初始状态显示在1楼,当电梯乘客按下“+”号表示电梯上升后,进入电梯,选择按下2或者3表示要到达的楼层,当按下后,电梯上升到目的楼层后,发光二极管显示相应状态,表示电梯到达。
当乘客按下“-”号后,进入电梯,按下1或者2选择下降的楼层,电梯下降,当电梯到达后,八段数码管显示所在楼层,发光二极管显示相应状态。
能满足乘客的需要。
参考文献
[1]龚尚福.微机原理与接口技术[M].西安:
西安电子科技大学出版社,2003
[2]沈美明,温冬蝉.IBM-PC汇编语言程序设计[M].北京:
清华大学出版社,2001
[3]郑初华.汇编语言、微机原理及接口技术[M].北京:
电子工业出版社,2006
[4]王忠民.微型计算机原理[M].西安:
西安电子科技大学出版社,2003
[5]张雪兰.汇编语言程序设计[M]北京:
清华大学出版社,2006
[6]杨素行.微型计算机系统原理及应用[M]北京:
清华大学出版社,1996
附录(源程序)
z8279equ22aH
d8279equ228H
ledmodequ00;左边输入,八位显示外部译码八位显示
ledmodequ38H;扫描频率
datasegment
keykinddb0
n0db0
n1db0
n2db0
oldkeydb0
leddb06h,5bh,4fh,0,0,0,0,0,0
dataends
codesegment
assumecs:
code,ds:
data
main:
cli
movax,cs
movds,ax
movax,cs
movds,ax
callinit8255
callinit8259
callinit8253
movdx,z8279;置空FIFO寄存器
moval,0d0H
outdx,al
movdx,d8279
moval,06H
outdx,al
movcx,200
loop$
movdx,212h
moval,0h
outdx,al
moval,0h
movdx,22ah
outdx,al
moval,30h
outdx,al
moval,6ah
sti
jmp$
init8255:
moval,90h
movdx,213h
outdx,al
movdx,211h
moval,01h
outdx,al
ret
init8259:
moval,13h
movdx,220h
outdx,al
movdx,221h
moval,30h
outdx,al
moval,03
outdx,al
moval,0feh;ocw1
outdx,al
inal,dx
movax,0
movds,ax
movsi,30h*4
movax,offsetintr1
mov[si],ax
movax,cs
mov[si+2],ax
ret
init8253:
pushax
moval,36h
movdx,203h
outdx,al
movax,6144
movdx,200h
outdx,al
moval,ah
outdx,al
popax
ret
delay1:
movdx,211h
moval,0ffh
outdx,al
movbx,200;延时2秒
wait1:
movcx,300
nop
nop
nop
nop
loop$
decbx
jnzwait1
ret
delay2:
movdx,211h
moval,00h
outdx,al
movbx,600;延时
wait2:
movcx,800
nop
nop
nop
nop
loop$
decbx
jnzwait2
ret
intr1:
callreadkey
cmpal,12H;是减小
jedown
cmpal,13H
jeup
iret
readkey:
movdx,z8279;置空FIFO寄存器
moval,0c2H
outdx,al
waiit:
nop
movax,0
inal,dx
movbl,al
andal,80H
cmpal,80H
jewaiit;FIFO正在清除期间则跳转等待
moval,bl
andal,0fH
cmpal,00H
jewaiit;无键按下则等待
movdx,Z8279
moval,82H;置读FIFORAM命令字
outdx,al
movdx,d8279;读入FIFORAM内容
inal,dx
ret
up:
movdx,211h
moval,00h
outdx,al
calldelay1
callreadkey
cmpal,02h
jnza3
movdx,d8279
moval,5bH
outdx,al
calldelay2
movdx,211h
moval,0ffh
outdx,al
jmpintr1
down:
movdx,211h
moval,0ffh
outdx,al
calldelay1
callreadkey
cmpal,02h
jnza1
calldelay2
movdx,d8279
moval,5bH
outdx,al
movdx,211h
moval,0ffh
outdx,al
jmpintr1
a3:
movdx,z8279;置空FIFO寄存器
moval,0c2H
outdx,al
calldelay2
movdx,d8279
moval,5bH
outdx,al
calldelay2
movdx,d8279
moval,4fH
outdx,al
movdx,211h
moval,0ffh
outdx,al
jmpintr1
a1:
movdx,z8279;置空FIFO寄存器
moval,0c2H
outdx,al
calldelay2
movdx,d8279
moval,5bH
outdx,al
calldelay2
movdx,d8279
moval,06H
outdx,al
movdx,211h
moval,0ffh
outdx,al
jmpintr1
codeends
endmain
课程设计总结:
通过本次课程设计,是我对所学的微机原理知识有了更深的理解,对各芯片,特别是8255、8259、8253、8279等常用芯片的功能和使用方法有了更加深层的掌握,也能更加熟练的运用这些芯片来实现各种功能。
在用汇编语言编写程序时,使我更加熟悉各种语句的作用和使用发法,为我以后编写更加大型的汇编语言程序打下了坚实的基础。
但通过这次课程设计,我也发现了许多在学习中没有发现和注意到的缺点和不足,在连线时,不能很快的找到实验箱上的相应接口,这是我对实验箱和芯片不够熟悉导致的;还有就是,在调试运行时,程序很不稳定,这很有可能是我对软件和硬件的结构和功能还不是很透彻,加之第一次用汇编语言编写程序,不可能编写出高效又健壮的程序来,所以,这可能是运行时出现不稳定的主要原因;再有,调试程序时,一些调试方法不够熟练,很多调试方法和工具都不知道,但是,以后有机会我会多用相关软件编写汇编语言,这样就能更加熟练地使用软件使所编写的程序更加完美。
在本次课设中,老师给予了我无私的帮助,这次课设我能顺利的完成,与老师的帮助是分不开的,在这要感谢老师的谆谆教导,我不会辜负老师的期望,我会在以后的学习工作中努力完善自己的。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩