上官一号单片机项目之电动车简易报警器
项目使用硬件描述
振动传感器
单片机供电VCC GND接单片机
产品不震动,输出高电平,模块上的AO口
产品震动,输出低电平,绿色指示灯亮
继电器
两端无电压或不够时,COM端和NC端接通。
高功率喇叭
433M无线发射接收
思路:
一、A按键是开启警报模式,警报模式下:
长响表示进入警报模式
- 震动传感器感应到震动,单片机对应引脚接收到低电平,向继电器输出低电平,继电器COM端和NO端接通
- 震动传感器未感应到震动,不变
二、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;
}
}
//非警报模式下,震动不响
}
}