4577|0

1379

帖子

0

TA的资源

裸片初长成(中级)

楼主
 

车辆短信息防盗报警系统程序 [复制链接]

;采用AT89C2051单片机,晶振11.0592MHZ,通讯速率9600,采用TTL串口通讯
;接收板为SB-JS1-L4 超再生锁存型接收板,8位地址4位数据(地址码均悬空)
;VT=17===P3.3=遥控接收板解码有效输出端 中断INT1
;D0=10===P1.5=系统解防
;D1=11===P1.4=模拟报警
;D2=12===P1.3=系统静音报警/有声报警
;D3=13===P1.2=系统设防
;P3.0是振铃遥控设防、解防端,1为解防(LED8灭)0为设防(LED8亮)
;P1.6为设防指示灯,点亮红色LED为设防状态
;P1.7为解防指示灯,点亮绿色LED为解防状态
;25H中的2AH---报警设防、解防标志位(1为设防、0为解防)
;25H中的2BH---静音报警标志位(1为静音报警、0为有声报警)
;P3.5报警时控制拨打电话或者发出报警短消息
;P3.7为现场报警器控制端,高电平报警,低电平停止
;28H和29H用于串口触发寄存器

ORG 0000H
CLR P3.7;开机报警器静音
AJMP MAIN;转入主程序
ORG 0003H ;外部中断P3.2脚INT0入口地址
AJMP INT ;转入外部中断振动报警器报警程序
;以下为主程序进行CPU中断方式设置

MAIN:SETB EA ;打开CPU总中断请求
SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发
MOV SCON,#50H;设置成串口1方式
MOV TMOD,#20H;波特率发生器T1工作在模式2上
MOV TH1,#0FDH;预置初值(按照波特率9600BPS预置初值)
MOV TL1,#0FDH;预置初值(按照波特率9600BPS预置初值)
SETB TR1;启动定时器T1
;以上完成串口9600通讯初始化设置

CLR 2AH;开机对报警标志位复位
CLR 2BH;默认为有声报警
ACALL DELAY100;开机延时一会儿,确保硬件稳定
ACALL DELAY100;开机延时一会儿,确保硬件稳定
ACALL DELAY100;开机延时一会儿,确保硬件稳定
SETB P3.7;报警器响一声,表示上电,同时检验报警器是否完好
ACALL DELAY100;延时约0.1秒
CLR P3.7;然后关闭报警器
JB P3.0,AA;开机时对P3.0口状态作一个备份(JB35的第八路,振铃遥控端)
MOV R1,#00H;如果P3.0口为低电平,那么R1=#00H
AJMP START
AA:MOV R1,#0FFH;如果P3.0口为高电平,那么R1=#0FFH

KKB:MOV R4,#248
FF:MOV R5,#100
START:JB P3.3,PANDUAN;循环判断遥控接收头第17脚VT是否有高电平信号输出?
JB P3.0,BB;判断此时P3.0口电平高低?
MOV R2,#00H;如果P3.0口为低电平,那么R2=#00H
AJMP K2
BB:MOV R2,#0FFH;如果P3.0口为高电平,那么R2=#0FFH
K2:MOV A,R1;比较R1和R2是否相同?也就是检测P3.0口电平是否变化过
XRL A,R2;如果P3.0口电平变化A=1;没有变化A=0
JNZ HH;如果P3.0口电平有变化,就改变输出状态
DJNZ R5,START
DJNZ R4,FF

JNB 2AH,KKB;如果在解防状态,就循环等待
JNB 2BH,KKB;如果在有声报警模式,就循环等待
CPL P1.6;如果在静音报警模式,每隔0.3秒让红灯闪烁一次
AJMP KKB

HH:JB P3.0,BBB;检测到变化,将R1更新
MOV R1,#00H;如果P3.0口为低电平,那么R1=#00H
SETB 2AH;对报警标志位置位
CLR P1.6;点亮红色设防指示灯
SETB P1.7;确保绿色指示灯在熄灭状态
SETB P3.7
ACALL DELAY100
CLR P3.7
ACALL DELAY100
SETB P3.7
ACALL DELAY100;报警器连续响两声,提示主人主机已经进入设防状态
CLR P3.7
SETB EX0 ;允许振动传感器报警中断
SS:AJMP START

BBB:MOV R1,#0FFH;如果P3.0口为高电平,那么R1=#0FFH
CLR 2AH;对报警标志位复位
CLR P1.7;点亮绿色解防指示灯
SETB P1.6;确保红色指示灯在熄灭状态
SETB P3.7
ACALL DELAY100;报警器响一声,表示主机撤防
CLR P3.7
CLR EX0 ;禁止振动传感器报警中断
AJMP START

;以下为进入P3.2脚振动报警中断程序
INT: CLR EA ;暂时关闭CPU的所有中断请求
ACALL DELAY100;调用100毫秒延时子程序,触点消抖
JB P3.2,EXIT;如果是干扰,就返回
ACALL BAOJING;调用现场报警子程序
EXIT: SETB EA;允许中断
RETI;退出解码子程序 ;准备处理无线遥控器接收到的数据
PANDUAN:ACALL DELAY10;延时10毫秒触点消抖
JNB P3.3,SS;如果是干扰就返回
MOV A,#00H;对A清零
MOV 20H,P1;利用20H可以位寻址
MOV C,05H;将20H中的第13脚的状态移入
RRC A
MOV C,04H;将20H中的第12脚的状态移入
RRC A
MOV C,03H;将20H中的第11脚的状态移入
RRC A
MOV C,02H;将20H中的第10脚的状态移入
RRC A

CJNE A,#00H,A0;如果P1口没有检测到数据码,就出错返回!
AJMP START
A0:CJNE A,#10000000B,A1;如果检测到这个数据,说明是手持遥控器遥控设防
SETB 2AH;对报警标志位置位
CLR P1.6;点亮红色设防指示灯
SETB P1.7;确保绿色指示灯在熄灭状态
SETB P3.7
ACALL DELAY100
CLR P3.7
ACALL DELAY100
SETB P3.7
ACALL DELAY100;报警器连续响两声,提示主人主机已经进入设防状态
CLR P3.7
JB P3.3,$
SETB EX0 ;允许振动传感器报警中断
AJMP START

A1:CJNE A,#00010000B,A2;如果检测到这个数据,说明是手持遥控器遥控解防
CLR 2AH;对报警标志位复位
CLR P1.7;点亮绿色解防指示灯
SETB P1.6;确保红色指示灯在熄灭状态
SETB P3.7
ACALL DELAY100;报警器响一声,表示主机撤防
CLR P3.7
JB P3.3,$
CLR EX0 ;禁止振动传感器报警中断
AJMP START

;如果报警标志位为0说明系统没有开启,返回待机;为1就跳转到A21,继续判断代码
A2:JB 2AH,A21
AJMP START;返回待机状态

A21:CJNE A,#01000000B,A3;如果P1口检测到这个数据,说明是设置静音/有声报警
CPL 2BH;设置静音/有声报警
JB 2BH,XG;如果是1为静音模式
SETB P3.7
ACALL DELAY100;鸣叫一声,进入正常的有声报警模式
CLR P3.7
JNB 2AH,OVER;如果在解防状态,直接退出
CLR P1.6;如果在设防状态下确保红色设防指示灯点亮
AJMP OVER

XG:SETB P3.7
ACALL DELAY100
ACALL DELAY100;鸣叫一声
CLR P3.7
ACALL DELAY100
ACALL DELAY100
SETB P3.7
ACALL DELAY100
ACALL DELAY100;鸣叫第二声
CLR P3.7
ACALL DELAY100
ACALL DELAY100
SETB P3.7
ACALL DELAY100
ACALL DELAY100;鸣叫第三声,提示进入静音模式
CLR P3.7
OVER:JB P3.3,$;等待遥控信号消失
F1:AJMP START

A3:CJNE A,#00100000B,A4;如果P1口检测到这个数据说明是模拟报警

MOV R7,#13
F2:ACALL DELAY100
JNB P3.3,F1;如果模拟报警按下时间小于1秒,就无效返回
DJNZ R7,F2

CLR P3.5;触发JB35的第12脚,可以拨打电话,或者发短消息
SETB P3.7
ACALL DELAY100;报警器响第一声,表示收到遥控指令
CLR P3.7
JB P3.3,$
SETB P3.5;消除12脚报警信号
AJMP START
;以上四个代码是系统专用的,专为配合手持遥控器使用的,无线报警传感器不能使用!

;系统可以提供11个无线报警传感器的识别代码,用来判断无线传感器的安装位置
A4:CJNE A,#00110000B,A5;检测到这个代码,发送COMSMS03
MOV 28H,#30H
MOV 29H,#33H
A5:CJNE A,#0101000B,A6;检测到这个代码,发送COMSMS04
MOV 28H,#30H
MOV 29H,#34H
A6:CJNE A,#01100000B,A7;检测到这个代码,发送COMSMS05
MOV 28H,#30H
MOV 29H,#35H
A7:CJNE A,#01110000,A8;检测到这个代码,发送COMSMS06
MOV 28H,#30H
MOV 29H,#36H
A8:CJNE A,#10010000B,A9;检测到这个代码,发送COMSMS07
MOV 28H,#30H
MOV 29H,#37H
A9:CJNE A,#10100000B,A10;检测到这个代码,发送COMSMS08
MOV 28H,#30H
MOV 29H,#38H
A10:CJNE A,#10110000B,A11;检测到这个代码,发送COMSMS09
MOV 28H,#30H
MOV 29H,#39H
A11:CJNE A,#11000000B,A12;检测到这个代码,发送COMSMS10
MOV 28H,#31H
MOV 29H,#30H
A12:CJNE A,#11010000B,A13;检测到这个代码,发送COMSMS11
MOV 28H,#31H
MOV 29H,#31H
A13:CJNE A,#11100000B,A14;检测到这个代码,发送COMSMS12
MOV 28H,#31H
MOV 29H,#32H
A14:CJNE A,#11110000B,A15;检测到这个代码,发送COMSMS13
MOV 28H,#31H
MOV 29H,#33H

A15:
CLR TI;先对TI进行软件复位
MOV A,#43H;将ASCII码C发送到串口去
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;对TI软件复位
MOV A,#4FH;将ASCII码O发送到串口去
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;对TI软件复位
MOV A,#4DH;将ASCII码M发送到串口去
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;对TI软件复位
MOV A,#53H;将ASCII码S发送到串口去
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;对TI软件复位
MOV A,#4DH;将ASCII码M发送到串口去
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;对TI软件复位
MOV A,#53H;将ASCII码S发送到串口去
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;对TI软件复位
MOV A,28H
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;对TI软件复位
MOV A,29H
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;对TI软件复位

ACALL BAOJING
JB P3.3,$
ACALL DELAY100;等待这次报警信号消失
LJMP START

;10毫秒延时子程序,占用R4、R5
DELAY10:MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET

;100毫秒延时子程序,占用R4、R5
DELAY100:MOV R4,#100
D222:MOV R5,#248
DJNZ R5,$
DJNZ R4,D222
RET

;现场报警子程序
BAOJING:CLR P3.5;触发JB35的第12脚,可以拨打电话,或者发短消息
SETB P3.7
ACALL DELAY100
ACALL DELAY100;报警器响一声,表示报警
CLR P3.7
SETB P3.5;消除12脚报警信号
JB 2BH,TXT
;现场报警15秒
SETB P3.7;开启现场报警器!
MOV R3,#255
D3:MOV R4,#100
D22:MOV R5,#248
DJNZ R5,$
JB P3.3,TXT;如果出现遥控信号,马上退出
DJNZ R4,D22
DJNZ R3,D3
CLR P3.7;关闭现场报警器!
TXT:JNB P3.2,$
RET

END

此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表