计算机硬件课程设计电梯监控系统.docx
《计算机硬件课程设计电梯监控系统.docx》由会员分享,可在线阅读,更多相关《计算机硬件课程设计电梯监控系统.docx(58页珍藏版)》请在冰点文库上搜索。
计算机硬件课程设计电梯监控系统
电梯监控系统设计
(计算机硬件技术基础课程设计)
人员及任务分配
专业班级
学号
姓名
任务分配
自动化6班
20095193
张利娟
4*3按键扫描存储,开关按键扫描存储以及电梯运行情况判断与执行,及上述子功能模块流程图的设计以及实验报告的最后审核
自动化6班
20095194
郑雯
开关门键检测程序,门中断及模块流程图设计以及主程序的调试和实验报告的校正
自动化6班
20095196
陈林
程序的主体流程逻辑,主程序的编写和定时程序的编写及主流程图和硬件连接图的绘制,实验报告的撰写
自动化6班
20095199
邓宇
负责LED显示子模块,用LED显示电梯当前状态,蜂鸣器发生程序,论文的校正,LED部分流程图的绘制。
1设计内容及要求
1.1设计的主要内容
设计一台电梯的监控系统,用计算机硬件实验系统完成电梯系统的基本功能,该部分占80分;并在此基础上自行完善和优化系统功能,该部分占20分(若有雷同者,该部分不得分)。
基本功能具体要求如下:
(1)共有6层,一楼有上行键,其他楼层有上行键和下行键,用4*3小键盘模拟各个楼层的上下行按键。
(2)电梯内有开门键,关门键和6个楼层按键,用开关模拟电梯内按键。
(3)用三色LED显示电梯所在楼层和电梯门的状态。
电梯上行时用红色显示楼层,下行时用绿色显示,静止时用黄色显示。
电梯门分为开门和关门两种状态。
(4)上行和下行过程中,优先响应行进方向上的楼层。
若没有按下楼层,就停在当前楼层。
(5)每次停顿时自动开门,5秒钟后自动关门。
若按下电梯内的关门键,直接关门。
若按下电梯内的开门键,或该楼层的上行下行键时,电梯门一直打开,直到松开按键。
1.2设计报告要求
(1)明确每位组员的详细分工。
(2)在上述设计的主要内容基础上,本组讨论整理出系统的详细操作说明。
(3)详细描述自行完善和优化的系统功能及设计方案。
(4)给出系统的设计思路和意见,软件设计方案。
(5)画个各个软件模块的程序流程图,说明硬件连接。
(6)列出加上必要注释的程序清单。
(7)每位组员根据自己承担的设计内容和设计过程,写出心得体会(不少于800字)。
(8)所有组员在任务书上签名,将任务书装订在报告首页。
2设计方案的确定与实施
2.1基本设计目标实现
根据课程设计任务书所提出的要求,我们小组通过讨论和分析后首先确定出此次电梯监控系统设计中我们需要完成的几个基本功能以及操作方案:
2.1.1基本设计目标及实现方案
(1)一楼有上行键,其他楼层有上行键和下行键,用4*3小键盘模拟出各个按键,如果有按键按下,说明外部有人乘坐电梯。
(2)初始化后电梯停在一楼门关着,此时一直在进行着按键扫描程序,当扫描到外部有人按下按键之后,扫描子程序将会把扫描到的数据存储到预留空间,其中空间分为了上行按键存储空间和下行按键存储空间,那么就将扫描到的数据分类存储。
此时主程序将当前楼层与存储空间中的目标楼层做减法运算,计算出运行方向和楼层次数,然后调用运行子程序,用延时程序来模拟电梯在行进中所需的时间,当每到达一个楼层的时候,将要调用按键扫描,门内开关扫描,和显示楼层,如果这楼是目标楼层,则需进行开门的操作。
当打开门之后,要进行一个判断,是否有人立即按下关门键,如果有按下则立即关门,如果没有则调用延时5秒子程序后关门,如果有人按着开门键则保持门开状态,直到松开后,再进行有无按关门键的判断!
(3)在上行或者下行过程中,电梯只响应同方向上的楼层,在读取存储空间中的目标楼层时也选用同向读取,循环读取的方法。
而且每到一层之后将会更新存储空间中的数据,从而来确定新的目标楼层。
(4)要求用LED来显示电梯的的状态,运行方向和当前所在楼层,以及门的开关状态,其中我们用红色的u来表示电梯上行,绿色的d来表示电梯下行,黄色的h表示电梯处于停止状态。
而门我们则选用了!
--!
和-!
!
-的图标来表示门的开和关状态。
2.1.2按键说明
电梯外部按键是一楼的上行按键,二楼到五楼的上行和下行按键以及六楼的下行按键一共10个,还有一个复位按键和一个报警按键,总共12个用4*3小键盘来模拟,其具体按键对应表如下:
按键
功能
按键
功能
按键K0
1楼上行
按键K7
4楼下行
按键K1
2楼上行
按键K8
3楼下行
按键K2
3楼上行
按键K9
2楼下行
按键K3
4楼上行
按键K10
报警
按键K4
5楼上行
按键K11
复位
按键K5
6楼上行
按键K6
5楼下行
电梯内部由8个开关构成,来模拟电梯内部的开关门键和1到6楼层,开关按下再手动拨起来算一次按下过程,具体对应于:
开关
功能
开关
功能
K1
楼层1
K5
楼层5
K2
楼层2
K6
楼层6
K3
楼层3
K7
开门
K4
楼层4
K8
关门
2.2硬件电路设计
运用到的硬件模块主要有一下模块:
8254主要用作定时功能,在本实验中,用作5秒延时的实现模块:
图1:
8254原理图
8259在本程序中起到中断的作用:
图2:
8259原理图
8255在实验中起到输入输出的作用,读入4*3按键和按键开关的状态读入:
图3:
8255原理图
K1--K8分别接PA0—PA7,4*3小键盘Q0--Q2接PB0--PB2,P0--P3接PC0--PC3,PB7与8254OUT2相连,PC7接出与蜂鸣器相连,8259中,INQ0接K8,INT1接INTR,SP/1接+5V,8259的CS-1接CS2。
硬件电路图的连线如下所示:
图4:
硬件连接图
2.3软件程序设计
2.3.1主程序流程图
图5:
主程序流程图
主程序运行之后,就开始调用初始化程序,将8254,8255和8259都初始化,也将门状态和上升下降标志初始,然后调用led显示程序,显示出当前楼层和门状态,然后调用键盘扫描程序和开关扫描程序,检测出是否有人按下,将扫描到的程序分别存在上行空间,下行空间和楼层空间,然后做出判断,当有人按下的时候就将数据存在运行数据段中,然后依次调用与当前楼层做比较,然后运行电梯。
在行进过程中,层间运行调用软件延时,在延时中加入扫面按键和扫描开关的子程序,然后实时的更新的存储空间。
每到一楼的时候就与目标楼层做比较,如果是目标楼层那么就停止下来,调用子程序,执行停止开门显示程序,然后对开关门建是否按下做出判断,然后按行进方向检测存储空间判断下一次运行是否继续按上一次的方向,如果有则继续行进,如果没有则扫描下行楼层空间,当里面有数据的时候则下行,没有则继续执行扫描程序,直到有按下为止。
2.3.2按键扫描子程序流程图
图6:
键盘扫描流程图
4*3按键扫描功能实现过程:
开始时关闭所有LED,然后使行线为0,读取行线状态,然后检查有无按键按下:
若无,返回到开始时的关闭所有LED;所有按键按下,那么找到键代号,然后判断按键是否为01H至0AH,若是,先将该键号加入存储区然后返回到开始时关闭所有LED;如不是,那么判断键代号是否为0,若不是,则返回到开始时,若是,则子程序结束。
2.3.3LED显示子程序流程图
图7:
LED显示流程图
LED显示功能(同时附加蜂鸣器响应及报警功能)实现过程:
开始时初始化8255,根据上下行标志选择上下行显示,然后取当前楼层,在代码表中查表显示运行状态和当前楼层,然后检测电梯是否停止,若未停止,则返回主程序;若停止,则根据开关门标志显示动态开关门状态及楼层,同时伴随蜂鸣器发声。
2.3.4开门检测子程序流程图
图8:
开门检测流程图
开门检测实现过程:
开始时检测开门键是否按下,若未按下,则直接关门;若按下开门键,则调用显示程序,然后检测开门键是否松开,若未松开,则继续调用显示程序显示开门状态;若松开,则关门,然后返回到主程序。
2.3.5电梯运行子程
图:
9:
电梯运行流程图
电梯运行过程是在调用扫描程序的存储空间里面的数据,在初始化时,检测按键有1楼上按下则开门,然后检测开关存储空间,如果是其他楼层按下则会将门打开电梯进入上行状态,电梯向着目标楼层靠近,层间运行调用软件延时程序,延时程序中嵌套按键扫描和开关扫描,以至于可以实时更新存储空间的数据,每到一楼的时候就与目标楼层做比较,如果是目标楼层那么就停止下来,调用子程序,执行停止开门显示程序,然后对开关门建是否按下做出判断,然后按行进方向检测存储空间判断下一次运行是否继续按上一次的方向,如果有则继续行进,如果没有则扫描下行楼层空间,当里面有数据的时候则下行,没有则继续执行扫描程序,直到有按下为止,期间根据门的状态调用显示程序。
3系统软件测试
3.1程序基本功能测试
3.1.1一个键
初始时候电梯停在一楼,此时按下2楼上行键,则电梯向上运行到2楼,门开,没有其他键按下,延时5秒后门关闭。
此功能已经实现。
3.1.2两个键
(1)两个按键
此时电梯停止到了2楼,此时有人按下了1楼的上行键和5楼的下行键,此时程序按照按下的先后顺序响应,先下降到了1楼,门打开,5秒后关门,然后再上行到了5楼后门打开,停留了5秒后,门关闭。
此功能已经实现。
(2)一个按键和一个开关
此时电梯停止在5楼,这时按键有人按下2楼,则电梯向下运行到2楼,然后开门,5秒后门关闭,乘客进入电梯后按下开关K3则电梯向上运行到4楼停止,门打开,5秒后门关闭。
此功能以实现。
3.1.3多个键
(1)一个按键和两个开关
当前电梯停止在5楼,然后六楼有人按向下键,电梯上行到6楼停止后门打开,5秒后门关闭,此时乘客分别按了开关K2和K3则电梯向下运行到4楼后停止门打开,5秒后关闭,然后继续运行到3楼后停止,门打开,5秒后关闭。
此功能已经实现。
(2)两个按键和两个开关
当前电梯在3楼,此时有人按下了按键的3楼上和4楼上,此时门打开,5秒后门关闭,该乘客进入后按了K5,然后运行到4楼时,门打开,发现外面已经没有乘客了,就立即按了关门开关,则电梯门直接关闭,继续运行到了6了后停止,门打开,5秒后门关闭。
此功能已经实现。
3.2拓展功能测试
3.2.1蜂鸣器
当电梯每停止一次时,伴随着门的开关,蜂鸣器将会发出相应的声音,来提示乘客到了目的地,这样能够极大的方便乘客,起到提示的作用。
在本程序中我们做了门开关调用的蜂鸣器发生程序,也做了当电梯出现故障,乘客报警时发出的急促的报警蜂鸣声,这样极大的保障了运行的安全性。
此功能在测试过程中已经完全的实现。
3.2.2门开关状态的动静态显示
在门的开关过程中,我们用3色LED灯的显示,来模拟一个门的开关过程,我们主要运用到了这样的图标:
--!
!
--(关门)和!
----!
(开门)并且在门的开关闭运动过程中,这个图标会呈现一个亮灭的变换,以此来模拟门的动态过程,这个功能在测试的过程中也已经完全的实现。
4总结
4.1小组总结
选择是人生中面对的最大的难题,在课程设计中我们不仅要选择合适的队友也要选择合适的课题。
在这次的课程设计的选题中,我们小组选到了电梯监控系统,在听老师给我们讲解每个课题的时候我们就感觉到了这个课题的难度,但是我们也是很相信我们自己队友的实力的,因此我们还是兴致勃勃的按照题目的要求进行了讨论。
在讨论的过程中我们发现整个程序的思路和延伸方向我们都很拿捏不准,在经过了大家的大胆假设和数学建模之后,思路逐渐的清晰起来,在确定了主程序的走向之后我们写出了主程序流程图,按照流程图的需要,我们也相应的确定了要完成课题的要求需要用到的哪些子功能模块,然后再依据每个队员的长项来选择自己所做的模块,这样就能更快更好的完成设计。
在各自写子功能模块的时候大家也遇到了很多的困难,在自己思考无果的情况下,我们就一个组的坐在一起,一起讨论一起出主意,按照这样的方法,我们解决了一个又一个的难题。
当程序都写好之后,调试过程成了这次试验的最难点,这个是对基础知识扎实与否以及对耐心的考验,在调试过程中大家有过找不出问题时的失落,也有因为找到一个问题而开怀大笑。
总之,在整个设计过程中,大家将以前学习的硬件知识再复习了一遍,更多的是学会了怎么进行团队的合作完成工作,也学会了为人处世,因此,这次的课程设计给即将毕业走上社会的我们提供了一次很好的职前培训机会,也让我们成长,更好的适应社会!
4.2个人总结
张利娟20095193:
计算机硬件技术基础是我们自动化主要的专业课之一,在大三时我们就上过这门课。
当时接触了一些硬件的基础知识,还通过课程实验编程过一些小型的程序。
由于每次都能通过编程得到相应的实验结果,就逐渐对硬件产生了兴趣。
这次计算机硬件课程设计我们历时两个星期,虽然我们比没有将实验课题很好的完成,但经过这两个星期的实践和体验下来,我还是学到很多有关硬件编程方面的知识,特别是各种调试的技巧。
另外本次课程设计还让我学到了怎样进行团队合作,怎样和本组的同学一起合作完成一项相对大的任务。
我们班选择课题的方式是抽签,在这个很公平的方式中我们这组选到了难度相对较大的电梯监控系统,看到这个课题的时候我们也只有无奈的选择了淡淡一笑,既然选择了,那么不管困难到底有多大,我们都要坚定不移的投身到设计中。
但是随之而来的问题却远比我们想象的要困难的多,没想到这项看起来简单的工作却是非常需要耐心和精力,在两个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得到的也会更多!
我这次担任的是组长,我不仅要把握整个设计的方向,更重要的是对组员任务的合理分配,好在我们这组的队员对设计的积极性都非常的高,在大家讨论如何进行这次设计的具体进行的时候,大家都提出了一些很新颖的想法和实现方法,这为整个设计的实现提供了有力的保证。
在分配每个人所负责的模块的时候大家也是按照自己的长处来挑选的,所以大家对我分配的任务都感动非常满意。
我选择了整个程序的按键扫描和楼层运行优先性的选择部分。
拿到自己的任务的时候我还是将计算机硬件课本认认真真的再复习了一遍,对我设计要用到的按键扫描的编写和优先性判断有用的地方更是着重的看了好几遍。
在编写程序的过程中我也遇到了很多的麻烦,比如拿不准这个流程的方向,和扫描程序扫描结果的存储问题,这个时候我们整个组的又坐在一起,大家都提出自己的想法,综合之后,终于找到了解决的办法,所以在课程设计过程中,最让我印象深刻的是团队的合作精神。
郑雯20095194:
时间过得很快,两个星期的课程设计,在忙忙碌碌中就结束了,通过这次的课程设计,我学会了更多的以前没有掌握的关于计算机硬件的知识,在设计过程中虽然也遇到了很多的问题,但是经过我一次又一次的思考,一遍又一遍的检查,终于找出了原因的所在,也暴露了前面我在学习这些知识时候的不足与欠缺。
在调试程序的过程中,很多问题的出现,是因为很简单错误,比如,硬件连接出错了,那个端口写错了,控制字写错了等等。
千里之堤毁于蚁穴说的就是这个道理。
不过实践出真知,通过这次亲自动手制作和编写程序,使我掌握的知识不再是纸上谈兵了。
过而能改,善莫大焉。
在课程设计中,我不断的发现错误,不断的改正,终于顺利的完成了组长分配给我的开关扫描和关门的中断子程序,并在总程序调试的过程中检测出了各种问题。
在整个的设计过程中,我遇到了很多的问题,首先是开关的问题,试验箱提供给我们的4*3按键相对应需求来说很少,因此我们选用开关模拟小键盘,而接踵而来的问题就有了,怎么用开关来模拟按键的一个按下过程,我把这个问题提出来后,我们组的组员们都提出了自己的意见和想法,经过大家的讨论终于确定了一个方案,用开关按下后手动的拨起来模拟一次按键过程,在后面的调试过程中也证实了这方案的可行性。
而当我做到门的中断子程序的时候又发现我前面学的8259的知识也忘了好多好多,因此我就重新的翻开书本一步一步的重新学起,这样不但完成了任务的要求,更加的复习了以前的知识。
课程设计承认是一门专业类的实践课程,给了我很多专业知识以及专业技能的提升,同时又是一门讲道课,说道课,给我了很多思考,让我明白很多道理,也给了我思维的空间。
同时,设计让我感触很深,使我对抽象的理论有了具体的认识,对计算机硬件设计的核心思想和思路都有了一个深刻的认识,通过这次的课程设计,我掌握了按键的测试盒识别,熟悉了子程序的编写流程,了解了怎么在主程序中调用子程序,我认为,在此次课程设计中,不仅培养了我独立思考,动手操作的能力,在各种其他的能力方面也有了提高,更重要的是,在实验中我学会了很多学习的方法,而这个才是真正受用一生的,真的是受益匪浅。
陈林20095196:
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的计算机硬件方面的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
在设计过程中,与同学们分工设计,和同学们相互探讨,相互学习,相互监督。
学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
由于我们这一组采用了一个比较合理的分配任务方式,那就是你擅长什么那你就选择什么任务来做,所以我就选择了主程序设计,定时子程序的编写,和实验报告以及流程图的编写。
在这次的设计任务中,开始的时候大家拿到这个课题还是很迷茫,也不知道从哪里下手,我们就坐在一起讨论,大家都各抒己见,然后确定了一个设计的方案。
由我画出了整个主程序的流程图,然后大家按照这个流程图来提出自己的观点和想法,逐步的确定实现这个功能需要哪一些子功能模块,以及确定这些子功能模块的流程图。
主程序是整个设计的灵魂,它起到连接各子功能模块的作用,它需要一个相当严密的思维,也要知道如何的去规划程序走向,向组员们提供整体思路,因此在整个设计过程中,我都要保持一个清晰的头脑,当大家将自己的子功能模块做好之后,我需要将它们组装起来,然后提供给大家一起调试。
我在画流程图的时候也遇到了一些困难,以前都没有用过visio这个软件,这次画的时候还得从开始去学习,不懂的地方我也一次又一次的去问同学,几天下来,自己也对这个软件很熟悉了。
完成这些之后我们就一起的调试程序,这个是设计的最后一步也是最关键最难的一步,比较费时费力了,因为这个不仅仅要看程序逻辑,因为有时候单看程序很难看出其中的错误,需要用到单步调试,这个实在是太考一个人的耐心了,而且有时候程序不一定有错,而且硬件出问题了,比如接线是断的,或者按键是坏的不灵敏的,我刚开始的时候在抱怨学校为什么不换一些好一点的硬件,但是后来想想以后的工作我们不也是会遇到这样的情况吗,难道我们所遇到的硬件机器会一直都是可靠无错的吗?
现在早点遇到这种情况,学会如何去处理也对我们是一种锻炼啊!
邓宇20095199:
课程设计是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次完整的程序设计,自己又重新将计算机硬件基础的知识温习了一遍,对计算机硬件基础有了新的收获。
此次设计中,我摆脱了单纯的学习理论知识的状态,在和实际设计的结合中锻炼了我的综合运用所学基础知识、解决实际问题的能力,同时也提高了我查阅文献资料,对程序整体把握等其他能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使得我的能力得到了锻炼,经验得到了丰富。
我这次负责LED显示子功能模块和蜂鸣器指示与报警模块的程序编写和调试,虽然设计的内容繁琐和杂乱,但是我收获颇丰。
随着设计的不断深入,我对各组件的运用及各控件的利用不断熟悉并逐步掌握。
在和我们组员的沟通交流过程中,我对程序整体的规划与设计又不断的有着新的认识,同时也对自己提出了更多新的要求。
在设计的过程中我也遇到了不少的疑难和困惑。
其中较大的问题便出在在蜂鸣器模块方面,最开始的时候我打算设计运用频率的改变,来使蜂鸣器发出音乐,在多次调试之后发现数据段和代码段的位置和程序能否成功实现有着很大的关系。
在利用LED实现动态显示的时候也遇到了一些问题,但是在和组员们讨论了之后也得到了完美的解决,对于项目扩展功能的实现还是比较成功的。
提高是有限的,不过提高也是全面的,正是这一次设计让我积累了许多实际经验,也必然会让我在未来的工作学习中表现出更高的应变能力和理解能力。
顺利的完成本次课程设计的大体程序给了我很大的信心,但是也让我知道了自己许多不足的地方,学习其实就是一个不断完善的过程,正视自己的不足之处,在以后的工作和学习中不断弥补这些不足之处,在以后的生活中也要保持同样的态度,不断完善自己。
最后我要感谢我们小组成员和试验老师,我们一起的团结合作,才能使得设计得以顺利进行。
在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的道理,懂得怎么样去制定计划,怎么样去实现计划,并且在在执行过程中怎么去克服心理上的不良情绪。
因此,在以后的生活和学习过程中,我一定会把这次课程设计中的所学带到生活中,不畏艰难,勇往直前,不断进取。
附录
程序代码
.486
CODESEGMENTUSE16
ASSUMECS:
CODE
ORG1000H
PORTA1EQU200H
PORTB1EQU204H
PORTC1EQU208H
CTRL1EQU20CH
PORTA2EQU201H
PORTB2EQU205H
PORTC2EQU209H
CTRL2EQU20DH
PORTA4EQU203H
PORTB4EQU207H
PORTC4EQU20BH
CTRL4EQU20FH
CTRL_8254EQU30CH;8254控制端口
CUNT0EQU300H;8254计数器0
CUNT1EQU304H;8254计数器1
CUNT2EQU308H;8254计数器2
ADDR0EQU320H;8259偶地址
ADDR1EQU328H;8259奇地址
INTQEQU40H;8259中断类型号
UP1EQU0EEH
UP2EQU0EDH
UP3EQU0EBH
UP4EQU0E7H
UP5EQU0DEH
DOWN6EQU0DDH
DOWN5EQU0DBH
DOWN4EQU0D7H
DOWN3EQU0BEH
DOWN2EQU0BDH
K10EQU0BBH
K11EQU0B7H
DT1DB1;当前楼层
JFLAGDB1;电梯静止标志,1静止,0运行
YFLAGDB1;电梯上升下降标志,1上升,0下降
LOUCENGDB00H,00H,00H,00H,00H,00H;电梯内楼层开关键状态
louceng1db0f9h,0a4h,0b0h,99h,92h,82h;1,2,3,4,5,6
KAIDB00H;开门键状态,1为按下
UPLAYERDB00H,00H,00H,00H,00H