单片机之震动传感器、继电器、433M无线发射接收等模块介绍及应用

小fengzi151单片机 2024-02-22 16:30:39 3898阅读 举报


一、震动传感器模块

单片机供电VCC GND接单片机

 

产品不震动,输出高电平、模块上的DO

 

产品震动,输出低电平,绿色指示灯亮

 

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无线发射接收模块

单片机供电VCCGND接单片机

 

接收到信号,接收模块对应针脚输出高电平

 

D0D1D2D3,对应遥控器的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;

}

}

}

 

 

版权声明:
作者:小fengzi1
链接:https://www.dianziwang.net/p/ab7c26da2d6cd.html
来源:51单片机
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以点击 “举报”


登录 后发表评论
0条评论
还没有人评论过~