• 方案介紹
    • 1. 主要功能:
    • 2. 講解視頻:
    • 3. 仿真
    • 4. 程序代碼
    • 5. 設(shè)計(jì)報(bào)告
    • 6. 原理圖
    • 7. 設(shè)計(jì)資料內(nèi)容清單&&下載鏈接
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)多功能防盜報(bào)警proteus仿真( proteus仿真+程序+設(shè)計(jì)報(bào)告+講解視頻)

01/06 09:03
2750
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

設(shè)計(jì)資料獲取聯(lián)系方式.doc

共1個(gè)文件

基于51單片機(jī)多功能防盜報(bào)警系統(tǒng)( proteus仿真+程序+設(shè)計(jì)報(bào)告+原理圖+講解視頻)

仿真圖proteus8.9及以上

程序編譯器keil 4/keil 5

編程語言:C語言

設(shè)計(jì)編號(hào):S0098

1. 主要功能:

基于51單片機(jī)的多功能防盜報(bào)警器仿真設(shè)計(jì)

1、系統(tǒng)可以測(cè)量光照和人體距離通過LCD1602顯示,具備手動(dòng)控制布防和撤防;

2、如果光照高于閥值,說明有人開窗入室,啟動(dòng)報(bào)警;

3、如果人體距離太近,說明有人靠近房屋,啟動(dòng)報(bào)警;

4、檢測(cè)到異常振動(dòng),啟動(dòng)報(bào)警;

5、檢測(cè)到人體紅外,啟動(dòng)報(bào)警;

6、具有緊急按鈕,在突發(fā)情況下手動(dòng)啟動(dòng)報(bào)警;

7、可以通過按鍵設(shè)置光照閾值和報(bào)警距離;

51單片機(jī)、光照傳感器、超聲波傳感器、震動(dòng)傳感器、人體紅外檢測(cè)傳感器

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

img

以下為本設(shè)計(jì)資料展示圖:

2. 講解視頻:

講解視頻包含仿真運(yùn)行講解和代碼講解

3. 仿真

打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后LCD1602液晶顯示光照強(qiáng)度和距離以及對(duì)應(yīng)的報(bào)警值,默認(rèn)開機(jī)時(shí)不設(shè)防模式,檢測(cè)值超過閾值不做報(bào)警處理。具備手動(dòng)控制布防和撤防;

img

設(shè)防后,調(diào)整光照高于閥值,說明有人開窗入室,啟動(dòng)報(bào)警;

img

如果人體距離太近,說明有人靠近,啟動(dòng)報(bào)警;

img

震動(dòng)按鍵按下,系統(tǒng)檢測(cè)到異常振動(dòng),啟動(dòng)報(bào)警;人體感應(yīng)按鍵按下系統(tǒng)檢測(cè)到人體紅外,啟動(dòng)報(bào)警;緊急按鈕按下,在突發(fā)情況下手動(dòng)啟動(dòng)報(bào)警;

img

系統(tǒng)可以通過按鍵設(shè)置光照閾值和報(bào)警距離;

4. 程序代碼

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

#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數(shù)據(jù)/命令選擇引腳 H:數(shù)據(jù)      	L:命令
sbit rw=P2^6;	 //1602讀寫引腳	         H:數(shù)據(jù)寄存器  	L:指令寄存器
sbit e =P2^7;	 //1602使能引腳          下降沿觸發(fā)
sbit Trig = P1^5;
sbit Echo = P1^6;
sbit CLK=	P1^1;//時(shí)鐘,初始狀態(tài)為0
sbit DI=	P1^2;//數(shù)據(jù)輸入
sbit DO=	P1^3; // 數(shù)據(jù)輸出
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_();
//選擇通道0
	DI=1;
	_nop_();
	CLK=1;//上升沿DI=1
	_nop_();
	CLK=0;//1個(gè)下降沿DI=1
	_nop_();
	if(ch==1)
	DI=0;
	if(ch==2)
	DI=1;
	_nop_();
	CLK=1;
	_nop_();
	CLK=0;//第3個(gè)上升沿DI=0
	_nop_();
   	DI=1;
//********通道選擇結(jié)束開始讀取轉(zhuǎn)換后的二進(jìn)制數(shù)****
//下降沿讀數(shù),一下進(jìn)行判斷和處理,共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()//啟動(dòng)模塊
  {
	   _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;		   //設(shè)T0為方式1,GATE=1;
	TH0=0;
	TL0=0; 
	TH1=0x3c;
	TL1=0xb0;
	ET1=1;
	TR1=1; 
	EA=1;
	Trig=0;         
}

uint HC_SRread()//測(cè)距
{
	uint time=0;	
	while(!Echo)		//當(dāng)RX為零時(shí)等待
		StartModule();		//啟動(dòng)模塊
	TR0=1;			    //開啟計(jì)數(shù)
	while(Echo);		//當(dāng)RX為1計(jì)數(shù)并等待
	TR0=0;				//關(guān)閉計(jì)數(shù)
    time=TH0*256+TL0;	//計(jì)算
	TH0=0;
	TL0=0;	
	time=time*1.7/50; //精度0.5cm
	return time;			
}
void delay_uint(uint i)
{
	while(i--);
}
/********************************************************************
* 名稱 : write_com(uchar com)
* 功能 : 1602命令函數(shù)
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
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寫數(shù)據(jù)函數(shù)
* 輸入 : 需要寫入1602的數(shù)據(jù)
* 輸出 : 無
***********************************************************************/
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)
* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個(gè)字符開始顯示"ab cd ef" ,調(diào)用該函數(shù)如下
	 	 write_string(1,5,"ab cd ef;")
* 輸入 : 行,列,需要輸入1602的數(shù)據(jù)
* 輸出 : 無
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
		while(1)
		{
			if(*p == '?')  break;
			write_data(*p);
			p++;
		}	
}

/********************************************************************
* 名稱 : init_1602()
* 功能 : 初始化1602液晶 
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void init_1602()
{
	write_com(0x38);						//數(shù)據(jù)總線為8位,顯示2行,5x7點(diǎn)陣
	write_com(0x0c);						//開顯示,有光標(biāo),光標(biāo)閃爍
	write_com(0x06);						//光標(biāo)自動(dòng)右移
	delay_uint(1000);						//等待設(shè)置完成
}
//主函數(shù)
void main()
{
	 init_1602();
	HC_SRinit();//初始化
	//設(shè)置INT0
	IT0=1;//跳變沿出發(fā)方式(下降沿)
	EX0=1;//打開INT0的中斷允許。
	//設(shè)置INT1
	IT1=1;//跳變沿出發(fā)方式(下降沿)
	EX1=1;//打開INT1的中斷允許。
	EA=1;
	while(1)
	{
		 if(!s1)//距離設(shè)置
		 {
		 	if(lim1<500)
				lim1++;
		 	while(!s1);
		 }
		 if(!s2)//距離設(shè)置
		 {
		 	if(lim1>0)
				lim1--;
		 	while(!s2);
		 }
		 if(!s3)//光照設(shè)置 
		 {
		 	if(lim2<120)
				lim2++;
		 	while(!s3);
		 }
		 if(!s4)//光照設(shè)置
		 {
		 	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)
		{
		//傳感器報(bào)警
		if((light>lim2)||(juli<lim1))
			beep=0;
		}
	}
}

void Int0()	interrupt 0		//外部中斷0的中斷函數(shù)
{
	if(!led)
		beep=0;
}

void Int1()	interrupt 2		//外部中斷1的中斷函數(shù)
{
	if(!led)
		beep=0;
}完整代碼見文章下載鏈接

5. 設(shè)計(jì)報(bào)告

10296字設(shè)計(jì)報(bào)告,內(nèi)容包括硬件設(shè)計(jì)、軟件設(shè)計(jì)、軟硬件框圖、調(diào)試、結(jié)論等

img

隨著現(xiàn)代社會(huì)經(jīng)濟(jì)的快速發(fā)展和人民生活水平的不斷提升,社會(huì)治安需求呈現(xiàn)出多元化、精細(xì)化的特點(diǎn)。無論是居民住宅還是小型商業(yè)場(chǎng)所,其安全防護(hù)問題已不再僅局限于物理屏障的構(gòu)筑,而是愈發(fā)強(qiáng)調(diào)智能化、主動(dòng)化的安全保障。在這樣的背景下,家庭及小型商業(yè)場(chǎng)所的安全防護(hù)需求日益凸顯,成為社會(huì)關(guān)注的焦點(diǎn)之一。

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

針對(duì)上述問題,本課題提出了設(shè)計(jì)一款基于51單片機(jī)的多功能防盜報(bào)警器的研究任務(wù)。該報(bào)警器旨在突破傳統(tǒng)設(shè)備的功能局限,通過集成先進(jìn)的傳感器技術(shù),構(gòu)建全方位、智能化的安防監(jiān)控體系,從而顯著提升家庭及小型商業(yè)場(chǎng)所的安全防護(hù)水平,同時(shí)優(yōu)化用戶體驗(yàn)。

6. 原理圖

原理圖使用AD繪制,可供實(shí)物參考,仿真不同于實(shí)物,經(jīng)驗(yàn)不足不要輕易搞實(shí)物。

img

元件 型號(hào) 數(shù)量

單片機(jī) 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

模數(shù)芯片 ADC0832 1

?

電源部分

排針 2P 1

電容 0.1uf 2

電容 100uf 2

穩(wěn)壓器 7805 1

Proteus仿真和實(shí)物作品的區(qū)別:

1.運(yùn)行環(huán)境:Proteus仿真是在計(jì)算機(jī)上運(yùn)行的,而實(shí)物則是在硬件電路板上運(yùn)行。

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

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

3.運(yùn)行速度:Proteus仿真通常比實(shí)物運(yùn)行速度快,因?yàn)榉抡媸腔谟?jì)算機(jī)運(yùn)行的,而實(shí)物則需要考慮電路板上的物理限制和器件的響應(yīng)時(shí)間等因素。

4.功能實(shí)現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實(shí)現(xiàn)不同的功能,而在實(shí)物中則需要根據(jù)電路設(shè)計(jì)和器件的性能進(jìn)行實(shí)現(xiàn)。

7. 設(shè)計(jì)資料內(nèi)容清單&&下載鏈接

資料設(shè)計(jì)資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計(jì)報(bào)告、軟硬件設(shè)計(jì)框圖等。

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

1、程序代碼注釋

2、proteus仿真

3、功能要求

4、軟硬件流程圖

5、開題報(bào)告

6、設(shè)計(jì)報(bào)告

7、原理圖

8、元器件清單

9、講解視頻

Altium Designer 安裝破解

KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡(jiǎn)易使用教程

單片機(jī)學(xué)習(xí)資料

相關(guān)數(shù)據(jù)手冊(cè)

答辯技巧

設(shè)計(jì)報(bào)告常用描述

鼠標(biāo)雙擊打開查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url

img

資料下載鏈接(可點(diǎn)擊):

https://docs.qq.com/doc/DS3F5dFBuUEJUUU96

  • 設(shè)計(jì)資料獲取聯(lián)系方式.doc
    下載

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!