小区楼道开门控制系统(3)

2020-02-21 00:22

KA KB KC 确定键 退格键 取消键 L13 L15 P3.2接蜂鸣器 602 开门信号灯 K12:(取消键)无论数码管工作在什么状态,按下取消键都要回到时钟显示。

键盘表

0 4 8 1 5 9 无 2 6 3 7 确定 退格 无 无 取消 4.2片内数据存储空间的分配: 00H-07H:工作寄存器R0—R7 16H-1BH: 输入数字缓存 20H:工作进程码单元

22H:存送到L8---L15显示暂存单元 29H-2FH:用来消抖用的单元 21H.0确定键按下就置1 21H.1 退格键按下置1 21H.2 取消键按下置1 21H.3出错置1 21H.4管理员密码正确置1 21H.5 三次密码错误置1

21H.6有按键按下置1 21H.7 用户密码这确或PB7按下置1 25H.0 为1显示温度,为0显示时钟

30H-37H单元为显示更新内容缓冲区,如下表所示: 显示实时钟,显示更新内容缓冲区对应的内容,如表所示:: 37H 36H 35H “-” 34H 33H 32H “-” 31H 30H 时高位 时低位

分高位 分低位 秒高位 秒低位 10

38H-3DH单元为定时器计时单元,如表所示:

38H 39H 3AH 3BH 3CH 计时计时实时钟秒实时钟分实时钟时200us 10ms 计时单元 计时单元 计时单元 40H----45H:存储管理员密码 46H-----4BH:存储用户密码 50H----55H:修改管理员密码时第一次输入缓存 24H:101-601房号对讲延时,赋值100延时1S 3DH:判断密码错误3次

56H:102-602房号对讲延时,赋值100延时1S 57H:报警次数

58H:锁门延时赋值100,延时约1S 59H:锁门延时赋值30,延时约30S 3EH:判断数码管显示到第几位 68H:开门信号灯延时更长约5S 69H:报警延时0.5S

26H:显示温度与时钟延时0.5S 27H:显示温度与时钟延时5S 4DH:无操作返回延时20S

6FH--7FH:用于堆栈,用于定时器T0中断和LCALL语句中。 4.3 AT89S51片上I/O端口分配:

P0口:P0.0-P0.7作为扩展外面数据存储器82C55片选低八位地址。P1口:P1.0-P1.7驱动L0-L7灯(自检)。 P2口:P2.0为82C55A (U3)片选信号输入端 。 P2.1为82C55A (U5)片选信号输入端 。 P2.2为ADC0809芯片片选信号输入端 。 P3口:P3.2为自检蜂鸣器检测端。

P3.6、P3.7分别为外部数据存储器写和读选通信号。

11

五、局部程序设计说明

5.1消抖动子程序

用几个连续的单元存放最近几次的电平值,比较几个电平值,若相等则存起来与原态相比较,若新态与原态不等则认为一次电平变化。

2FH 2EH 2DH 2CH 2BH 2AH 29H 消抖动原理示意图

源程序清单如下:

XDPB : MOV 2FH,2EH ;PB口输入并消抖子程序。原新态存为前态

MOV 2DH,2CH ;前4次输入的电平值前推至2AH~2DH单元

MOV 2CH,2BH MOV 2BH,2AH

MOV 2AH,29H ;29H-2FH递存

MOV DPTR,#0FDFDH ;输入PB0~7新电平值存29H单元 MOVX A,@DPTR ;取P0到P7的值 MOV 29H,A ;存入首单元

MOV A,2DH ;比较近5次输入的电平值不一致则新态照旧

CJNE A,2CH,XDR CJNE A,2BH,XDR CJNE A,2AH,XDR

CJNE A,29H,XDR ;取29H-2CH与2DH分别比较 MOV 2EH,A ;递存 XDR:RET ;循环子程序

12

说明: 执行这条子程序时,先把前4次输入的电平值前推至2AH~2DH单元,然后从地址0FDFDH中读取P0到P7的值,然后对29H,2AH,2BH,2CH,2DH这五个单元进行比较,只有这五个单元的内容一样时,才能把2DH中的内容存入2EH中,这样就比较有效地避免开关量抖动的影响了。 5.2显示更新子程序: 源程序如下:

DISP:MOV A,3EH ;3EH为00H则把数码管关闭,不为0则显示更新 CJNE A,#00H,DISPP MOV DPTR,#0FEFDH

MOVX @DPTR,A

RET

DISPP:MOV R0,#30H ;显示更新子程序。置显示缓冲单元首地址(对应最右位)

MOV R3,#01H ;位码初值(从最右位起) MOV A,R3

DISP1:MOV DPTR,#0FEFDH ; 8255-B口(位码输出口)

MOVX @DPTR,A ; 输出当前字位码 MOV A,@R0 ; 取当前位显示数据码

ADD A,#TAB-NEXTPC ; 加TAB与NEXTPC差址 MOVC A,@A+PC ; 查表得相应字段码

NEXTPC:MOV DPTR,#0FEFCH ; 8255-A口(字段码输出口) MOVX @DPTR,A ; 输出字段码

LCALL D1MS ; 保持显示1毫秒 INC R0 ; 指向下一显示缓冲单元 MOV A,R3 ; 取出原来的位码

CJNE A,3EH,DISP2 ; 判断若已显示到最左位则结束

RET

DISP2:RL A ; 未完,字位码左移1位

MOV R3,A ; 回存新的位码 LJMP DISP1 ; 转下一位的显示驱动

13

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;显示字段码表

;\~\

DB 88H,83H,0C6H,0A1H,86H,8EH,0BFH,00H,9CH ;\~\全亮\\圆圈\DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H ;显示字段码表0-9有小数点 说明:在更新前要先判断3EH单元,若为00H则数码管全暗并结束,若不为00H则根据3EH单元的内容把显缓单元的内容显示到数码管上,3EH是用来判断数码港要显示几位。

5.3 有按键时发出按键声子程序: 源程序如下:

AJS:JNB 21H.6,AJSN ;按键声子程序 CLR P3.2 ;开蜂鸣器 CLR 21H.6 ;标志位清零 AJSNN:RET

AJSN:SETB P3.2 ;关蜂鸣器 SJMP AJSNN

说明:在键盘扫描检测到按下键,21H.6置1.调用到按键声子程序是就判断21H.6的状态,若为1开蜂鸣器,标志位清零,延时一个主流程时间,再关蜂鸣器。 5.4 调用报警子程序: 源程序如下:

BJ:JNB 21H.3,BJN ;检测到错误报警,让蜂鸣器产生响0.5S DJNZ 69H,BJN ;69H单元的内容减1不为0则返回 MOV 69H,#50

CPL P3.2 ;对P3.2求反 MOV R0,#57H

INC @R0 ;对57H单元的内容加1 MOV A,57H

CJNE A,#3,BJN ;57H单元的内容与立即数3比较不等返回 MOV 57H,#00H ;57H单元存储求反次数 SETB P3.2 ;关蜂鸣器 CLR 21H.3 ;将21H.0清0

BJN:RET

14


小区楼道开门控制系统(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2014 人美版小学美术三年级上册教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: