基于单片机的电梯控制系统-职业学院电子毕业论文_第1页
基于单片机的电梯控制系统-职业学院电子毕业论文_第2页
基于单片机的电梯控制系统-职业学院电子毕业论文_第3页
基于单片机的电梯控制系统-职业学院电子毕业论文_第4页
基于单片机的电梯控制系统-职业学院电子毕业论文_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

周口科技职业学院毕业生论文 1 周口科技职业学院 毕业论文(设计) 题目:单片机控制电梯系统 姓名胡京葛 学号200801010199 系别电子工程系 班级电子三班 指导教师张奎 2011年年02 月月28日日 周口科技职业学院毕业生论文 2 目录目录 目录目录1 摘摘要要3 第一章第一章绪论绪论3 1.1课题的背景简介3 1.2课题的主要研究内容及设计步骤4 1.3 设计功能要求5 第二章第二章系统的硬件设计系统的硬件设计. 6 2.1 硬件芯片的选择.6 2.2单片机最小系统模块6 2.3可编程 I/O 扩展芯片 82C55 模块7 2.4可编程按键控制芯片 82C79 模块9 2.5MAX232 串口下载模块与附加电源模块等.12 第三章第三章芯片基本读写的实现芯片基本读写的实现. 14 3.1 单片机对芯片 82C55 的基本读写.14 3.2芯片 82C55 的初始化15 3.3对芯片 8279 的基本读写与初始化16 3.3.1芯片 8279 的基本读写.16 3.3.2芯片 8279 的初始化.16 第四章第四章系统的高层软件设计系统的高层软件设计. 24 4.1引言24 4.2单片机中断处理函数25 4.3电梯判决函数25 4.3.1电梯所处状态的分类与判定.25 4.3.2电梯各情况下所对应的处理方法.27 4.4电梯运行函数29 4.5主函数30 总结总结31 致谢致谢32 参考文献参考文献33 附附录录33 周口科技职业学院毕业生论文 3 单片机控制电梯系统毕业设计 应用电子技术胡京葛 指导老师张奎 摘要设计系统研究了基于 AT89C55 与 8279 单片机为核心,配以必要 的传感装置,实现对电梯轿厢的自动控制。在各楼层设置了位置检测电路, 利用磁控传感器对电梯轿厢的位置进行准确定位, 实时控制轿厢的运动状态; 通过对各楼层用户按钮信号的检测和处理,按预定的运行规则和程序,发出 控制信号对继电器进行调节,运用继电器来驱动直流电动机,从而控制电梯 的启停、升降和运行时间。整个设计系统实现了电梯控制的基本功能。 关键词AT89C55 8279 电梯控制单片机 第一章绪论 1.1课题的背景简介 电梯进入人们的生活已经 150 年了。一个半世纪的风风雨雨,翻天覆地 的是历史的变迁,永恒不变的是电梯提升人类生活质量的承诺。 生活在继续,科技在发展,电梯也在进步。150 年来,电梯的材质由黑 白到彩色,样式由直式到斜式,在操纵控制方面更是步步出新手柄开关 操纵、按钮控制、信号控制、集选控制、人机对话等等,多台电梯还出现了 并联控制,智能群控;双层轿厢电梯展示出节省井道空间,提升运输能力的 优势;变速式自动人行道扶梯的出现大大节省了行人的时间;不同外形 扇形、三角形、半菱形、半圆形、整圆形的观光电梯则使身处其中的乘客的 视线不再封闭。如今,以美国奥的斯公司为代表的世界各大著名电梯公司各 展风姿,仍在继续进行电梯新品的研发,并不断完善维修和保养服务系统。 周口科技职业学院毕业生论文 4 调频门控、智能远程监控、主机节能、控制柜低噪音耐用,一款款集纳了人 类在机械、电子、光学等领域最新科研成果的新型电梯竞相问世,冷冰冰的 建筑因此散射出人性的光辉,人们的生活因此变得更加美好。 中国最早的一部电梯出现在上海,是由美国奥的斯公司于 1901 年安装 的。1932 年由美国奥的斯公司安装在天津利顺德酒店的电梯至今还在安全运 转着。1951 年,党中央提出要在天安门安装一台由我国自行制造的电梯,天 津从庆生电机厂荣接此任,四个月后不辱使命,顺利地完成了任务。十一届 三中全会后,沐浴着改革开放的春风,我国电梯业进入了高速发展的时期。 在我国任何一个城市,电梯都在被广泛应用着。电梯给人们的生活带来了便 利,也为我国现代化建设的加速发展提供了强大的保障。电梯是高层建筑中 安全、可靠、垂直上下的运载工具,对改善劳动条件、减轻劳动强度起到很 大的作用。电梯的应用范围很广,可用于宾馆、饭店、办公大楼、商场、娱 乐场所、仓库以及居民住宅大楼等。在现代社会中,电梯已成为人类必不可 少的垂直运输交通工具。 1.2课题的主要研究内容及设计步骤 本课题的主要任务是完成一个电梯系统的调度模块,即根据每个楼层不 同顾客的按键需求,让电梯做出合理的判断,正确高效地知道电梯完成各项 载客任务。根据此任务,本课题需要研究的内容有: 1、根据系统的技术要求,进行系统硬件的总体方案设计; 2、学习单片机的相关知识,并且加以运用; 3、选择恰当的芯片,并对其内部协议有所掌握,便于应用。 4、研究 C 语言编程,并且规定电梯的工作规则,用 C 语言加以实现; 5、对软件和硬件进行调试,让其协调工作,完成指定任务。 结合以上内容,本课题的设计方案步骤如下: 关于硬件部分: 首先,对实际的电梯系统进行模拟,一般情况下,一个电梯应该具备相 周口科技职业学院毕业生论文 5 关按键、显示二极管、数码管等,由于这是一个调度模块,故没有设计具体 的轿厢等机械部分。然后,结合这些实物,选择恰当的芯片,并分成若干模 块,安排好各自之间的关系。由于其有诸多按键和显示环节,而单片机的 I/O 口管脚资源实在有限,故需要 I/O 口扩展,用以管理二极管;同时要有专门 的按键控制芯片,从而便于按键管理。在此,我分别选择了 82C55 和 8279 芯片。接着,要完成电路图的设计,画出 PCB 板,焊接相关器件后进行硬件 调试,看是否好用并加以适当的更正。 关于软件部分: 处于最底层的是对两个芯片的寄存器读写工作,完成后方可进行更高层 的应用程序调试。 为了使硬件简单化, 我选择了模拟时序的方法读写寄存器, 这比总线操作的方法节省了锁存器。然后是关于电梯调度时所遵循的原则作 出规定,其必须基于高效与人性化两个原则。最后是使用 C 语言将规定程序 化,以便电梯真正的运作。 当然,二者的关系并不是分离的,它们是相辅相成,硬件依据软件来验 证,软件依据硬件来调试。经过一个个的发现问题、一个个的解决问题,最 终做出完美的电梯调度模块。 1.3 设计功能要求 本设计是为一八层电梯设计一调度系统, 即使电梯能够合理高效地运行, 完成各楼层顾客的接送任务。形象地说,就是要应对不同楼层顾客的不同需 求,作出合理高效的判断,使所有顾客在整体运用时间最短的条件下将其运 往各自的目的地。 这个设计的成品应该可以作为真实电梯的控制系统一样,遵守以下两个 原则:一是高效性,二是人性化。而实际电梯所面临的情况无比复杂,故本 设计的难点除了硬件上面外,还有对这些复杂的情况归类化,分为若干个基 本情况,另外是用恰当的 C 语言描述来表达这些复杂的逻辑。 周口科技职业学院毕业生论文 6 第二章系统的硬件设计 2.1 硬件芯片的选择 合理的硬件设计是一个设计成功的基石,所以在设计之初,我便把自己 的主要任务集中于筹划硬件的搭建工作, 当然其中需要兼顾软件设计的需求。 由于本设计所模拟的楼层共有八层,其中所需要控制的器件较多,如每 层都需有两个上下的指示灯,电梯轿厢内也需有去几层的指示灯等,而现有 单片机的管脚资源无法满足需求,故第一步需要想法扩展单片机的 I/O 口管 脚资源。在此,我选择了扩展 I/O 口最典型的芯片 82C55。其可把一组八位 I/O 管脚扩展为 PA、PB、PC 三组管脚,并通过寄存器对各组管脚进行配置, 从而满足了本次设计的要求。 考虑到电梯会有多个按键,而传统的依据单片机自身的 I/O 口布局键盘 的方法显然也是不可行的,故本设计选择了典型的管理键盘的芯片 82C79, 其重要意义不仅在于减轻了单片机 I/O 口的开支负担,而且可以代替单片机 完成各个按键的键值编写工作,单片机只要从其 FIFO 寄存器中直接读取键 值即可得知哪个按键被按下,进而进行相应的操作。 另外,电路板上还有一些扩展的子电路模块,例如 MAX232 串口下载模 块,U 口供电模块等等,当然这些都是方便程序的下载与调试的。并考虑到 电路板的面积与价格问题,一些芯片与二极管、电阻等用的是贴片封装。 2.2单片机最小系统模块 单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分 功能集成在一块小芯片上, 但是它具有一个完整计算机所需要的大部分部件: CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸 如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚 至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片 周口科技职业学院毕业生论文 7 机可以工作的系统。 在本设计中,最小系统应该包括:单片机、晶振电路、复位电路等。如 图 2.1 所示,晶振电路由 C1 与 C2 和晶振组成,晶振是给单片机提供工作信 号脉冲的。它的速率就是单片机的工作速率,简单地说,没有晶振,就没有 时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。并在 晶振的两引脚处接入两个 10pF-50pF 的瓷片电容接地用来削减偕波对电路的 稳定性的影响。 复位电路采取的为手动按键复位电路, 由电容 C13, 电阻 R11、 R12 和开关 RESET 组成,当单片机的复位引脚 RESET 出现 2 个机器周期以 上的高电平时,单片机就执行复位操作。如果 RST 持续为高电平,单片机就 处于循环复位状态。 每次复位后, 单片机的程序都会从第一条开始从新执行。 另外,还额外设计了滤波防干扰电路,由 C13 与 R12 组成,电源先经过它们 再接入单片机的 Vcc,可以有效的减少其中的杂波带来的干扰。 2.3可编程 I/O 扩展芯片 82C55 模块 8255 是 Intel 公司生产的可编程并行 I/O 接口芯片,有 3 个 8 位并行 I/O 口。具有 3 个通道 3 种工作方式的可编程并行接口芯片(40 引脚)。 其各口功 能可由软件选择,使用灵活,通用性强。8255 可作为单片机与多种外设连接 时的中间接口电路。其芯片引脚图如图 2.2 所示。 周口科技职业学院毕业生论文 8 图 2. 1单片机最小系统 图 2.282C55 引脚分布 周口科技职业学院毕业生论文 9 D7D0(data bus):三态、双向数据线,与CPU数据总线连接,用来传送 数据。 (chip select):片选信号线,低电平有效时,芯片被选中。 A1, A0(port address):地址线,用来选择内部端口。 (read):读出信号线,低电平有效时,允许数据读出。 (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 连接部分、与外设连接部分、控制部分。 2.4可编程按键控制芯片 82C79 模块 Intel8279 芯片是一种通用的可编程序的键盘、显示接口器件,单个芯片 就能完成键盘输入和 LED 显示控制两种功能。 其引脚分布如图 2.5 所示。 8279 包括键盘输入和显示输出两个部分。 键盘部分提供的扫描方式, 可以和 64 个按键或传感器的阵列相连。 能自 动消除开关抖动以及为 N 个键同时按下提供保护。 周口科技职业学院毕业生论文 10 图 2.58279 引脚分布 主要管脚的定义为: (片选):输入线,当=0 时 8279 被选中,允许 CPU 对其读、写, 否则被禁止。 A0(数据选择):输入线。当 A0=1 时 CPU 写入数据为命令字,读出数 据为状态字;A0=0 时 CPU 读、写的字节均为数据。 DB0DB7:与单片机通信的数据引脚,用于传送数据。 Vcc、GND:电源端与地端,用于给芯片提供电源。 、(读、写信号):输入线。低电平有效,来自 CPU 的控制信 号,控制 8279 的读、写操作。 IRQ(中断请求):输出线。高电平有效。 在键盘工作方式中,当 FIFO/传感器 RAM 存有数据时,IRQ 为高电平。 CPU 每次从 RAM 中读出数据时,IRQ 变为低电平。若 RAM 中仍有数据, 则 IRQ 再次恢复高电平。 周口科技职业学院毕业生论文 11 在传感器工作方式中,每当检测到传感器状态变化时,IRQ 就出现高电 平。 SL0SL3(扫描线):输出线。用来扫描键盘和显示器。它们可以编程设 定为编码(4 中取 1)或译码输出(16 取 1)。 RL0RL7(回复线):输入线。它们是键盘矩阵或传感矩阵的列(或行) 信号输入线。 SHIFT(移位信号):输入线、高电平有效。该输入信号是键盘数据的 最高位(D7),通常用来扩充键开关的功能,作为控制功能键用。 在选通输入方式时, 该信号的上升沿可将来自 RL0RL7的数据存入 FIFO RAM 中。 在传感器输入下,该信号无效。 OUTA0OUTA3(A 组显示信号):输出线。 OUTB0OUTB3(B 组显示信号):输出线。 这两组引线都是显示数据输出线,与多位数字显示的扫描线 SL0SL3同 步,两组可以独立使用,也可以合并使用。 BD(显示消隐):输出线。低电平有效。该信号在数字切换显示或使用 消隐命令时,将显示消隐。 其在本设计中的工作电路图模块如图 2.6 所示: 周口科技职业学院毕业生论文 12 图 2.68279 键盘控制模块 由图可知, 其八位并行数据管脚分别与单片机的 P0 口各管脚相连。 读写 信号端也分别与单片机的对应。 而其片选由 P27 控制, 低电平有效。 其 CLK 管脚与 ALE 相连,单片机正常工作时,ALE 管脚输出方波,频率为单片机 工作频率的六分之一。而芯片 82C79 的扫描键盘的频率正是由此而产生,当 然 i 用这么高的频率,还需要继续对其分频后方可供 82C79 使用。复位键同 样与单片机的复位键相通。而至于有些管脚如 BD、SHIFT、CNTL/S 等由于 在此设计中无甚意义,故均将其接地处理。 其工作机理为:82C79 的 SL0SL2在芯片工作时,不断以固定的频率输 出低电平,当然是同一时间只选择其中一根线为低电平,其他还未高电平, 同时扫描 RL0RL7 端,若得到某各端口返回低电平,在经过消抖处理后仍 为低电平, 则说明 SL0SL2 当前输出低电平的那根线与 RL0RL7当前返回低 电平的那根线的交叉处的那个开关被按下了。那么芯片 82C79 会自动将该按 键按照规定的协议翻译为相应的键值(每个按键都有自己唯一的键值标示, 这 便于在编写程序时读取键值进而进行散转),存储与 FIFO 寄存器中,同时, 由于该寄存器中存有单片机未读取的值,IRQ 管脚就会自动输出高电平,再 经过非门后对单片机的 INT0 产生中断,此时只需在编程时在中断程序中对 其进行相应处理即可。 2.5MAX232 串口下载模块与附加电源模块等 由于程序绝不可能第一次编写完就可以达到预设的目的,其间要经过很 多次的更改修正,故为了便于程序的调试工作,我在此电路板上增设了一个 MAX232 串口下载模块, 这样便可以不用取下单片机去其他的电路板上下载, 而直接便可以在此电路板上完成了。同时为便于电源的引入,我选择了电脑 USB 口输出的 5V 直流电源,这样无需再用大型的电源设备,随处便可以调 周口科技职业学院毕业生论文 13 试。他们的电路图如图 2.7 所示: 图 2.7串口下载模块 MAX232 电路时该芯片数据手册中提供的典型应用图。MAX232 是一个 电荷泵器件,它采用开关电容技术将 5V 电压升压和获取负电压。 至于电源模块,便比较简单了,USB 口通常有四条引出线,其中边缘两 根便为电源线,一个为+5V 直流端,一个为地端。中间两根为差分信号线 D+ 与 D-,负责信号的串行通信。但由于此处只用做电源功能,故中间两根无需 接入。 +5V直流端通过一个按键开关并经过一10微法的电容滤波后接入Vcc, 供整个电路板供电。当电源导通后,电源指示二极管会高亮。 同时,基于人性化处理,在电梯上下行时,我专门用若干个二极管排列 成上下箭头的形状,如图所示。中间的四个发光二极管组成一竖线型,并处 于常亮状态, 当电梯上行时, 与单片机 P13 管脚连接的 UP 端将输出低电平, 经过一非门后使组成上三角的四个发光二极管点亮,从而形成以向上箭头; 同理,当下行时,与单片机 P11 脚相连的 DOWN 端将输出低电平,使组成 下三角的四个发光二极管导通,形成向下箭头,如图 2.8 所示。 周口科技职业学院毕业生论文 14 图 2.8上下行箭头显示模块 第三章芯片基本读写的实现 3.1 单片机对芯片 82C55 的基本读写 与一般其他的芯片类似,对 82C55 芯片的操作,一般也即对其内部寄存 器的操作。其内部寄存器分为两类,一类为命令寄存器,另一类为数据寄存 器。很明显,由于 82C55 的功能为将一组单片机 I/O 口扩展为三组 I/O 口, 那么肯定要有三组数据寄存器,分别对应着它的三组 I/O 口,即 PA 口,PB 口与 PC 口,那么 82C55 芯片便有四个寄存器,正好可以用两位的地址线进 行寻址(即管脚 A0与 A1)。大概得其读寄存器的流程图 3.1 周口科技职业学院毕业生论文 15 选择寄存器 地址 准备数据 读信号为低 读信号为高 片选无效 开始 使能片选 P0置高电平 选择寄存器 地址 准备数据 写信号为低 写信号为高 片选无效 开始 使能片选 P0置高电平 图 3.1读写寄存器流程图 具体的说,其过程为:开始选中该芯片(低电平有效),而后设置好所 要读写的寄存器的地址,也即设置好 A0与 A1的数值组合,若为读寄存器, 则让单片机读引脚 P37 为低电平,反之若为写寄存器,则让单片机写引脚 P36 为低电平,然后把要读或者写的数据放到数据口 P0 口上(需要注意的 是,当单片机读寄存器时,对于其自身来说,是输入数据,故此时需先让 P0 口值为高电平 0xff 为下一步的输入做准备,而此流程图的最后一步即为这种 情况做准备的),一段短短的稳定时间后再让读引脚或者写引脚为高电平, 则在由低到高的跳变中,数据得到了转移。然后再片选无效,以防以后的数 据传输产生相互干扰。最后数据口 P0 置为 0xff,为方便下次可能的输入做准 备。 3.2芯片 82C55 的初始化 对芯片 82C55 的初始化,实质上即是规定好它每个扩展口是作为什么方 式使用,即是输入还是输出,并且工作于何种方式。 周口科技职业学院毕业生论文 16 图 3.38255A 工作方式控制字格式 根据本设计的需求可知,我们只需用到两组扩展口 PA 和 PB,并且他们 均是用于控制二极管的亮灭,可见是作为输出使用的;并且他们不需要其他 的控制,即只要求作为最基本的输出即可,也即工作于方式 0 便可。而这一 切,均可以通过芯片的方式控制字来加以限定。由以上要求,再结合图 3.3 我们可以得到该控制字的数值为 0x80(二进制为 1000 0000)。最后,再把这一 命令控制字发送到 82C55 的命令寄存器即可,命令寄存器对应的地址为 A0=1,A1=1。 3.3对芯片 8279 的基本读写与初始化 3.3.1芯片 8279 的基本读写 与 82C55 类似,由于未用诸如 74HC573 之类的锁存器,P0 口无法实现 数据与地址的复用功能, 对 8279 的读写控制也是基于模拟时序的基础上进行 的。并且他们的时序操作图大概类似,故在此不再赘述。 3.3.2芯片 8279 的初始化 对该芯片的初始化,也即规定好该芯片的工作方式等,当然由于其功能 周口科技职业学院毕业生论文 17 较为强大,故对其操作的语句也相对多些。一般来说,对 8279 操作的命令分 为八种,分别为:1、键盘/显示器方式命令;2、时钟编程命令;3、读键字 命令;4、读显示缓冲器命令;5、写显示缓冲器命令;6、显示器禁止写入/ 熄灭命令;7、清楚命令;8、结束中断/错误方式设置命令。现分别介绍如下: 1、键盘/显示方式设置命令字(表 3.2) 表表 3.2键盘键盘/ /显示方式设置命令格式显示方式设置命令格式 D7D6D5D4D3D2D1D0 000DDKKK 其中:D7、D6、D5=000 方式设置命令特征位。 DD(D4、D3):来设定显示方式,其定义如下(表 3.3): 表表 3.3D3、D4 显示方式显示方式 D4D3显示方式 008 个字符显示,左入口开始 0116 个字符显示,左入口开始(复位后状态) 108 个字符显示,右入口开始 1116 个字符显示,右入口开始 所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的 显示字符逐个向右顺序排列;所谓右入口, 即显示位置从最右一位 (最低位) 开始,以后逐次输入的显示字符时,已有的显示字符逐个向左顺序移动。 KKK(D2、 D1、 D0):用来设定七种键盘、显示工作方式(表 3. 4) : 表表 3.4D2、D1、D0 操作方式操作方式 D2 D1 D0操作方式 周口科技职业学院毕业生论文 18 000外部编码扫描键盘(16 取 1),双键互锁 001内部译码扫描键盘(4 取 1),双键互锁 010外部编码扫描键盘 N 键依次读出 011内部译码扫描键盘 N 键依次读出 100外部译码扫描传感器矩阵方式 101内部译码扫描传感器矩阵方式 110选通输入方式,外部编码显示扫描 111选通输入方式,内部译码显示扫描 双键锁定与 N 键轮回是多键按下时的两种不同的保护方式。双键锁定为 两键同时按下提供的保护方法。再消颤周期里,如果有两键同时按下,则只 有其中一个键弹起,而另一个键保持在按下位置时,才被认可。N 键轮回为 N 键同时按下的保护方法。当有若干键按下时,键盘扫描能够根据发现他们 的顺序,依次将它们的状态送入 FIFO RAM 中。 2、程序时钟命令(表 3.5) 表表 3.5程序时钟命令格式程序时钟命令格式 D7D6D5D4D3D2D1D0 001PPPPP 其中:D7、D6、D5=001 为时钟命令特征位。 PPPPP( D4、D3、D2、D1、D0)用来设定外部输入 CLK 端的时钟进 行分频的分频数 N。N 取值为 231。例如外部时钟频率为 2MHZ,PPPPP 被 置为 10100(N=20),则对输入的外部时钟 20 分频,以获得 8279 内部要求 的 100KMZ 的基本频率。 3、读 FIFO/传感器 RAM 命令(表 3.6) 表表 3.6读读 FIFO/ /传感器传感器 RAM 命令格式命令格式 周口科技职业学院毕业生论文 19 D7D6D5D4D3D2D1D0 010AIXAAA 其中:D7D6D5 =010 为读 FIFO/传感器 RAM 命令特征位。该命令字只在传 感器方式时使用。在 CPU 读传感器 RAM 之前,必须使用这条命令来设定传 感器 RAM 中的 8 个地址(每个地址一个字节)。 AAA(D2、D1、D0)为传感器 RAM 中的八个字节地址。 AI(D4)为自动增量特征位。当 AI=1 时,每次读出传感器 RAM 后地 址自动加 1 使地址指针指向下一个存储单元。这样,下一个数据便从下一个 地址读出,而不必重新设置读 FIFO/传感器 RAM 命令。 在键盘工作方式中,由于读出操做严格按照先入先出顺序,因此,不需 使用此命令。 4、读显示 RAM 命令(表 3.7) 表表 3.7读显示读显示 RAM 命令格式命令格式 D7D6D5D4D3D2D1D0 011AIAAAA 其中:D7D6D5 =011 为读显示 RAM 命令字的特征位。该命令用来设定将要 读出的显示 RAM 地址。 AAAA(D3、D2、D1、D0)用来寻址显示 RAM 命令字的特征位。由位 显示 RAM 中有 16 个字节单元故需要 4 位寻址。 AI(D4)为自动增量特征位。当 AI=1 时,每次读出后地址自动加 1 指 向下一地址。 5、写显示 RAM 命令(表 3.8) 表表 3.8写显示写显示 RAM 命令格式命令格式 周口科技职业学院毕业生论文 20 D7D6D5D4D3D2D1D0 100AIAAAA 其中:D7D6D5 =100 为写显示 RAM 命令字的特征位。在写显示器 RAM 之 前用该命令用来设定将要写入的显示 RAM 地址。 AAAA(D3、D2、D1、D0)为将要写入的存储单元地址。 AI(D4)为自动增量特征位。当 AI=1 时,每次写入后地址自动加 1 指 向下一次写入地址。 6、显示禁止写入/消隐命令特征位(表 3.9) 表表 3.9显示禁止写入显示禁止写入/ /消隐消隐命令格式命令格式 D7D6D5D4D3D2D1D0 101XIWAIWBBLABLB 其中:D7D6D5 =101 为显示禁止写入/消隐命令特征位。 IW/A、IW/B(D3、D2)为 A、B 组显示 RAM 写入屏蔽位。由于显示 寄存器分成 A、B 两组,可以单独送数,故用两位来分别屏蔽。当 A 组的屏 蔽位 D3=1 时,A 组的显示 RAM 禁止写入。因此,从 CPU 写入显示器 RAM 数据时,不会影响 A 的显示。这种情况通常在采用双 4 位显示器时使用。因 为两个双四位显示器是相互独立的。为了给其中一个双四位显示器输入数据 而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。 BL/A、BL/B(D1、D0)为消隐显示位。用于对两组显示输出消隐。若 BL=1 时,对应组的显示输出被消隐。当 BL=0 时,则恢复显示。 7、清除命令(表 3.10) 表表 3.10清除清除命令格式命令格式 D7D6D5D4D3D2D1D0 110CDCDCDCFCA 其中:D7D6D5 =110 清除命令特征位。 周口科技职业学院毕业生论文 21 CDCDCD(D4D3D2)用来设定清除显示 RAM 方式,共有四种消除方式 (表 3.11)。 表表 3.11D4D3D2 消除方式消除方式 D4 D3 D2清除方式 10X将显示 RAM 全部清零 110将显示 RAM 清成 20H(A 组=0010,B 组=0000) 111将显示 RAM 全部置 1 0XX不清除(CA=0) CF(D1)用来置空 FIFO 存储器,当=1 时,执行清除命令后,FIFO RAM 被置空,使中断输出线复位。同时,传感器 RAM 的读出地址也被置 0。 CA(D0)为总清的特征位。它兼有 CD和 CF的联合效能。在 CD=1 时, 对显示的清除方式由 D3、D2 的编码决定。 清除显示 RAM 约需 160S。在此期间 FIFO 状态时的最高位 DU=1,表 示显示无效。CPU 不能向显示 RAM 写入数据。 8、结束中断/错误方式设置命令(表 3.12) 表表 3.12结束中断结束中断/ /错误方式设置命令格式错误方式设置命令格式 D7D6D5D4D3D2D1D0 111EXXXX 其中:D7D6D5 =111 为该命令的特征位。此命令有两种不同的作用。 (1)作为结束中断命令。在传感器工作方式中使用。每当传感器状态出现 变化时,扫描检测电路将其状态写入传感器 RAM,并启动中断逻辑,使 IRQ 变高,向 CPU 请求中断,并且禁止写入传感器 RAM。此时,若传感器 RAM 读出地址的自动递增特征没有置位(AI=0),则中断请求 IRQ 在 CPU 第一 次从传感器 RAM 读出数据时就被清除。若自动递增特征已置位(AI=1), 则 CPU 对传感器 RAM 的读出并不能清除 IRQ,而必须通过给 8279 写入结 周口科技职业学院毕业生论文 22 束中断/错误方式设置命令才能使 IRQ 变低。 因此在传感器工作方式中, 此命 令用来结束传感器 RAM 的中断请求。 (2)作为特定错误方式设置命令。在 8279 已被设定为键盘扫描 N 键轮回 方式以后,如果 CPU 给 8279 又写入结束中断/错误方式设置命令(E=1), 则 8279 将以一种特定的错误方式工作。这种方式的特点是:在 8279 的消颤 周期内,如果发现多个按键同时按下,则 FIFO 状态字中的错误特征位 S/E 将置 1,并产生中断请求信号和阻止写入 FIFO RAM。 上述八种用于确定 8279 操作方式的命令字皆由 D7D6D5 特征位确定, 输入 8279 后能自动寻址相应的命令寄存器。 因此, 写入命令字时唯一的要求 是使数据选择信号 A0=1。 8279 只有一位地址线 A0, 那么当然只可以寻址两个寄存器。 实际上也是 如此的,当 A0=0 时,寻址的为其内部的数据寄存器;当 A0=1 时,寻址的为 其内部的控制寄存器。那么其控制命令有多种,单一的一个命令寄存器又是 何以分辨如此多的命令呢?如上面所示,命令寄存器的八位中,高三位为命 令的分辨符。故若想输入不同的命令,只需写入相应的高三位数据即可。 开始 清零寄存器 (命令字0xd1) 设置按键方式 (命令字0x03) 设置分频 (命令字0x2a) 图 3.48279 初始化 在本毕设中,应该规定哪些命令呢?如流程图 3.4 所示,对 8279 的初始 化供分为三步,即先后输入三个命令。首先,我们要对芯片内部的各寄存器 进行类似于复位的清零操作,方便以后的使用;其次,由于本设计中 8279 周口科技职业学院毕业生论文 23 主管 22 各按键, 而按键按下时又有多种复杂的情况, 诸如同时有若干按键按 下等,我们要选择此种情况的处理方式;再者,由于 8279 对按键实际上是通 过扫描的方式确定有无按键按下,故我们还要设置好扫描的频率等,由硬件 电路知道,8279 有一时钟输入引脚 CLK 接于单片机的 ALE 引脚上,在单片 机正常工作时,ALE 引脚输出的为晶振频率六分之一的脉冲,这正是 8279 扫描的时钟源,当然,8279 的扫描频率不可能达到单片机晶振的输出频率那 么高,其实际的最大扫描频率为 100KH 左右,故我们需要一设置分频命令。 那么这三个命令的命令字是如何得到的呢?参考上面命令字的格式可以 知道: (1)清除寄存器命令的高三位特征位应该为 110,又由于我们是将显示 RAM 全部清零, 故 D4 到 D2 位应该选择为 100, 由于对显示 RAM 的清除方 式选择由 D3 和 D2 控制,故要求其 D0 位为 1。故最终得到的命令字为 11010001,转换为十六进制即为 0xd1。 (2)设置按键方式中,其特征位的代码为 000。由于未用到显示功能,故 其对应控制位 D4 与 D3 可以随便设置,在此均设置为 00。至于按键工作方 式的选择,我们只所以选择内部译码扫描键盘 N 键依次读出的方式,是结合 实际情况的结果。双键互锁的方法是当键盘同时有两个键按下时,任何一个 键值均不能进入 FIFO RAM 中,直至仅剩一个键保持闭合时,该键值才能进 入到 FIFO RAM 中。而 N 键依次读出方式,是 N 个键同时按下的保护方法。 当有若干个键同时按下时,在键盘的扫描过程中根据发现它们的先后顺序进 行识别,并以此将它们的状态送入 FIFO RAM 中。对比我们可以发现,现实 中偶尔会发生不同楼层会有不同人同时按下不同按键的情况发生,这时若选 择双键互锁的方式, 则谁的键值都不能传达给内部寄存器, 这是很不方便的, 故在此,我们选择了 N 键依次读出的方式。对于市内部译码还是外部编码的 扫描方式,我们也可以根据其特点进行选择:编码方式,也称为外部译码方 式,计数器以二进制方式计数,4 位计数状态从扫描线 SL0SL3输出,经外 部译码器译出 16 位扫描线,为键盘和显示器提供 16 取 1 的扫描线。而译码 周口科技职业学院毕业生论文 24 方式,也称为内部译码方式,扫描计数器的低 2 位经内部译码后从 SL0SL3 输出,故此时提供了 4 取 1 的扫描译码。由电路图我们可以看出,实际上我 们仅仅用到了 SL0SL3中的前三根线(因为按键不是太多,三乘八的矩阵键 盘已足够使用),故四取一得译码方式便成为了我们的首选,其对应代码为 D2D1D0=011。最终我们得到完整的命令符为 0000 0011,也即十六进制中的 0x03。 (3)设置分频命令字。其对应特征位为 001.由于电路板上,单片机的晶振 为 6MHz,ALE 脚输出的脉冲频率为晶振的六分之一,即 1MHz,而 8279 的 基本频率为 100KHz,故我们设置的分频系数应该为 1M/100K=10(十进制), 对应的二进制为 01010。最后可得完整二进制与十六进制命令码分别为 00101010 和 0x2a。 第四章系统的高层软件设计 4.1引言 从程序功能上来分, 本设计的高层软件程序大概可以分为以下几类: 一、 运行与决策函数;二、中断处理函数;三、置位各状态变量函数;四、清除 各状态变量函数。 其中,第一类函数起作用于按键按下的时刻,当有按键按下时,8279 芯 片会采集到键盘的键值,并以中断的方式发送给单片机,此时,单片机即对 程序中所用到的各个状态变量进行置位并且通过 82C55 点亮相关发光二极 管,如置位按键所对应的去向变量等,方便决策函数使用。第二类函数的功 能恰好与第一类相反,这类函数起作用于电梯到达目标楼层时,这时函数负 责把相关发光二极管熄灭,并且及时清除相关状态位,以免影响判别函数作 出正确判断。第三类函数是程序的核心。它直接负责管理电梯下一次所要到 达的楼层,并且要基于短时间、高效率、人性化等原则。每当电梯经过一楼 层时,此函数即会被调用,然后返回一个变量名为 aim 的值,它即为下一个 周口科技职业学院毕业生论文 25 电梯要停留的目标楼层值。 而从程序的层次上来分,又可分为位于最底层的芯片内部寄存器操作的 基层程序和位于上层的应用程序,故本章以此为顺序,先介绍基层函数的实 现,继而详细介绍各高层的应用函数。 4.2单片机中断处理函数 本设计主要用到了单片机的中断系统。 当 8279 扫描到有按键按下时, 便 会将键值存储起来,并在 IRQ 引脚输出高电平发出中断,通知单片机进行相 关处理。在此详细介绍下中断的相关设置以及中断处理中都进行了哪些操作 (如图 4.1 所示)。 分析键值来源 点亮相应发光 二极管 置位相应状态 变量 读取键值 图 4.1中断处理中的相关操作 4.3电梯判决函数 4.3.1电梯所处状态的分类与判定 这是整个程序成功运行的核心保证。在电梯经过一个楼层时,就会自动 调用该函数,它的作用是基于短时间、高效率、人性化的基础上,合理智能 的对电梯的运行进行调度,结合实际情况,最终得出电梯下一个目标停留楼 层。其流程如图 4.2 所示。 周口科技职业学院毕业生论文 26 开始 按键标识 全为0? 电梯不 再运行 电梯向 上运行 电梯向 下运行 电梯上 楼接人 电梯上 楼送人 电梯下 楼接人 电梯下 楼送人 相关处理1相关处理2相关处理3相关处理4 是 否 图 4.2电梯判决流程图 由图可知,程序中将实际情况分为四种情况来判断:电梯上行且是去送 人(即电梯此时位于底层,而高层有人呼叫要上楼)、电梯上行且是去接人 (即电梯此时位于底层, 而高层有人呼叫要下楼) 、 电梯下行且是去送人 (即 电梯此时位于高层,而低层有人呼叫要下楼)、电梯下行且是去接人(即电 梯此时位于高层,而低层有人呼叫要上楼)。 而这四种情况,也就包含了实际电梯中的绝大部分情况。情况不同,分 析的方法也当然不一样。这个稍后会有详细介绍,而首先,我们要了解电梯 是如何得知此时它是上面四种的哪一种情况的呢? 这可以分为两个步骤:第一判断电梯是上行还是下行;第二,判断是去 接人还是去送人。当然,第一个是最好判断的,因为电梯在运行时,有两个 与楼层有关的变量,一个为当前所在楼层值 present,一个为目标楼层值 aim, 当电梯运行时,会让这两个值进行比较,若前者大于后者,就为下行,从而 周口科技职业学院毕业生论文 27 让状态变量 down 清零(由于电路中上下行的箭头使用了非门,故在程序中, 两表示上下行的状态变量 up 和 down 清零时表示有效);反之,当前者小于 后者,即为上行,从而 up 清零。 至于是接人还是送人,是判别的难点。在此,巧妙地利用了两个状态变 量 scanup 和 scandown,前者等于所有上行按键和去几层按键状态变量的或, 后者等于所有上行按键和去几层按键状态变量的或。由此可知,当上行按键 和去几层按键均为 0 时,电梯仍为上行状态,那么此时,电梯的状态肯定处 于上楼接人的状态中(即在高层,有人按了下行键)。反之,若它们中有一 个为 1(且按键所处楼层高于当前电梯所在楼层,这个由其他函数来限定, 防止电梯在上行过程中受已经过楼层按键按下时的干扰),则电梯此时处于 上楼送人状态,就会执行对应的子程序。其他的与此同理。 4.3.2电梯各情况下所对应的处理方法 以电梯上行的两种状态为例。 在实际应用中,最简单的情况莫过于电梯当前为闲置状态,然后有一人 按下按键呼叫,然后电梯便响应呼叫。但是,实际情况往往比这复杂的多, 在第一个人按下按键电梯运行的过程中,还很有可能会有其他不同楼层的人 按下不同的按键(上行或者下行)的情况发生。那么就必须得为电梯规定好 一个特定的优先级规则,让其依据这个规则来运行,以免乱作一团。那么这 个规则就必须要高效且人性化,在此,我们规定,当电梯上行时,均不理会 那些按下行按键的顾客。并且,若在上行过程中,也有人在某层按的是上行 按键,但是电梯此时已经走过了该层,那么电梯也绝对不会再选择先下行接 他。 当然, 当将高层上行的顾客送完后 (此时一般来说电梯已经处于高层了) , 电梯便会检测下行按键,若更高层有人呼叫下行,则电梯会选择先去响应他 们,然后再下行的过程中依次响应按了下行处于等待中的顾客,最后这些顾 客都送完后,再去相应那些电梯上行过程中,处于比电梯低的楼层却按了上 行键的顾客。 周口科技职业学院毕业生论文 28 简单地说,若电梯处于上行状态,则在该过程中响应不同顾客的优先级 (或者电梯响应的先后顺序)为:高层呼叫上行顾客高层呼叫下行顾客底 层呼叫下行顾客底层呼叫上行顾客。 那么,当电梯通过程序运行得知到相应状态后,又是如何具体的判断当 天所锁定的目标楼层是否要变更呢?现以上行为例,加以详细说明: 若上行,且是送人,比如电梯当前在二层,七楼有人呼叫上楼,那么它 就要响应这一呼叫,从而把自己的目标楼层锁定为七楼并向上运行,而在七 楼呼叫后不久,六楼也有人呼叫上楼(且电梯此刻还未运行到六楼),那么 在电梯运行中,没经过一个楼层,会做一次判决,因为六楼也有人呼叫,所 以正常情况下,它应该在判决后将目标楼层定位六楼。而若六楼的顾客按下 的是下行键,或者二楼的人按下呼叫键,电梯此时都会暂时不予理会。部分 程序代码见附录。 由程序可以看出,当六楼有上行键呼叫时,状态变量 f6up 便会被置位, 程序走到判别 if(f6up=0)|(present6)时,里面的内容即为假, 则不再继续向 下判断,而转向 else 语句中,里面又有一个判断,当确定此时确实有键按下 且电梯当前所处楼层小于六楼时,目标楼层就会被变更到六楼,程序最终返 回一个 aim 值。由于程序中没有下行键的出现,故下行键的状态是不会影响 到该程序的判决的。 此时程序的检测依据两个标准:第一,由低层像高层开始检查;第二, 对于电梯已经过的楼层和按下下行键所发出的请求, 电梯暂时是不予理会的。 这也是很明显的,因为上行送人状态中,低层的优先权大于高层的。程序就 是靠着上面这些 if 语句的嵌套,来完成这种优先级设置的。 至于上行接人状态时,所坚持的标准是由高层到底层的顺序进行排查, 而对于上行键的呼叫暂时不予理会。下行的状态,恰好与上行相反,在此不 再赘述。 周口科技职业学院毕业生论文 29 4.4电梯运行函数 该函数直接控制电梯的上行与下行、运行与停止。不过在其中其关键作 用的还是判决函数给它提供的目标楼层值。其具体的流程如图 4.3 所示。它 的功能就是判断目标楼层与当前楼层间的关系:若前者大于后者,则上行; 若前者小于后者,则下行;若相等,则停止片刻把门打开。当然,之后它还 要做一次判断,因为可能还有其他的楼层需要呼叫,此时程序会自动装入合 适的目标楼层值,指挥电梯继续运行下去,直到所有的呼叫都完成为止。 在这个程序中,还需注意的是当到达某一目标楼层后,需要做一些后续 工作,即清零相应的状态变量和熄灭相应的发光二极管。前者是为了使该状 态变量不会再对判决函数的结果产生影响, 因为该响应呼叫任务已经完成了, 就应该把它从参考参数里去除;后者是实际需要。而熄灭二级管的方法与点 亮二极管的方法正好相反,要注意不可以熄灭其中一个二极管的时候,不可 以把其他的也一起熄灭了,故在此也是用到在点亮二极管中的两个 PA 和 PB 口的状态参数 pasta 和 pbsta。 周口科技职业学院毕业生论文 30 开始 当前楼层与目 标是否相等? 当前楼层小于 目标楼层? 上行下行 当前楼层加1 判决目标楼 层是否改变 ? 否 改变目标楼层 是 当前楼层减1 判决目标楼 层是否改变 ? 改变目标楼层 是 是否 否 否 是 清零相应状态 变量与二极管 判决目标楼 层是否改变 ? 停止 开门 否 是 图 4.3运行函数流程图 4.5主函数 之所以把主函数放于最后才说,是因为它最为简单,它之上把上面所有 的函数按照恰当的顺序排列起来,便于相互调用而已。 首先,是对 82C55 与 8279 的初始化,规定它们的工作模式与相关必要 状态;由于本程序中,各按键按下的信息是通过中断来告知单片机的,故我 们要对单片机中断有相应的程序语句加以说明,如开总中断,开外部中断 0 以及其触发方式等等。最后就是一个大的死循环了,当电梯运行到这里的时 候,就一直执行判决函数,检测有目标楼层有无改变,如果有,就开始调用 周口科技职业学院毕业生论文 31 运行函数,而运行函数没当经过一个楼层又会再次调用判决函数等等。而当 有中断发生时,单片机又可以转而处理相应的中断

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论