1、目录一 课题背景2二 设计任务2三 设计原理3四 射频卡读写原理3五 单片机选用6六 单片机与上位机通信实现7七 设计电路图7八 RX485通信电路8九 调试程序9十 总结11一、 课题背景:出入口门禁系统顾名思义就是对出入口通道进行管制的系统,它是在传统的门锁基础上发展而来的。传统的机械门锁仅仅是单纯的机械装置,无论结构设计多么合理,材料多么坚固,人们总能用通过各种手段把它打开。在出入人很多的通道(象办公室,酒店客房)钥匙的管理很麻烦,钥匙丢失或人员更换都要把锁和钥匙一起更换。为了解决这些问题,就出现了电子磁卡锁,电子密码锁,这两种锁的出现从一定程度上提高了人们对出入口通道的管理程度,使通道
2、管理进入了电子时代,但随着这两种电子锁的不断应用,它们本身的缺陷就逐渐暴露,磁卡锁的问题是信息容易复制,卡片与读卡机具之间磨损大,故障率高,安全系数低。密码锁的问题是密码容易泄露,又无从查起,安全系数很低。同时这个时期的产品由于大多采用读卡部分(密码输入)与控制部分合在一起安装在门外,很容易被人在室外打开锁。这个时期的门禁系统还停留在早期不成熟阶段,因此当时的门禁系统通常被人称为电子锁,应用也不广泛。 最近几年随着感应卡技术,生物识别技术的发展,门禁系统得到了飞跃式的发展,进入了成熟期,出现了感应卡式门禁系统,指纹门禁系统,虹膜门禁系统,面部识别门禁系统,乱序键盘门禁系统等各种技术的系统,它们
3、在安全性,方便性,易管理性等方面都各有特长,门禁系统的应用领域也越来越广。二、 设计任务:1、系统设计2、射频读写电路的设计3、单片机读写射频卡电路的设计4、单片机程序的编写5、单片机与上位机通信电路三、 设计原理、1.系统设计此次课程设计的基于RFID的自动门禁控制系统就是通过单片机控制射频卡读写芯片读出射频卡里的数据,然后与上位机(通信),上位机可以在数据库里进行数据对比,这样就可以识别出卡持有人的身份了,也就可以进行下一步的操作了。例如开关门,记录数卡时间,权限鉴别等。图1是结构框图。非接触IC卡读卡电路单片机电锁机 构上位机(电脑) SPI协议RS_485协议图1四、 射频卡读写原理:
4、MIFARE MF1是符合ISO/IEC 14443A的非接触智能卡。其通讯层(MIFARE RF 接口)符合ISO/IEC 14443A标准的第2和第3部分。其安全层支持域检验的CRYPTO1数据流加密。4.1非接触能源和数据传递在MIFARE MF1卡中,芯片连接到一个几匝的天线线圈上,并嵌入塑料中,形成了一个无源的非接触卡。不需要电池。当卡接近读写器天线时,高速的RF通讯接口将以106 kBit/s 的速率传输数据。图2是实物图。图2命令由读写器发出,根据相应区读写条件受数字控制单元的控制。图3是运行方式框图。图34.1.1 呼叫(REQUEST STANDARD / ALL)卡上电复位
5、后,通过发送request应答码(ATQA 符合ISO/IEC 14443A),能够回应读写器向天线范围内所有卡发出的request 命令。4.1.2 防冲突循环(ANTICOLLISION LOOP)在防冲突循环中,读回一张卡的序列号。如果在读写器的工作范围内有几张卡,它们可以通过唯一序列号区分开来,并可选定以进行下一步交易。未被选定的卡转入待命状态,等候新的request命令。4.1.3 选卡(SELECT CARD)读写器通过select card命令选定一张卡以进行认证和存储器相关操作。该卡返回选定应答码(ATS= 08h),明确所选卡的卡型。4.1.4 三轮认证(3 PASS AUT
6、HENTICATION)选卡后,读写器指定后续读写的存储器位置,并用相应密钥进行三轮认证。认证成功后,所有的存储器操作都是加密的。4.1.5 存储器操作认证后可执行下列操作: 读数据块 写数据块 减值:减少数据块内的数值,并将结果保存在临时内部数据寄存器中。 加值:增加数据块内的数值,并将结果保存在数据寄存器中。 恢复:将数据块内容移入数据寄存器。 转存:将临时内部数据寄存器的内容写入数值块。读写MF1卡式通过一些集成电路来实现的,如RC500和FM1702;在这了我们选用的是复旦微芯的FM1702。复旦微芯的FM1702性能完全兼容RC500。是应用于13.56MHz非接触式通信中高集成读卡
7、IC系列中的一员。该读卡IC系列利用先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持ISO14443A所有的层,内部的发送器部分不需要增加有源电路就能够直接驱动操作近距离的天线(可达100mm);接收器部分提供一个坚固而有效的解调和解码电路,用于ISO14443兼容的应答器信号;数字部分处理ISO14443A帧和错误检测(奇偶&CRC)。此外,它还支持快速CRYPTOI加密算法,用于验证Mifare系列产品。方便的并行接口可直接连接到任何8位微处理器,给读卡器/终端的设计提供了极大的灵活性。可方便的用于各种基于ISO/IEC 14443A标准并且要
8、求低成本、小尺寸、高性能以及单电源的非接触式通信的应用场合。五、 单片机的选用单片机在这里选用的是STC12C5A60S2型号。STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2 路PWM,8路高速10 位A/D 转换(250K/S),针对电机控制,强干扰场合。最重要的是其内部有1024B的RAM和60KB的ROM。六、 单片机与上位机通信的实现单片机与上位机通信采用MAX485芯片。考虑到射频读卡器终端与上位机(电脑)通信距
9、离可能超过10m,故采用RS-485总线进行数据传输。RS-485总线在理想状态下通信菊科可达1200m。MAX485是用于RS-485与RS-422通信的低功耗收发器,每个器件中都具有一个驱动器和一个接收器。MAX485的驱动器摆率不受限制,可以实现最高2.5Mbps的传输速率。收发器在驱动器禁用的空载或满载状态下,吸取的电源电流在120uA 至500uA 之间。且工作在5V单电源下。七、 设计电路图、1、单片机最小系统和与FM1702连接图,如图4。图4说明:MISO接单片机的P1、0口,MOSI接单片机的P1、1口,SCK接单片机的P1、2口,NSS接单片机的P1、3口,RST接单片机的
10、P1、4口。RXD与TXD为单片机串行接口,与RS-485电路接口相连。2、FM1702与射频读卡电路连接图,如图4:图4说明:FM1702与单片机的接口为SPI方式。就是说有5根线与单片机相连,分别是:MISO(FM1702输出数据端,单片机接收数据端)MOSI(单片机输出数据端,FM1702接收数据端)SCK(串行时钟脉冲输入端)NSS(片选信号输入端)RST(复位信号输入端)。八、 RX485通信电路图5图5是通讯电路图说明:RO(接收器输出)接单片机RXD口DI(驱动器输入)接单片机TXD口/RE(接收器输出使能)DE(驱动器输出使能)都接单片机九、 调试程序、1、 管脚定义程序段sb
11、it MFRST = P25; /*FM1702复位管脚定义*/sbit sck = P15;/*串行时钟管脚定*/sbit si = P26; /MOSI /*SPI*/sbit so = P16; /MISO /*总线*/sbit spi_cs = P17; /NSS /*引脚定义*/sbit 485EN = P36/*485使能引脚定义*/2、 写入ic卡数据程序段 void write_IC(uchar adrr1,uchar adrr2,uchar *p)uchar i,j;if(buffer1 = FM1715_OK)buffer0 = 0x06; /三重认证buffer1 = 0
12、x60; /密钥A(密钥B-0x61)buffer2 = adrr1; /扇区addr1,扇区的地址是0-15for(i=0;i6;i+)bufferi+3=passwordi;cmd_execution(); /进入IC卡处理程序if(buffer1 = FM1715_OK) /认证成功 buffer0 = 0x09; /写卡扇区adrr1的块adrr2buffer1 = adrr2; /块adrr2地址,块的地址是0-63for(j=2;j18;j+)bufferj=*p;p+;/*要写入的数据(将你需要写入的16个数据赋值给buffer)*buffer2 = 0xf0; buffer3
13、= 0xf0; buffer4 = 0xf0; buffer5 = 0xf0; buffer6 = 0x00; buffer7 = 0x00; buffer8 = 0xff; buffer9 = 0x07;buffer10 = 0x80; uffer11 = 0x69;buffer12 = 0x0a; buffer13 = 0x0b; buffer14 = 0x0c; buffer15 = 0x0d;buffer16 = 0x0e; buffer17 = 0x0f;/*/cmd_execution(); /进入IC卡处理程序if(buffer1 = FM1715_OK)/如果写进去的是密码就放
14、到password里面if(adrr2=3)unsigned char iii;for(iii=0;iii6;iii+)passwordiii=bufferiii+2;3、 读取ic卡数据程序段void read_IC(uchar adrr1,uchar adrr2)uchar i;if(buffer1 = FM1715_OK)buffer0 = 0x06; /三重认证buffer1 = 0x60; /密钥A(密钥B-0x61)buffer2 = adrr1; /扇区addr1,扇区的地址是0-15for(i=0;i6;i+)bufferi+3=passwordi;cmd_execution(
15、); /进入IC卡处理程序if(buffer1 = FM1715_OK) /认证成功 buffer0 = 0x08; /读卡扇区0的块1buffer1 = adrr2; /块1地址,块的地址是0-63cmd_execution(); /进入IC卡处理程序if(buffer1 = FM1715_OK)return_data(0xc3); / 数据头return_data(buffer2);return_data(buffer3);return_data(buffer4);return_data(buffer5); return_data(buffer6);return_data(buffer7)
16、;return_data(buffer8);return_data(buffer9);return_data(buffer10);return_data(buffer11);return_data(buffer12);return_data(buffer13);return_data(buffer14);return_data(buffer15);return_data(buffer16);return_data(buffer17); /以上16位为卡上读出的信息 return_data(Status);/ 进出标志位return_data(0x3c);/数据尾 err=0;else err=
17、1;bee(); delaytime(50);十、 总结感谢老师给我们提供这样一个锻炼自己的机会,经过这两个周的课程学习,本课程设计即将结束,我从中获得了很多。本次课程设计从一开始的选题,确定方案,选完题之后大家都围绕题目积极发表意见,据理力争,最后我们是选出了一个公认的最好的方案。到电路仿真,设计电路板,我们每个人各司其职,做好每个人各自的任务。最后,我们汇在一起调试,发现问题,解决问题直到我们做出了成功的系统。我在这次课程设计中主要负责电路板的设计和单片机程序的编写。在其中我也遇到了不少的难题,通过到图书馆查阅资料,上网检索相关信息,请教一些老师和学长这些途径最终是把问题解决了。这两个周的
18、课程设计,虽然我们的课程设计在规定的时间内按时完成了任务,但是,由于知识和经验的欠缺,整个系统的开发功能还不算完善,在设计过程中也遇到了很多的困难,但通过我们的不懈努力和老师、同学的帮助下,设计才得以圆满按时的完成,所以仅凭个人的力量想设计出一个完美的系统几乎是不可能的。也使我更加懂得并亲身体会到了理论与实际结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合,才能再实践中提高自己。我想说,设计确实有些苦,但苦中有乐,在如今单一的理论学习中,很少有机会有实践的机会,我们有机会了就要去珍惜。而且设计也是一个团队的任务,一起工作可以让我们又说又笑,相互帮组,默契配合也让我们之间的感情更深了一些。在此次课程设计中,我们学到了很多课本上学不到的东西,比如独立思考解决问题的能力,和别人合作共同提高的能力,出现差错随机应变的能力都受益匪浅,并且是我们的动手能力得到了很大的提高,对以后的工作、学习都有帮组。对我们而言,知识上的收获固然重要,但是精神上的丰收更加可喜,挫折是一种财富,经历是一种拥有,这次实训必将成为我们人生旅途上一个非常美好的回忆! 有了这种勇于面对困难的勇气,我相信我们一定可以使我们的人生绚丽多彩!充满新奇!充满希望!9