硬件部分介绍
振动传感器模块,继电器模块,433M无线模块
振动传感器模块
单片机供电VCC GND接单片机
产品不震动,输出高电平,模块上的AO口
产品震动,输出低电平,绿色指示灯亮
AO口不用
继电器模块
单片机供电VCC GND接单片机
最大负载电路交流250V/10A,直流30V/10A
模块可以通过跳线设置高电平触发或者电平触发(默认)
高功率喇叭
只有两根线,用来供电的,要通过上方继电器来控制
433M无线发射接收模块
单片机供电VCC GND接单片机
接收到信号,接收模块对应针脚输出高电平
有D0 D1 D2 D3,对应遥控器的ABCD
接线
各模块的VCC和GND没有画出来
开发流程代码
#include "reg52.h"
#include<intrins.h>
#define J_ON 1
#define J_OFF 0
sbit LED = P3^7;
sbit switcher = P1^0;
sbit vibrate = P1^1;
sbit D0_ON = P1^2;
sbit D1_ON = P1^3;
void Delay2000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();//需要加#include<intrins.h> 才可以运行
i = 15;
j = 2;
k = 235;
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 Delay100ms() //@11.0592MHz
{
unsigned char i, j;
i = 180;
j = 73;
do
{
while (--j);
} while (--i);
}
void alarm(){//警报函数
int i;
for(i=0; i<=5; i++){
switcher = 0;
Delay100ms();
switcher = 1;
Delay100ms();
}
}
int main(){
int mark;
while(1){
if(D0_ON == 1){//如果a按键被按下,设定为开启警报模式
LED = 0;
switcher = 0;
Delay2000ms();//长响,表示进入警报模式
switcher = 1;
mark = J_ON;//设定警报模式标记
}
if(D1_ON == 1){//如果b按键被按按下,设定为关闭警报模式
LED = 1;
switcher = 0;
Delay500ms();//短响,表示进入解除警报模式
switcher = 1;
mark = J_OFF;//设定警报解除模式标记
}
if(mark == J_ON){//3. 如果标记是在警报模式下
if(vibrate == 0){//如果发生了震动
alarm();//警报声响起
}else{//如果不震动
switcher = 1;//不响,给继电器高电平,不导通
}
}
}
}