云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 智能门禁系统设计毕业论文 - 图文

智能门禁系统设计毕业论文 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/13 19:03:21

tochar(UID[1]); tochar(UID[2]);

tochar(UID[3]); //输出卡片序列号 }

第三步:选卡。

status2= PcdSelect(UID); //选择卡片,输入卡片序列号,4字节

第四步:在读写卡之前需要先进行认证。

status2= PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID);

其中四个参数分别代表:验证A密钥+块地址+扇区密码+卡序列号。然后进行写操作:

status2=PcdWrite(1,writeData);//写数据,将数组writeData中的数写入到卡

中,其中第一个参数1代表写入的地址为块1,或者进行读卡操作:

status2 = PcdRead(1, str);//读卡

其中第一个参数1代表读的地址为块1,读卡后得到的数据存放于数组str中。

4.3 子程序分析

4.3.1 RC522读卡程序

定义端口:

sbit MF522_RST = P1^7; //复位信号 sbit MF522_SO = P1^6;//SPI 接口主入从出 sbit MF522_SI = P1^5;//SPI 接口主出从入 sbit MF522_SCK = P1^4; //时钟接口 sbit MF522_NSS = P1^3; //应该是SDA接口

寻卡函数:

参数说明: req_code[IN]:寻卡方式

0x52 = 寻感应区内所有符合14443A标准的卡 0x26 = 寻未进入休眠状态的卡 pTagType[OUT]:卡片类型代码

0x4400 = Mifare_UltraLight

19

0x0400 = Mifare_One(S50) 0x0200 = Mifare_One(S70) 0x0800 = Mifare_Pro(X) 0x4403 = Mifare_DESFire

返 回: 成功返回MI_OK

防冲撞函数:

参数说明: pSnr[OUT]:卡片序列号,4字节 返 回: 成功返回

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 = MI_OK }

4.3.2 24C02存储程序

用页写 CAT24WC01可一次写入8个字节数据,CAT24WC02/04/08/16可以一次写入16个字节的数据;页写操作的启动和字节写一样,不同在于传送了一字节数据后并不产生停止信号,主器件被允许发送 P(CAT24WC02/04/08/16 P=15)个额外的字节,每发送一个字节数据后CAT24WC01/02/04/08/16产生一个应答位并将字节地址低位加1,高位保持不变如果在发送停止信号之前主器件发送超过P+1个字节,地址计数器将自动翻转,先前写入的数据被覆盖。

20

在24C02的add地址中连续写入一串数据*p,返回1设备正常;24C02的首地址:0x00--0xFF,共256个寻址地址;存储容量2Kb,内部分成32页,每页8个Byte。

2^5 * 2^3 * 2^3=2^11=2Kb.

bit Write_more_byte(uchar add,uchar number,uchar *p)number表示要写入字节的个数. {

bit val; uchar i=0; IIc_init(); IIc_start();

val = IIc_write_byte(Address_24C02); 写器件地址 while(val==0) {

if(i++==10) 等待超时(10ms) return(0);

delay(1); 等待一会 IIc_start(); 重新发送 val = IIc_write_byte(Address_24C02);写器件地址 }

IIc_write_byte(add); 写存储的地址 for(i=0;number>0;number--) {

IIc_write_byte(*p++); 写存储的数据 }

IIc_stop(); 如果在发送停止信号之前主器件发送超过P+1个字节,地址计数器将自动翻转,先前写入的数据被覆盖. return(1); }

void read_more_byte(uchar add,uchar number,uchar *p)//number表示要读取的字节个

21

数,读取的数据保存在*p中。 {

bit val=0; IIc_init(); IIc_start();

val = IIc_write_byte(Address_24C02); 写器件地址

while(val==0) 器件没有应答 可能是内部编程/擦除周期 {

delay(1); 等待一会 IIc_start(); 重新发送 val=IIc_write_byte(Address_24C02);写器件地址 }

IIc_write_byte(add); 写存储的地址 IIc_start();

IIc_write_byte(Address_24C02+1); 写器件地址(读) for(;number>1;number--) {

*p++=IIc_read_byte(1); }

*p = IIc_read_byte(0); 读最后一个数据主机不应答 IIc_stop(); }

4.3.3 显示程序

定义端口: sbit RW = P1^1;

R/W为读写信号线,与P1.1端口连接,高电平(1)时进行读操作,低电平(0)时进行写操作,

sbit RS = P1^0;

RS为寄存器选择,与P1.0端口连接,高电平(1)时选择数据寄存器、低电平(0)时选择指令寄存器。

22

搜索更多关于: 智能门禁系统设计毕业论文 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

tochar(UID[1]); tochar(UID[2]); tochar(UID[3]); //输出卡片序列号 } 第三步:选卡。 status2= PcdSelect(UID); //选择卡片,输入卡片序列号,4字节 第四步:在读写卡之前需要先进行认证。 status2= PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID); 其中四个参数分别代表:验证A密钥+块地址+扇区密码+卡序列号。然后进行写操作: status2=PcdWrite(1,writeData);//写数据,将数组writeData中的数写入到卡中,其中第一个参数1代

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com