标题:
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)
下载附件
2022-8-26 15:08 上传
原理图截图 (2).png
(130.47 KB, 下载次数: 79)
下载附件
2022-8-26 15:08 上传
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1