前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单片机补充案例--入侵检测系统

单片机补充案例--入侵检测系统

作者头像
zhangrelay
发布于 2021-03-03 06:49:10
发布于 2021-03-03 06:49:10
99300
代码可运行
举报
运行总次数:0
代码可运行

说明:使用 STC89C52 设计入侵检测系统,给出方案和核心代码,需满足下列要求: 1. 发现入侵立刻开启 LED 闪烁警示 2. 入侵超过 5s 警报响起 3. 手动清除声光报警时,需输入安许可防密码

设备:

入侵检测示意

也可采用按键模拟入侵信号,具体程序如下所示。但一定要掌握流程图和小系统设计的一般思路方法。

使用ROS将入侵信号接入机器人物联网系统,可完成更多丰富的应用案例。

程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <8052.h>
__sfr  __at (0xE8) P4;
__sbit __at (0xEC) P4_4;

#define LED    P0	    //LED闪烁警示
#define LSA    P1_5	    //P0控制=0
#define LSB    P1_6	    //P0控制=0
#define LSC    P1_7	    //P0控制=0
#define ALARM  P4_4          //声音警示
#define HUMAN  P3_2          //模拟人体检测信号
#define KEY01  P3_4          //模拟密码组合1
#define KEY02  P3_5          //模拟密码组合2
unsigned int   cnt = 0;      //定义一个计数变量,记录 T0 溢出次数
unsigned char  alarmlevel=0; //警报等级
void sleep(unsigned int t);
void SysInit();
void Timer0() __interrupt 1;
/************************************************************/
void main ()		    //主函数
{
	SysInit();
	while(1)
	{
	    if(alarmlevel==1) //LED警示
	    {
	        LED=0xff;
	        sleep(10000);
	        LED=0x00;
	        sleep(10000);
	    }
	    if(alarmlevel==2) //LED+Sound警示
	    {
	    	LED=0xff;
	    	ALARM=1;
        	sleep(2000);
        	LED=0x00;
        	ALARM=0;
        	sleep(2000);	    	
	    }
	}
}
 /************************************************************/
void sleep(unsigned int t)
{
	while(t--);
}
void SysInit()
{
	LSA  = 0;	   //本开发板的P0发光二极管片选地址
	LSB  = 0;
	LSC  = 0;
	LED  = 0xff;;	   //初始化LED
	TMOD = 0x01;       //设置定时器T0工作方式1
	TL0  = 47104%256;  //计数器初值
	TH0  = 47104/256;
	TR0  = 1;	   //启动定时器
	ET0  = 1;	   //开中断
	EA   = 1;
}
void Timer0() __interrupt 1 //定时器 T0 中断响应
{
 	TL0  = 47104%256;   //计数器初值
	TH0  = 47104/256;
	if(HUMAN==0)
	{
	    cnt++;
	    if(alarmlevel==0)
	        alarmlevel=1;
	}
 	if (cnt > 249)       //判断 T0 溢出是否达到 250 次,等于5秒
 	{
	    if(alarmlevel==1)
	    	alarmlevel=2;
 	}
 	if(KEY01==0&&KEY02==0)  //密码合适清全部状态
	{
	    alarmlevel=0;
	    LED=0xff;
	    ALARM=1;
	    cnt=0;
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
单片机补充案例--stc89c52的P4口使用
说明:头文件为8052.h默认情况下不能使用P4口,需要添加如下代码,如使用P4_4:
zhangrelay
2021/03/03
9280
单片机补充案例--速度反馈控制LED灯柱状图
说明:速度快LED显示灯多,速度慢LED显示灯少,显示次序从下向上。 设备: 码盘 端口 使用外部中断和定时器中断,实现里程计测速,从S到dS(V)的过程。 结合高等
zhangrelay
2021/03/03
3650
单片机补充案例--速度反馈控制LED亮度
说明:使用中断测速,速度快LED亮,速度慢LED暗。 设备: 码盘 接口 使用外部中断和定时器中断,实现里程计测速,从S到dS(V)的过程。 结合高等数学和离散时间系
zhangrelay
2021/03/03
4220
stc89c52在Linux或MacOS下使用sdcc和stcgal中断与LCD测试代码
使用说明参考:https://zhangrelay.blog.csdn.net/article/details/108449115
zhangrelay
2020/10/09
1K0
单片机实验说明<三>数码管和定时器基本使用
编程实现8段数码管的动态扫描显示,要求4个数码管从左到右分别显示“1”、“2”、“3”、“4”、及“A”、“b”、“C”、“d”。
zhangrelay
2021/03/03
5440
单片机补充案例--LED数码管99秒倒计时
说明:使用数码管实现倒计时显示 设备: 倒计时 可使用按钮作适当控制,暂停,开始,计时复位等。 程序: #include<8052.h>
zhangrelay
2021/03/03
8140
单片机课堂思考题-2000秒倒计时?
99秒倒计时,改为2000(6666)秒倒计时。 #include<8052.h> #define LSC P1_7 //特殊功能寄存器的位定义, #define LSB P1_6 //3-8译码器的输入端, #define LSA P1_5 //控制三极管Q2~Q6的导通 unsigned char smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x0f8,0x80,
zhangrelay
2021/12/02
5120
单片机课堂思考题-2000秒倒计时?
单片机实验2提示
参考程序,未必准确: /***************************************************************************** * 头文件 * *****************************************************************************/ #includ
zhangrelay
2021/12/02
2600
单片机实验2提示
单片机补充案例--数字IO口呼吸灯
说明:不使用PWM口,而是使用数字口和时延函数模拟,从而实现普通IO口对LED灯的亮度控制。
zhangrelay
2021/03/03
4100
单片机补充案例--I2C和AD使用PCF8591
上电位器:从大变小!(2.49-1.64-0.42-0.33)另一个不变(0.01附近)
zhangrelay
2021/03/03
4510
单片机补充案例--简易里程计
说明:使用外部中断捕获车轮上脉冲,用于计数从而测量车轮总里程,通过LED灯亮灭累积示意。
zhangrelay
2021/03/03
3150
单片机补充案例--中断到底用不用
是否使用中断依据实际情况而定,并非是做题惯性,题目要求用就用,这种思想不适合工作。
zhangrelay
2021/03/03
2040
山东大学单片机原理与应用实验 3.8 ADC0808/9信号采集实验
利用LCD1602和AD0808实现简单的交流信号过零检测与频率分析。要求信号幅度变化时(满量程的5%—95%),不影响检测到结果。频率检测的结果通过LCD1602的第一行显示出来,信号过零时,能够通过P2.6输出一个脉冲宽度为5μs的脉冲信号。
timerring
2022/07/20
9810
山东大学单片机原理与应用实验 3.8 ADC0808/9信号采集实验
单片机补充案例--按键点灯
关于单片机程序,如果使用固件库一定要配置好环境,对于实验一,不配置正确就无法完成编译,报错无法找到xxx等:
zhangrelay
2021/03/03
2720
别怕!51 单片机从入门到应用,小白也能轻松吃透
这篇教程专为单片机小白打造,从 51 单片机基础讲起,带你搭建开发环境,学习汇编与 C 语言编程。通过 LED 灯闪烁、按键控制、数码管显示等基础实验,以及简易电子钟、温度检测系统等应用案例,结合代码实操,助你快速掌握 51 单片机开发。
羑悻的小杀马特.
2025/03/24
5170
51单片机linux环境LED、数码管、开关、循环、判断演示
示例程序如下,有bug,能运行但效果可提升: #include <8052.h> #define LSA P1_5 #define LSB P1_6 #define LSC P1_7 char SEG[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void init0(void) { LSA = 1; LSB = 0; LSC = 0; } void init1(void) { LS
zhangrelay
2021/12/02
3700
51单片机linux环境LED、数码管、开关、循环、判断演示
单片机实验说明<二>外部中断基本使用
自行设计实验线路并编制程序:要求在无外部中断时最右一位发光二极管点亮。请编程实现:当外部中断0请求中断时发光二极管左移;当外部中断1请求中断时发光二极管闪烁。
zhangrelay
2021/03/03
5940
你有几种方法写流水灯
流水灯,学单片机时,编程第一课的内容,多少小伙伴的单片机之路都是从流水灯开始的。那有没有想过,我们能用几种方式来写流水灯,各有什么优缺点呢?今天小代就来聊聊流水灯的写法。
单片机技术宅
2021/02/22
1.3K0
你有几种方法写流水灯
设计分享|51单片机定时器Timer0控制4个LED滚动闪烁
51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
电子工程师成长日记
2024/10/16
2580
设计分享|51单片机定时器Timer0控制4个LED滚动闪烁
水流量霍尔传感器工作原理_51单片机温度传感器
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
1.2K0
水流量霍尔传感器工作原理_51单片机温度传感器
相关推荐
单片机补充案例--stc89c52的P4口使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验