开始 系统初始化 检测外部有 无信号输入 N Y 启动声光报警电路开始报警 声光报警是否持续10秒 Y 声光报警结束 N Y 检测信号 N 结束 图10 主程序工作流程图 开始时先对系统初始化,然后检测是否有无信号输入,如果没有外界信号输入继续循环检测,如果检测到外部信号输入则启动声光报警电路开始报警,报警启动后经过十秒,声光报警结束,继续检测,循环工作,保证电路的正常工作。
3.4.2中断服务程序工作流程图
中断服务程序工作流程图如图11所示。
9
中断源发出中断申请 关中断、保护现场 INTO端有输入信号关闭报警 恢复现场、开中断 中断返回 图11 中断服务程序工作流程图
本主程序实现的功能是:当单片机检测到外部热释电传感器送来的脉冲信号后,表示有人闯入监控区,从而经过单片机内部程序处理后,驱动声光报警电路开始报警,报警持续10秒钟后自动停止报警,然后程序开始循环工作,检测是否有下次触发信号,等待报警从而使报警器进入连续工作状态。同时,利用中断方式可以实现报警持续时间未到10秒时,用手工按键停止的声光报警的作用。手工按键停止报警中断服务程序工作流程图。
3.5软件部分的实施 3.5.1编写程序
利用Keil软件编写程序,使其达到预期要求,程序如下: ORG 0000H
LJMP MAIN ORG 0003H LJMP PINT0 ORG 0200H
MAIN: MOV IE,#81H ;CPU开放中断,INT0允许中断 SETB IT0 ;外部中断为边沿触发方式 MOV SP,#30H ;指针入口地址 SETB P3.0 CLR P3.1
MOV P1,#0FFH ;使P1口全部置1 MOV P2,#00H ;P2口清零 CLR P1.2
10
LP: JNB P1.7,LA ;监测输入信号,是否有输入信号 LA: ACALL DELAY ;延时消抖
JNB P1.7,ALARM ;再次监测输入信号,若有输入信号转入报警子程序 AJMP LP DELAY:MOV R1,0AAH LD2:MOV R2,0BBH LD1:NOP
DJNZ R2,LD1 DJNZ R1,LD2 RET
ALARM:SETB P1.2 ;开始报警使运行正常绿指示灯熄灭,红灯和声报警启动 CPL P3.0 CPL P3.1
;10S钟定时:
MOV 51H,#0C8H ;10S循环次数
MOV TMOD,#01H ;定时器T0定时 方式1 MOV TL0,#0B0H ;置50ms定时初值 MOV TH0,#3CH
SETB TR0 ;启动T0
L2:JBC TF0,L1 ;查询记数溢出 SJMP L2 L1:MOV TL0,#0B0H MOV TH0,#3CH
DJNZ 51H,L2 ;未到10S继续循环 SETB P3.0 ;10s到关闭报警 CLR P3.1
CLR P1.2 ;报警结束,正常运行绿指示灯亮 LJMP LP ;循环,继续工作 HERE:SJMP HERE
PINT0: CLR EX0 ;外部中断0服务程序开始,屏蔽外部中断 PUSH PSW PUSH ACC
JNB P3.2,LN ;监测是否有中断输入 LN: LCALL DELAY ;延时消抖 JNB P3.2,LN1
AJMP LN2 ;无中断输入,中断返回 LN1: SETB P3.0 CLR P3.1
CLR P1.2 ;使报警结束,绿指示灯亮 POP ACC POP PSW
SETB EX0 ;开放外部中断0
LCALL LP ;在中断继续检测是否有输入信号 LN2: RETI
11
END
3.5.2软件调试
在KEIL软件里面编写程序后进行编译,编译无误后将其保存保存为.asm文件,然后转换为hex文件。利用PROTEUS软件将硬件电路绘制出来,将hex文件载入到单片机中,然后对该电路进行软件仿真,测试电路中的中断和复位功能,由于仿真软件中不能实现热释电红外传感器的红外信号接受,而单片机内需要输入的是低电平信号,所以我们将该部分电路改为低电平信号载入,仿真时间利用接地来代替。
12
相关推荐: