资源描述
太原科技大学华科学院毕业论文(论文)目 录摘 要VABSTRACTVII第一章 绪论11.1研究的背景与意义11.2本文主要研究内容及设计步骤2第二章 方案设计52.1电梯控制系统原理52.2总体方案设计52.2.1设计原理52.2.2设计方框图62.3 硬件芯片的选择72.4软件的使用82.4.1电路图制作软件 proteus 7.5 sp382.4.2 C51的程序开发软件Keil92.5本章小结10第三章系统的硬件设计113.1单片机的最小系统模块113.1.1 AT89C51简介113.1.2最小系统模块143.2可编程I/O扩展芯片82C55模块163.3信号输入电路193.3.1内外请求输入电路193.3.2厢体位置模拟输入电路203.4信号模拟输出电路213.4.1楼层显示电路213.4.2电梯外部请求显示电路223.4.3报警部分233.5单片机对芯片82C55的基本读写243.5.1芯片82C55的初始化253.5.2芯片82C55的工作方式273.6本章小结29第四章系统的软件设计314.1软件设计314.1.1电梯判决函数314.1.2电梯运行的主程序流程图334.2 keilc的编程和汇编语言的程序354.2.1 keilc编程的流程354.2.2 部分软件功能的程序374.3本章小结40第五章 功能仿真与结果分析415.1单片机控制电梯的仿真415.2 结果与分析425.3本章小结44第六章 总结45参考文献47附录52III基于单片机的五层电梯控制系统设计摘 要随着现代城市的发展,高层建筑日益增多,电梯成为人们日常生必不可少的代步工具电梯性能的好坏对人们生活的影响越来越显著,因此必须努力提高电梯系统的性能,保证电梯的运行既高效节能有安全可靠。传统的电梯控制系统采用的是继电器逻辑控制电路,这种控制易出故障,维护不便,运行寿命短,占地空间大,正逐步被淘汰。本文设计了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯内外电路按键矩阵模拟检测模块、电梯外请求发光显示模块、楼层显示数码管模块、电梯上下行及开关门模拟显示等部分组成。该系统采用单片机(AT89C51)作为控制核心,内外使用按键按下与否引起的电平改变,作为用户请求信息发送到单片机单片机控制电动机的转动,单片根据楼层检测结果控制电机停在目标楼层。软件部分采用汇编语言,利用查询方式来检测用户的请求信息,根据电梯运行到相应楼层时,引起的电平变化,送到单片机计数来确定楼层,并送到数码管进行显示,硬件设计简单可靠,结合软件,基本实现了五层电梯运行的模拟。关键词:AT89C51,LED数码显示,矩阵式按键,电梯控制 VIIMicrocontroller-based five-story elevator control system designABSTRACT With the development of modem cities ,an increasing number of high-rise building , elevator become an indispensable means of transport of daily life. The quality of the life performance of the impact on peoples lives becoming more and more obvious ,it must strive to improve the performance of elevator systems, and ensure the operation of the life is safe, reliable and energy efficient. The traditional elevator control system uses logic of the relay to control circuit, this kind of controls easily to be crash, maintains inconveniently, the movement life is short, and that occupying a large area of space, it being eliminated gradually. This paper design the elevator control system based on single-chip microcontroller hardware part, mainly by minimum system module, elevator internal and external circuit simulation tests module, buttons matrix light-emitting display module elevator outside request, floor shows digital tube module, elevator downlink and open closed model shows that components. The system USES the monolithic (AT89C51) as control core, internal and external use keys pressed or not cause level change, as users request information sent to single-chip microcontroller control motor rotation, monolithic according to floor detection results in target floor control motor stops. Software part adopts assembly language, using inquires the way to test users, according to request information to the appropriate elevator running, according to floor level changes caused by the keys, to determine the floor to SCM count, and sent to digital tube display, hardware design is simple, reliable, combining software, basically achieved simulation of elevator running five floors. KEY WORDS : AT89C51, LED digital display, Matrix buttons, Elevator control第一章 绪论1.1研究的背景与意义电梯进入人们的生活已经150年了。一个半世纪的风风雨雨,翻天覆地的是历史的变迁,永恒不变的是电梯提升人类生活质量的承诺。 生活在继续,科技在发展,电梯也在进步。150年来,电梯的材质由黑白到彩色,样式由直式到斜式,在操纵控制方面更是步步出新手柄开关操纵、按钮控制、信号控制、集选控制、人机对话等等,多台电梯还出现了并联控制,智能群控;双层轿厢电梯展示出节省井道空间,提升运输能力的优势;变速式自动人行道扶梯的出现大大节省了行人的时间;不同外形扇形、三角形、半菱形、半圆形、整圆形的观光电梯则使身处其中的乘客的视线不再封闭1。如今,以美国奥的斯公司为代表的世界各大著名电梯公司各展风姿,仍在继续进行电梯新品的研发,并不断完善维修和保养服务系统。调频门控、智能远程监控、主机节能、控制柜低噪音耐用,一款款集纳了人类在机械、电子、光学等领域最新科研成果的新型电梯竞相问世,冷冰冰的建筑因此散射出人性的光辉,人们的生活因此变得更加美好2。中国最早的一部电梯出现在上海,是由美国奥的斯公司于1901年安装的。1932年由美国奥的斯公司安装在天津利顺德酒店的电梯至今还在安全运转着。1951年,党中央提出要在天安门安装一台由我国自行制造的电梯,天津从庆生电机厂荣接此任,四个月后不辱使命,顺利地完成了任务。十一届三中全会后,沐浴着改革开放的春风,我国电梯业进入了高速发展的时期。在我国任何一个城市,电梯都在被广泛应用着。电梯给人们的生活带来了便利,也为我国现代化建设的加速发展提供了强大的保障。电梯是高层建筑中安全、可靠、垂直上下的运载工具,对改善劳动条件、减轻劳动强度起到很大的作用3。电梯的应用范围很广,可用于宾馆、饭店、办公大楼、商场、娱乐场所、仓库以及居民住宅大楼等。在现代社会中,电梯已成为人类必不可少的垂直运输交通工具。1.2本文主要研究内容及设计步骤本课题的主要任务是完成一个电梯系统的调度模块,即根据每个楼层不同顾客的按键需求,让电梯做出合理的判断,正确高效地知道电梯完成各项载客任务。根据此任务,本课题需要研究的内容有:1、根据系统的技术要求,进行系统硬件的总体方案设计;2、学习单片机的相关知识,并且加以运用;3、研究汇编语言编程,并且规定电梯的工作规则,用汇编语言加以实现;4、对软件和硬件进行调试,让其协调工作,完成指定任务。设计步骤如下:关于硬件部分首先,对实际的电梯系统进行模拟,一般情况下,一个电梯应该具备相关按键、二极管、数码管等,由于这是一个调度模块,故没有设计具体的轿厢等机械部分。然后,结合这些实物,选择恰当的芯片,并分成若干模块,安排好各自之间的关系。由于其有诸多按键和显示环节,而单片机的I/O口管脚资源实在有限,故需要I/O口扩展,用以管理二极管;同时要有专门的按键控制芯片,从而便于按键管理。在此,我选择了8255和74ls48芯片。接着,要完成电路图的设计.关于软件部分:处于最底层的是对两个芯片的寄存器读写工作,完成后方可进行更高层的应用程序调试。然后是关于电梯调度时所遵循的原则作出规定,其必须基于高效与人性化两个原则。最后是使用汇编语言将规定程序化,以便电梯真正的运作。当然,二者的关系并不是分离的,它们是相辅相成,硬件依据软件来验证,软件依据硬件来调试。经过一个个的发现问题、一个个的解决问题,最终做出完美的电梯调度模块。63第二章 方案设计2.1电梯控制系统原理电梯应用中大多采用交流变频电机拖动原理,其厢体由一曳引钢缆连接,由安装在顶层的曳引轮和曳引电机拖动,电机的功率随着曳引重量的不同大小不等。其主要的拖动及控制系统有:(1)外呼内选系统,外部呼叫信号和指示以及厢体内选层和指示系统;(2)平层换速系统,电梯快速到达指定楼层之前切换为慢速并到达平层位置停车;(3)厢体状态指示系统,随着显示厢体所在位置;(4)开关门控制系统,平层开门,关门行车;(5)安全保护系统,含有上下限位、消防、满载、门电锁等功能;电梯运行的基本过程是:由外部呼叫信号给出呼叫,控制系统判断厢体目前所处位置并与呼叫楼层进行对照,同方向还是反方向。若反方向,则改变方向到呼叫层,如同方向,直接运行到呼叫楼层。在方向上,以同方向呼叫优先,且具有最远方向接车功能。厢体的运行方式:启动慢速快速,到达指定楼层之前则是快速慢速平层停车。在所有呼叫中,消防优先级最高。一旦消防呼叫,电梯就近平层,然后直接返回基站,不在响应任何外呼叫信号,只响应内选操作,以保证消防工作的使用。2.2总体方案设计2.2.1设计原理设计采用AT89C51单片机作为核心,配以适当接口作为输出通道。之所以选用AT89C51单片机作为设计的核心,是因为其在一小块芯片上,集成了一个微型计算机的各个组成部分,包括一个八位的微处理器,数据和程序存储器,4个并行的输入输出口,两个定时记数器,完善的中断控制系统,一个全双工的串行输入输出口,精确的时钟产生电路和具有掉电保护的复位电路,而且该芯片是用静态逻辑来设计的,是一种低功耗低电压、高性能的八位单片机,价格合理,可方便地应用在各种控制领域4. 设计采用AT89C51单片机作为核心,配以适当接口作为输出通道。采用44按键矩阵开关电路作为外呼内选呼叫控制,而后通过74LS48从串口驱动数码管显示楼层数。当电梯到达所选层,电梯开门延时等待进人并选层,然后延时关门执行请求,若无请求则停在本层等待请求。软件部分使用汇编语言,利用查询方式来检测用户请求的按键信息,采用74LS245芯片驱动发光二极管5。2.2.2设计方框图 本设计方框图如图2-1所示,电路由复位电路复位后,电梯初始位置在一楼,通过软件设置显示电路显示1,AT89C51将楼层感应电路的来的数据通过74LS48驱动显示电路显示出来;如有用户在厢外呼叫,经过呼叫电路把信号输入单片机,由楼层感应电路判断电梯为上升还是下降状态,若方向一致则打开电梯门,用户进入后关门执行操作。用户通过选层电路把目的层告知AT89C51,控制电机把用户送至目的层,而后系统等待下次呼叫。系统的正常工作由时钟电路来保证,显示电路实时显示电梯所在楼层位置。图2-1 电路总体方框图2.3 硬件芯片的选择合理的硬件设计是一个设计成功的基石,所以在设计之初,我便把自己的主要任务集中于筹划硬件的搭建工作,当然其中需要兼顾软件设计的需求。由于本设计所模拟的楼层共有五层,其中所需要控制的器件较多,如每层都需有两个上下的指示灯,电梯轿厢内也需有去几层的指示灯等,而现有单片机的管脚资源无法满足需求,故第一步需要想法扩展单片机的I/O口管脚资源。在此,我选择了扩展I/O口最典型的芯片82C55。其可把一组八位I/O管脚扩展为PA、PB、PC三组管脚,并通过寄存器对各组管脚进行配置,从而满足了本次设计的要求。考虑到电梯会有多个按键,而传统的依据单片机自身的I/O口布局键盘的方法显然也是不可行的,故本设计选择了典型的键盘式按键,其重要意义不仅在于减轻了单片机I/O口的开支负担,而且可以代替单片机完成各个按键的键值编写工作,单片机只要从其FIFO寄存器中直接读取键值即可得知哪个按键被按下,进而进行相应的操作。另外,电路板上还有一些扩展的子电路模块,并考虑到电路板的面积与价格问题,一些芯片与二极管、电阻等用的是贴片封装。2.4软件的使用2.4.1电路图制作软件 proteus 7.5 sp3Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:(1)原理布图(2)PCB自动或人工布线(3)SPICE电路仿真革命性的特点 (1)互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 (2)仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型加上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。2.4.2 C51的程序开发软件Keil单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用2.5本章小结 本章介绍了课题设计的总体方案,其中包括课题用到的部分软件和硬件,还介绍了课题的基本方框图第三章系统的硬件设计3.1单片机的最小系统模块3.1.1 AT89C51简介 AT89C51是一种带4字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机6。外形及引脚排列如图所示3-1图3-1AT89C51单片机的引脚排列AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案7。(1)单片机的主要特性:与MCS-51 兼容,4K字节可编程FLASH存储器,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-24MHz,三级程序存储器锁定,1288位内部RAM32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路8(2)单片机的管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/69。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 (3)振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.1.2最小系统模块单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。在本设计中,最小系统应该包括:单片机、晶振电路、复位电路等。如图3-2所示,晶振电路由C1与C2和晶振组成,晶振是给单片机提供工作信号脉冲的。它的速率就是单片机的工作速率,简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。并在晶振的两引脚处接入两个10pF-50pF的瓷片电容接地用来削减偕波对电路的稳定性的影响。复位电路采取的为手动按键复位电路,由电容,电阻和开关RESET组成,当单片机的复位引脚RESET出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。每次复位后,单片机的程序都会从第一条开始从新执行。另外,还额外设计了滤波防干扰电路,电源先经过它们再接入单片机的Vcc,可以有效的减少其中的杂波带来的干扰。图3-2 单片机最小系统电路3.2可编程I/O扩展芯片82C55模块8255是Intel公司生产的可编程并行I/O接口芯片10,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。其芯片与与单片机的连接方式如图3-3所示。图3-3 8255与单片机得连接方式 D7D0(data bus):三态、双向数据线,与CPU数据总线连接,用来传送数据。CS (chip select):片选信号线,低电平有效时,芯片被选中。A1, A0(port address):地址线,用来选择内部端口。RD(read):读出信号线,低电平有效时,允许数据读出。WD (write):写入信号线,低电平有效时,允许数据写入。RESET(reset):复位信号线,高电平有效时,将所有内部寄存器(包括控制寄存器)清0。PA7PA0(port A):A口输入/输出信号线。PB7PB0(port B):B口输入/输出信号线。PC7PC0(port C):C口输入/输出信号线。VCC:5V电源。 GND:电源地线。 8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。1、与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0A1。此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下:(1)数据总线DB:编号为D0D7,用于8255与CPU传送8位数据。(2)地址总线AB:编号为A0A1,用于选择A、B、C口与控制寄存器。(3)控制总线CB:片选信号CS、复位信号RST、写信号WD、读信号RD。当CPU要对8255进行读、写操作时,必须先向8255发片选信号CS选中8255芯片,然后发读信号RD或写信号WD对8255进行读或写数据的操作。2、与外设接口部分根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。各通道的引脚编号如下:(1)A口:编号为PA0PA7,用于8255向外设输入输出8位并行数据。(2)B口:编号为PB0PB7,用于8255向外设输入输出8位并行数据。(3)C口:编号为PC0PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。3、控制器8255将3个通道分为两组,即PA0PA7与PC4PC7组成A组,PB0PB7与PC0PC3组成B组。相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下:(1)A组控制器:控制A口与上C口的输入与输出。(2)B组控制器:控制B口与下C口的输入与输出。3.3信号输入电路3.3.1内外请求输入电路 现以呼叫信号的输入为例,来说明信号输入及单片机识别原理.如图3-4所示,采用PA口外接上拉电阻的并行输入方式,来输入外呼叫信号,本电路采用44矩阵键盘,行扫描法识别键值的原理,具体原理如下:图3-4矩阵式键盘输入的电路图(1)判断键盘中有无键 将全部行线PA0-PA3置低电平,然后检测列线状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中,若所有列线均为高电平,则键盘中无键按下20。(2)判断闭合键所在位置,在确认有键按下后,即可进入确定闭合键的过程,其方法是,依次将行线置为低电平,即在置某根行线为低电平时,其他线为高电平。在确定某根行线位置为低电平后,在逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处得按键就是闭合的按键。S00-S04为一到五楼的电梯内部呼叫请求按键,S05-S13为电梯外部请求按键。S00-S15的扫描键值分别为01H-0FFH.3.3.2厢体位置模拟输入电路 由于没有电梯控制的硬件模型,只能用按键来模拟电梯到达位置的触发信号。本电路采用独立式按键非编码键盘接口查询方式,当任何一个键按下时,与之相连的输入数据线即被清0 而平时该线为1.要判断是否有键按下,用单片机的位处理指令十分方便。这种键盘结构的优点是电路简单;缺点是当按键数较多时,要占用较多的IO口。查询方式键盘的处理程序比较简单。只包括键查询、键功能程序转移,S16-S20分别为一楼都五楼的厢体位置到达触发信号使用端,当S16按下时,表明厢体已经到达一楼,并使用键功能程序转移到显示电路,并发出数字1的字型码,是是数码管显示1。其余功能按键均如此设置。 具体电路如图3-5所示图3-5厢体位置模拟输入电路电路图3.4信号模拟输出电路3.4.1楼层显示电路在实际中,厢外有五个和厢内一个共六个数码管显示厢体位置楼层数,显示的数据时一致的。显示器是最常用的输出设备,与单片机的应用系统接口的显示器主要是LED显示器和LCD显示器。 所谓的接口方式是指LED气短数码显示器与单片机的连接方式。按照显示代码获得方式的不同,可分为硬件译码、软件译码方式。本文采用硬件译码方式。硬件译码方式采用BCD译码器驱动器11(如4511,74LS48)通过译码把一位BCD码数翻译为相应的字型代码,然后由驱动器来提供足够的功率去驱动发光二极管。硬件译码器一般都具有直接驱动LED的能力,且占用单片机的系统接口资源少(字形口只需4个口线),编程简单,因此采用硬件译码方式的开支并不大。其缺点是显示字形有限,通常只能显示09十个字符,个别译码器可输出其他特殊字符。本次设计只需要显示05就可以了。具体电路如图3-6所示。图3-6 楼层显示电路的电路图3.4.2电梯外部请求显示电路 电路如图3-7所示,本电路采用74LS245加限流电阻驱动发光管,高电平有效,只要给单片机的P2口任意位置1,相应的发光管就会亮,8个发光管从高到底依次为一楼到五楼的上下行请求显示。 每个发光管显示都是独立的,只要外部请求按键按下,程序会置为或清零指令就可以随意改变发光管的显示状态使相应的发光管点亮。 要注意的是74LS245与发光管之间的限流电阻不能过大,更不能省略,一般选在200到300欧之间为宜。要是E非端与DIR端接低电平才能正常工作,所以本电路将其直接接地。图3-7电梯外部请求显示电路3.4.3报警部分(1)超重报警当重力传感器检测到超重时,经系统处理后会发出一个持续的高电平,使多谐振荡器工作,最终驱动蜂鸣器工作。(2)紧急报警轿厢内设紧急报警按钮,当电梯突然发生故障使轿箱内的人被困时,可以通过按下紧急报警按钮,使紧急报警灯亮同时发出音响信号,由于这个部分要求电梯的任何运行状况下都要有效,为保险起见,我们将此作为一个独立的模块。附加:防冲顶和防撞底我们在轿厢顶快接近竖井顶部和位置和轿厢底快接近竖井底部的位置也同样放置反光片,用于对电梯进行保护防冲顶和防撞底。当轿厢在超过规定的楼层内感应到光后,程序设定其马上制动。具体电路和编著的程序和平层部分相差不大。3.5单片机对芯片82C55的基本读写与一般其他的芯片类似,对82C55芯片的操作,一般也即对其内部寄存器的操作。其内部寄存器分为两类,一类为命令寄存器,另一类为数据寄存器。很明显,由于82C55的功能为将一组单片机I/O口扩展为三组I/O口,那么肯定要有三组数据寄存器,分别对应着它的三组I/O口,即PA口,PB口与PC口12,那么82C55芯片便有四个寄存器,正好可以用两位的地址线进行寻址(即管脚A0与A1)。其读写寄存器的流程如图3-8所示。图3-8 读写寄存器流程图具体的说,其过程为:开始选中该芯片(低电平有效),而后设置好所要读写的寄存器的地址,也即设置好A0与A1的数值组合,若为读寄存器,则让单片机读引脚P37为低电平,反之若为写寄存器,则让单片机写引脚P36为低电平,然后把要读或者写的数据放到数据口P0口上(需要注意的是,当单片机读寄存器时,对于其自身来说,是输入数据,故此时需先让P0口值为高电平0xff为下一步的输入做准备,而此流程图的最后一步即为这种情况做准备的),一段短短的稳定时间后再让读引脚或者写引脚为高电平,则在由低到高的跳变中,数据得到了转移。然后再片选无效,以防以后的数据传输产生相互干扰。最后数据口P0置为0xff,为方便下次可能的输入做准备。3.5.1芯片82C55的初始化芯片82C55的逻辑构造该芯片的逻辑构造如图3-9所示。 图3-9 82C55逻辑构造图1、三个并行输入输出端口(端口A、端口B、端口C) 8255A有A、B、C三个并行输入输出端口(简称为A口、B口、C口),其功能全部由程序设定,每个端口都有自己的特点。A口、B口通常作为独立的I/O端口使用,C口也可以作为一般的I/O端口使用,但当A口、B口作为应答式的I/O口使用时,C口分别用来为A口、B口提供应答控制信号13。2、读/写控制逻辑19读/写控制逻辑用于管理数据、控制字或状态字的传送,其控制信号有以下几种:(1)CS片选信号,低电平有效允许8255A与CPU交换信息。(2)RD读信号,低电平有效允许CPU从8255A端口中读取数据或状态信息。(3)WR写信号,低电平有效允许CPU将数据、控制字写入到8255A中。(4) RESET,复位信号,高电平有效。清除8255A所有控制寄存器内容,并将各端口置成输入方式。(5) A1、A0,8255A片内端口寻址地址。3、A组和B组控制电路A组和B组控制电路接受读/写控制逻辑的信号和CPU送入的控制字,然后决定各端口的功能。A组控制电路控制A口和C口的高4位(PC7PC4);B组控制电路控制B口和C口的低4位(PC3PC0)。还可根据控制字的要求对C口的某位实现置0或置1的操作18。4、数据总线缓冲器数据总线缓冲器是一个双向三态的8位缓冲器,可与系统的数据总线直接相连,实现CPU和8255A之间的信息传送。82C55芯片内部有四个寄存器,即命令寄存器、PA口寄存器、PB口寄存器、PC口寄存器。其中,向命令中写入数据可以控制芯片各扩展口的工作方式。向后三者寄存器中写入数据,芯片会自动将其取出,并以高低电平的形式分布于各相应管脚。并且,三组扩展口在作为输出时,均具有锁存功能。由于有四组口,故相应的应该有两位地址来对其寻址。芯片上的A0、A1即为此而设计,当A0=0,A1=0时,寻址的为PA口寄存器;当A0=1,A1=0时,寻址的为PB口寄存器;当A0=0,A1=1时,寻址的为PC口寄存器;当A0=1,A1=1时,寻址的为命令(控制)寄存器。3.5.2芯片82C55的工作方式该芯片具有三种可选的工作方式,分别便于不同情况时供使用者以更为方便的选择。现对其工作方式做一简要介绍如下:1、方式0基本输入输出方式(1) 方式0的工作特点方式0称为基本输入输出方式,该方式下可将3个数据端口划分为4个独立的部分:A口和B口作为两个8位端口,C口的高4位和低4位可以用作两个4位端口17 (当然也可以作为一个8位端口),各个端口都可以独立用作输入或输出。其特性如下:1. 任何端口都具有输出及输入功能。2. 输出时,各Port 均有锁定功能,能将信号锁定在最后一次的输出状态上。3. 输入无锁定功能,数据收到后,端口上的信号将不会保留最后一次输入的状态。4. 有2 个8 位端口(PA 和PB)及2 个4 位端口(PC0PC3 和PC4PC7)可供利用。5. 共可组成16 种不同的输出入状态。(2) 方式0的使用场合方式0使用在无条件传送和查询式传送两种场合。2、方式1选通输入输出方式(1) 方式1的工作特点方式1是一种选通输入输出方式。在这种工作方式下,端口A、端口B和端口C被分为两个组。端口A和端口B用作数据的输入/输出,端口C的一些引脚信号被规定为端口A、B的联络信号,这些联络信号和C口的各引脚保持固定的对应关系,不能用程序改变。1. A/B口输入的联络信号16STB :输入选通信号,低电平有效,外设输入;当该信号有效时,使8255的A/B口接收外设的8位数据。信号通过PC4/ A口、 PC2/ B口引入。IBF:输入满信号,高电平有效,8255输出;当该信号有效时,表示8255已接收数据。信号通过PC5/ A口、 PC1/ B口引出。INTR:中断请求信号,高电平有效,8255输出;当该信号有效时, 8255向CPU申请中断(读取数据),信号通过PC3/ A口、 PC0/ B口引出。INTE:中断允许标志,是否允许发出中断申请( INTR );当设置PC4=1( A口的标志), PC2=1 ( B口的标志)时,中断允许。2. A/B口输出的联络信号OBF :输出满信号,低电平有效, 8255输出; 当该信号有效时,通知外设,A/B口的数据准备好。信号通过PC7/ A口、 PC1/ B口引出。ACK:外设回答信号,低电平有效;当该信号有效时,表示外设已空闲。信号通过PC6/ A口、 PC2/ B口引入。INTR:中断请求信号,高电平有效,8255输出;当该信号有效时, 8255向CPU申请中断(输入数据),信号通过PC3/ A口、 PC0/ B口引出。INTE:中断允许标志,是否允许发出中断申请( INTR );当设置PC6=1( A口的标志), PC2=1 ( B口的标志)时,中断允许。方式1的工作特点可归纳如下:端口A和端口B均可工作在方式1输入或输出方式。若端口A和端口B中只有一个工作在方式1,而另一个工作在方式0,则端口C中有3位作为方式1的联络信号,端口C其余5位均可工作在方式0的输入或输出方式15。若端口A和端口B都工作在方式1,则C口中6位作其联络信号,剩下的2位还可工作在方式0的输入输出方式。方式1有两种用法:(1) 中断方式。将两个INTE置为1,A组和B组可以使用各自的INTR信号申请中断。(2) 查询方式。微处理器通过读端口C,可以查询IBF、OBF#信号的当前状态,决定是否立即进行数据传输。3、方式2双向输入输出方式方式2只适用于端口A,是双向的输入输出传输方式。在方式2,外设可以在A口的8位数据线上分时向8255A发送数据或从8255A接收数据,但不能同时进行。该方式需占用端口C的5位作为联络信号。端口A工作于方式2时,端口B可选方式0或方式114。3.6本章小结 本章介绍了组成电梯的各个模块与所选择的单片机,还介绍了各个模块的功能以及工作方式。只有选择正确适当,整个系统才有可能按照我们的设计去运行。第四章系统的软件设计4.1软件设计从程序功能上来分,本设计的高层软件程序大概可以分为以下几类:一、运行与决策函数;二、中断处理函数;三、置位各状态变量函数;四、清除各状态变量函数。其中,第一类函数起作用于按键按下的时刻,当有按键按下时,以中断的方式发送给单片机,此时,单片机即对程序中所用到的各个状态变量进行置位并且通过82C55点亮相关发光二极管,如置位按键所对应的去向变量等,方便决策函数使用。第二类函数的功能恰好与第一类相反,这类函数起作用于电梯到达目标楼层时,这时函数负责把相关发光二极管熄灭,并且及时清除相关状态位,以免影响判别函数作出正确判断。第三类函数是程序的核心。它直接负责管理电梯下一次所要到达的楼层,并且要基于短时间、高效率、人性化等原则。每当电梯经过一楼层时,此函数即会被调用,即为下一个电梯要停留的目标楼层值。而从程序的层次上来分,又可分为位于最底层的芯片内部寄存器操作的基层程序和位于上层的应用程序。4.1.1电梯判决函数(1)电梯所处状态的分类与判定这是整个程序成功运行的核心保证。在电梯经过一个楼层时,就会自动调用该函数,它的作用是基于短时间、高效率、人性化的基础上,合理智能的对电梯的运行进行调度,结合实际情况,最终得出电梯下一个目标停留楼层。 程序中将实际情况分为四种情况来判断:电梯上行且是去送人(即电梯此时位于底层,而高层有人呼叫要上楼)、电梯上行且是去接人(即电梯此时位于底层,而高层有人呼叫要下楼)、电梯下行且是去送人(即电梯此时位于高层,而低层有人呼叫要下楼)、电梯下行且是去接人(即电梯此时位于高层,而低层有人呼叫要上楼)。而这四种情况,也就包含了实际电梯中的绝大部分情况。情况不同,分析的方法也当然不一样。而首先,我们要了解电梯是如何得知此时它是上面四种的哪一种情况的呢?这可以分为两个步骤:第一判断电梯是上行还是下行;第二,判断是去接人还是去送人。当然,第一个是最好判断的,因为电梯在运行时,有两个与楼层有关的变量,一个为当前所在楼层值,一个为目标楼层值,当电梯运行时,会让这两个值进行比较,若前者大于后者,就为下行,反之,当前者小于后者,即为上行。(2)电梯各情况下所对应的处理方法以电梯上行的两种状态为例。在实际应用中,最简单的情况莫过于电梯当前为闲置状态,然后有一人按下按键呼叫,然后电梯便响应呼叫。但是,实际情况往往比这复杂的多,在第一个人按下按键电梯运行的过程中,还很有可能会有其他不同楼层的人按下不同的按键(上行或者下行)的情况发生。那么就必须得为电梯规定好一个特定的优先级规则,让其依据这个规则来运行,以免乱作一团。那么这个规则就必须要高效且人性化,在此,我们规定,当电梯上行时,均不理会那些按下行按键的顾客。并且,若在上行过程中,也有人在某层按的是上行按键,但是电梯此时已经走过了该层,那么电梯也绝对不会再选择先下行接他。当然,当将高层上行的顾客送完后(此时一般来说电梯已经处于高层了),电梯便会检测下行按键,若更高层有人呼叫下行,则电梯会选择先去响应他们,然后再下行的过程中依次响应按了下行处于等待中的顾客,最后这些顾客都送完后,再去相应那些电梯上行过程中,处于比电梯低的楼层却按了上行键的顾客。简单地说,若电梯处于上行状态,则在该过程中响应不同顾客的优先级(或者电梯响应的先后顺序)为:高层呼叫上行顾客高层呼叫下行顾客底层呼叫下行顾客底层呼叫上行顾客。4.1.2电梯运行的主程序流程图电梯的运行的基本过程是:由外部的呼叫信号给出呼叫,控制系统判断电梯目前所处的位置并与呼叫楼层进行对照,同方向还是反方向,若反方向,则改变方向到呼叫层.若同方向直接运行到呼叫层。为了便于了解控制近况,本系统中设计了运行状态指示电路。如图4-1所示图4-1电梯运行的主程序图驱动输出接口电路主要是电机主拖动及开关门电机控制.主引电机使用三相380V交流供电,其电机功率约为22KW左右.因此所使用的交流接触器触点电流较大,尤其在刚启动时电流更大,触头引起的火花必然会对单片机的工作产生影响.为了防止这个影响的产生,在输出电路中考虑了两级隔离措施.首先用光电耦合器输出将逻辑TTL电平转换为直流5V电平的驱动电路,从而接通交流电动机工作。 图4-2正常运行程序段框图4.2 keilc的编程和汇编语言的程序4.2.1 keilc编程的流程第一步 建立专案 ,就是新建文件来保存模块的组件和参数的选择,以便以后的仿真,如图4-3所示图4-3建立工程操作图第二步 选择芯片,选择与设计电路图中相同的AT89C51单片机,为了仿真时的参数相同,如图4-4所示第三步 编写程序,将编写好的程序另从为 .ASM格式的文件,将程序文件添加到新建的工程文件中,并更改设置调试时生成hex文件,如图4-5所示。图4-4选择芯片操作图第四步 proteus和keilc的联调,将KEILC中生成的HEX文件在PROTEUS中的单片机中打开就能实现单片机程序的同步运行。第五步实现电梯的部分功能的仿真。仿真时打开的程序就是电梯在实际运行中的部分功能。图4-5生成hex文件操作图4.2.2 部分软件功能的程序(1)点亮led灯 ORG 00H ;按键灯START: JNB P1.0,NEXT1 CLR P2.0SJMP NEX1NEXT1: SETB P2.0NEX1: JNB P1.1,NEXT2 CLR P2.1 SJMP NEX2NEXT2: SETB P2.1NEX2: JNB P1.2,NEXT3 CLR P2.2 SJMP NEX3NEXT3: SETB P2.2NEX3: JNB P1.3,NEXT4 CLR P2.3 SJMP NEX4NEXT4: SETB P2.3NEX4: JNB P1.4,NXETT5 CLR P2.4 SJMP NEX5NEXT5: SETB P2.4NEX5: JNB P1.5 ,NEXT6 CLR P2.5SJMP NEX6NEXT6: SETB P2.5NEX6: JNB P1.6 ,NEXT7 CLR P2.6 SJMP NEX7 NEXT7: SETB P2.6NEX7: JNB P1.7
展开阅读全文