我們來介紹下本設計的過程:1、最終的實物圖片
2、設計原理圖
3、系統的功能
單片機IC門禁GSM報警系統采用51單片機+按鍵+IC讀寫模塊+繼電器+LCD1602液晶+LED燈+GSM模塊+蜂鳴器設計而成。
1、本設計默認采用STC89C52單片。
2、本設計具有普通密碼鎖開鎖功能并且加入了射頻卡開鎖功能,二者兼容,功能強大。
3、可以添加或者刪除IC卡的記憶功能,讓使用者更加的靈活自如。
4、具有指示燈和蜂鳴器雙重提示功能,綠燈表示進入,紅燈表示禁止進入。
5、繼電器模擬電子鎖,閉合狀態即是開鎖狀態,反之則關鎖狀態。
6、密碼鎖功能下可以修改密碼。
7、當密碼輸入錯誤三次時,蜂鳴器報警并且鎖死鍵盤15S,向主人發送報警短信。
4、主要代碼:
#include <intrins.h>
#include "reg52.h"
#include "main.h"
#include "mfrc522.h"
#include <string.h>
#define MAXRLEN 18
/////////////////////////////////////////////////////////////////////
//功 能:尋卡
//參數說明: req_code[IN]:尋卡方式
// 0x52 = 尋感應區內所有符合14443A標準的卡
// 0x26 = 尋未進入休眠狀態的卡
// pTagType[OUT]:卡片類型代碼
// 0x4400 = Mifare_UltraLight
// 0x0400 = Mifare_One(S50)
// 0x0200 = Mifare_One(S70)
// 0x0800 = Mifare_Pro(X)
// 0x4403 = Mifare_DESFire
//返 回: 成功返回MI_OK
/////////////////////////////////////////////////////////////////////
char PcdRequest(unsigned char req_code,unsigned char *pTagType)
{
char status;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
// unsigned char xTest ;
ClearBitMask(Status2Reg,0x08);
WriteRawRC(BitFramingReg,0x07);
// xTest = ReadRawRC(BitFramingReg);
// if(xTest == 0x07 )
// { LED_GREEN =0 ;}
// else {LED_GREEN =1 ;while(1){}}
SetBitMask(TxControlReg,0x03);
ucComMF522Buf[0] = req_code;
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);
// if(status == MI_OK )
// { LED_GREEN =0 ;}
// else {LED_GREEN =1 ;}
if ((status == MI_OK) && (unLen == 0x10))
{
*pTagType = ucComMF522Buf[0];
*(pTagType+1) = ucComMF522Buf[1];
}
else
{ status = MI_ERR; }
return status;
}
/////////////////////////////////////////////////////////////////////
//功 能:防沖撞
//參數說明: pSnr[OUT]:卡片序列號,4字節
//返 回: 成功返回MI_OK
/////////////////////////////////////////////////////////////////////
char PcdAnticoll(unsigned char *pSnr)
{
char status;
unsigned char i,snr_check=0;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
ClearBitMask(Status2Reg,0x08);
WriteRawRC(BitFramingReg,0x00);
ClearBitMask(CollReg,0x80);
ucComMF522Buf[0] = PICC_ANTICOLL1;
ucComMF522Buf[1] = 0x20;
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);
if (status == MI_OK)
{
|