文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用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); //定时10msTIM_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设计,视频分享,技术交流。