https://mp.weixin.qq.com/s?__biz=MzU3OTczMzk5Mg==&mid=2247488260&idx=2&sn=3f6c7912f98d9af59463a99882b607a9&chksm=fd60c383ca174a95000c99fd9acde86de54c8ec0031339c4e1fb527b771a831b96b375f5bc47&token=1005114409&lang=zh_CN#rd
——————————————————————————————————————————
基于AT89C52单片机设计一个四层电梯单片机控制系统。该系统应满足的功能要求为:4层电梯运行控制,轿内外呼叫,运行状态显示。独立键盘、LED显示楼层、指示灯。
本设计采用AT89C52单片机作为核心,配以适当接口作为输入输出通道。采用三行按键矩阵开关电路作为外呼内选呼叫控制。实际电梯控制系统每层装有一个传感器,从而判断车厢所在位置,本模型由10个独立按键作为楼层到达信号传输给单片机,而后通过内部电路从串口驱动数码管显示楼层数。
当电梯到达所选层,电梯开门延时等待进人并选层,然后延时关门执行请求,若无请求则停在本层等待请求。软件部分使用C语言,利用查询方式来检测用户请求的按键信息。
本系统硬件主要由复位模块、显示系统、扩展部分、矩阵控制模块几部分组成。各模块的主要功能如下:
1) 复位的功能其一用于程序初始化,其二也用于摆脱互锁和跑飞;
2) 显示系统的功能分为显示led灯显示触发楼层数和数码管显示当前楼层数的两个部分,用于显示电梯系统此时正在运行的状态;
3) 扩展部分:因为单片机芯片的接口有限,故使用8155扩展串行口用以连接更多功能;
4) 矩阵控制模块:即内呼外叫控制程序,用于控制电梯内外电路。
单片机最小系统电路设计
单片机最小系统包括复位电路和时钟电路。本复位电路采用上电自动复位和手动复位组合。上电自动复位是在加电瞬间电容通过充电来实现的,在通电瞬间,电容C3通过R1K电阻充电,RST端出现正脉冲,用以复位。
只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。手动复位是通过按下S111后,通过电阻RR直接给服务端一个高电平使之复位。编程初始化设置数码管显示为1,并且等待楼层模拟传感器读取数据。
开关控制电路设计
实际上即为一个内呼外叫系统,现以呼叫信号的输入为例,来说明信号输入及单片机识别原理。如图3所示,采用P0口外接上拉电阻的并行输入形式,来输入外呼叫信号,本电路采用4×4中的10个矩阵键盘,行扫描法识别键值的原理,具体原理如下:
a) 判断键盘中有无键按下 将全部行线PC.0-PC.3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
b) 判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
由于没有电梯控制硬件模型,只能用按键来模拟电梯到达位置的触发信号。本电路采用独立式按键非编码键盘接口查询方式。当任何一个键按下时,与之相连的输入数据线即被清0(低电平),而平时该线为1(高电平)。
要判断是否有键按下,用单片机的位处理指令十分方便。这种键盘结构的优点是电路简单;缺点是当键数较多时要占用较多的I/O口。 查询方式键盘的处理程序比较简单。本处理程序中没有使用散转指令,并且省略了软件去抖动措施,只包括键查询、键功能程序转移。
led楼层触发显示灯电路设计
当前楼层显示电路设计
运用7SEG-MPX-4CA来实现输出楼层信息和当前楼层上下信息,7seg-mpx8-ca是共阳极数码管显示器,它左下侧的abcdefg dp是LED数码管显示器的I/O口,是段选信号,右下侧的12345678是它的位选信号,就是从左到右分别是第一位到第八位,段选信号与位选信号分别接到单片机的不同输出口。
8155串行口扩展电路设计
8155是一个有40引脚的塑封芯片,功能较强,广泛的应用在计算机电路中。它有两个8位口A、B和一个6位口C,总共可以扩展出22条接线。它含一个可预置的计数器,计数范围从2到16383,可用于延时、计数或分频。它内部还有256字节的RAM,可以补充CPU内存的不足。为了能够设置芯片的工作方式和了解芯片的状态,内部还有命令寄存器和状态寄存器。
其中,与 CPU相连的引脚有:CE是片选信号,当CE=0时,芯片才与CPU交换信息。CE接到地址译码器上,由整个系统分配给高位地址,以保证任何时刻只有一个芯片可与CPU交换信息,不发生地址冲突;IO/M是接口或内部RAM寄存器的选择线。
当IO/M=1时,CPU是对I/O接口操作,当IO/M=0时,CPU是对RAM进行操作,它一般接到CPU的地址线A8上;AD0~AD7为地址数据总线;ALE 是地址锁存信号输入线;RD、WR分别是读、写控制线;RESET是复位线。
当RESET=1时,8155被复位。与外部设备连接的引脚有:TMRIN(timerin)是计数输入线;接到待测的脉冲源;TMROUT(timerout)是计数输出线;PA0~PA7为A口的8位输入/输出线;PB0~PB7为B口的8位输入/输出线;PC0~PC5为C口的6位输入/输出线。各接口的工作方式由控制命令决定。
主程序设计
1)显示模块显示当前楼层,主程序不断地执行键盘扫描程序,当有键盘输入时,主程序调用定时器中断程序,并通过行列扫描方式读取到是哪个键盘输入。
2)读取到键盘之后,主程序调用显示子程序,通过显示上下和当前楼层信息和LED输出当前按下键的信息以及开关门的信息向操作人员传递信息。
定时器子程序设计
定时器子程序主要任务是完成3秒的定时,使显示模块能保持一段时间,使人能够观察到具体信息。如果没有这一模块,靠系统时钟来控制,一些中间过程根本看不出来,也给软件仿真和硬件仿真带来不小的困难。
键盘扫描子程序设计
扫描子程序主要任务是通过行列扫描方式确定具体键盘的输入,先让PA口输出低电平,逐行扫描,直到能确定哪行有输入,然后读取PC口的信息,再与设定值进行比较,最后通过选择环节,确定最终的键盘号,PC0-PC3作为行线,PA0-PA2作为列线,相互配合完成扫描确认工作,最终转到输出子程序并将所输入的信息转化为具体的上下和数字输出,完成键盘扫描子程序的基本任务。
系统初始状态在1楼等候,以下为遇到的情况:
1)当按下2楼上,显示栏会显示上和上到2楼的信息,同时到2楼之后,开门LED会同时点亮。上楼按法和显示同上。
2)当楼层上升到4楼,按下下楼按键,显示栏会显示经过的楼层以及到达楼层,同时LED在开门时会点亮,下楼按法和显示同上。
3)当在电梯外部按完,开门LED点亮之后,接下来按你所要去的楼层,到达目标楼层之后,开门LED会点亮,同时显示上下和楼层信息。