基于51单片机的刷卡门禁系统毕业论文 联系客服

发布时间 : 星期三 文章基于51单片机的刷卡门禁系统毕业论文更新完毕开始阅读7bc0ce03e55c3b3567ec102de2bd960590c6d9a8

[4] 李鑫.监狱的智能化安防系统 北京华体联合科技有限公司

[5] 张毅刚.MCS-51单片机应用设计. 哈尔滨:哈尔滨工业大学出版社,1997 [6] 张毅刚.单片微机原理及应用. 西安:西安电子科技大学出版社,1994 [7] 朱善君.单片机接口技术与应用. 北京:清华大学出版社,2005 [8] 方小翠.单片机使用系统设计技术. 北京:国防工业出版社,2004 [9] 李广弟.单片机基础. 北京:北京航空航天大学出版社,2001

[10] 马家辰.MCS-51单片机原理及接口技术. 哈尔滨:哈尔滨工业大学出版社,

1999

[11] 何立民.单片机应用技术选编. 北京:北京航天航空大学出版,社1998. [12] 王爱英.智能卡技术. 北京:清华大学出版社,1996.

附录1 系统原理图

附录 2程序代码

#include

}

}

return FALSE;

**************************************************************** *名称: Write_FIFO *

*功能: 该函数实现向FM1702的FIFO中写入x bytes数据* *输入: count, 待写入字节的长度* * buff, 指向待写入数据的指针* *输出: NA *

**************************************************************** void Write_FIFO(uchar count, uchar *buff) { }

**************************************************************** *名称: Read_FIFO *

*功能: 该函数实现从FM1702的FIFO中读出x bytes数据* *输入: buff, 指向读出数据的指针* *输出: NA *

**************************************************************** uchar Read_FIFO(uchar *buff) {

uchar uchar

temp = SPIRead(FIFO_Length);读取FIFO里有多少字节。 if(temp == 0) { }

return 0;

temp; i;

uchar

i;

for(i = 0; i < count; i++) { }

SPIWrite(FIFO,*(buff + i));

}

if(temp >= 24) { }

temp = 24;

for(i = 0; i < temp; i++) { }

return temp;

*(buff + i) = SPIRead(FIFO);读取FIFO里面的数据放在指针处

**************************************************************** *名称: Judge_Req *

*功能: 该函数实现对卡片复位应答信号的判断* *输入: *buff, 指向应答数据的指针* *输出: TRUE, 卡片应答信号正确* * FALSE, 卡片应答信号错误*

**************************************************************** uchar Judge_Req(uchar *buff) {

uchar

temp1, temp2;

temp1 = *buff; temp2 = *(buff + 1);

if((temp1 == 0x02) || (temp1 == 0x04) || (temp1 == 0x05) || (temp1 == 0x53) || (temp1 ==

0x03))

{ 以上为或运算,只要有一条件为真,则运行IF语句。 }

if (temp2 == 0x00) 否则退出IF语句 { }

return TRUE;

}

return FALSE;

**************************************************************** *名称: AntiColl *

*功能: 该函数实现对放入FM1702操作范围之内的卡片的防冲突检测* *输入: NA *

*输出: FM1702_NOTAGERR: 无卡*

* FM1702_BYTECOUNTERR: 接收字节错误* * FM1702_SERNRERR: 卡片序列号应答错误* * FM1702_OK: 卡片应答正确*

**************************************************************** uchar AntiColl() {

unsigned char unsigned char

temp; i;

RevBuffer[0] = RF_CMD_ANTICOL; 写寻卡通讯命令93H RevBuffer[1] = 0x20; 写寻卡通讯命令20H SPIWrite(0x22,0x03); address 22H 选择数据校验种类和类型

temp = Command_Send(2, RevBuffer, Transceive);Transceive=0X1E命令 while(1) {

if(temp == FALSE) { }

return(1); 无卡

temp = SPIRead(0x04); 读0x04里的返回卡号长度 if(temp == 0) { }

Read_FIFO(RevBuffer); 读取卡号

return FM1702_BYTECOUNTERR; 接收字节长度错误