哔哩哔哩视频链接: https://www.bilibili.com/video/BV1Wc411C7xH/?vd_source=e5082ef80535e952b2a4301746491be0

项目属性
| 作者 | 化作尘 |
|---|---|
| 是否开源 | 开源 |
| 开发难易程度 | 4.6分 |
| 复刻难易程度 | 3.8分 |
| 毕业设计、课程设计、学习 | 适用 |
| 视频演示 | 哔哩哔哩 : 化作尘my |
| 文档教程 | 此篇博客 |
| 技术支持方式 | 作者扣扣 |
项目背景
此项目为做坏事、防盗、布防而设计,设计最大4个点位布防,布防点位有人会报警,布防点距离主机可达100-200米,遇到遮挡距离会减少。
场景1 :防盗
当家里有一间或者多间房间内部有重要或者贵重物资时,可以每间房放置一个发送器,接收器放置在有人监控区域内,当有人进入其中一个房间,就会报警,并显示是哪一间房间的报警器触发报警
场景2:做坏事
当你想去某个富豪家里偷东西时,你可以把布防点位设置在门口,走廊,或者大门,当你在屋子里偷盗的时候,可以不用观察是否有人闯入,放心偷盗,听到手机的主机报警后,第一时间找路线逃跑

场景3:护法
当你要在一个户外树林做私密的事情又害怕周围有人过来,你可以以你为中心,放置一个圆形区域的布防点,当你正在做私密事情的时候只需要注意听是否报警,听到报警立马停止做私密的事情,防止被人发现

一、项目功能
1、可以显示当前时间、星期、日期
2、可以修改当前时间、星期、日期
3、一台主机接收报警信号,多台从机发送报警信号,发送器可以无线发送200米距离到主机,主机显示是那台从机触发送的报警信号
4、一键开启关闭布防
5、查看报警记录,并记录报警时间
二、材料选择
(一)主控选择:STC89C52RC
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

(二)显示屏选择:LCD1602
LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能有所不同,但使用方法都是一样的。为了降低成本,绝大多数制造商都直接将裸片做到板子上。

(三)时钟芯片选择:DS1302
DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,并且具有闰年补偿等多种功能。

(四)无线发送接收器


(五)外围器件:按键、蜂鸣器、开关、纽扣电池、电位器、三极管等
三、接收设备原理图设计

(一)最小系统
供电、晶振、复位电路
在这里插入图片描述
(二)显示屏电路
数据线接到P0,注意要接1K上拉电阻

(三)时钟芯片电路
3个引脚接到单片机IO口控制

(四)按键电路

(五)无线传感器

(六)电源电路与电源指示

四、发送设备原理图设计

采用人体热释电红外传感器,捕捉人体红外判断是否有人在传感器附近

发送设备,人体热释电传递信号给发送模块,无线发送到主机

四、PCB设计
接收设备

发送设备

五、程序设计
/**************************************************************************************
*项目名称:无线防盗系统主机
作者:化作尘
版本:V1.3
邮箱:2809786963@qq.com
更新时间:V1.1 2020年4月11日14:30:06
V1.2 2020年4月18日20:51:31
V1.3 2023年11月19日08点33分
***************************************************************************************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "ds1302.h"
#include "lcd.h"
#include "eeprom.h"
#include "temp.h"
#define TIME_SAVE_ID 0X56
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit k1 = P1^0; //按键
sbit k2 = P1^1;
sbit k3 = P1^2;
sbit k4 = P1^3;
sbit sen1 = P1^6; //传感器
sbit sen2 = P1^7;
sbit sen3 = P3^2;
sbit sen4 = P3^3;
sbit lcdled = P2^4; //lcd背光
sbit beep = P1^4; //蜂鸣器
u16 ti=0; //修改第几个时间参数 、修改第几个闹钟参数
u8 status = 0; //接收信号标志
u8 countalm=0;
uchar lastTIME[7] = {
0};
enum ALMSWITCH //定义枚举、报警布防开关
{
OFF,ON
} almswitch;
enum Mode //定义枚举、三种模式
{
DISPLAYDATA,MODIFYDATA,TIMERECORD,NONE
} mode = DISPLAYDATA;
#define RECODE_NUM 12
uchar timerecord[RECODE_NUM][8] = {
0};//记录十二组报警时间
void dis_sen_num(u8 num);
void display_alm_state(u8 en);
/*********延时函数***********/
void delay(unsigned int t) //短延时
{
while(t--);
}
/*********延时函数***********/
void delay_ms(unsigned int t) //毫秒延时
{
unsigned int a,b;
for(a=0; a<t; a++)
for(b=0; b<120; b++);
}
/*********对比时间改变***********/
u8 cmp_last_time(void) //对比时间改变
{
u8 i;
for(i=0; i<7; i++)
if(lastTIME[i] != TIME[i])return i;
return 0xff;
}
/*********清除时间,刷新**********/
void clr_last_time(void)
{
u8 i;
for(i=0; i<7; i++)
lastTIME[i] = 0;
}
//扫描传感器状态
void scan_sensor_state(void)
{
static u16 count=0;
u8 n;
u8 r_sen1,r_sen2,r_sen3,r_sen4;
static u8 lastsen1,lastsen2,lastsen3,lastsen4;
if(almswitch==ON) //开启布防
{
r_sen1 = sen1;
r_sen2 = sen2;
r_sen3 = sen3;
r_sen4 = sen4;
if(r_sen1 != lastsen1 && r_sen1 == 1)
status = 1;
if(r_sen2 != lastsen2 && r_sen2 == 1)
status = 2;
if(r_sen3 != lastsen3 && r_sen3 == 1)
status = 3;
if(r_sen4 != lastsen4 && r_sen4 == 1)
status = 4;
lastsen1 = r_sen1;
lastsen2 = r_sen2;
lastsen3 = r_sen3;
lastsen4 = r_sen4;
if(status)
{
//显示报警
LcdClean();
LcdWriteCom(0x80);
LcdWritestr("Alarm!");
dis_sen_num(status);
mode = NONE;
Ds1302ReadTime(); //更新时间
//记录报警
count=60000; //设置报警时间长度
for(n=0; n<7; n++)
{
timerecord[countalm][n] = TIME[n];
}
timerecord[countalm][7] = status; //标志传感器
countalm++;
if(countalm == RECODE_NUM)countalm =0;
status = 0;
}
if(count>0) //报警程序
{
count--;
if(count % 1000 == 999)
beep=!beep;
if(count==0) {
beep = 0;
mode = DISPLAYDATA;
LcdClean();
clr_last_time(); //刷新显示
display_alm_state(1);//显示 ON OFF
}
}
}
}
void display_alm_state(u8 en)
{
static u8 last_al = 0xff;
if(en || last_al != almswitch)
{
LcdWriteCom(0xcd);
if(almswitch==OFF) //显示布防状态
LcdWritestr("OFF");
if(almswitch

该项目基于51单片机,为防盗、布防等设计,最大支持4个点位布防,布防点有人会报警。项目功能包括显示和修改时间等,介绍了主控、显示屏等材料选择,阐述了接收和发送设备原理图设计、PCB设计以及程序设计等内容。

1438

被折叠的 条评论
为什么被折叠?



