单片机89C51做电梯自动控制系统设计
- 格式:doc
- 大小:219.00 KB
- 文档页数:21
单片机原理与应用技术课程设计报告
基于单片机控制的电梯自动控制系统
专业班级:
姓名:
时间:
指导教师:
基于单片机控制的电梯自动控制系统
1.设计目的与要求
1.1 基本功能
(1)显示:本设计要求实现6层控制,实时显示电梯所在楼层位置。
(2)升降控制:采用一台电动机的正反转来实现电梯的升降。
(3)具备不可逆响应的功能:
电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向呼叫均无效。
1.2 扩展功能
(1)可增加人性化的按键语音服务功能。
(2)可增加遥控或感应操作功能。
2.设计内容
(1)画出电路原理图,正确使用逻辑关系;
(2)确定元器件及元件参数;
(3)进行电路模拟仿真;
(4)SCH文件生成与打印输出;
3.编写设计报告
写出设计的全过程,附上有关资料和图纸,有心得体会。
4.答辩
在规定时间内,完成叙述并回答问题。
- 2 -
目录
1 引言 ·······································································································- 4 -
2 电梯控制系统原理················································································- 4 -
3 总体设计方案························································································- 5 -
3.1 设计思路·······················································································- 5 -
3.1.1 方案比较··············································································- 5 -
3.1.2 方案确立··············································································- 5 -
3.2 设计方框图···················································································- 6 -
4 电梯控制系统单元电路的设计 ····························································- 6 -
4.1 单片机最小系统···········································································- 7 -
4.2 信号输入电路···············································································- 7 -
4.2.1 内外请求输入电路 ······························································- 8 -
4.2.2 厢体位置模拟输入电路·······················································- 8 -
4.3 信号模拟输出电路 ·······································································- 9 -
4.3.1 楼层显示电路 ······································································- 9 -
4.3.2 电梯外部请求显示电路·····················································- 10 -
4.3.3 电梯方向及开关门电路·····················································- 11 -
5 系统软件设计······················································································- 12 -
5.1 初始化程序·················································································- 12 -
5.2 各楼层子程序·············································································- 12 -
5.3 显示子程序·················································································- 12 -
6 结束语 .................................................................................................- 14 - 参考文献 .................................................................................................- 14 - 附录一 .....................................................................................................- 16 - 附录二 (17)
- 3 -
基于单片机原理的电梯自动控制系统
摘要:本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机
最小系统模块、电梯内外电路按键矩阵模拟检测模块、电梯外请求发光
管显示模块、楼层显示数码管模块、电梯上下行及开关门模拟显示模块
等5部分组成。
该系统采用单片机(A T89S51)作为控制核心,内外招使
用按键按下与否而引起的电平的改变,作为用户请求信息发送到单片机,
单片机控制电动机转动,单片机根据楼层检测结果控制电机停在目标楼
层。
软件部分使用汇编语言,利用查询方式来检测用户请求的按键信息,根
据电梯运行到相应楼层时,模拟按键引起电平变化,送到单片机计数来
确定楼层数,并送到数码管进行显示。
硬件设计简单可靠,结合软件,
基本实现了六层电梯运行的模拟。
关键词:AT89S51、电梯控制、单片机
1 引言
随着现代高科技的发展,住房和办公用楼都已经逐渐向高层发展。
电梯是高层宾馆、商店、住宅、多层仓库等高层建筑不可缺少的垂直方向的交通运输工具。
由于传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。
采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。
从技术发展来看,这种系统将逐渐被淘汰。
而单片机价格相当便宜,由单片机设计的控制系统可以随着设备的更新而不断修改完善,更完美的实现设备的升级。
2 电梯控制系统原理
电梯应用中大多采用交流变频电机拖动原理,其厢体由一条曳引钢缆连接,由安装在顶层的曳引轮和曳引电机拖动,电机的功率随着曳引
- 4 -
重量的不同大小不等。
其主要的拖动及控制系统有:
a)外呼内选系统,外部呼叫信号和指示以及厢体内选层和指示系统;
b)平层换速系统,电梯快速到达指定楼层之前切换为慢速并到达平层位置停车;
c)厢体状态指示系统,随时显示厢体所在位置;
d)开关门控制系统,平层开门,关门行车;
e)安全保护系统,含有上下限位、消防、满载、门电锁等功能;
电梯运行基本过程是:由外部呼叫信号给出呼叫,控制系统判断厢体目前所处位置并与呼叫楼层进行对照,同方向还是反方向。
若反方向,则改变方向到呼叫层,如同方向,直接运行到呼叫层。
在方向上,以同方向呼叫优先,且具有最远方向接车功能。
厢体的运动方式是:启动→慢速→快速,到达指定楼层之前则是快速→慢速→平层停车。
在所有呼叫中,消防优先级最高。
一旦消防呼叫,电梯就近平层,然后直接返回基站,不再响应任何外呼叫信号,只响应内选操作,以保证消防工作的使用。
3 总体设计方案
3.1 设计思路
3.1.1 方案比较
如果每个选层按钮都采用独立的按键设置,可以很大程度上简化扫描按键程序,采集信号也容易得多,但是由于单片机接口有限,模拟电梯自动控制系统所需按键较多,如此会有接口不足的问题,所以本设计采用了4×4矩阵按键实现电梯内部六个选层按钮和电梯外十个上下行按钮,正好十六个按钮。
出于同样问题,显示楼层电路采用74LS164驱动数码管从串口输出而没有采用驱动实现简单但需接口较多的74LS245芯片。
为了更接近实际的电梯控制系统,设计中还应该添加电梯外上下行请求显示,可用十个发光二极管表示请求按键是否按下,有则亮,无则暗。
考虑单片机的驱动能力有限,必须得使用驱动单元来驱动发光二极管,可以采用三极管驱动电路,但是由于要驱动的发光管较多,采用
74LS245芯片作为驱动比较显示且硬件电路又美观整洁。
软件方面至于采用中断方式还是采用查询的方式来检测用户的请求信息,本人习惯使用查询方式,所以就采用了查询的方式。
要想准确地采集按键请求状态,就必须时时刻刻调用键盘矩阵扫描程序,也就增加了软件编程的难度。
3.1.2 方案确立
- 5 -
- 6 -
本设计采用AT89S51单片机作为核心,配以适当接口作为输入输出通道。
采用4×4按键矩阵开关电路作为外呼内选呼叫控制。
实际电梯控制系统每层装有一个传感器,从而判断车厢所在位置,本模型由六个独立按键作为楼层到达信号传输给单片机,而后通过74LS164从串口驱动数码管显示楼层数。
当电梯到达所选层,电梯开门延时等待进人并选层,然后延时关门执行请求,若无请求则停在本层等待请求。
软件部分使用汇编语言,利用查询方式来检测用户请求的按键信息,采用74LS245芯片驱动发光二极管。
3.2 设计方框图
本设计方框图如图1所示,电路由复位电路复位后,电梯初始位置在一楼,通过软件设置显示电路显示1, AT89S51将楼层感应电路得来的数据通过74LS164驱动显示电路显示出来;如有用户在厢外呼叫,经
外呼叫电路把信号输入单片机,由楼层感应电路判断电梯为上升还是下降
图1 设计电路总框图
状态,若方向一致则打开电梯门,用户进入后关门执行操作。
用户通过选层电路把目的层告知
AT89S51,控制电机把用户送至目的层,而后系统等待下次呼叫。
系统的正常工作由时钟电路来保证,显示电路实时显示电梯所在的楼层位置。
4 电梯控制系统单元电路的设计
系统硬件电路总图见附录一。
89S51
复位电路
内部选层电路
电机控制电路
楼层感应电路 外部呼叫电路 厢门开关电路 外部呼叫显示
时钟电路
楼层显示电路
74LS245
74LS164
延时电路
- 7 -
4.1 单片机最小系统
单片机最小系统包括复位电路和时钟电路。
具体电路如图2所示。
复位电路虽然简单,但其作用非常重要。
一个单片机系统能否正常运行,首先要检查是否能复位成功。
初步检查可用于示波器探头监视RST 引脚,按下复位键,观察是否有足够幅度的波形输出(瞬时的),还可以通过改变复位电路阻容值进行试验。
本复位电路采用上电自动复位和手动复位组合。
上电自动复位是在加电瞬间电容通过充电来实现的,在通电瞬间,电容C3通过R1K 电阻充电,RST 端出现正脉冲,用以复位。
只要电源Vcc 的上升时间不超过1ms ,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。
手动复位是通过按下S111后,通过电阻RR 直接给服务端一个高电平使之复位。
编程初始化设置数码管显示为1,并且等待楼层模拟传感器读取数据。
89S51芯片内部有一个高增益反相放大器,用以构成振荡器。
反相放大器的输入端为XTAL1,输出端为XTAL2分别为AT89S51,分别为芯片的19和18脚,之间跨接12MHz 石英晶振和两个对称30pF 的电容构成稳定的自激振荡器,也就是时钟振荡电路,从而保证系统正常工作。
EA/VP 31
X119X218
RESET 9RD 17WR 16
INT012INT113T014
T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P27
28
PSEN
29
ALE/P 30TXD 11RXD 10U18051
C130p
C230p
L
VCC
C3
22μf 1k R
RR 200Ω
S111
AN
图2 单片机最小系统电路
4.2 信号输入电路
- 8 -
4.2.1 内外请求输入电路
现以呼叫信号的输入为例,来说明信号输入及单片机识别原理。
如图3所示,采用P0口外接上拉电阻的并行输入形式,来输入外呼叫信号,本电路采用4×4矩阵键盘,行扫描法识别键值的原理,具体原理如下:
a) 判断键盘中有无键按下 将全部行线P0.0-P0.3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
b) 判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
SOO-S05为一到六楼的电梯内部呼叫请求按键,S06-S15为电梯外部请求按键。
S00-S15的扫描键值分别为01H —0FFH 。
S00
AN S04AN S08AN S12AN
P00
P01
P02
S01AN S05AN S09AN S13AN
P04
P05
P03
S02AN S06AN S10AN S14AN
P06
S03AN S07AN S11AN S15AN
P07
EA/VP 31X119X218RESET 9RD 17WR 16
INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P27
28
PSEN
29
ALE/P 30TXD 11RXD 10U18051
R13
R14
R15
R16
VCC
图3 内外请求呼叫电路
4.2.2 厢体位置模拟输入电路
由于没有电梯控制硬件模型,只能用按键来模拟电梯到达位置的触发信号。
本电路采用独立式按键非编码键盘接口查询方式。
当任何一个键按下时,与之相连的输入数据线即被清0(低电平),而平时该线为1(高电平)。
要判断是否有键按下,用单片机的位处理指令十分方便。
这
- 9 -
种键盘结构的优点是电路简单;缺点是当键数较多时,要占用较多的I/O 口。
查询方式键盘的处理程序比较简单。
本处理程序中没有使用散转指令,并且省略了软件去抖动措施,只包括键查询、键功能程序转移。
S1-S6分别为一楼到六楼的厢体位置到达触发信号使能端。
当S1按下时,表明厢体已经到达一楼,并使用键功能程序转移到显示电路,发出数字1的字型码,使数码管显示为1。
其余按键功能均如此设置,注意模拟程序时不能越键按下,要依次顺序按下进行模拟测试。
具体电路如图4所示:
EA/VP 31X119X218RESET 9RD 17WR 16
INT012INT113T014T115P101
P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P27
28
PSEN
29
ALE/P 30TXD 11RXD 10U18051
R7R
R8R
R9R
R10R R11R R12R
VCC
S6
AN S5
AN S4
AN S3
AN S2
AN S1
AN
P12
P12P13
P13P14
P14P15
P15P10
P11P10
P11
图4 厢体位置模拟电路
4.3 信号模拟输出电路 4.3.1 楼层显示电路
在实际中,厢外六个显示和厢内一个共七个数码管显示厢体位置楼层数,由于显示的数据是一致的,所以本设计中只用一个LED 数码管显示代替。
由于AT89S51的串行口RXD 和TXD 为一个全双工串行通信口,工作在方式0下可作同步移位寄存器,其数据由RXD (P3.0)串行输出或输入,而同步移位时钟由TXD (P3.1)端串行输出,在同步时钟作用下,在不需要使用串行通信的场合,利用串行口加外围芯片74LS164就可构成一个或多个串并口输入/输出电路,用于串-并转换、并-串转换、键盘驱动或显示器LED 驱动。
本电路中应用了其串-并转换来实现了电梯所在位置的实时显示。
数据显示采用共阴数码管,其共阴端接低电平。
具体电路如下图5所示:
- 10 -
EA/VP 31X119X218RESET 9RD 17WR 16
INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P27
28
PSEN
29
ALE/P 30TXD 11RXD 10U18051
A 1B
2
Q03Q14Q25Q36Q410CLK 8MR 9
Q511Q612Q7
13U16474ALS164
a b
f c
g
d e DPY 76124a
b
c d e f
g
d p
d p 5
109G N D
8DS1
DPY_7-SEG_DP
VCC
图5 数码显示楼层电路
74LS164是串行输入、并行输出移位寄存器,并带有清零端,其引脚功
能如下:
a) Q0—Q7:并行输出端,分别接LED 显示各引脚。
b) A 、B :串行输入端,并联接入RXD 端。
c) CLR :清除端,零电平时,使74HC164输出清零,因此本设计中接高电平。
d) CLK :时钟脉冲输入端,在脉冲的上升沿实现移位。
CLK=0、CLK=1时,74LS164保持原来的数据状态,接入TXD 端。
4.3.2 电梯外部请求显示电路
电路如图6所示,本电路采用74LS245加限流电阻驱动发光管,高电平有效,只要给单片机的P2口任意位置1,相应的发光管就会亮。
10个发光管从低到高依次为一楼到六楼的上下行请求显示。
由于P2口只有8位,本电路又加入了两个采用电源驱动的低电平有效的发光管,分别接在P3.5和P3.6口。
每个发光管显示都是独立的,只要有外部请求按键按下,程序会用置位或清零指令就可以随意改变发光管的显示状态使相应的发光管点亮。
需要注意的是74LS245与发光管之间的限流电阻不能过大,更不能省略,一般选在200到300欧之间为宜。
74LS245从B传到A,要使E
非端与DIR 端接低电平才能正常工作,所一本电路将其直接接地。
EA/VP 31X119X218RESET 9RD 17WR
16
INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732
P2021P2122P2223P2324P2425P2526P2627P27
28
PSEN
29
ALE/P 30TXD 11RXD 10U1R01
R02R03R04R05R06A02A13A24A35A46A57A68A79B018B117B216B315B414B513B612B7
11
E 19DIR
1
74LS245
D1D2D3D4D5D6D7D8
R07R08R09
R100
D9
D10
VCC
P 34
P 35P34P35
图6 外部请求显示电路
4.3.3 电梯方向及开关门电路
本电路采用发光二极管接上拉电阻由电源直接驱动的方式,低电平有效。
DG 为关门绿色灯,DK 为开门红色灯,Ddwon 为电梯下行绿色灯,Dup 为电梯上行红色灯。
要注意的是电梯在运行期间,不管上行还是下行,开关门信号灯必须为绿灯亮。
程序控制十分简单,只需要对相应的接口清零,所对应的发光管就会点亮,表示正在执行相应的功能。
具体电路如图7所示:
EA/VP 31X119X218RESET 9RD 17WR 16
INT012INT113T014T115P101
P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P27
28
PSEN
29
ALE/P 30TXD 11RXD 10U1
8051
Ru p LED
Rd own LED Du p
Dd own DK DG
RK R
RG R
VCC
图7 电机控制电路
5 系统软件设计
具体程序见附录二。
5.1 初始化程序
由于本设计用到了定时器和串口输出,所以要先用SETB EA指令开总中断,用MOV P2,#00H指令将P2口置为低电平(高电平有效),然后调用数码管显示子程序LCALL XIANSHI显示为1(初始状态电梯在一楼),转入处理一楼子程序,进入程序执行状态。
5.2 各楼层子程序
若电梯在一楼或六楼,直接调用键盘矩阵扫描子程序KEY,判断是否有键按下,没键按下则继续扫描;如有键按下则判断是那个键按下并输出键值,转入键值识别子程序再合并电梯内外的请求,驱动电梯到达请求层。
在电梯运行期间,程序仍然继续调用键盘矩阵扫描子程序KEY 和电梯位置子程序ASK1,以便随时响应适当的请求。
若电梯在其它楼层,先判断位地址28H中的数据是0还是1,0为上升状态,1为下降状态。
若为上升状态,则只响应该楼层以上的请求(同向请求),若该楼层以上没有请求则转查询下边楼层有无请求,若有则转为下降状态并响应,如果上下均无请求,则停留在该层继续循环查询等待请求;若为下降状态,则只响应该楼层以下的请求(同向请求),若该楼层以下没有请求则转查询上边楼层有无请求,若有则转为上升状态并响应,如果上下均无请求,则停留在该层继续循环查询等待请求。
5.3 显示子程序
调用显示子程序前先给寄存器A赋值,转到响应的查表地址,将字型码送给串口寄存器SBUF,经过74LS164并口输出给数码管显示。
XIANSHI: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
RETI
TAB: DB 0EEH,28H,0CDH,6DH,2BH,67H,0E7H
END
软件流程图如图8:
图8 软件流程图
启动
初始化
显示子程序
判断电梯所在楼层
有人呼叫吗?
显示所在楼层
Y
N
现在运行方向?
Y
N
N
还有同向? N
Y
启动上行
换速平层 启动下行
到达目的前一层?
检查楼层并显示
N
Y 到顶层?
到底层?
换向
换向
Y
Y 呼叫同方向?
呼叫同方向? Y Y
还有同向?
N
N
N
开门
6 结束语
在第一周的实习中,首先对电路所实现的功能进行了分析,通过查找资料和分析,进行电路的初步设计,在此过程中,进一步熟悉了proteus 仿真软件和提高了使用protel 99SE软件的能力。
在第二周的实习过程中,亲自动手制作电路板,其中包括电路的转印、腐蚀、打孔、焊接,通过实际练习,提高了自身的动手能力,从而进一步熟悉了电路的结构。
硬件电路完成之后,便开始着手于软件的设计,首先根据所实现的功能画出了流程图,然后根据流程图来进行部分小程序及主程序的设计,然后最
后进行拼合,通过设计程序,提高了逻辑的思维能力,在调试的过程中,也学到了许多以前在课本上所未曾学到的知识。
通过三周的实习,使我受益匪浅。
自从学习了单片机这门课程,我才觉得自己真正学到了一门实用的专业课,可是在课堂上学习的理论知识是远远不够的,我早就渴望有一次针对单片机的实习,好提高自己的实际动手能力和对编程的应用能力。
这次课程设计对我来说可谓通机会难得,我也的确认真的对待了设计过程中的每一个问题。
通过此次课程设计,我的的确确在软件和硬件结合应用当中夯实了一次。
参考文献
[1]李朝青.单片机原理及接口技术[M].北京:北京航空航天出版社,2006
[2]房小翠,王金凤.单片机实用系统设计技术[M].北京:国防工业出版社,1999
[3]阎石.数字电子技术基础(第三版) [M]. 北京:高等教育出版社,1989
[4]梁延东.电梯控制技术[M].北京:中国建筑工业出版社,1997
[5] 何立民.单片机应用系统设计[M]. 北京:北京航空航天出版社, 1993.
[6] 万长建,张莉.用单片机实现高层电梯运行自动控制[J].实验技术与管理,2007,24(5):256~261
[7]张娅莉,曲国峰.单片机在电梯自动控制中的应用[J].《工业控制计算机》,2003,16(2):135~138
[8]曹荣敏. 电梯运行系统的单片机模拟[J].微处理机,1998(3):1~3
附录一
电梯自动控制系统电路图
E A /V P
31
X 119X 218
R E S E T
9
R D 17W R
16I N T 0
12
I N T 113T 0
14
T 115
P 10
1P 112P 123P 134P 145P 156P 167P 17
8P 0039P 0138P 0237P 0336P 0435P 0534P 0633P 0732P 2021P 2122P 2223P 2324P 2425P 2526P 2627P 27
28P S E N 29
A L E /P 30T X D 11R X D 10U 1C 1
C 2
L V C C
C 31k R R
S 111
R 01R 02R 03R 04R 05R 06R 7R 8R 9R 10R 11R 12R 13R 14R 15R 16
V C C
P 07P 06P 05P 04S 00
S 04
S 08S 12
P 00P 01P 02P 07
P 06P 05P 04P 03P 02P 01P 00A 1B
2Q 03Q 14Q 25Q 36Q 410C L K
8
M R
9Q 511Q 612Q 7
1374L S 164S 01S 05S 09S 13P 04P 05P 03
S 02S 06S 10S 14P 06
S 03
S 07S 11
S 15
P 07
S 6
S 5
S 4
S 3
S 2
S 1
P 10P 11P 12P 13P 14P 15P 16P 17P 20P 21P 22P 23P 24P 25P 26P 27
P 12
P 13
P 14
P 15
P 16P 12P 13P 14P 15P 17a b f c g d e D P Y 76124a b
c d e f g
d p
d p 5
109G N D
8
D S 1A 02A 13A 24A 35A 46A 57A 68A 7
9B 018B 117B 216B 315B 414B 513B 612B 711E 19D I R
1
74L S 245D 1D 2D 3D 4D 5D 6D 7D 8
P 20P 21P 22P 23P 24P 25P 26P 27R 07R 08
R u p R d o w n D u p D d o w n D K D G R K R G
P 10P 11P 32P 33P 32P 33
P 10
P 11
R 09
R 100D 9
D 10V C C P 34P 35P 34
P 35
附录二
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
SETB EA
SETB TI
MOV P2,#00H
MOV A,#01H
LCALL XIANSHI
LJMP OPEN1
OPEN1:LCALL TK
CLR P2.7
CLR 31H
LCALL KEY
LCALL ASK2
MOV C,56H
ORL C,52H
ORL C,53H
ORL C,54H
ORL C,55H
ORL C,42H
ORL C,43H
ORL C,44H
ORL C,45H
JNC OPEN1
LCALL YANSHIGS
CLR 28H
LCALL ASK1
LJMP OPEN1 OPEN2:JB 28H,X2
LCALL KEY
LCALL ASK2
MOV C,54H
ORL C,55H
ORL C,44H
ORL C,45H
ORL C,56H
ORL C,53H
ORL C,43H
ORL C,42H
JNC X2
S2: LCALL KEY
LCALL ASK2
JNB 42H,TIAO
CLR P2.5
CLR 32H
LCALL TK
CLR 28H
LCALL KEY
LCALL ASK2
MOV C,54H
ORL C,55H
ORL C,44H
ORL C,45H
ORL C,56H
ORL C,53H
ORL C,43H
JNC X2
LCALL YANSHIGS
CLR 28H
TIAO: LCALL ASK1
LJMP OPEN2
X2: LCALL KEY
LCALL ASK2
MOV C,52H
ORL C,41H
JNC S2
JNB 52H,TIAO
CLR P2.6
CLR 32H
LCALL TK
SETB 28H
LCALL KEY
LCALL ASK2
JNB 41H,S2
LCALL YANSHIGX
SETB 28H
LJMP TIAO
OPEN3:JB 28H,X3
LCALL KEY
LCALL ASK2
MOV C,54H
ORL C,43H
ORL C,55H
ORL C,44H
ORL C,45H
ORL C,56H
JNC X3
S3: LCALL KEY
LCALL ASK2
JNB 43H,TIAO3
CLR P2.3
CLR 33H
LCALL TK
CLR 28H
LCALL KEY
LCALL ASK2
MOV C,54H
ORL C,55H
ORL C,44H
ORL C,45H
ORL C,56H
JNC X3
LCALL YANSHIGS
CLR 28H
TIAO3:LCALL ASK1
LJMP OPEN3
X3: LCALL KEY
LCALL ASK2
MOV C,42H
ORL C,52H
ORL C,53H
ORL C,41H
JNC S3
JNB 53H,TIAO3
CLR P2.4
CLR 33H
LCALL TK
SETB 28H
LCALL KEY
LCALL ASK2
MOV C,42H
ORL C,52H
ORL C,41H
JNC S3
LCALL YANSHIGX
SETB 28H
LJMP TIAO3 OPEN4:JB 28H,X4
LCALL KEY
LCALL ASK2
MOV C,44H
ORL C,45H
ORL C,55H
ORL C,56H
JNC X4
S4: LCALL KEY
LCALL ASK2
JNB 44H,TIAO4
CLR P2.1
CLR 34H
LCALL TK
CLR 28H
LCALL KEY
LCALL ASK2
MOV C,45H
ORL C,55H
ORL C,56H
JNC X4
LCALL YANSHIGS
CLR 28H
TIAO4: LCALL ASK1
LJMP OPEN4
X4: LCALL KEY
LCALL ASK2
MOV C,41H
ORL C,42H
ORL C,43H
ORL C,52H
ORL C,53H
ORL C,54H
JNC S4
JNB 54H,TIAO4
CLR P2.2
CLR 34H
LCALL TK
SETB 28H
LCALL KEY
LCALL ASK2
MOV C,41H
ORL C,42H
ORL C,43H
ORL C,52H
ORL C,53H
JNC S4
LCALL YANSHIGX
SETB 28H
LJMP TIAO4
OPEN5:JB 28H,X5
LCALL KEY
LCALL ASK2
MOV C,45H
ORL C,56H
JNC X5
S5: LCALL KEY
LCALL ASK2
JNB 45H,TIAO5
SETB P3.4
CLR 35H
LCALL TK
CLR 28H
LCALL KEY
LCALL ASK2
JNB 56H,X5
LCALL YANSHIGS
CLR 28H
TIAO5:LCALL ASK1
LJMP OPEN5
X5: LCALL KEY
LCALL ASK2
MOV C,41H
ORL C,42H
ORL C,43H
ORL C,44H
ORL C,52H
ORL C,53H
ORL C,54H
ORL C,55H
JNC S5
JNB 54H,TIAO5
CLR P2.2
CLR 34H
LCALL TK
SETB 28H
LCALL KEY
LCALL ASK2
MOV C,41H
ORL C,42H
ORL C,43H
ORL C,44H
ORL C,52H
ORL C,53H
ORL C,54H
JNC S5
LCALL YANSHIGX
SETB 28H
LJMP TIAO5
OPEN6:LCALL TK
SETB P3.5
CLR 36H
SETB 28H
LCALL KEY
LCALL ASK2
MOV C,41H
ORL C,52H
ORL C,53H
ORL C,54H
ORL C,55H
ORL C,42H
ORL C,43H
ORL C,44H
ORL C,45H
JNC OPEN6
LCALL YANSHIGX
SETB 28H
LCALL ASK1
LJMP OPEN6
ASK1:JB P1.5,L2
MOV A,#01H
LCALL XIANSHI
LJMP OPEN1
L2: JB P1.4,L3
MOV A,#02H
LCALL XIANSHI
LJMP OPEN2
L3: JB P1.3,L4
MOV A,#03H
LCALL XIANSHI
LJMP OPEN3
L4: JB P1.2,L5
MOV A,#04H
LCALL XIANSHI
LJMP OPEN4
L5: JB P1.1,L6
MOV A,#05H
LCALL XIANSHI
LJMP OPEN5
L6: JB P1.0,FH
MOV A,#06H
LCALL XIANSHI
LJMP OPEN6
FH: RET
KEY:MOV P1,#0F0H
MOV R7,#0FFH
KEY1:DJNZ R7,KEY1
MOV A,P1
CPL A
ANL A,#0F0H
JZ EKEY
SKEY:MOV A,#00H
MOV R0,A
MOV R1,A
MOV R3,#0FEH SKEY2:MOV A,R3
MOV P1,A
NOP
NOP
NOP
MOV A,P1
MOV R1,A
CPL A
ANL A,#0F0H
S123: JNZ SKEY3
INC R0
SETB C
MOV A,R3
RLC A
MOV R3,A
MOV A,R0
CJNE A,#04H,SKEY2 EKEY: RET
SKEY3:MOV A,R1
JNB ACC.4,SKEY5
JNB ACC.5,SKEY6
JNB ACC.6,SKEY7
JNB ACC.7,SKEY8
LJMP EKEY SKEY5:MOV A,#00H
MOV R2,A
LJMP DKEY SKEY6:MOV A,#01H
MOV R2,A
AJMP DKEY SKEY7:MOV A,#02H
MOV R2,A
LJMP DKEY SKEY8:MOV A,#03H
MOV R2,A
LJMP DKEY DKEY: MOV A,R0
ACALL DECODE
LJMP EKEY DECODE:MOV A,R0
MOV B,#04H
MUL AB
ADD A,R2
ASK2:CJNE A,#0FH,C2 SETB 31H
C2:CJNE A,#0EH,C3
SETB 32H
C3:CJNE A,#0DH,C4
SETB 33H
C4:CJNE A,#0CH,C5
SETB 34H
C5:CJNE A,#0BH,C6
SETB 35H
C6:CJNE A,#0AH,D6
SETB 36H
D6:CJNE A,#08H,D5
CLR P3.5
D5:CJNE A,#00H,D4
SETB P2.0
D4:CJNE A,#01H,D3
SETB P2.2
D3:CJNE A,#02H,D2
SETB P2.4
D2:CJNE A,#03H,U5
SETB P2.6
U5:CJNE A,#00H,U4
CLR P3.4
U4:CJNE A,#01H,U3
SETB P2.1
U3:CJNE A,#02H,U2
SETB P2.3
U2:CJNE A,#03H,U1
SETB P2.5
U1:CJNE A,#09H,HEBING SETB P2.7 HEBING:
MOV C,P2.7
ORL C,31H
MOV 41H,C
MOV C,P2.5
ORL C,32H
MOV 42H,C
MOV C,P2.3
ORL C,33H
MOV 43H,C
MOV C,P2.1
ORL C,34H
MOV 44H,C
MOV C,35H
ORL C,/P3.4
MOV 45H,C
MOV C,32H
ORL C,P2.6
MOV 52H,C
MOV C,33H
ORL C,P2.4
MOV 53H,C
MOV C,34H
ORL C,P2.2
MOV 54H,C
MOV C,35H
ORL C,P2.0
MOV 55H,C
MOV C,36H
ORL C,/P3.5
MOV 56H,C
RET
TK:SETB P3.3
SETB P3.2
CLR P1.6
SETB P1.7
RET
YANSHIGS:
MOV B,#64H
TIME1:MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
JNB TF0,$
DJNZ B,TIME1
CLR TF0
CLR TR0
CLR P1.7
SETB P1.6
CLR P3.3
RET
YANSHIGX:MOV B,#64H
TIME2:SETB TR0
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
CLR TF0
JNB TF0,$
DJNZ 60H,TIME2
CLR TR0
CLR P1.7
SETB P1.6
CLR P3.2
RET
XIANSHI:MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
RETI
TAB:DB EEH,28H,0CDH,6DH,2BH,67H,0E7H END
21。