【51单片机篇】项目:电动车简易报警器

一、项目概述

  1. 通过433M无线发射接收模块控制上锁模式(按键A)or非上锁模式(按键B);

  2. 在上锁模式下,当发生震动时,继电器闭合,喇叭报警;

  3. 在非上锁模式模式下震动无反应;

  4. 在上锁or开锁时,喇叭通过长响和短响提醒。

二、硬件部分

9c7f4f3c766f468b8e27ec8df9f011d8.png

 aaf68aa69e094795aacad05d7b998d5a.png

e8008dae0c4e41689d51d3c35577bed5.jpeg

三、软件部分(main.c)

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

#define J_ON 1
#define J_OFF 0

sbit switcher = P1^0;
sbit DO_ON =    P1^1;//433M无线遥控器A
sbit D1_OFF =   P1^2;//433M无线遥控器B
sbit vibrate =  P1^3;

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

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	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(DO_ON == 1){
			//长响,表示进入警报模式
			switcher = 0;
			Delay1000ms();
			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;
				Delay1000ms();
				Delay1000ms();
				Delay1000ms();
			//3.2 如果不发生震动
			}else{
				//喇叭不响,给继电器高电平,不导通
				switcher = 1;
			}
		}
	}
}

四、实现效果

电动车简易报警器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值