当前位置: 首页 > news >正文

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

1.硬件

  • 51最小系统
  • 继电器模块
  • 震动传感器模块
  • 433M无线收发模块

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
http://www.dtcms.com/a/111204.html

相关文章:

  • Python循环控制语句
  • 幻觉抵抗优化大模型:teapotllm
  • Linux 线程1-线程的概念、线程与进程区别、线程的创建、线程的调度机制、线程函数传参
  • SpringBoot+Spring+MyBatis相关知识点
  • MQL5教程 05 指标开发实战:双色线、双线变色MACD、跨时间周期均线
  • TSMaster在新能源汽车研发测试中的硬核应用指南
  • 【rockchip】使用RKMPP+RGA解码H264并转换数据格式输出
  • 一文理解什么是中值模糊
  • C++多线程函数介绍
  • 【Kafka基础】ZooKeeper在Kafka中的核心作用:分布式系统中枢神经系统
  • 【LeetCode Solutions】LeetCode 141 ~ 145 题解
  • RocketMQ 中的 ProducerManager 组件剖析
  • 【Java Stream详解】
  • 提高:图论:强连通分量 图的遍历
  • Nginx功能及应用全解:从负载均衡到反向代理的全面剖析
  • OpenAI:人工智能领域的探索者与变革者
  • 黑马点评redis改 part 1
  • T-SQL语言的链表查找
  • eventEmitter实现
  • 网络建设与运维神州数码DCN MAC地址表操作
  • TypedDict和dataclass的优缺点对比
  • 前馈控制与反馈控制融合算法详解及python案例分析
  • JavaWeb学习--MyBatis-Plus整合SpringBoot的ServiceImpl方法(增加,修改与删除部分)
  • 深入解析:使用Python爬取Bilibili视频
  • 如何用DeepSeek进行SWOT分析?以CSDN的“C知道”为例
  • k8s的StorageClass存储类和pv、pvc、provisioner、物理存储的链路
  • 做一个Andriod系统应用的方法
  • 软件设计师之设计模式
  • 第七章 Python基础进阶-异常、模块与包(其五)
  • 手撕AVL树