电动车简易报警器-51入门项目

文章讲述了使用C51编程实现的电动车警报系统,涉及振动传感器、继电器、无线通信模块以及高功率喇叭,通过控制开关和震动检测来启动和停止警报。
摘要由CSDN通过智能技术生成

一、项目简介

当主人离开电动车锁车后,开启电动车警报模式:

有人靠近电动车并使电车震动,电车会一直发出警报,电车没有震动则不会报警;

当主人在电车附近不需要锁车时,可以电动车警报模式,电车即使发生震动也不会报警。

二、模块介绍

振动传感器模块,继电器模块, 433M 无线发射接收模块,高功率喇叭

1、振动传感器模块

1.1 SW-18010P

接好 VCC 和 GND,电源指示灯将被点亮。
当检测到震动时,板载指示灯点亮;震动停止,板载指示灯熄灭。
用螺丝刀转动「灵敏度调节电位器」可以调节灵敏度。大家可以将电位器旋到最左或最右,然后测试往哪边旋可以提高灵敏度。

SW-18015P 为密封弹簧型、无方向性震动感应触发开关,任何角度均可触发。正常使用情况下开关寿命可达20万次。

 1.2 SW-18015P原理

        SW-18015P 在静止时为开路 OFF 状态, 当受到外力碰触而达到相应震动力时,或者移动速度达到适当离(偏)心力时,导电接脚会产生瞬间导通呈瞬间 ON 状态;当外力消失時,开关恢复为开路 OFF 状态。
        所以,SW-18015P 在无震动或者震动强度达不到设定阈值时,DO 口输出高电平,当外界震动强度超过设定阈值时,模块 D0 输出低电平。
        请注意这个模块在感应到小的震动时触发时间会很短,无法驱动继电器,有些的资料显示可以直接和继电器模块相连,但实际运用效果不佳。
  

2、继电器模块

2.1 继电器介绍

        继电器,可以被形象地比作一个开关,就像电灯开关一样,按下,电路闭合,电路通,灯亮;再按下,电路断开,电路不通,灯灭。它能够通过控制小电流来打开或关闭大电流电路,实现电路的控制和信号的传递。不过,与普通的物理开关相比,继电器具有更高的可靠性和灵活性,能够应对复杂的电路控制需求。

2.2 继电器工作原理 

        当继电器的电磁线圈通电时,产生的磁场会引起机械部件的运动,从而改变触点的状态,触点可以是常闭或常开。

继电器原理示意图如下:

        当信号电源断开,线圈两端没有施加电压,线圈没有产生磁力,衔铁在弹簧拉力下不接触触点,工作电路不连通,负载电器不工作。
       当信号电源闭合,线圈两端施加电压,线圈产生磁力把衔铁往下拉,衔铁接触触点,工作电路连通,负载电器工作。
        继电器的控制电路与工作电路是隔离的,这种切换状态的能力使得继电器能够控制高电压、大电流电路的开关操作。

2.3 继电器引脚

3、433无线发射接收模块

https://wenku.baidu.com/view/8fe8f444bed5b9f3f80f1c33.html

4、高功率喇叭

三、程序实现 

#include "reg52.h"
#include<intrins.h> 

#define OFF_Alarm 0
#define ON_Alarm  1

sbit Vibrate = P1^3;
sbit Switch  = P1^0;
sbit ON_D0   = P1^1;
sbit OFF_D1  = P1^2;

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 = OFF_Alarm;//定义一个标志,让报警处于关闭状态
    while(1){
        //打开报警模式
        if(ON_D0 == 1){
            Mark = ON_Alarm;
            Switch = 0;
            Delay2000ms();
            Switch = 1;
        }
        //关闭报警模式
        if(OFF_D1 == 1){
            Mark = OFF_Alarm;
            Switch = 0;
            Delay500ms();
            Switch = 1;
        }
        if(Mark == ON_Alarm){
            //警报模式下发生振动,开始报警
            if(Vibrate == 0){
                Switch = 0;
                Delay2000ms();
                Delay2000ms();
            }
            else{
                Switch = 1;
            }
        }    
    }
}    

        学习C51的第一个小项目,根据需求设置警报模式,如果需要警报模式按下开关后长响一声提醒打开警报模式,关闭警报则短响一声提醒已经关闭警报模式。按下开关之后通过标志位来记住当前处于什么模式,处于警报模式如果发生震动则会报警,不震动则不响。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值