国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于GSM遠(yuǎn)程短信防盜報(bào)警系統(tǒng)

AlphaWallet / 2353人閱讀

摘要:本次設(shè)計(jì)制作的短信防盜報(bào)警系統(tǒng),具有紅外報(bào)警功能,就是通過熱釋傳感器檢測是否有人進(jìn)入并將報(bào)警信息通過模塊發(fā)短信到指定手機(jī)報(bào)警。但在程序計(jì)數(shù)器的值超過對(duì)為時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行片外存儲(chǔ)器的程序。主程序設(shè)計(jì)主程序是對(duì)整個(gè)系統(tǒng)框架的描述。

? ? ? ?暑假終究還是結(jié)束了,但是既然開學(xué)了那么期末還會(huì)遠(yuǎn)嗎?然而每當(dāng)期末總會(huì)遇到一些課程設(shè)計(jì),我每次總是想要大展拳腳一下,但是面對(duì)期末復(fù)習(xí),最后更多的是通過為主。所以我整理了一些項(xiàng)目希望可以幫到大家。在文章最后更是附上原理圖以及程序以備不時(shí)之需。

? ? ? ?本次設(shè)計(jì)制作的GSM短信防盜報(bào)警系統(tǒng),具有紅外報(bào)警功能,就是通過熱釋傳感器檢測是否有人進(jìn)入并將報(bào)警信息通過GSM模塊發(fā)短信到指定手機(jī)報(bào)警。

? ? ? ?按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)以單片機(jī)控制電路為核心由時(shí)鐘電路、復(fù)位電路、電源電路、按鍵電路、1602顯示電路、GSM模塊電路和傳感器電路共同組成。系統(tǒng)結(jié)構(gòu)框圖如下所示:

?經(jīng)過反復(fù)論證(實(shí)際上就是便宜簡單)最終確定如下方案:

1.STC89C52單片機(jī)作為主控制器。

2.采用熱釋電紅外線傳感器采集信息。

3.通過1602液晶顯示。

4.矩陣式薄膜按鍵

5.9V電源供電

6.SIM800L GSM模塊報(bào)警

一、硬件電路系統(tǒng)設(shè)計(jì)

1.單片機(jī)最小系統(tǒng)設(shè)計(jì)

?注意:由于單片機(jī)P0口內(nèi)部不含上拉電阻,為高阻態(tài),不能正常的輸出高/低電平,因而該組端口在使用時(shí)必須外接上拉電阻。

下面對(duì)STC89C52各引腳的功能進(jìn)行的介紹:

1)電源引腳Vcc和Vss

????Vcc(40腳):電源端為+5V ?????Vss(20腳):接地端。 ??????????????????????

2)時(shí)鐘電路引腳XTAL1和XTAL2

????XTAL2(18腳):接外部晶體和電容的一端。在單片機(jī)內(nèi)部它是振蕩電路反向放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時(shí)針電路時(shí),該引腳輸入外時(shí)鐘脈沖。要檢查89C52的振蕩電路是否正常工作,可用示波器查看XTAL2端是否有脈沖信號(hào)輸出。

????XTAL1(19腳):接外部晶體和微調(diào)電容的另一端。在片內(nèi),它是振蕩電路反向放大器的輸入端。在采用外部時(shí)鐘時(shí),該引腳必須接地。

3)控制信號(hào)腳 RST ?ALE ?PSEN 和EA。

????RST(9腳):RST是復(fù)位信號(hào)輸入端,高電平有效。在此輸入端保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),就可以完成復(fù)位操作。

????ALE/PROG(30引腳):地址鎖存允許信號(hào)端。當(dāng)STC89C52上電正常工作后,ALE引腳不斷向外輸出正脈沖信號(hào)。此頻率為振蕩器頻率fosc的1/6,當(dāng)CPU訪問片外存儲(chǔ)器時(shí),ALE輸出信號(hào)作為鎖存低8位地址的控制信號(hào)。在CPU訪問片外數(shù)據(jù)存儲(chǔ)時(shí),每取值一次(一個(gè)機(jī)器周期)會(huì)丟失一個(gè)脈沖。平時(shí)不訪問片外存儲(chǔ)時(shí),ALE端也以1/6的振蕩頻率固定輸出正脈沖,因而ALE信號(hào)可以用作對(duì)外輸出時(shí)鐘或定時(shí)信號(hào)。如果你想看一下STC89C52芯片的好壞,可用示波器查看ALE端是否有脈沖信號(hào)輸出,如有脈沖信號(hào)輸出,則STC89C52基本上是好的。ALE的負(fù)載驅(qū)動(dòng)能力為8個(gè)LS型TTL(低功耗高速TTL)。

????PSEN(29腳);程序存儲(chǔ)允許輸出信號(hào)引腳,在訪問片外程序存儲(chǔ)器時(shí),此端定時(shí)輸出負(fù)脈沖作為讀片外存儲(chǔ)器的選通信號(hào)。此引腳接ERROM的OE端。PSEN端有效,即允許讀出ERROM/ROM中的指令碼。CPU在從外部ERROM/ROM取指令期間,每個(gè)周期PSEN兩次有效。不過,在訪問片外RAM時(shí),要少產(chǎn)生兩次PSEN負(fù)脈沖信號(hào)。要檢查一個(gè)STC89C52小系統(tǒng)上電后CPU能否正常到ERROM/ROM中讀取指令碼,也可用于示波器看PSEN端有無脈沖輸出。如有,說明基本上工作正常。

????EA/VPP(31腳):外部程序存儲(chǔ)器地址允許輸入端/固化編程電壓輸入端。當(dāng)EA引腳接高電平時(shí),CPU只訪問片內(nèi)ERROM/ROM并執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。但在PC(程序計(jì)數(shù)器)的值超過OFFFH(對(duì)8751/8051為4k)時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行片外存儲(chǔ)器的程序。當(dāng)出入信號(hào)EA引腳接低電平(接地)時(shí),CPU只訪問外部ERROM/ROM并執(zhí)行外部程序存儲(chǔ)器中的指令,而不管是否有片內(nèi)程序存儲(chǔ)器。對(duì)于無芯片內(nèi)的ROM的8031或8032,須外擴(kuò)ERROM,此時(shí)必須將EA引腳接地。如果使用有片內(nèi)ROM的AT89C52,外擴(kuò)ERROM也是可以的,但也要使EA接地。

2.顯示模塊

1602LCD采用標(biāo)準(zhǔn)的14引腳(無背光)或16引腳(帶背光)接口,各引腳接口說明如下表所示:

?

?注意:

第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度。

第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。

第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。

第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。

電路如下所示:

?3.鍵盤模塊

系統(tǒng)通過薄膜矩陣鍵盤設(shè)置,電路圖如圖所示:

?4.防盜報(bào)警電路

下圖為熱釋防盜報(bào)警電路,D3、D4為布防指示燈和傳感器信號(hào)指示燈

?二、系統(tǒng)軟件設(shè)計(jì)

單片機(jī)系統(tǒng)除了必要的硬件支持外,還需要進(jìn)行軟件設(shè)計(jì)。主要由主程序、數(shù)據(jù)查詢程序、按鍵處理程序等組成。

1.主程序設(shè)計(jì)

主程序是對(duì)整個(gè)系統(tǒng)框架的描述。此系統(tǒng)的主程序的功能是在上電后,完成系統(tǒng)的初始化,等待控制端信息命令的到達(dá),并根據(jù)信息內(nèi)容完成響應(yīng)的動(dòng)作,流程圖如下所示:

2.顯示程序設(shè)計(jì):

如圖為LCD1602顯示流程圖?

三:原理圖

?

四:程序

#include #include "lcd1602.h"#define uchar unsigned char #define uint  unsigned int#include "eepom52.h"uchar i;sbit red   = P2^0;	   //紅色發(fā)光二極管定義sbit green = P2^1;	   //綠色發(fā)光二極管定義sbit yellow = P2^2;	   //黃色發(fā)光二極管定義sbit beep  = P2^3;	   //蜂鳴器定義sbit hw    = P2^4;	   //紅外熱釋傳感器定義bit flag_500ms = 0;uchar flag_alarm ;     //報(bào)警標(biāo)志位uchar flag_bufang ;    //布防標(biāo)志位uchar flag_bufang_en ; //布防標(biāo)志位使能uint  flag_value;      //用做定時(shí)器的變量bit flag_alarm_en;#define key_io P0uchar key_can;uchar a_a;uchar smg_i;uchar dis_smg[11];uchar phone_i;	   //電話號(hào)碼是多少位uchar phone_call[11]={"           "};uchar flag_send_en;uint temperature ;  //bit flag_500ms ;uchar key_can;		 //按鍵值的變量uchar menu_1;        //菜單設(shè)計(jì)的變量bit flag_lj_en;		 //按鍵連加使能bit flag_lj_3_en;	 //按鍵連3次連加后使能 加的數(shù)就越大了 uchar key_time;      //用做連加的中間變量bit key_500ms  ;uchar flag_clock;				//溫度報(bào)警變量uchar menu_shudu = 20;  //用來控制連加的速度/***********************1ms延時(shí)函數(shù)*****************************/void delay_1ms(uint q){	uint i,j;	for(i=0;i= 5)	 //按鍵松開松手檢測		{			key_value = 0;			key_new = 1;	//按鍵松開后進(jìn)入等待按鍵狀態(tài)			flag_lj_en = 0;		//關(guān)閉連加使能			flag_lj_3_en = 0;	//關(guān)閉3秒后使能			flag_value = 0;		//清零			write_eepom();		}	}	else 	{		if(key_io != 0x0f)	 //按鍵按下			key_value ++;		else 			key_value =0;		if(key_value >= 5)	 //按鍵按下消抖		{			key_value = 0;			key_new = 0;	 //按鍵松開后進(jìn)入等待松開按鍵狀態(tài)				key_time = 0;		}	}		key_can = 20;	if((key_new == 0) && (key_old == 1))	{		key_l = (key_io | 0xf0);   //矩陣鍵盤掃描		key_io = key_l;		switch(key_io)		{			case 0xee:  key_can = 1;  break;  //得到按鍵值 			case 0xde:  key_can = 2;  break;   //得到按鍵值 			case 0xbe:  key_can = 3;  break;   //得到按鍵值 			case 0x7e:  key_can = 15;  break;   //得到按鍵值 			case 0xed:  key_can = 4;  break;  //得到按鍵值 			case 0xdd:  key_can = 5;  break;   //得到按鍵值 			case 0xbd:  key_can = 6;  break;   //得到按鍵值 			case 0x7d:  key_can = 14;  break;   //得到按鍵值 			case 0xeb:  key_can = 7;  break;  //得到按鍵值 			case 0xdb:  key_can = 8;  break;   //得到按鍵值 			case 0xbb:  key_can = 9;  break;   //得到按鍵值 			case 0x7b:  key_can = 13;  break;   //得到按鍵值 			case 0xe7:  key_can = 10;  break;  //得到按鍵值 			case 0xd7:  key_can = 0;  break;  //得到按鍵值 			case 0xb7:  key_can = 11;  break;   //得到按鍵值 			case 0x77:  key_can = 12;  break;  //得到按鍵值 		}	}			 	key_old = key_new;	 }/****************按鍵處理數(shù)碼管顯示函數(shù)***************/void key_with(){								  	if(key_can == 12)	  //退出鍵	{		menu_1 = 0;		init_1602_dis_csf();		write_com(0x0c);              //關(guān)閉光標(biāo)	}	if(key_can == 15)	  //設(shè)置鍵	{		menu_1 ++;		if(menu_1 >= 2)		{			menu_1 = 0;		}		if(menu_1 == 0)		{			init_1602_dis_csf();			write_com(0x0c);              //關(guān)閉光標(biāo)		}		if(menu_1 == 1)		{			write_string(1,0," Input Phone    ");				write_string(2,0,"                ");			clear_shuzu(dis_smg,11); 			for(i=0;i 11)					phone_i = 11;				smg_i = phone_i;				write_string_num(2,0,dis_smg,phone_i);	 //顯示號(hào)碼				lcd1602_guanbiao(1,0 + phone_i + 0x40);  //開光標(biāo)				}			}		if(key_can == 10)	//刪除鍵		{			if(phone_i != 0)			{				phone_i --;				phone_call[phone_i] = " ";					dis_smg[phone_i] = " ";				write_string(2,0,"                ");				write_string_num(2,0,dis_smg,phone_i);	 //顯示號(hào)碼					lcd1602_guanbiao(1,0 + phone_i + 0x40);  //開光標(biāo)				} 			}	}	} /******************對(duì)應(yīng)不同按鍵處理**********************/	   void menu_kongwai_dis(){	if(menu_1 == 0)	{		if(key_can == 1)	 //按鍵緊急報(bào)警		{			flag_alarm = 1;  //報(bào)警標(biāo)志位 ; 		}		if(key_can == 2)     //布防按鍵		{			flag_bufang_en = 1;				}			if(key_can == 3)	 //取消報(bào)警  把變量清零		{			flag_alarm = 0;   			flag_bufang = 0; 			flag_bufang_en = 0;				flag_value = 0;				flag_send_en = 0;			beep = 1;			red = 1;  //關(guān)閉紅燈			green = 1; //關(guān)閉綠燈			yellow = 1; //關(guān)閉黃燈    			write_string(1,0,"   fd system    ");	  			write_string(2,0,"   wei bufang   ");		}	}			}/******************紅外報(bào)警處理**********************/	   void hongwai_dis()	// 紅外報(bào)警處理{	if((flag_alarm == 1))	   //報(bào)警	{		red = ~red;		   //紅燈報(bào)警		beep = ~beep;	   //蜂鳴器報(bào)警	}	if(menu_1 == 0)	{		if(flag_alarm == 1)		{			if(flag_send_en == 0)			{				flag_send_en = 1;					write_string(1,0," fang dao alarm   ");					send_PUD_fangdao();   //發(fā)送報(bào)警信息	請(qǐng)注意!溫度報(bào)警。							}		}	}	yellow = ~hw;	 //紅外熱釋電指示燈 有輸出就亮黃燈	if(flag_bufang_en == 1) //準(zhǔn)備開始布防	{		green = ~green;	   //綠燈閃				}  	if(flag_bufang == 1)   //確認(rèn)布防	{		green = 0;         //如果延時(shí)布防成功 綠燈長亮		if(hw == 1)	       //紅外有輸出		{			flag_alarm = 1;			}	}	if(flag_bufang_en == 1)	{		flag_value ++;		if(flag_value >= 30)  //15秒		{			flag_bufang = 1;			flag_bufang_en = 0;		 			flag_value = 0;				write_string(2,0,"   yi bufang   ");		}	}}void main(){		time_init();                    //初始化定時(shí)器 	init_1602();	init_1602_dis_csf();	init_uart();	init_eeprom();	 //初始化eeprom	init_gsm();	while(1)	{					if(flag_500ms == 1)	        //500ms 處理一次溫度程序		{				flag_500ms = 0;				hongwai_dis();	// 紅外報(bào)警處理		}		key();					//按鍵程序		if(key_can < 20)		{			key_with();			    //設(shè)置報(bào)警溫度				menu_kongwai_dis();		}	}}/*************定時(shí)器0中斷服務(wù)程序***************/void time0_int() interrupt 1{		static uchar value;	TH0 = 0x3c;	TL0 = 0xb0;     // 50ms	value ++;	 	if(value % 10 == 0)	{		flag_500ms = 1;	   //500ms		value = 0;	}}void uatr0() interrupt 4{	if(RI == 1)	{		RI = 0;	}	}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/119231.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<