标题: 51单片机射频密码锁设计 [打印本页]

作者: bbxyliyang    时间: 2022-8-26 15:09
标题: 51单片机射频密码锁设计
我们来介绍下本设计的过程: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)
    {

实物截图.png (481.68 KB, 下载次数: 67)

实物截图.png

原理图截图 (2).png (130.47 KB, 下载次数: 79)

原理图截图 (2).png





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1