当前位置:首页 > 基于51单片机的刷卡门禁系统毕业论文
[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; 接收字节长度错误
共分享92篇相关文档