基于51單片機多功能防盜報警系統

基于51單片機多功能防盜報警系統( proteus仿真+程序+設計報告+原理圖+講解視頻)

  • 1. 主要功能:
  • 2. 講解視頻:
  • 3. 仿真
  • 4. 程序代碼
  • 5. 設計報告
  • 6. 原理圖
  • 7. 設計資料內容清單&&下載鏈接

仿真圖proteus8.9及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設計編號:S0098

1. 主要功能:

基于51單片機的多功能防盜報警器仿真設計

1、系統可以測量光照和人體距離通過LCD1602顯示,具備手動控制布防和撤防;

2、如果光照高于閥值,說明有人開窗入室,啟動報警;

3、如果人體距離太近,說明有人靠近房屋,啟動報警;

4、檢測到異常振動,啟動報警;

5、檢測到人體紅外,啟動報警;

6、具有緊急按鈕,在突發情況下手動啟動報警;

7、可以通過按鍵設置光照閾值和報警距離;

51單片機、光照傳感器、超聲波傳感器、震動傳感器、人體紅外檢測傳感器

需注意仿真中51單片機芯片是兼容的,AT89C51,AT89C52是51單片機的具體型號,內核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機芯片。

img

以下為本設計資料展示圖:

2. 講解視頻:

講解視頻包含仿真運行講解和代碼講解

3. 仿真

打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。開始仿真后LCD1602液晶顯示光照強度和距離以及對應的報警值,默認開機時不設防模式,檢測值超過閾值不做報警處理。具備手動控制布防和撤防;

img設防后,調整光照高于閥值,說明有人開窗入室,啟動報警;

img

如果人體距離太近,說明有人靠近,啟動報警;

img

震動按鍵按下,系統檢測到異常振動,啟動報警;人體感應按鍵按下系統檢測到人體紅外,啟動報警;緊急按鈕按下,在突發情況下手動啟動報警;

img

系統可以通過按鍵設置光照閾值和報警距離;

4. 程序代碼

使用keil4或者keil5編譯,代碼有注釋,可以結合視頻理解代碼含義。

#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit led=P2^0;//LED
sbit out=P1^7;
sbit beep=P2^1;//蜂鳴器
sbit k1=P3^4;//遙控輸入
sbit k2=P3^5;
sbit k3=P1^0;
sbit s1=P3^6;
sbit s2=P3^7;
sbit s3=P3^0;
sbit s4=P3^1;sbit rs=P2^5;	 //1602數據/命令選擇引腳 H:數據      	L:命令
sbit rw=P2^6;	 //1602讀寫引腳	         H:數據寄存器  	L:指令寄存器
sbit e =P2^7;	 //1602使能引腳          下降沿觸發
sbit Trig = P1^5;
sbit Echo = P1^6;
sbit CLK=	P1^1;//時鐘,初始狀態為0
sbit DI=	P1^2;//數據輸入
sbit DO=	P1^3; // 數據輸出
sbit CS=	P1^4;
uchar time=0;
uint juli=0,lim1=30;//距離
uchar light=0,lim2=50;//光線
uchar disp1[]="L:000Lx S:000cm";
uchar disp2[]="  000Lx   000cm";
/*********************************************
讀取ADC
**********************************************/
uchar ADC(uchar ch)//通道ch	 1,2
{uchar temp0,temp1,i;CS=0;temp0=0;temp1=0;_nop_();_nop_();DI=1;//開始位_nop_();_nop_();CLK=1;_nop_();_nop_();CLK=0;_nop_();_nop_();DI=0;_nop_();_nop_();
//選擇通道0DI=1;_nop_();CLK=1;//上升沿DI=1_nop_();CLK=0;//1個下降沿DI=1_nop_();if(ch==1)DI=0;if(ch==2)DI=1;_nop_();CLK=1;_nop_();CLK=0;//第3個上升沿DI=0_nop_();DI=1;
//********通道選擇結束開始讀取轉換后的二進制數****
//下降沿讀數,一下進行判斷和處理,共8次
for(i=0;i<8;i++){temp0=temp0<<1;CLK=1;if(DO)temp0++;_nop_();CLK=0;}
for(i=0;i<8;i++){temp1=temp1>>1;CLK=1;if(DO)temp1=temp1 +0x80;_nop_();CLK=0;}CS=1;return temp0;
}void  StartModule()//啟動模塊{_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_();Trig=1;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_();Trig=0;}void HC_SRinit()//初始化
{TMOD|=0x11;		   //設T0為方式1,GATE=1;TH0=0;TL0=0; TH1=0x3c;TL1=0xb0;ET1=1;TR1=1; EA=1;Trig=0;         
}uint HC_SRread()//測距
{uint time=0;	while(!Echo)		//當RX為零時等待StartModule();		//啟動模塊TR0=1;			    //開啟計數while(Echo);		//當RX為1計數并等待TR0=0;				//關閉計數time=TH0*256+TL0;	//計算TH0=0;TL0=0;	time=time*1.7/50; //精度0.5cmreturn time;			
}
void delay_uint(uint i)
{while(i--);
}
/********************************************************************
* 名稱 : write_com(uchar com)
* 功能 : 1602命令函數
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
void write_com(uchar com)
{e=0;rs=0;rw=0;P0=com;delay_uint(20);e=1;delay_uint(20);e=0;
}/********************************************************************
* 名稱 : write_data(uchar dat)
* 功能 : 1602寫數據函數
* 輸入 : 需要寫入1602的數據
* 輸出 : 無
***********************************************************************/
void write_data(uchar dat)
{e=0;rs=1;rw=0;P0=dat;delay_uint(20);e=1;delay_uint(20);e=0;	
}/********************************************************************
* 名稱 : write_string(uchar hang,uchar add,uchar *p)
* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調用該函數如下write_string(1,5,"ab cd ef;")
* 輸入 : 行,列,需要輸入1602的數據
* 輸出 : 無
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p)
{if(hang==1)   write_com(0x80+add);elsewrite_com(0x80+0x40+add);while(1){if(*p == '\0')  break;write_data(*p);p++;}	
}/********************************************************************
* 名稱 : init_1602()
* 功能 : 初始化1602液晶 
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void init_1602()
{write_com(0x38);						//數據總線為8位,顯示2行,5x7點陣write_com(0x0c);						//開顯示,有光標,光標閃爍write_com(0x06);						//光標自動右移delay_uint(1000);						//等待設置完成
}
//主函數
void main()
{init_1602();HC_SRinit();//初始化//設置INT0IT0=1;//跳變沿出發方式(下降沿)EX0=1;//打開INT0的中斷允許。//設置INT1IT1=1;//跳變沿出發方式(下降沿)EX1=1;//打開INT1的中斷允許。EA=1;while(1){if(!s1)//距離設置{if(lim1<500)lim1++;while(!s1);}if(!s2)//距離設置{if(lim1>0)lim1--;while(!s2);}if(!s3)//光照設置 {if(lim2<120)lim2++;while(!s3);}if(!s4)//光照設置{if(lim2>0)lim2--;while(!s4);}if(!k1)//布防{led=0;while(!k1);}if(!k2)//撤防{led=1;out=1;beep=1;while(!k1);}if(!k3) //緊急{out=0;beep=0;led=0;}if(!led){//傳感器報警if((light>lim2)||(juli<lim1))beep=0;}}
}void Int0()	interrupt 0		//外部中斷0的中斷函數
{if(!led)beep=0;
}void Int1()	interrupt 2		//外部中斷1的中斷函數
{if(!led)beep=0;
}完整代碼見文章下載鏈接

5. 設計報告

10296字設計報告,內容包括硬件設計、軟件設計、軟硬件框圖、調試、結論等

img

隨著現代社會經濟的快速發展和人民生活水平的不斷提升,社會治安需求呈現出多元化、精細化的特點。無論是居民住宅還是小型商業場所,其安全防護問題已不再僅局限于物理屏障的構筑,而是愈發強調智能化、主動化的安全保障。在這樣的背景下,家庭及小型商業場所的安全防護需求日益凸顯,成為社會關注的焦點之一。

傳統的防盜報警器,盡管在一定程度上起到了預警與震懾的作用,但在實際應用中卻暴露出諸多局限性。這類報警器往往功能較為單一,主要依賴于門窗磁感應、紅外人體探測等基礎手段,對于復雜多變的入侵情境往往難以做出精準、及時的響應。比如,對于非法翻越窗戶、遮擋紅外探頭、利用工具破壞門窗等手法,傳統報警器的偵測能力相對有限。此外,傳統報警器在誤報率、遠程監控、自適應環境變化等方面也存在不足,無法滿足現代用戶對于高效、精準、便捷安全防護的期待。

針對上述問題,本課題提出了設計一款基于51單片機的多功能防盜報警器的研究任務。該報警器旨在突破傳統設備的功能局限,通過集成先進的傳感器技術,構建全方位、智能化的安防監控體系,從而顯著提升家庭及小型商業場所的安全防護水平,同時優化用戶體驗。

6. 原理圖

原理圖使用AD繪制,可供實物參考,仿真不同于實物,經驗不足不要輕易搞實物。

img

元件 型號 數量

單片機 AT89C51 1

電容 30pf 2

電容 10uf 1

晶振 12MHZ 1

電阻 10k 1

按鈕 5

電阻 100歐 4

LED 紅色 2

三極管 PNP 1

蜂鳴器 有源 1

電阻 1k 1

熱釋電 HCSR501 1

超聲波 HC-04 1

光敏電阻 10k 1

模數芯片 ADC0832 1

?

電源部分

排針 2P 1

電容 0.1uf 2

電容 100uf 2

穩壓器 7805 1

Proteus仿真和實物作品的區別:

1.運行環境:Proteus仿真是在計算機上運行的,而實物則是在硬件電路板上運行。

2.調試方式:在Proteus仿真中,可以方便地進行單步調試和觀察變量值的變化,而在實物中則需要通過調試器或者串口輸出等方式進行調試。

電路連接方式:在Proteus仿真中,可以通過軟件設置進行電路連接的修改,而在實物中則需要通過硬件電路板和連接線進行修改。

3.運行速度:Proteus仿真通常比實物運行速度快,因為仿真是基于計算機運行的,而實物則需要考慮電路板上的物理限制和器件的響應時間等因素。

4.功能實現:在Proteus仿真中,可以通過軟件設置實現不同的功能,而在實物中則需要根據電路設計和器件的性能進行實現。

7. 設計資料內容清單&&下載鏈接

資料設計資料包括仿真,程序代碼、講解視頻、功能要求、設計報告、軟硬件設計框圖等。

0、常見使用問題及解決方法–必讀!!!!

1、程序代碼注釋

2、proteus仿真

3、功能要求

4、軟硬件流程圖

5、開題報告

6、設計報告

7、原理圖

8、元器件清單

9、講解視頻

Altium Designer 安裝破解

KEIL+proteus 單片機仿真設計教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

單片機學習資料

相關數據手冊

答辯技巧

設計報告常用描述

鼠標雙擊打開查找嘉盛單片機51 STM32單片機課程畢業設計.url

img

S0098 網盤鏈接:
鏈接:https://pan.baidu.com/s/1y-on5cmsQ6RnTafUPtdE5w?pwd=2zz4
提取碼:2zz4

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72914.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72914.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72914.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

R語言和RStudio安裝

整體還是比較簡單的&#xff0c;主要是記錄個流程。 官方鏡像站列表R語言官網 1 安裝R&#xff08;2025/3/6&#xff09; R語言官網&#xff1a;The R Project for Statistical Computing 打開之后就Hello world一下吧 配置環境變量 2 安裝RStudio 下載地址&#xff1a;htt…

Ubuntu 22.04 升級到 Ubuntu 24.04 全流程指南

&#x1f4cc; 1. 前言 Ubuntu 24.04 是最新的 LTS 版本&#xff0c;帶來了內核更新、性能優化以及更強的安全性。本指南詳細記錄了從 Ubuntu 22.04 升級到 24.04 的完整過程&#xff0c;包括 升級前的準備、遇到的問題及如何選擇最佳選項&#xff0c;避免升級失敗或系統損壞。…

【每日學點HarmonyOS Next知識】Web跨域資源、Web長按菜單、Web攔截請求、禁止錄屏、Base64圖片寬高

1、HarmonyOS Web組件本地資源跨域問題&#xff1f; 關于資源跨域問題的解決&#xff0c;可以參考以下官網文檔&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-cross-origin-V5 方法一 為了使Web組件能夠成功訪問跨域資源&#xff0c;開…

數據庫查問題常用OS命令匯總

1、內存使用情況查看 top //查看活躍進程占用情況 free -mh //查看操作系統當前可用內存 2、cpu使用情況 lscpu //查看os cpu情況 sar -u -f sar文件名 -s hh:mm:ss -e hh:mm:ss //查看對應日期的歷史cpu情況 top //查看當前活躍進程使用cpu情況 3、io情況 iostat …

nlp培訓重點-5

1. LoRA微調 loader&#xff1a; # -*- coding: utf-8 -*-import json import re import os import torch import numpy as np from torch.utils.data import Dataset, DataLoader from transformers import BertTokenizer """ 數據加載 """cl…

CI/CD—Jenkins配置Maven+GitLab自動構建jar包

一、安裝Maven插件通過Maven構建項目 1、在Jenkins上安裝Maven Integration plugin插件 2、創建一個maven項目 2.1、填寫構建的名稱和描述等 2.2、填寫連接git的url 報錯&#xff1a;無法連接倉庫&#xff1a;Error performing git command: git ls-remote -h http://192.168.…

ngx_regex_create_conf

ngx_regex_create_conf 定義在 src/core/ngx_regex.c static void * ngx_regex_create_conf(ngx_cycle_t *cycle) {ngx_regex_conf_t *rcf;ngx_pool_cleanup_t *cln;rcf ngx_pcalloc(cycle->pool, sizeof(ngx_regex_conf_t));if (rcf NULL) {return NULL;}rcf->p…

【數據結構】初識集合框架及背后的數據結構(簡單了解)

目錄 前言 如何學好數據結構 1. 什么是集合框架 2. 集合框架的重要性 3. 背后所涉及的數據結構以及算法 3.1 什么是數據結構 3.2 容器背后對應的數據結構 3.3 相關java知識 3.4 什么是算法 3.5 基本關系說明&#xff08;重要&#xff0c;簡單了解&#xff09; 前言 …

P9242 [藍橋杯 2023 省 B] 接龍數列--DP【巧妙解決接龍問題】

P9242 [藍橋杯 2023 省 B] 接龍數列--DP 題目 解析什么時候該用 DP&#xff1f;動態規劃 vs 其他方法代碼 題目 解析 這題沒思路&#xff0c;壓根沒想到DP &#x1f626; 看了大神的題解&#xff0c;利用dp記錄每一個數結尾的長度&#xff0c;最后再用N-dp中的最大值&#xf…

用《設計模式》的角度優化 “枚舉”

枚舉應該都有用過&#xff0c;枚舉主要的作用是為了方便用戶查找和引用枚舉。 案例一 下面的枚舉邏輯很簡單&#xff0c;就是通過枚舉值返回不同的結果。 public enum OperationEnum {EQUAL_TO,CONTAINS,START_WITH,END_WITH;public String getOperationValue(String value)…

SQL根據分隔符折分不同的內容放到臨時表

SQL Server存儲過程里根據分隔符折分不同的內容放到臨時表里做查詢條件&#xff0c;以下分隔符使用“/”&#xff0c;可修改不同分隔符 --根據分隔符折分不同的內容放到臨時表--------------- SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS id, LTRIM(RTR…

Ubuntu切換lowlatency內核

文章目錄 一. 前言二. 開發環境三. 具體操作 一. 前言 低延遲內核&#xff08;Lowlatency Kernel&#xff09; 旨在為需要低延遲響應的應用程序設計的內核版本。Linux-lowlatency特別適合音頻處理、實時計算、游戲和其他需要及時響應的實時任務。其主要特點是優化了中斷處理、調…

基于Django創建一個WEB后端框架(DjangoRestFramework+MySQL)流程

一、Django項目初始化 1.創建Django項目 Django-admin startproject 項目名 2.安裝 djangorestframework pip install djangorestframework 解釋: Django REST Framework (DRF) 是基于 Django 框架的一個強大的 Web API 框架&#xff0c;提供了多種工具和庫來構建 RESTf…

VUE3開發-9、axios前后端跨域問題解決方案

VUE前端解決跨域問題 前端頁面需要改寫 如果無效&#xff0c;記得重啟服務器 后端c#解決跨域問題 前端js取值&#xff0c;后端c#跨域_c# js跨域-CSDN博客

DailyNotes 增加提醒功能

TODO&#xff1a;準備給 DailyNotes 增加一個提醒功能&#xff0c;準備接入 AI 來做一些事情。試了一下&#xff0c;非常靠譜。 具體 DailyNotes 和 Ollama 的交互方式&#xff0c;可以直接調用命令行&#xff0c;也可以走網絡API。 rayuK2CD9WCYN4 ~ % ollama run deepseek-…

PY32MD320單片機 QFN32封裝,內置多功能三相 NN 型預驅。

PY32MD320單片機是普冉半導體的一款電機專用MCU&#xff0c;芯片采用了高性能的 32 位 ARM Cortex-M0 內核&#xff0c;主要用于電機控制。PY32MD320嵌入高達 64 KB Flash 和 8 KB SRAM 存儲器&#xff0c;最高工作頻率 48 MHz。PY32MD320單片機的工作溫度范圍為 -40 ~ 105 ℃&…

OpenManus介紹及本地部署體驗

1.OpenManus介紹 OpenManus&#xff0c;由 MetaGPT 團隊精心打造的開源項目&#xff0c;于2025年3月發布。它致力于模仿并改進 Manus 這一封閉式商業 AI Agent 的核心功能&#xff0c;為用戶提供無需邀請碼、可本地化部署的智能體解決方案。換句話說&#xff0c;OpenManus 就像…

【貪心算法】簡介

1.貪心算法 貪心策略&#xff1a;解決問題的策略&#xff0c;局部最優----》全局最優 &#xff08;1&#xff09;把解決問題的過程分成若干步 &#xff08;2&#xff09;解決每一步的時候&#xff0c;都選擇當前看起來的“最優”的算法 &#xff08;3&#xff09;“希望”得…

springboot知識點以及源碼解析(2)

web開發--靜態規則與定制化 springboot對靜態資源的映射規則&#xff1a;在類路徑下面定義目錄static或public或resources或者META-INF/resources&#xff0c;訪問時項目根目錄靜態資源的名稱 在springboot中&#xff0c;如果項目中存在同名的靜態資源和同名的動態資源。那么我…

C++:string容器(下篇)

1.string淺拷貝的問題 // 為了和標準庫區分&#xff0c;此處使用String class String { public :/*String():_str(new char[1]){*_str \0;}*///String(const char* str "\0") // 錯誤示范//String(const char* str nullptr) // 錯誤示范String(const char* str …