C51项目--周某的眼泪(电瓶车警报器)

本文详细描述了一个项目,使用STC89C52RC单片机作为中心模块,集成震动传感器和433M接收器,通过C语言编程控制继电器作为电子开关。还介绍了如何配合433M遥控器进行操作,包括警报模式和关闭模式的切换,以及喇叭的响应。
摘要由CSDN通过智能技术生成

概述--项目准备:

中心模块 -- STC89C52RC
子模块:
震动传感器
433M接收(与遥控器配套)
继电器 (作为电子开关进行控制):

喇叭和外界电源

(keil软件和C语言环境 以及 帅气的开发者)


振动传感器:

//振动实现点灯
#include"reg52.h"

sbit led1=P3^7; 
sbit  vibrate=P3^3; //振动传感器 -- 要接的口

void Delay20002ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    i = 141;
    j = 23;
    k = 242;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void main()
{
 while(1)
 {
  if(vibrate==0) //低电平有效 -- 发生振动
    {
          led1=0; //振动亮灯
          Delay20002ms();
          led1=1;
    }
         else 
        led1=1; //不振熄灭
 }

}


============================================== 

继电器 -- 电子开关

NO -- 常开端
NC  --常闭端
COM -- 公共端

默认COM 和 NC 连接 

COM 和 NO 口接通的时候 -- 负载就连通到窜连电路,绿灯就会亮

#include"reg52.h"


sbit  vibrate=P3^3; //振动传感器 -- 要接的口
sbit switcher=P1^1; //继电器开关

void Delay20002ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    i = 141;
    j = 23;
    k = 242;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void main()
{
 while(1) //查询方式查看是否发生振动
 {
  if(vibrate==0) //低电平有效 -- 发生振动 --继电器导通
    {
    switcher=0;
        Delay20002ms();
        switcher=1; //让NO和COM不接通
    }
         else 
         switcher=1;
 }

}

========================================


433M06 遥控器控制 


与之配套的 版 : 其中D0,D1D2,D3 与遥控器的  ABCD 按键相对应
  
//以下代码实现继电器 和 按键的关联,if前面连接了喇叭与继电器,这时候的按钮就能控制继电器的声响


#include"reg52.h"


sbit  D0_ON=P1^2;
sbit  D1_OFF=P1^3;
sbit switcher=P1^1; //继电器开关

void main()
{
 while(1) //查询 哪个按键被按下
 {
  if(D0_ON==1) //高电平有效 收到遥控信号A,D0表现为高电平
    {
        //A 被按下,导通继电器 -- 低电平有效
    switcher=0;
    }
     if(D1_OFF==1){    
        //C 被按下,不导通继电器
             switcher=1;
    }
 }

}


=============================================

总体设计:

接线和模块:


中心模块 -- STC89C52RC
子模块:
震动传感器:p1.3 -- 低电平有效
433M接收(与遥控器配套):p1.1, p1.2  -- 高电平有效
继电器 (作为电子开关进行控制): p1.0 -- 低电平有效

// vcc 和 gnd 自行连接


整体思路:

 // 1. if A 按键被按下 -- 设置为警报模式 -- 长响进入警报模式
     //1.1 警报模式下,发生振动 -- 喇叭响 --低电平有效
     //1.2 警报模式下,没有振动 -- 喇叭不响
     
    
     
     //2.if B按键被按下,设为关闭模式  -- 短响解除警报模式

具体代码


==========================
实现代码如下:
··#include"reg52.h"
#include<intrins.h>

#define ON 1
#define  OFF 0

sbit switcher =P1^0;
sbit  D0_ON=P1^1;
sbit  D1_OFF=P1^2;
sbit vibrate=P1^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 Delay300ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 3;
    j = 26;
    k = 223;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void main()
{
    int mark = OFF;
    
 while(1) //查询
 {
   //1. if A 按键被按下 -- 设置为警报模式 -- 长响进入警报模式
      if(D0_ON==1)
        {
            // 设为警报模式
     mark =ON;
            //响两秒
         switcher=0;
     Delay2000ms();
     switcher=1;

    }
     
     
    
     
     //2.if B按键被按下,设为关闭模式  -- 短响解除警报模式
    if(D1_OFF==1)
        {
            // 关闭警报模式
     mark =OFF;
            //响两秒
         switcher=0;
     Delay300ms();
     switcher=1;

    }
     
         //1.1 警报模式下,发生振动 -- 喇叭响
     //1.2 警报模式下,没有振动 -- 喇叭不响
        if(mark==ON)
        {
     if(vibrate == 0) //发生振动响一会
         {
      switcher=0;
     Delay300ms();
     switcher=1;
      }
            else  //不发生振动就都不响
                 switcher=1;
    }

}

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值