【STM32单片机】防盗报警器设计


一、功能简介

本项目使用STM32F103C8T6单片机控制器,使用按键、动态数码管、蜂鸣器、指示灯、热释电人体红外传感器等。
主要功能:
系统运行后,默认处于布防状态,D1指示灯亮,数码管显示初始时间6点0分,
报警次数0,格式:06-00 00,其中间隔1S中数码管上‘-'闪烁一次,代替秒钟运行,当人体红外传感器感应到有人时,蜂鸣器报警,当人离开时,且蜂鸣器报警关闭,同时数码管上报警次数显示数增加。若处于报警时,人还未离开,可通过K1或K2任意键关闭声光报警,若按下K1键依然处于布防状态,若按下K2键则处于撤防状态。处于撤防状态时,D1指示灯灭。传感器即使感应到有人也不会发生声光报警。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/



//布防/撤防控制
void defence_control(void)
{
	u8 key=0;
	static u8 cancel_alarm_flag=0;

	key=KEY_Scan(0);
	//无人时布防,且标志可用于屏蔽掉布防后,检测有人报警时,任意键取消报警
	if(sys_ctrl.man_flag==0)
	{
		if(key==KEY1_PRESS)//布防	
			sys_ctrl.mode=0;
		else if(key==KEY2_PRESS)//撤防	
			sys_ctrl.mode=1;	
	}
	
	//布防监控
	if(sys_ctrl.mode==0)
	{
		LED0=0;//布防指示灯亮
		//有人接近,感应器感应到信号
		if(sys_ctrl.man_flag==0)
		{
			if(IRDOUT_PIN==1)
			{
				delay_ms(100);//滤波,防止干扰物影响
				if(IRDOUT_PIN==1)
				{
					sys_ctrl.man_flag=1;						
				}
			}		
		}
		else//检测到有人,LED闪烁,报警
		{
			if(cancel_alarm_flag==0)
			{
				BEEP_Alarm(100,100);	
			}
			
			if(IRDOUT_PIN==0)//人离开
			{
				delay_ms(5);
				if(IRDOUT_PIN==0)
				{
					sys_ctrl.man_flag=0;
					sys_ctrl.alarm_cnt++;
					if(sys_ctrl.alarm_cnt==100)sys_ctrl.alarm_cnt=0;
					cancel_alarm_flag=0;	
				}	
			}
			else//人未离开,可按任意键取消声光报警
			{
				if(key!=0)
				{
					cancel_alarm_flag=1;
					if(key==KEY1_PRESS)//布防	
						sys_ctrl.mode=0;
					else if(key==KEY2_PRESS)//撤防
					{
						sys_ctrl.mode=1;
						sys_ctrl.alarm_cnt++;
						if(sys_ctrl.alarm_cnt==100)sys_ctrl.alarm_cnt=0;	
					}				
				}			
			}	
		}	
	}
	else//布防监控关闭
	{
		LED0=1;//布防指示灯灭
		sys_ctrl.man_flag=0;
		cancel_alarm_flag=0;	
	}			
}

//应用控制系统
void app_sys_ctrl_demo(void)
{
	LED_Init();
	USART1_Init(115200);
	KEY_Init();
	BEEP_Init();
	SMG_Init();
	ctrl_pin_init();
	TIM3_Init(20,36000-1);  //定时10ms
	TIM_Cmd(TIM3,ENABLE); //打开定时器	
	sys_ctrl.hour=6;
	sys_ctrl.min=0;
	
	while(1)
	{
		defence_control();//布防/撤防控制
		show_time_alarm_cnt();//显示时间和报警次数
	}
}




三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值