学生公寓安防测控系统研究与设计删减版

2026/1/27 15:59:32

第四章 学生公寓安防系统软件设计

图4.1主程序流程图

Fig.4-1 Main program flow chart

4.2系统重要子程序设计

4.2.1中断处理子程序设计

当单片机检测到警情信号时,就发生中断。本子程序是对发生的中断进行判断、处理。由于PIC16F877A本身只有一个外部中断源INT,这对于本中断程序的设计是远远不够的,因此必须想方设法引入其他中断。我们知道RB端口具有中断功能,具体地说,RB端口中RB4~RB7这4条引脚具有电平变化中断功能,我们可以利用RB端口的这种特殊功能来扩展4个外部中断源,来满足本程序的设计。

如图4.2所示是中断处理子程序的流程图。

29

图4.2中断处理子程序流程图

Fig.4-2 flow chart of interrupt handling subgram

其工作流程如下:首先是保护现场部分,把本程序中所要用到的一些特殊功能寄存器(如W,STATUS等)中的值保存起来,防止被修改,否则程序在返回后这些寄存器中的值和原来的值不一样,就会发生错误。接着就调查中断源判断是INT引起的中断还是RB端口电平变化中断,或者是其他情况引起的错误操作并作相应的处理。如果是INT中断,则表示键盘上有键按下,此时系统就对按键进行处理。首先送入读控制字,对键盘发出读取键值的命令,将按键送至单片机。然后清中断标志位并开中断,等待下一次键盘中断。

每个键盘都有一个对应的键盘码,通过对键盘码的判断,确定是那个键按下了,进而执行相应的操作。中断保护以及判断中断程序如下:

ZDINT MOVWF SAVEW ;中断现场保护 SWAPF STATUS,W CLRF STATUS MOVWF SAVES MOVE PCLATH,W MOVWF PCLATCH TEMP

BTFSC INTCON,l ;判断INT中断或RB中断GOTO

30

第四章 学生公寓安防系统软件设计

CH451 INTER BTFSC INTCON,RBIF

GOTO RBINT

GOTO DONE22 ;恢复现场中断

返回端口RB是引脚电平变化中断,即引脚上新出现的电平相对于某种“背景电平”发生了变化,或者说引脚电平在原有的“基准电平”的基础之上发生了变化。一旦出现电平的差异,就可以引起RB发生中断。包含RBIF标志位的中断控制寄存器工NTCON,可以像普通寄存器那样由软件进行读、写操作。这意味着RBIF标志位可以由软件置位或者清0,但是,值得注意的是,当输入锁存器INPUTLatch和基准电平锁存器 LEVEL Latch的Q端电平存在差异时(这个差异称为失配条件 mismatch condition),如果想自接用一条指令(例如:BCF INTCON,RBIF)清除RBIF位,是达不到目的的。因此,在每次对标志位RBIF进行清0之前,都必须先对端口寄存器作一次读操作,其目的不是为了锁存基准电平,而是为了结束失配条件。

如果是RB端口电平变化中断,则还要判断是RB4~RB7中的哪个目的电平变化中断,并作相应处理。比如,如果是RB6端口电平变化中断,则表示有火警信号,此时就进入火灾报警程序。

而系统的防盗报警模块是使用RB7端口所接的热释电红外探测器。所不同的是,这个时候,寝室通常处于无人的状态,所以单片机处于休眠的节能模式。当有盗情出现时,由RB7端目的电平变化唤醒单片机,然后判断盗警标志位有没有被置位,如果置位,表示确有盗情发生,就调用报警处理子程序进行盗情报警,处理完成后记录盗警信息以备查询,接着就中断返回。本系统只使用了RB6和RB7作为火警和盗警的中断接入端口。此外RB端口还可扩展其他中断判别源,只需进行相应的端口判断并进行中断处理即可。用RB端口扩展外部中断可编程如下:

RBINT BTFSC PORTB,R ;RB4出现上升沿了吗 GOTO INT1 ; 是,跳转 BTFSC PORTB,5 ;判断中断源 GOTO INT2 BTFSC PORTB,6 GOTO INT3 BTFSC PORTB,7 GOTO INT4 GOTO DONE22

INT1 ? ? ;各个中断处理子程序 GOTO DONE22 INT2

GOTO DONE22 INT3 ? ?

31

GOTO DONE22 INT4 ? ? GOTO DONE22

4.2.2密码子程序设计

图4.3是密码子程序流程图

Fig.4-3 flow chart of password subprogram

首先,在密码子程序中,我们需要设定等待时间来等待来人输入密码,这段时间的设计是采用TMR1循环定时中断的方式。定时器/计数器TMR1具备其独特的优点,例如,具备自已独立的低功耗、低频率振荡器;可以工作于异步计数器模式;即使在单片机进入睡眠状态,TMR1也可以持续运行,当TMR1溢出时将会产生中断请求等。在本程序中,采用TMR1自带振荡器的两个外部引脚RCO/T10S0和RC1/T10SI上跨接一只32.768KHz的微型石英晶体和2只15PF的瓷片电容,作为TMR1的工作时间基准。在TMR1在外部时钟频率为32.768KHz时,当分频比为1的时候,TMR1最大定时时长为2s,如果把预分频器的比值设到最大值1:8,那么此时TMR1的最大定时时长为16s,通过查询TMR1的溢出次数,就可以实现定时。所以密码程序的定时可以通过对TMR1的溢出计数来实现。

在程序的开始,先设定定时中断时间64s,接着是密码的输入,然后利用比较命令进行密码的验证。如果密码验证正确,就返回,取消报警。如果密码输入不正确,就发错误报警并等待再次输入。我们设定密码输入次数为3次,如果3次输入不正确,就认为有盗贼闯入;如果在64s时间内没有密码输入,也认为有盗贼闯入,置位盗警标志位,然后返回,

32


学生公寓安防测控系统研究与设计删减版.doc 将本文的Word文档下载到电脑
搜索更多关于: 学生公寓安防测控系统研究与设计删减版 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

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