上官一号单片机项目之电动车简易报警器

上官一号单片机项目之电动车简易报警器

项目使用硬件描述

振动传感器

单片机供电VCC GND接单片机
产品不震动,输出高电平,模块上的AO口
产品震动,输出低电平,绿色指示灯亮
在这里插入图片描述

继电器

两端无电压或不够时,COM端和NC端接通。
在这里插入图片描述

高功率喇叭

在这里插入图片描述

433M无线发射接收

在这里插入图片描述

思路:
一、A按键是开启警报模式,警报模式下:
长响表示进入警报模式

  1. 震动传感器感应到震动,单片机对应引脚接收到低电平,向继电器输出低电平,继电器COM端和NO端接通
  2. 震动传感器未感应到震动,不变

二、B按键是关闭警报模式

  • 短响表示关闭警报模式,无论振动感应器是否感应到震动,都不响。

线路连接:
在这里插入图片描述

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

#define OFF_STATUS 0
#define ON_STATUS  1

sbit vibrate = P3^3;//3.3 与震动传感器连接
sbit switcher = P1^1;//1.1 Io口向继电器输出

sbit D0 = P1^2;//接收按键A,按键A按下,对应针脚输出高电平
sbit D1 = P1^3;//接收按键B,按键B按下,对应针脚输出高电平

void Delay200ms()	
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 9;
	j = 104;
	k = 139;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Delay2000ms()		
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 85;
	j = 12;
	k = 155;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main()
{
	
	int flag = OFF_STATUS;
	
	while(1)
	{
		//按键A按下,警报模式
		if(D0 == 1)
		{
			//长响,表示进入警报模式
			switcher = 0;
			Delay2000ms();
			switcher = 1;
			
			//设定警报标志
			flag = ON_STATUS;
			
		}
		
		//按键B按下
		if(D1 == 1)
		{
			//短响,表示退出警报模式
			switcher = 0;
			Delay200ms();
			switcher = 1;
			
			flag = OFF_STATUS;
		}
		
		//在警报模式下
		if(flag == ON_STATUS )
		{
			//发生振动,响
			if(vibrate == 0)
			{
				switcher = 0;
				Delay2000ms();
				Delay2000ms();
			}
			else{
				switcher = 1;
			}
		}
		
		//非警报模式下,震动不响
	}
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值