MSIPO技术圈 首页 IT技术 查看内容

51单片机电动车报警器

2024-04-04

  • 振动传感器模块

    在这里插入图片描述

    #include "reg52.h"
    
    sbit led1 = P3^7;//根据原理图,led1接P3.7
    sbit zhendong = 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(zhendong == 0){//检测到振动
    			led1 = 0;//灯亮
    			Delay2000ms();
    		}
    		led1 = 1;
    	}
    }
    
  • 继电器

    一种电子开关。

    在这里插入图片描述

    当设置继电器为低电平触发时,STC89C52RC的IO输出低电平,就会导致COM口和NO口闭合,也就是完成报警器的串联电路,开始响

    #include "reg52.h"
    //发成振动时,继电器COM和NO闭合,绿灯亮
    sbit zhendong = P3^3;//振动模块DO接P3.3
    sbit jidianqi = P3^0;//继电器IN接P3.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 main()
    {
    	while(1){
    		if(zhendong == 0){//检测到振动
    			jidianqi = 0;//给继电器IN低电平,COM和NO闭合
    			Delay2000ms();
    		}
    		jidianqi = 1;
    	}
    }
    
  • 遥控发送接收433M

    在这里插入图片描述

    #include "reg52.h"
    
    sbit jidianqi = P3^0;//继电器接P3.0
    sbit D0_ON = P1^3;//433无线模块遥控器A键D0口接P1.3
    sbit D1_OFF = P1^2;//B按键接P1.2
    
    void main()
    {
    	while(1){
    		if(D0_ON == 1){//A按键按下
    			jidianqi = 0;//继电器COM和NO闭合
    		}
    		if(D1_OFF == 1){//B按键按下
    			jidianqi = 1;//继电器打开
    		}
    	}
    }
    
  • 电动车简易报警器

    在这里插入图片描述

    #include "reg52.h"
    #include <intrins.h>
    
    #define Danger 1
    #define Safe   0
    sbit zhendong = P1^3;//振动模块DO口接P1.3
    sbit jidianqi = P1^0;//继电器NO口接P1.0
    sbit D0_ON = P1^2;//433遥控器A按键接P1.2
    sbit D1_OFF = P1^1;//433遥控器B按键接P1.1
    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 = Safe;
    	while(1){
    		//1.如果A按键被按下,长响后进入报警模式,设置报警模式mark
    		if(D0_ON == 1){
    			jidianqi = 0;
    			Delay2000ms();
    			jidianqi = 1;
    			mark = Danger;
    		}
    		//2.如果B按键被按下,短响后进入安全模式,设置安全模式mark
    		if(D1_OFF == 1){
    			jidianqi = 0;
    			Delay500ms();
    			jidianqi = 1;
    			mark = Safe;
    		}
    		//3.报警模式下,如果产生振动,报警
    		if(mark == Danger){
    			if(zhendong == 0){
    				jidianqi = 0;
    			}
    			if(zhendong == 1){
    				jidianqi = 1;
    			}
    		}
    	}
    }
    

相关阅读

热门文章

    手机版|MSIPO技术圈 皖ICP备19022944号-2

    Copyright © 2024, msipo.com

    返回顶部