武汉理工大学毕业设计(论文)
4 系统的软件设计
4.1 引言
从程序功能上来分,本设计的软件程序共分为以下三部分:1、中断处理函数;2、电梯判决运行函数;3、主函数。
而从程序的层次上来分,又可分为位于最底层的芯片内部寄存器操作的基层程序和位于上层的应用程序,故本章以此为顺序,先介绍基层函数的实现,继而详细介绍各高层的应用函数。
4.2 单片机中断处理函数
本设计主要用到了单片机的中断系统。当有按键按下时,键盘PA0~PA7端便会出现低电平,通过中断判断电路后发出中断,通知单片机进行相关处理。在此详细介绍下中断的相关设置以及中断处理中都进行了哪些操作(如图4-1所示)。
读取键值分析键值来源点亮相应发光二极管置位相应状态变量
图4-1 中断处理中的相关操作
4.2.1 单片机有关中断的相关设置
主要表现为对其中的一些相关寄存器的设置。由于用到的是外部中断0,其优先级别最高,故在此只需设置单片机特殊功能寄存器里的中断允许控制寄存器IE和定时/计数器控制寄存器TCON。二者的数据结构如表4-1和表4-2所示。
表4-1 中断允许与禁止寄存器IE
EA / ET2 ES ET1 EX1 ET0 EX0 21
武汉理工大学毕业设计(论文)
其中:EA为单片机中断允许控制位,当其置位时表示允许单片机接收中断。后面六位依次为定时器2中断、串口中断、定时器1中断、外部中断INT1、定时器0中断和外部中断INT0的中断允许控制位[20],哪一位置1,就代表允许相应的中断。本设计中用到的为外部中断0的中断,故需将EX0和EA置位。
表4-2 定时/计数器控制寄存器TCON
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 该寄存器包含有关于定时控制与溢出和外部中断的触发方式与中断请求标志的相关设置。其中高四位和定时器有关,在此没有用到。第四位中,最低两位中的IE0和IT0时与外部中断0有关的。当外部中断0有中断呼叫时,IE0会自动置一,也即作为中断发生的一种标志。而IT0是关系到中断是以何种方式触发的。当IT0=0时,则为电平触发方式;当IT0=1时,则为边沿触发方式[21]。在此,考虑实际情况,选择边沿触发方式较为合理,故要设置IT0=1。
4.2.2 分析按键键值
单片机在读取到键值后,自然会分析该键值来自于哪一层楼的哪个按键。然后才可以把该按键对应的二极管点亮。
在程序中我们将按键值分别设置三个变量yuzh、shang、xia来保存(初始值设为0x00)。这三个变量分别中保存的是“欲至”,“上行”,“下行”三列的按键值。对按键值进行处理时,只对同列之间的按键值进行处理。举例进行介绍,假设欲至3楼和5楼按键被按下。首先,欲至3楼按键被按下,单片机收到中断请求,进入键值判断程序。首先读出A口的值(11111011),将值赋给变量templayer,而后B口赋值0x06(00000110),即使PB0置低电平,其余为高电平。如果此时A口的值不全为高电平则可断定有键按下,与PB0相连的那一列(“欲至”列)肯定有键按下。templayer值按位取非后与原yuzh值进行异或后赋给变量yuzh,此时,yuzh为00000100。欲至5楼按键按下后,处理过程同上,处理后yuzh为00010100。shang、xia变量值的获得同yuzh基本一致,此处不再赘述。
4.2.3 置位相关状态变量
这一步是整个程序得以正常运行的前提与基础。在程序开始之前,我们设置了这样一些状态变量,它们分别对应于各个按键,当某个按键按下时,其对应的状态变量就会被置位。这样做的好处是使电梯在执行判决操作时,有据可循。因为判决函数就是依靠当前都有哪些键按下以及电梯此刻所处的上下行状态来判断下一个需要停留的目标楼层的。
22
武汉理工大学毕业设计(论文)
4.3 电梯判决运行函数
这是整个程序成功运行的核心保证。在电梯经过一个楼层时,就会自动调用该函数,它的作用是基于短时间、高效率、人性化的基础上,合理智能的对电梯的运行进行调度,结合实际情况,最终得出电梯下一个目标停留楼层。其流程如图4-2所示。
图4-2 电梯判决流程图
由图可知,程序中将实际情况分为四种情况来判断:电梯上行且上层有人按上行按键、电梯上行且上层有人按下行按键、电梯下行且下层有人按下行按键、电梯下行下层有人按上行按键。
上述四种情况,包含了实际电梯中的绝大部分情况。情况不同,分析的方法也不一样。首先,设置标志变量e,e=1时表示电梯上行,e=0时表示电梯下行。程序只要判断e的值就能确定电梯是上行还是下行。
对于上述的四种情况,电梯上行时,只在其上层的欲至层或上层中按上行键的楼层停;电梯下行时,只在其下层的欲至层或下层中按下行键的楼层停。
电梯的运行、停止以及厢门开关,分别通过函数stopat和函数men来控制。程序运行中通过调用这两个函数实现上述功能。在这个程序中,还需注意的是当到达某一目标楼
23
武汉理工大学毕业设计(论文)
层后,需要做一些后续工作,即清零相应的状态变量和熄灭相应的发光二极管。前者是为了使该状态变量不会再对判决函数的结果产生影响,因为该响应呼叫任务已经完成了,就应该把它从参考参数里去除;后者是实际需要。而熄灭二级管的方法与点亮二极管的方法正好相反,要注意不可以熄灭其中一个二极管的时候,把其他的也一起熄灭了。
4.4 主函数
之所以把主函数放于最后才说,是因为它最为简单,它之上把上面所有的函数按照恰当的顺序排列起来,便于相互调用而已。
首先,是对8255A的初始化,规定它们的工作模式与相关必要状态;由于本程序中,各按键按下的信息是通过中断来告知单片机的,故我们要对单片机中断有相应的程序语句加以说明,如开总中断,开外部中断0以及其触发方式等等。最后就是一个大的死循环了,当程序运行到这里的时候,就一直执行判决运行函数,根据当前电梯的运行状态检测其上层或下层有没有需要停的楼层。如果有,就开始调用运行函数,而运行函数每当经过一个楼层又会再次调用判决函数等等。而当有中断发生时,单片机又可以转而处理相应的中断。就这样,各子函数间通过主函数形成了一个统一的整体,使得整个系统得以完整运行。
24
武汉理工大学毕业设计(论文)
5 结论
本文对电梯控制系统这一毕业设计做了详细的报告与总结,其中包括硬件部分仿真与软件部分两大模块,而且对其中各个重要的子模块加以了重点详细地说明。
经验证,本设计所设计的升降控制完全符合当初的预想,该升降控制系统完全符合高效、省时、人性化的特点。运行结果完美无误。
本毕业设计的主导思想是:当有顾客按下按键呼叫电梯时,运用单片机的中断,将该信息传递给单片机,从而单片机置位相关的状态参量,为电梯判决函数的判断提供依据,然后单片机再实时地控制电梯的运行状态,厢门的开关,以及控制8255A点亮或者熄灭相关发光二极管。其中,单片机中断系统是基础,对8255A的寄存器读写是基石,电梯运行函数为主导,电梯目标楼层判决函数为关键与核心。
总的来说,由于精心设计与调试,毕业设计的成品还是比较成功的,由于控制键盘输入的8255A芯片还有部分引脚没有用,因而经过改进还可以对8层以上的电梯进行控制,当然,如果控制更高层的电梯,就会受到单片机引脚资源及显示模块的限制。但程序本身的思想本身是可以支持更多层电梯的运行调度的,如果用其他管脚多的处理器的话(如ARM型处理器),则这一设想完全可以实现。
当然,本设计还是有些不足之处的,比如这只是单个电梯在运行,如果某些大楼载客量过多时,当然无法满足需求,故我想以后可以设计出两个轿厢的电梯,这样两者相互补充,可以满足更多要求,使顾客更方便。当然难度也是有的,它们之间需要共同维护一些变量,都会带来一些未知的麻烦等等,但我想只要去思考,总会可以找到解决之路的。
25
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的升降控制系统设计 - 图文(7)在线全文阅读。
相关推荐: