一、项目概述
-
通过433M无线发射接收模块控制上锁模式(按键A)or非上锁模式(按键B);
-
在上锁模式下,当发生震动时,继电器闭合,喇叭报警;
-
在非上锁模式模式下震动无反应;
-
在上锁or开锁时,喇叭通过长响和短响提醒。
二、硬件部分
三、软件部分(main.c)
#include "reg52.h"
#include <intrins.h>
#define J_ON 1
#define J_OFF 0
sbit switcher = P1^0;
sbit DO_ON = P1^1;//433M无线遥控器A
sbit D1_OFF = P1^2;//433M无线遥控器B
sbit vibrate = P1^3;
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
int mark = J_OFF;//判断标志位
//查询方式
while(1){
//1. 如果A按键被按下,开启警报模式
if(DO_ON == 1){
//长响,表示进入警报模式
switcher = 0;
Delay1000ms();
switcher = 1;
//设定警报模式标记
mark = J_ON;
}
//2. 如果B按键被按下,关闭警报模式
if(D1_OFF == 1){
//短响,表示进入解除警报模式
switcher = 0;
Delay500ms();
switcher = 1;
//设定警报解除模式标记
mark = J_OFF;
}
//3. 如果标记是在警报模式下
if(mark == J_ON){
//3.1 如果发生了震动
if(vibrate == 0){
//喇叭响,给继电器低电平,导通
switcher = 0;
Delay1000ms();
Delay1000ms();
Delay1000ms();
//3.2 如果不发生震动
}else{
//喇叭不响,给继电器高电平,不导通
switcher = 1;
}
}
}
}
四、实现效果
电动车简易报警器