基于单片机设计的8层电梯模拟系统论文(编辑修改稿)内容摘要:

梯仍为上行状态,那么此时,电梯的状态肯定处于上楼接人的状态中(即在高层,有人按了下行键)。 反之,若它们中有一个为 1(且按键所处楼层高于当前电梯所在楼层,这个由其他函数来限定,防止电梯在上行过程中受已经过楼层按键按下时的干扰),则电梯此时处于上楼送人状态,就会执行对应的子程序。 其他的与此同理。 电梯各情况下所对应的处理方法 以电梯上行的两种状态为例。 在实际应用中,最简单的情况莫过于电梯当前为闲置状态,然后有一人按下按键呼叫,然后电梯便响应呼叫。 但是,实际情况往往比这复杂的多,在第一个人按下按键电梯运行的过程中,还很有可能会有其他不同楼层的人按下不同的按键(上行或者下行)的情况发生。 那么就必须得为电梯规定好一个特定的优先级规则,让其依据这个规则来运行,以免乱作一团。 那么这个规则就必须要高效且人性化,在此,我们规定,当电梯上行时,均不理会那些按下行按键的顾客。 并且,若在上行过程中,也有人在某层按的是上行按键,但 是电梯此时已经走过了该层,那么电梯也绝对不会再选择先下行接他。 当然,当将高层上行的顾客送完后(此时一般来说电梯已经处于高层了),电梯便会检测下行按键,若更高层有人呼叫下行,则电梯会选择先去响应他们,然后再下行的过程中依次响应按了下行处于等待中的顾客,最后这些顾客都送完后,再去相应那些电梯上行过程中,处于比电梯低的楼层却按了上行键的顾客。 简单地说,若电梯处于上行状态,则在该过程中响应不同顾客的优先级(或 14 者电梯响应的先后顺序)为:高层呼叫上行顾客 高层呼叫下行顾客 底层呼叫下行顾客 底层呼叫上行顾客。 那么,当电梯通过程序运行得知到相应状态后,又是如何具体的判断当天所锁定的目标楼层是否要变更呢。 现以上行为例,加以详细说明:上行,且是送人,比如电梯当前在二层,五楼有人呼叫上楼,那么它就要响应这一呼叫,从而把自己的目标楼层锁定为五楼并向上运行,而在五楼呼叫后不久,四楼也有人呼叫上楼(且电梯此刻还未运行到六楼),那么在电梯运行中,没经过一个楼层,会做一次判决,因为四楼也有人呼叫,所以正常情况下,它应该在判决后将目标楼层定位四楼。 而若四楼的顾客按下的是下行键,或者二楼的人按下呼叫键,电梯此时都会暂时不予理会。 部分 程序代码见附录。 本章小结 本章介绍的是整体流程图以及工作原理。 5 系统的安装与调试 安装步骤 按电路图买好元件后首先检查买回元件的好坏,按各元件的检测方法分别进行检测,一定要仔细认真。 而且要认真核对原理图是否一致,在检查好后才可上件、焊件,防止出现错误焊件后不便改正。 、焊接 各元件 按 原理图的位置放置各元件,在放置过程中要先放置、焊接较低的元件,后焊较高的和要求较高的元件。 特别是容易损坏的元件要后焊,在焊集成芯片时连续焊接时间不要超过 10s,注意芯 片的安装方向。 结论 经过几十天的艰苦奋斗,我最终完成了毕业设计的基本要求。 在大学的最后一个学期里,我学到了很多的知识和技能。 通过本次毕业设计,我掌握了做科学研究的基本方法和思路,为今后的工作打下了坚实的基础。 首先,我学会了对相关文献的检索。 随着计算机的普及以及网络技术的发展,对文献的检索,收集资料的形式也变得越来越丰富。 我们一方面可以利用学校图书馆资源,另一方面可以利用网络来检索资源,例如中国知网 CNKI、 IEEE、万方数据库、百度文库、文库等数据库系统。 15 其次,通过这次毕业 设计,培养了我的动手能力,使我进一步了解毕业设计的基本知识。 巩固了我的知识架构体系,强化了我对大学期间所学到的基础课以及专业课的认识和理解,为今后的工作打下理论基础。 最后,通过本次毕业设计,使我懂得在遇到困惑和不解时要及时与老师和其他同学沟通,这样才能更迅速地解决设计中遇到的问题,提供工作效率。 总之,这次毕业设计不是一次简简单单地完成一个课题。 它不仅让我锻炼了动手操作能力和分析解决问题的能力,巩固了我的专业知识,还让我学到了很多东西,为我今后的工作打下基础。 致谢 大学四年即将画上一个句号了,毕业设计是 我在学校交的最后一份答卷。 在论文完成之际,感受收获喜悦的同时,心中充满了更是感激之情。 首先感谢学校给我们提供的条件使我们有了一个可以对大学四年的知识进行温习总结并付诸实践的机会。 在此次毕业设计过程中,特别要感谢我的毕业实际指导老师,感谢您在这段日子里对我亲切的关怀和悉心的指导。 老师在我遇到难题时,不但给予我技术上的帮助,更教会我诸多检查及解决问题的方法。 老师渊博的知识以及对待学生的耐心和责任感,不仅让我对专业知识有了更深的理解,还教会了我们今后面对工作生活的态度。 借此机会,我也感谢大学四年期间所有指导过 我的老师,感谢他们对我无私的教诲和帮助,感谢他们的谆谆教导。 在此同时,我也要感谢一直陪伴在我身边给予我精神支持和行动支持的同学们,正是由于你们的帮助和支持,我才能克服一个又一个的困难,并且让我从你们身上学到了很多知识。 参考文献 [1]童诗白 华成英 编著《模拟电子技术基础》 高等教育出版社 2020 年 5 月 [2]李朝青 编著《单片机原理及接口技术》 北京航天航空大学出版社 2020年 1 月 [3]马忠梅 编著 《单片机的 C 语言应用程序设计》 航空航天出版社 2020年 7 月 [4]佘新平 编著《 数字电子技术》 华中科技大学出版社 2020 年 2 月 [5]薛永毅 王淑英 何希才 编著《新型电源电路应用实例》 电子工业出版社 2020 年 10 月 16 附录 1 整机电路原理图 17 附录 2 部分源程序 include //调用单片机头文件 define uchar unsigned char //无符号字符型 宏定义 变量范围 0~255 define uint unsigned int //无符号整型 宏定义 变 量范围 0~65535 //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xde,0x90,0xcd,0xd9,0x93,0x5b,0x5f,0xd0,0xdf,0xdb // A B C D E F 不显示 }。 //断码 uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}。 bit flag_100ms,flag_1s。 bit flag_stop = 1。 //用做到了相应的楼停下 sbit beep = P2^6。 sbit xia = P2^0。 sbit zhong = P2^1。 sbit shang = P2^2。 uchar value2。 sbit led1 = P1^0。 //8 个发光二极管定义 sbit led2 = P1^1。 sbit led3 = P1^2。 sbit led4 = P1^3。 sbit led5 = P1^4。 18 sbit led6 = P1^5。 sbit led7 = P1^6。 sbit led8 = P1^7。 uchar dt_1。 //1 楼电梯标志位 uchar dt_2。 //2 楼电梯标志位 uchar dt_3。 //3 楼电梯标志位 uchar dt_4。 //4 楼电梯标志位 uchar dt_5。 //5 楼电梯标志位 uchar dt_6。 //6 楼电梯标志位 uchar dt_7。 //7 楼电梯标志位 uchar dt_8。 //8 楼电梯标志位 uchar dt_value = 1。 //电梯到哪一层的变量 uchar dt_s_x。 //电梯上下的标志位 /***********************1ms 延时函数 *****************************/ void delay_1ms(uint q) { uint i,j。 for(i=0。 iq。 i++) for(j=0。 j120。 j++)。 } /********************独立按键程序 *****************/ uchar key_can。 //按键值 void key() //独立按键程序 { static uchar key_new。 key_can = 20。 //按键值还原 P3 |= 0xff。 if((P3 amp。 0xff) != 0xff) //按键按下 { delay_1ms(1)。 //按键消抖动 if(((P3 amp。 0xff) != 0xff) amp。 amp。 (key_new == 1)) { //确认是按键按下 key_new = 0。 switch(P3) { case 0xfe: key_can = 1。 break。 //得到按键值 case 0xfd: key_can = 2。 break。 //得到按键值 case 0xfb: key_can = 3。 break。 //得到按键值 19 case 0xf7: key_can = 4。 break。 //得到按键值 case 0xef: key_can = 5。 break。 //得到按键值 case 0xdf: key_can = 6。 break。 //得到按键值 case 0xbf: key_can = 7。 break。 //得到按键值 case 0x7f: key_can = 8。 break。 //得到按键值 } } } else key_new = 1。 } void key_with() { if(key_can == 1) { led1 = 1。 //点亮发光二极管 dt_1 = 1。 // } if(key_can == 2) { led2 = 1。 //点亮发光二极管 dt_2 = 1。 } if(key_can == 3) { led3 = 1。 //点亮发光二极管 dt_3 = 1。 } if(key_can == 4) { led4 = 1。 //点亮发光二极管 dt_4 = 1。 } if(key_can == 5) { led5 = 1。 //点亮发光二极管 dt_5 = 1。 } if(key_can == 6) { led6 = 1。 //点亮发光二极管 dt_6 = 1。 } 20 if(key_can == 7) { led7 = 1。 dt_7 = 1。 } if(key_can == 8) { led8 = 1。 dt_8 = 1。 } } /********************* 当电梯不动时、判断是向上、还是向下**********************/ void tiandi_shang_xia() { static uchar value。 if(dt_s_x == 0) { flag_stop = 1。 if(dt_value == 1) //电梯在第 1 层停下不走了 { value = dt_2 + dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8。 if(value != 0) { dt_s。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。