“这辈子是不可能打工的,做生意又不会,只有做这个才能维持的了生活这样子。”害怕被偷电瓶吗,不如做个电动车报警器,防止被偷电瓶。#51单片机制作简易电动车报警器
前言
本篇博文介绍的是用51单片机制作简易电动车报警器,里面包含震动传感器介绍及实战,震动控制继电器常开口吸合,震动控制喇叭,433M控制继电器吸合,整个项目思路,项目实现代码。看到这篇博文的朋友,可以跟着做哟。
1.预备知识
完成本篇博文所实现功能,需要会以下知识。
一、串并联电路知识
二、高低电平的识别
三、电源正负极识别
四、C变量
五、基本输入输出
六、流程控制
七、函数
如果以上知识不清楚,请自行学习后再来浏览。
2.震动传感器介绍及实战
1.如何给震动传感器供电
单片机供电 VCC GND接单片机
2.震动传感器工作原理
产品不震动,输出高电平,模块上的DO口产品震动,输出低电平,DO是数字信号输出,AO为模拟信号输出。
3.注意事项
接通电源绿色灯亮,注意接线,接错了灯不会亮,会冒烟。
此项目不用接AO,因为用不到模拟信号。
4.震动模块介绍图
5.震动控制灯如何接线。
GND VCC分别接单片机GND VCC,
AO接P3.3。
6.如何调节震动传感器灵敏度
震动传感器上面的旋钮顺时针灵敏度加大,逆时针灵敏度减小。
7.震动控制灯程序代码
#include "reg52.h"
sbit LED1 = P3^7; //位定义,单片机上的P3口的第7口连接着LED灯的负极。
sbit vibrate = P3^3; //震动模块数字信号输出端DO连接到单片机的P3.3口
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
//用查询的方式来判断震动传感器DO是否输入出低电平
while(1)
{
if(vibrate == 0)
{
LED1 = 0; //灯亮
Delay1000ms();
LED1 = 1;
}
else
{
LED1 = 1; //灯灭
}
}
}
3.震动控制继电器常开口吸合
1.继电器如何供电
单片机供电 VCC GND接单片机
2.继电器参数
最大负载电路交流250V/10A,直流30V/10A
3.继电器触发方式
继电器模块可以通过跳线设置高电平触发或者电平触发(默认)
4.继电器模块工作原理
继电器IN口可以通过低电平输入使NO常开口吸合,高电平打开。
低电平使NC长闭口打开,高电平是长闭口吸合。
5.继电器介绍图
6.震动控制继电器NO吸合如何接线
GND VCC分别接单片机GND VCC,
IN接P1.1。
7.震动控制继电器NO吸合程序代码
#include "reg52.h"
sbit LED1 = P3^7; //位定义,单片机上的P3口的第7口连接着LED灯的负极。
sbit vibrate = P3^3; //震动模块数字信号输出端DO连接到单片机的P3.3口
sbit switcher = P1^1; //继电器输入端子IN接单片机P1.1口
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
//用查询的方式判断震动传感器DO是否输入出低电平
while(1)
{
if(vibrate == 0)
{
switcher = 0; //继电器IN端子低电平,继电器常开口NO闭合,SW+灯点亮
Delay1000ms();
switcher = 1;
}
else
{
LED1 = 1; //灯灭
}
}
}
4.震动控制喇叭
1.如何接入喇叭
1.在电池盒中装入两节5号电池
2.将喇叭负极接上电池盒负极
3.将电池盒的正极继电器COM端,喇叭的正极接继电器NO。
4.给单片机上电,打开电池仓开关,用震动控制继电器NO吸合程序,触碰震动传感器,喇叭就向了。
5.433M控制继电器吸合
1. 433M使用原理
433M接收到ABCD按键遥控信号后会在D0,D1,D2,D3中输出高电平
2.实现433M控制继电器吸合的思路
可以通过433M返回的高电平来作为判断条件是否让继电器吸合。
通过扫描法来判断遥控按键是否被按下。
3.程序代码
#include "reg52.h"
sbit switcher = P1^1; //继电器输入端子IN接单片机P1.1口
sbit D0_ON = P1^3; //433M模块的D0输出口接单片机P1.3口
sbit D1_OFF = P1^2; //433M模块的D1输出口接单片机P1.2口
void main()
{
//通过查询法来判断遥控按键是否被按下。
while(1)
{
if(D0_ON == 1) //当遥控按键A被按下,D0_ON = 1;
{
switcher = 0; //继电器IN端子低电平,继电器常开口NO闭合,SW+灯点亮
}
if(D1_OFF == 1) //当遥控按键B被按下,D0_OFF = 1;
{
switcher = 1; //继电器IN端子高电平,继电器常开口NO打开,SW+灯点灭
}
}
}
6.简易电动车报警器制作
1.项目思路
1.项目接线图
2.项目主体思路
一、通过查询法来判断报警器是否工作
二、如果按遥控器A键启动报警器
三、喇叭响2秒后关闭
四、设置警报开启标志
五、如果按遥控器B键关闭报警器
六、喇叭响半秒后关闭
七、设置报警器关闭标志
八、如果检测到报警器开启标志
九、开始检测震动传感器是否震动
十、震动传感器震动喇叭就响。
十一、震动传感器不震动喇叭就不响。
2.项目实现代码
#include "reg52.h"
#include <intrins.h>
#define ON 1
#define OFF 0
/*
时间: 2023年9月6日16:10:31
程序功能:简易电动车报警器制作
*/
sbit vibrate = P3^3; //震动传感器DO口接单片机P3.3口
sbit switcher = P1^1; //继电器输入端子IN接单片机P1.1口
sbit D0_ON = P1^3; //433M模块的D0输出口接单片机P1.3口
sbit D1_OFF = P1^2; //433M模块的D1输出口接单片机P1.2口
void Delay2000ms() //@11.0592MHz 延时2秒函数
{
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 = OFF; //让开启警报标志处于关闭状态
//通过查询法来判断报警器是否工作
while(1)
{
//如果按遥控器A键开启报警器
if(D0_ON == 1)
{
switcher = 0;
//喇叭响2秒后关闭
Delay2000ms();
switcher = 1;
//设置警报开启标志
mark = ON;
}
//如果按遥控器B键关闭报警器
if(D1_OFF == 1)
{
switcher = 0;
//喇叭响半秒后关闭
Delay500ms();
switcher = 1;
//设置报警器关闭标志
mark = OFF;
}
//如果检测到报警器开启标志
if(mark == ON)
{
//开始检测震动传感器是否震动
if(vibrate == 0)
{
//震动传感器震动喇叭就响。
switcher = 0;
Delay2000ms();
}
else
{
//震动传感器不震动喇叭就不响。
switcher = 1;
}
}
}
}
结束语
很高兴您能看到这里,点个赞再走呗。谢谢您啦!!!