目录
一、震动传感器模块
二、继电器介绍
三、433M无线发射接收模块
1、 无线控制报警器代码
2、电动车简易防盗器代码实现
一、震动传感器模块
单片机供电VCC GND接单片机
产品不震动,输出高电平、模块上的AO口
产品震动,输出低电平,绿色指示灯亮
AO口不用
5V:代表正极
GND:代表负极
DO口:do是一种模拟信号或者数字信号接口
二、继电器介绍
简单的说继电器就是小电流、小电压控制大电流、大电压。这就是常见的继电器,这个是一路的。
继电器的IN口:接到单片机的IO口
IN口连接的作用是:IN连接上,单片机会给IN一个低电平信号,这个低电平信号,会让继电器两端的COM口和NO口连接起来上电
继电器配合传感器模块,实现有震动出现,继电器的小绿灯就亮起来
#include "reg52.h"
#include <intrins.h>
sbit switcher = P1^1;
sbit vibrate = P3^3; //Do口接到了P3.3口
void Delay2000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 15;
j = 2;
k = 235;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
//查询的方式判断是否发生震动
while(1){
if(vibrate == 0){ //模块告诉我们,震动的话,DO输出低电平
switcher = 0; //当发生震动时候,导通继电器,给继电器IN一个低电平
Delay2000ms();
switcher = 1; //高电平,NO和COM不通
}else{
switcher = 1;
}
}
}
三、433M无线发射接收模块
单片机供电VCC,GND接单片机
接收到信号,接收模块对应针脚输出高电平
有D0、D1、D2、D3,对应遥控器的ABCD
1、 无线控制报警器代码
#include "reg52.h"
#include <intrins.h>
sbit switcher = P1^1;
sbit D0_ON = P1^2;
sbit D1_OFF = P1^3;
sbit D2_ON = P1^4;
sbit D3_OFF = P1^5;
void main()
{
//查询的方式判断哪个键被按下
while(1){
if(D0_ON == 1){ //收到遥控信号A,D0表现为高电平
switcher = 0; //A被按下,我们导通继电器,给继电器IN一个低电平
}
if(D1_OFF == 1){ //说到遥控信号B,D1表现为高电平
switcher = 1; //B被按下,我们不导通继电器,给继电器IN一个高电平
}
if(D2_ON == 1){ //收到遥控信号C,D2表现为高电平
switcher = 0; //C被按下,我们导通继电器,给继电器IN一个低电平
}
if(D3_OFF == 1){ //说到遥控信号D,D3表现为高电平
switcher = 1; //D被按下,我们不导通继电器,给继电器IN一个高电平
}
}
}
2、电动车简易防盗器代码实现
#include "reg52.h"
#include <intrins.h>
sbit switcher = P1^0; //继电器
sbit D0_ON = P1^1; //433M接收A
sbit D1_OFF = P1^2; //433M接收B
sbit vibrate = P1^3; //震动传感器
#define J_ON 1
#define J_OFF 0
void Delay2000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
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 main()
{
int Mark = J_OFF;
while(1){
//1、如果a按键被按下,设定为开启警报模式
if(D0_ON == 1){
//长响,表示进入警报模式
switcher = 0;
Delay2000ms();
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;
}
//3.2 如果没发生震动
if(vibrate == 1){
//喇叭不响
switcher = 1;
}
}
}
}