河南理工大学毕业设计(论文)说明书
5 软件设计
5.1 初始化程序
由于在设计中用到了定时器,所以程序中要对定时器的工作模式、工作方式和启动控制方式进行说明,给定时器送计数初值,开中断,启动定时器工作等,程序中用MOV IE, #88H开中断,允许定时器中断;然后给数码管送显示数字“1”(初始状态电梯在一楼),扫描键盘,转入处理请求子程序,进入程序执行阶段。
5.2 键盘扫描子程序
设计中由于采用键盘矩阵来实现外呼内选控制,而电梯的运行方向是根据这些呼叫按键和选择按键来决定的,所以单片机要不断的扫描键盘来获取各层呼叫状态,从而来控制电梯的运行。故键盘矩阵扫描是本系统软件设计的重要部分之一。另外需要把键盘扫描到的各层按键状态存储起来,然后和电梯的运行状态比较,判断是否响应呼叫楼层(电梯只响应同方向呼叫)。存储单元的分配如下: 20H(电梯厢外上升请求):
20H.0---一楼;20H.1-----二楼;20H.2----三楼;20H.3----四楼。 21H(电梯厢外下降请求):
21H.0---一楼;21H.1-----二楼;21H.2----三楼;21H.3----四楼。 22H(电梯厢内楼层请求):
22H.0---一楼;22H.1-----二楼;22H.2----三楼;22H.3-----四楼。
20H~22H的各位数值为“0”表示“无请求”,数值为“1”表示“有请求”。
5.3 程序要点说明
在电梯开始工作时,中断服务程序每50ms扫描一次按键状态,并记录在约定的存储单元。
31
河南理工大学毕业设计(论文)说明书
堆栈栈底:70H单元。
寄存器R3记录“停止”键是否按下。
存储单元2AH的低四位存放楼层数,间接的用它来指示楼层位置。
5.4 设计流程图
5.4.1 总流程图
开始初始化在一楼等待,显示楼层“1”NP3.4=0?YN扫描按键,判断是否有请求?Y处理请求P3.5=0?YN
32
河南理工大学毕业设计(论文)说明书
5.4.2 模块流程图
5.4.2.1键盘扫描模块
有键按下?Y消抖NN确有键按下?Y扫描,存键状态延时等待键释放?Y返回
N
33
河南理工大学毕业设计(论文)说明书
5.4.2.2 请求处理模块
N2、3、4楼有请求?Y升到2楼,显示2N降到1楼,显示1Y1楼有请求?N3、4楼有请求?降到2楼,显示2YY升到3楼,显示3N1、2楼有请求?N4楼有请求?Y降到3楼,显示3Y升到4楼,显示41、2、3楼有请求?N
34
河南理工大学毕业设计(论文)说明书
5.4.2.3 操作模块
NP2.0=0?YP2.1=0?Y电机反转N电机正转NR0=1?YCOUNT=20R0=2?YCOUNT=30NR0=3?NYCOUN=40前5次增速NCOUNT=5?保持速度,匀速运行N余下5次?Y减速运行NCOUNT=0?Y
35