电梯监控系统设计.docx
《电梯监控系统设计.docx》由会员分享,可在线阅读,更多相关《电梯监控系统设计.docx(46页珍藏版)》请在冰点文库上搜索。
电梯监控系统设计
计算机硬件课程设计报告
电梯监控系统设计
学生:
专业:
班级:
重庆大学自动化学院
电梯监控系统设计
摘要:
用汇编语言以及实验箱设计电梯系统,系统功能包括6层楼的上行键和上行键,电梯内开关键,电梯内按键,并且用三色LED灯显示电梯所在楼层和电梯门状态,每次停顿时自动开门,5秒后自动关门,若按下电梯内的关门键,直接关门。
若按着电梯内的开门键,或该楼层的上行键或下行键时,电梯门一直打开,直到松开按键。
关键词:
电梯监控,8245定时器,8259中断控制,三色LED灯
引言
为了更好的熟悉计算机控制技术,熟悉实验箱的编译和操作环境,结合计算机软件和硬件知识,使所学的计算机相关知识得到更好的巩固和应用,并更好的结合实际的使用环境,我们设计了一套电梯监控系统,在完成任务书上基本功能的基础上,又添加一些人性化的设计,让该系统更加丰富。
1系统要求
本系统实现的基本功能和要求:
参看课程设计任务书。
本系统的扩展功能有:
(1)电梯内按键小灯提示功能:
该功能主要是显示电梯内按键状态,方便了解哪些楼层有COMD命令。
(2)模拟电梯开关动态显示功能:
本设计使用两片三色LED灯以符号“[]”代表开门状态,以“][”代表关门状态,方便我们了解电梯是否开门。
(3)电梯上下停状态图像显示功能:
我们使用两片三色LED灯以三种符号分别表示电梯向上、向下、停止三种状态,用这种方式比使用颜色更加直观。
(4)模拟电梯运行功能:
本设计充分利用定时器定时的1秒基本中断时间,通过判别OPCL,在中断子程序中进入相应程序段,使电梯在运行过程中有3秒(可更改)的模拟运行时间,在该时间段内,键盘、小灯都处于运行状态,这是本系统更加灵活,更加真实。
(5)电梯长开报警功能:
本设计考虑电梯在长时间打开的状态下提示报警功能,这和实际中的电梯是相似的,这使系统更人性化。
**************************************************************************
考研!
!
!
【真题购买】
360专业课一分店
360专业课二分店
链接:
淘宝:
360专业课+专业科目+科目代码
【我们的考研群】
重庆大学2016考研群:
282667819
重庆大学考研群:
58774321
自动化专业考研群:
302556062
360专业课考研交流群:
299708907
华南理工考研群:
239445831
中山大学考研群:
421593707
电子科技大学考研群:
436179631
**************************************************************************
2系统设计
2.1系统整体结构
图1系统整体结构图
图2硬件连接图
硬件连接说明
第四片8255
7
6
5
4
3
2
1
0
PA
蜂鸣
GATE1
D6
D5
D4
D3
D2
D1
PB
K8
K7
K6
K5
K4
K3
K2
K1
PC
P3
P2
P1
P0
Q2
Q1
Q0
8254
GATE1<->PA6CLK1<->47KHzOUT1<->IRQ0CS8254<->CS1(300H)
8259
IRQ0<->OUT1INT1<->INTRSP/1<->+5VCS-1<->CS2(320H)
本设计的系统设计如图1和图2所示,键盘扫描和按键扫描部分将扫描到的楼层上行、下行以及电梯内按键命令保存到指定存储区;80486CPU根据保存的数据执行电梯控制程序,并将电梯状态数据保存到指定存储区,根据需要调用8254计时器,使其产生定时中断信号,通过8259中断控制器发送到80486CPU中;显示单元将根据电梯状态数据显示,根据蜂鸣控制字判别是否送出蜂鸣使能信号。
任务分配
2.2各部分硬件设计
2.2.1键盘扫描和按键扫描
图34×3键盘和开关连接图
对于键盘扫描本组创造性地利用键特征值与所需数据的关系设计了一套转换算法,节省了扫描时间,简化了转换算法,降低了程序调试的难度。
首先主程序所要求将每层楼的上下键命令分别保存到UP和DOWN两个只有1字节的存储空间中,若该楼层有命令则对应的位置1,相反置0,考虑4×3小键盘的布置,4行3列,又考虑到人们的习惯,因此,我们将1、3两行规定为1~6楼的上升命令(6楼除外),2、3两行规定为1~6楼的下降命令(1楼除外)。
然后是键盘扫描,我们先按行输入使,1~4行依次置零,同时读取列信号,第一行的列信号取反后保存于UP的低3位,第二行的列信号取反后保存于DOWN的低3位,第三行的列信号取反后左移3位保存于UP,第四行的列信号取反后左移3位保存于DOWN中,最后将UP的第6位(也就是第六楼的上)置0,将DOWN的第1位(也就是第一楼的下)置0,考虑主程序的调用,键盘扫描子程序并没有写为死循环,同时由于按键按下后会弹起,考虑主程序需要,保存时采取“求或”运算,这样将一直保存按键值直至程序将其清零。
指定存储器保存格式1
7
6
5
4
3
2
1
0
UP
0
0
0
五楼
四楼
三楼
二楼
一楼
DOWN
0
0
六楼
五楼
四楼
三楼
二楼
0
最后是按键扫描,按键扫描的前六位表示电梯内6层楼的命令,第七位为开门键,第八位为关门键。
按键前六位和后两位保存的方式是不同的,前六位按键后就会一直保存(即使拨回开关),直至程序将其清零,故采用“求或”的方式保存与COMD的前六位。
后两位的保存采用的是跟踪方式,即开关拨向前(或后),COMD对应位也同时置1(或0)。
指定存储器保存格式2
COMD
7
6
5
4
3
2
1
0
注释
关门
开门
六楼
五楼
四楼
三楼
二楼
一楼
保存方式
直接复制
求或
图4键盘扫描流程图
2.2.2显示单元
图5三色LED灯电路连接图
图6显示小灯连接图
显示子程序要采取查表转换实现,显示子程序主要包括:
三色LED灯的显示,以及第四片8255A口的输出。
三色LED灯主要包括3个部分的显示:
首先,电梯所在楼层显示,本设计采用查表转换程序实现,通过主程序保存的N值(即电梯所在楼层数)通过查表输出。
然后,电梯开关门状态显示,采用查表转换程序实现,通过主程序保存的OPCL(即电梯开关门状态,1为开,0为关)查表输出。
最后,电梯上下停状态显示,采用查表转换程序实现,通过主程序保存的SST(即电梯上下停状态,0为停止,1为上升,2为下降)查表输出。
于此同时根据,SST和OPCL判断三色LED的颜色,其中上升为红色,下降为绿色,停止为黄色。
8255A口输出,该输出主要是电梯内按键的命令显示,同时还包括一个定时器的使能开关和蜂鸣开关,控制两个开关的命令由主程序写入控制存储器ENINT1的高两位中,其中第6位为定时器开关(1有效),第7位为蜂鸣开关(0有效)。
输出控制字
7
6
5
4
3
2
1
0
A口
蜂鸣
定时
六楼
五楼
四楼
三楼
二楼
一楼
ENINT1
蜂鸣
定时
0
0
0
0
0
0
图7显示单元流程图
2.2.3初始化子程序
初始化子程序包括:
8255I/O接口芯片(A口输出,B口输入,C口低四位输入,高四位输出,采用方式0),8254定时/计数器(通道1,读/写格式为先低后高,方式3,二进制数),8259中断控制器(上升沿触发,单片,中断矢量40H,开IRQ0)
图88254与8259连接图
图9初始化流程图
2.2.4主程序的设计
主程序包括6个部分:
SST(电梯次态)判别子程序,开关门子程序,电梯运行子程序,中断子程序,以及上面的键盘按键扫描子程序和显示子程序。
首先,将特定存储器的预设值赋值(N=1,电梯所在楼层数;BJ=1,判别式;SNF1=0,SNF2=0,程序流程开关;A口=0BFH,关小灯,关定时,关蜂鸣。
然后,执行主程序:
1.调用键盘扫描子程序,得到UP,DOWN,COMD
2.根据当前SST值和UP,DOWN,COMD得到次态SST
3.根据N,OPCL,SST,调用三色LED灯显示子程序,根据COMD,ENINT1值从A口输出。
4.根据次态SST运行NFC(SST=0)(开门判断子程序)或SYS(SST≠0)(程序流向选择器)
5.根据SNF1和SNF2的值判断程序SYS的方向,
SNF1=0,SNF2=0,运行电梯,结束后SNF1=1
SNF1=1,SNF2=X,返回程序首,等待电梯停止中断信号,结束后SNF1=0,SNF2=1.
SNF1=0,SNF2=1,运行NFC,结束后,SNF1=0,SNF2=0
6.NFC,根据SST,BJ,UP,DOWN,COMD,控制电梯的开关,以及长开报警控制,
结束后返回程序首。
图10主程序流程图
2.2.4.1电梯状态判别子程序(SSS)
SST是用来判断电梯运行状态,SST=1,电梯向上运行,SST=2,电梯向下运行,SST=0电梯停止。
根据UP、DOWN、COMD判断是否有除当前楼层外的其他楼层命令,如果没有SST=0,如果有根据当前SST的值判断次态SST的值,如果当前SST的值为0,先判断是否有上面楼层的命令,有则SST=1,然后退出,没有就再判断是否有下面楼层,有则SST=2,然后退出。
如果当前SST的值为1,若上面楼层有命令(包括向下命令)SST=1,否则SST=2,同时FLAG置1。
如果当前SST的值为2,若下面楼层有命令(包括向上命令)SST=2,否则SST=1,同时FLAG置1。
2.2.4.2程序流向判别子程序(SYS)
SYS通过判别SNF1和SNF2的值来选择程序流向
SNF1=0,SNF2=0,开定时器,相当于运行电梯,并置SNF1=1
SNF1=1,SNF2=X,返回程序首,等待电梯停止中断信号,结束后SNF1=0,SNF2=1.
SNF1=0,SNF2=1,运行NFC判断是否需要开门,结束后,SNF1=0,SNF2=0
图11SST电梯状态判别程序流程图图12SYS程序流向判别子程序
2.2.4.3电梯开关门判断子程序(NFC)
首先判断FLAG是否为1,如果是则说明有换向,调用开门子程序,否则继续判断SST,如果SST=0就判断是否有该楼层命令,如果有则调用开门子程序,否则退出;如果SST≠0,继续判断SST=1,如果有则判断是否有该楼层向上的指令和该楼层的COMD指令,如果有则调用开门子程序,否则退出;如果SST≠1,则判断是否有该楼层向下的指令和该楼层的COMD指令,如果有则调用开门子程序,否则退出。
2.2.4.4开电梯门子程序(OPEN)
功能描述:
打开电梯门,等待关门键按下或者自动关门,关门后清除该楼层对应指令。
程序实现:
首先置OPCL为1,即开门标志,同时开计时器,然后判断是否有关门键按下和自动关门使能,如果有则置OPCL为0,即关门标志,清零累加计时NC,自动关门标志ENINT2,关计时器,关蜂鸣,置SNF1=0,SNF2=0,然后判断FLAG是否为1,是则清零UP,DOWN,COMD对应位,同时置FLAG=0,并退出;如果FLAG不为0,再判断SST是否为0,若果是则和FLAG为1状态一样,如果SST=1,则清零UP和COMD对应位,然后退出;如果SST=2,则清零DOWN和COMD对应位,然后退出。
图13NFC电梯开关门判断流程图图14OPEN开电梯门流程图
2.2.4.5中断子程序
功能描述:
如果电梯为关门状态,则电梯处于运行状态,5秒后上升/下降一楼,如果电梯为开门状态,则电梯处于停止开门状态,此时计时5秒判断是有开门,或者该楼层上下指令长按下,若有则继续开门,超过10秒后报警,如果有则关定时,关蜂鸣。
首先累加计时存储器NC加1,然后判断OPCL是否为0,如果是再判断NC是否为5,如果为5再根据SST的值执行程序,如果SST=1,NC=0,当前楼层数加1,楼层判别标志左移1位,置SNF1=0,SNF2=1,如果NC不为5,则直接跳出。
如果OPCL不为0,判断NC是否为10,如果是则开蜂鸣,如果NC大于5则不停判断是否有该楼上下楼和开门键按下,如果没有自动关门,
图15中断子程序流程图
3测试结果
3.1单独运行
1楼有人到3楼,3楼有人到5楼
程序运行后,按1楼向上开关,电梯门打开,按3楼上,电梯门关闭,LED灯显示红色,电梯一层一层向上,电梯门显示关门,方向向上,直到到达3楼,LED灯显示黄色,电梯门打开,电梯状态停止,按5楼开关,电梯门关闭,LED灯显示红色,电梯继续上升,电梯门显示关门,方向向上,直到到达5楼,LED灯显示黄色,电梯门打开,电梯状态停止,等待5秒后,电梯门自动关闭。
3.2多层运行
3.2.1情况1
3楼向上到6楼,5楼向下到4楼,初始电梯位于1楼。
电梯向上到3楼开门,按6楼,关门后,电梯上升到6楼开门,关门后电梯向下到5楼,电梯门打开,按4楼,关门后,电梯向下到4楼,电梯门打开,关闭后停止。
3.2.2情况2
3楼向下到2楼,5楼向上到6楼,初始电梯位于1楼
电梯向上到5楼开门,按6楼,关门后,电梯向上到6楼开门,关门后向下到3楼开门,按2楼,关门后,电梯向下到2楼开门,关门后停止。
3.2.3情况3
3楼向下,5楼向上,电梯位于1楼
电梯向上到5楼开门,按拨动开关6,关门后电梯向上到6楼开门关门后,电梯向下到3楼开门。
3.2.4情况4
3楼既有向上到5楼,又有向下到2楼,初始电梯位于3楼
由于优先级为向上优先,电梯先到5楼,然后再到2楼,再停止。
参考文献
[1]黄勤计算机硬件技术基础实验教程[M].重庆大学出版社
4报告总结
这次课程设计最难的是电梯控制的编程,由于电梯的强逻辑性,同时实验室的硬件资源有限,这导致了程序调试的困难,例如上述几种情况下电梯的运行状态需要逐一讨论分析,我们设计的程序并不是直线型的,针对各种状态,程序包含了3条分支程序,这3条分支程序相互制约,相互影响,一旦程序出现细微的问题,程序就很容易跑飞,各支线的相互耦合,运行状况的多样性,导致我们修改好一处错误的同时又可能引入其他的路线的错误,因此监控系统必须有一套清晰、严谨的设计方案。
为了完成我们的设计,我们首先完成了主流程图的设计,在考虑了多种可能的情况后,我们设计出了程序的大概流程,以及3条支路的设计,随后在调试的过程中,我们不断地遇到问题,大部分原因是考虑不够全面,不够仔细,面对显示屏我们很难判断出程序是什么地方出现了错误,所以我们就将程序打印出来,一个子程序,一个子程序地分析,同时结合流程图,慢慢找到了系统的不完善的地方。
在调试过程中,我们还遇到了许多细节上的问题,如小灯是低电平亮,然而最初我们却认为是高电平亮,同时蜂鸣器也是,在调试8254的时候,我们使用示波器,跟踪定时器产生中断信号,这样可以判断定时器是否在工作,同时我们对比多种控制方式,发现控制方式3最好,脉冲宽度最大,同时我们还发现,方式3可以通过GATE口进行计时控制,这是教材上没有写的,我们推测可能是芯片换代导致的。
在方案设计的最初,我们本想通过利用6片8段LED灯显示电梯状态,方案已经设计出来了,甚至都开始编程了,才发现我们的端口不够了,我们本想利用试验箱通过地址译码器的端口进行片选,但是8段LED灯的位选是高电平有效,而地址端口却是低电平有效,同时开关又必须有端口输入,C口是作为4×3小键盘的最佳选择,那么只剩下一个端口,所以我们不得不放弃这项功能,转而充分利用剩下一个端口与发光二极管相连,来反应电梯内按键的情况,同时利用剩下的两个端口作为计时器的使能端口和蜂鸣报警端口,我们对实验箱资源的利用还是十分充分的。
这次课程设计我们收获颇丰,不仅复习巩固了过去学习的知识,同时深入了解汇编语言的编程及调试,体会到了完成实验项目后的成就感与充实感,大家在谈论中相互学习,弥补了过去疏漏的地方,互相帮助,加深我们的友谊,为即将分别的我们留下了一段值得回忆的时刻。
计算机硬件技术课程设计心得体会
两周的课程设计结束了,我们在这次课程设计中学到了很多东西,同时也巩固了以往的知识,对试验箱的部分功能有了更深刻的理解很认识,对于芯片的应用,以及操作都得到了提高,遇到问题时大家相互讨论取长补短,也和其他小组交流学习,例如对8254级联过程中出现的问题,在探索解决途径的过程中让我们懂得了,细节决定成败,以及利用示波器检测器件是否正常工作。
又如对8255的使用中,用EAX赋值时地址应为最低位地址,以及许多细节方面的问题,在解决这些问题的过程中,也为今后的工作或者学习留下了宝贵的经验和教训。
同时我们也发现在操作过程中一些还未弄懂的现象,例如8254的通道1在使用方式0的时候,并没有像书上写的那样只出现一次脉冲,反而是出现连续脉冲,我们讨论后认为是控制字写入时出现了问题,可能是上次使用时用的并不是方式0,而当我们再次使用时并没有正确写入控制字,因此才出现这种情况。
虽然在这个过程中,我们遇到了许多坎坷,但通过我们细致的分析后,基本上能够找到问题的所在,并修正。
我们这次课程设计的关键问题是电梯运行时的强逻辑性,这让我们设计了很久,而且也调试了许久,由于程序过于复杂,面对复杂的程序我们不得不将我们的程序打印出来修改后,在测试,然后再修改再测试,直到成功为止。
电梯设计的之所以如此复杂就是在于电梯多种情况下运行状态的判断,什么时候开门,什么时候向上,什么时候向上,状态的多样,逻辑性强正是电梯控制的特点,即便如此我们还是创造性地逐一解决我们遇到的问题,最后成功,对于这难得的成果我们非常满意,甚至感到非常惊讶,也是第一次编写这么复杂的程序,而且最终还成功了,我们引以为荣。
课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不可少的过程.我们今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;我们的成功都离不开老师您的细心指导,而您宽容的态度,帮助我们能够很顺利的完成了这次课程设计。
由于我们的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我们十分乐意接受你们的批评与指正。
计算机硬件技术课程设计心得体会
在此次计算机硬件技术课程设计中,我在《电梯监控系统设计》中的负责的是键盘扫描子程序和开关扫描子程序。
在刚开始的时候,组员讨论和制定好程序流程后,分析了一些关键的子程序。
其中,键盘扫描和开关扫描的算法是一个很核心的问题,如果想不出一个可行和可靠性好的算法,那么电梯将很难实现或者是一种不可靠的程度。
经过商量之后,我们决定用C口完成对4*3小键盘的扫描。
起初,是先选择行还是选择列进行扫描,我们分别进行了两种方式。
最后,由于需要将C口空出一个接口给其他程序使用,所以决定用先选择列的方式对小键盘完成扫描。
C6~C4用于对列的选择,C6接Q2,C5接Q1,C4接Q0,每次扫描是否有按键按下的时候,首先扫描Q0列,依次向右边的列循环扫描。
C3~C0用于扫描按下的按键所在的行位置,C3接P3,C2接P2,C1接P1,C0接P0。
这样一来,我们就有了每一个按键按下时所产生的数据。
假如是按下向上的方向,就存入UP,按下向下的方向,就存入DOWN。
有了按键所在的行位置和列位置,就可以根据两者组成的数据识别是在哪个楼层按下的按键,并且知道是向上还是向下。
在算法选择和使用阶段,遇到了很多困难。
尝试了几个简单点的算法,并且配合显示子程序调试的时候,总是有一些按键显示不正常,或者导致子程序最后卡死或者形成死循环。
由于第一层没有下行键,第六层没有上行键,所以这两个按键需要特殊处理。
刚开始的时候,没有对这两个按键处理,所以按下这两个按键中任何一个时,都会出错,因为违反了电梯的逻辑设计。
后来,对这两个按键做了比较和误操作的处理,才解决了问题。
经过几天的反复修改和验证,最终决定了出一个可行并且可靠的算法。
第一列的按键中,按下第一行按键,产生的是01H*01H存入UP中,按下第三行按键,产生04*01H存入UP中,按下第四行按键,产生08H*01存入DOWN中。
依次类推,第二列按键中,各按键产生的值都乘以02H存入UP和DOWN中,第三列按键中,各按键产生的值都乘以04H存入UP和DOWN中。
相对键盘扫描子程序而言,开关扫描子程序简单很多。
K1~K8链接B口的B0~B7,其中K1~K6为楼层的第一层到第六层的楼层开关,安置在电梯内部,K7和K8分别为电梯的开门键和关门键。
在程序编写过程中,不光是对以前所学知识的一次综合,也是对我们学习能力的一次考验,以前所学的知识可能大多数都遗忘了,但只要在以前学的时候认真学过的,那么只要一翻书稍微一看就能看懂,能很快理解,此外,我的学习能力也在这次课程设计中得到了一定程度的提高。
计算机硬件技术课程设计心得体会
这次课程设计历时两周,在这短短的两个星期里,我付出了努力,遇到了很多问题,也得到了很多。
本次课程设计的课题是电梯监控系统的模拟设计,电梯进入人们的生活已经150年了,现在的城市里到处都是高楼大厦,电梯在我们生活中随处可见,没了电梯我们的生活将会失去很多方便。
虽然电梯这么常见,但对于电梯的运作程序,我们知道的还很少。
这次计算机硬件课程设计我们小组的课题就是电梯,给了我一次很好的机会去了解电梯的工作原理。
实验要求刚发下来的时候望了几眼,感觉好复杂,这里面逻辑的东西太多了,搞得人晕晕的,找不到方向到底该怎么下手。
幸好我们这组有一个很会编程的同学,最后决定大家分工合作,自己做自己擅长的东西。
那位比较能干的同学就负责主体程序的编写,而我则负责编写显示程序。
虽然不能帮忙想复杂的主体程序,但显示这块在计算机硬件基础课上还是认真听了的,应该没什么大问题。
我只要根据别的同学给我的数据,然后把电梯所在楼层数、电梯门的开关状态和电梯的运行状态显示在三色LED上就行了。
本来以为很简单,可在自己正式编程时还是遇到了很多问题。
由于硬件课