基于单片机无线智能报警系统的设计

news/2024/9/27 18:39:20 标签: 单片机, 嵌入式硬件

文章目录

  • 前言
  • 资料获取
  • 设计介绍
  • 功能介绍
  • 设计程序
  • 具体实现截图
  • 设计获取


前言

💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
单片机设计精品实战案例
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

资料获取

文章底部名片,详细资料联系我。

设计介绍

基于单片机无线智能报警系统是一种结合了单片机控制技术、无线通信技术以及智能报警策略的安全防护系统。以下是该系统设计的详细介绍:

一、系统概述
基于单片机无线智能报警系统通过无线传感器节点实时监测周围环境,一旦检测到异常入侵或危险情况,即通过无线传输方式将报警信号发送给单片机控制器。单片机控制器对接收到的信号进行处理和逻辑判断,进而触发报警装置,并通过无线通信模块将报警信息发送给远程监控中心或用户手机APP,实现实时报警和远程监控。

二、系统组成
整个系统主要由以下几个部分组成:

传感器模块:包括红外传感器、烟雾传感器、温度传感器、湿度传感器等,用于实时监测入侵者的红外辐射、环境中的烟雾浓度、温度和湿度等参数。这些传感器节点应具备灵敏度高、抗干扰能力强等特点。
单片机模块:选用性能稳定、功能强大的单片机作为系统的控制核心,设计相应的外围电路,包括电源电路、复位电路、时钟电路等。单片机负责接收传感器模块传输的数据,根据预设的报警逻辑判断是否需要发出报警信号,并控制报警模块进行声光报警或其他形式的报警。
报警模块:设计合适的报警装置,如声光报警器、振动马达等,用于在检测到异常事件时发出警报信号。报警模块的设计需要考虑到报警方式的多样性、报警声音的响度与辨识度以及报警灯光的亮度与闪烁频率等。
无线通信模块:选择适当的无线传输模块,如WiFi模块、蓝牙模块或LoRa模块等,用于实现单片机控制器与无线传感器节点以及远程监控中心之间的通信。无线通信模块的设计需要考虑到通信距离的远近、通信速率的快慢以及通信协议的兼容性等。

功能介绍

通过多机通信模拟远程无线报警传输,可以传输多种报警信息,多种报警信息采用不同的二进制组合或者数字进行表示。

设计程序

#include <reg51.h>              /* 库函数调用 */
#include <intrins.h>            /* 库函数调用 */
#define uchar	unsigned char   /* 宏定义 */
#define uint	unsigned int    /* 宏定义 */
sbit	K0	= P1 ^ 0;       /*按键定义引脚 */
sbit	K1	= P1 ^ 1;       /*按键定义引脚 */
sbit	K2	= P1 ^ 2;       /*按键定义引脚 */
sbit	K3	= P1 ^ 3;       /*按键定义引脚 */
sbit	K4	= P1 ^ 4;       /*按键定义引脚 */
sbit	K5	= P1 ^ 5;       /*按键定义引脚 */
sbit	K6	= P1 ^ 6;       /*按键定义引脚 */
sbit	K7	= P1 ^ 7;       /*按键定义引脚 */
uchar i;


/* 数码管显示字符 */
uchar code tab[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66,
		     0x6d, 0x7d, 0x07, 0x7f, 0x6f,
		     0x77, 0x7c, 0x39, 0x5e, 0x79,0x71 };
/***************************延时函数************************/
void delay( uint z )
{
	uint x, y;
	for ( x = z; x > 0; x-- )
		for ( y = 110; y < 0; y-- )
			;
}


/***************************信息发送函数************************/
void send( uchar c )   /* 向串口发送字符 */
{
	SBUF = c;
	while ( TI == 0 )
		;
	TI = 0;
}


/***************************主函数************************/
void main()
{
	
	P2	= 0x00;
	SCON	= 0x50;                         /* 串口模式1 */
	TMOD	= 0x20;                         /* T1工作模式2 */
	PCON	= 0x00;                         /* 波特率不倍增 */
	TH1	= 0xfd;                         /* 波特率设定6900 */
	TL1	= 0xfd;
	TI	= RI = 0;
	TR1	= 1;                            /* 启动定时器T1 */
	IE	= 0x90;                         /* 允许串口中断 */
	while ( 1 )
	{
		if ( K0 == 0 )
			send( '0' );
		else send( 'A' );               /* 发送数据 */
		if ( K1 == 0 )
			send( '1' );
		else send( 'B' );               /* 发送数据 */
		if ( K2 == 0 )
			send( '2' );
		else send( 'C' );               /* 发送数据 */
		if ( K3 == 0 )
			send( '3' );
		else send( 'D' );               /* 发送数据 */
		if ( K4 == 0 )
			send( '4' );
		else send( 'E' );               /* 发送数据 */
		if ( K5 == 0 )
			send( '5' );
		else send( 'F' );               /* 发送数据 */
		if ( K6 == 0 )
			send( '6' );
		else send( 'G' );               /* 发送数据 */
		if ( K7 == 0 )
			send( '7' );
		else send( 'H' );               /* 发送数据 */
	}
}


/**************************串口中断***********************/
void serial_int() interrupt 4                   /* 甲机串口接收中断函数 */
{
	if ( RI )
	{
		RI = 0;                         /* 标志位置零 */
		if ( SBUF >= 0 && SBUF <= 15 )
			P2 = tab[SBUF];         /* 接收的信息置位 */
		else
			P2 = 0x00;              /* 没有信息则处理此方法 */
		if ( SBUF == 'x' )              /* buf中为x则调用 */
			if ( i >= 0 && i < 9 )
			{
				i	= i + 1;
				P2	= tab[i];
			}
		if ( i == 9 )
			i = 0;
		if ( SBUF == 'y' )
		{
			P2	= 0x00;
			i	= 0;
		}
	}
}

具体实现截图

在这里插入图片描述

请添加图片描述
在这里插入图片描述
在这里插入图片描述

设计获取

文章下方名片联系我即可~

精彩专栏推荐订阅:在下方专栏👇🏻

毕业设计精品实战案例

收藏关注不迷路!!

🌟文末获取设计🌟


http://www.niftyadmin.cn/n/5679272.html

相关文章

智能手机取证: 专家如何从被锁定设备中提取数据?

在数字取证领域&#xff0c;从被锁定的手机中检索数据的能力是决定调查成功与否的关键技能。由于智能手机往往是解决复杂案件的关键&#xff0c;智能手机取证已经成为打击犯罪和恐怖主义战争中的一个关键组成部分。通话记录、短信、电子邮件&#xff0c;甚至位置数据都可能被发…

19.2 编写dockerfile和k8s yaml

本节重点介绍 : 编写Dockerfile编写k8s需要的yaml 编写Dockerfile 1. FROM 指定基础镜像 必须有的指令&#xff0c;并且必须是第一条指令Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版&#xff0c;Alpine 采用了 musl libc 和 busybox 以减…

(附代码)psutil实时监控脚本运行过程中消耗的资源

在运行脚本时有时需要监控脚本中各模块 占用的cpu以及memory的情况&#xff0c;一般是执行python xx.py后&#xff0c;另起temernal&#xff0c;输入top命令实时监控&#xff0c;但这个存在一个问题&#xff0c;当脚本运行时间比较久时&#xff0c;一直盯着屏幕 也不合适。 所…

LCR 007. 三数之和

文章目录 1.题目2.思路3.代码 1.题目 LCR 007. 三数之和 给定一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a &#xff0c;b &#xff0c;c *&#xff0c;*使得 a b c 0 &#xff1f;请找出所有和为 0 且 不重复 的三元组。 示例 1&#xff1a…

【达梦数据库】存储过程统计模式下表信息-SQL改写

背景 在一次Oracle迁移Dm的过程中&#xff0c;源库&目的库大小写均敏感&#xff0c;执行客户提供的SQL脚本的过程中发现&#xff0c;表ip_address被系统默认成了表IP_ADDRESS。 经过分析&#xff0c;客户提供的SQL没有使用双引号&#xff0c;来确保Oracle和Dm数据库按照指…

【多样化的思想】基于执行档案的测试

下面我们讨论另一种关于多样性的观点。我们知道&#xff0c;对被测对象而言&#xff0c;测试输入空间代表的是各种可能的外部环境条件。如果两个测试输入点距离比较远&#xff0c;说明在这两个点上&#xff0c;被测对象所面对的外部环境条件很不一样&#xff0c;所以我们说&…

C++简单缓冲区类设计

目录 1.引言 2.静态缓冲区 3.动态缓冲区 4.数据引用类 5.自动数据引用类 6.几种缓冲区的类关系图 7.注意事项 8.完整代码 1.引言 在C中&#xff0c;设计静态和动态缓冲区类时&#xff0c;需要考虑的主要差异在于内存管理的方式。静态缓冲区类通常使用固定大小的内存区域…

C:数据在内存中的存储

目录 一、整数在内存中的存储 二、大小端字节序 2.1 大小端字节序的介绍 2.2 为什么有大小端之分&#xff08;了解即可&#xff09; 2.3 判断大小端的代码实现 三、浮点数的数据存储 3.1 浮点数的存储 3.2 浮点数存储的过程 3.2.1 对于有效数字M 3.2.1 对于指数E 3.3…