【51单片机】2-6【I/O口】【电动车简易防盗报警器实现】

1.硬件

2.软件

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

#define J_ON  1
#define J_OFF 0

sbit switcher = P1^0;//继电器
sbit D0_ON    = P1^1;//433M无线收发模块
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 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;//会有bug,用中断处理即可
					
				}//3.2 如果不发生震动
				else{
						//喇叭不响,给继电器高电平,不导通
						switcher = 1;
				}
		}
	}
}

3.实物效果

按下433无线收发模块的A按键,继电器长导通,进入警报模式,发生震动继电器导通报警。按下B按键,继电器短导通,解除警报模式,怎么震动都不报警。
在这里插入图片描述

  • 硬件接线
51单片机震动传感器继电器433M无线收发模块
P1.0IN
5VVCC
GNDGND
P1.3DO
5VVCC
GNDGND
5V5V
GNDGND
P1.1D0
P1.2D1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值