中北大学2016届毕业设计说明书
6 读卡器的软件程序设计
6.1 程序设计思路
开始初始化寻卡N有卡?Y防冲撞认证写入用户信息读出序列号和用户信息串口调试助手显示发送计算机 图6.1 总程序流程图
(1)串口初始化:先设定波特率为9600,设串口为工作方式1,定时器为工作方式2,用波特率初值计算软件得出定时器的计数初值为FDH。
(2) RC522初始化:使RC522复位。选择ISO 14443协议typeA。对相关的寄存器进行设置:
ModeReg=0x3D, 为PCD发送器的开启做准备,sigin高电平有效,CRC预设值6363;
RxSelReg=0x86,选择非接触式UART输入,定义6个帧保护时间;TModeReg=0x8D,自动启动定时器,以减计数的方式; RFCfgReg=0x7F,接收器信号电压的增益因子48dB;
第 36 页 共 61 页
中北大学2016届毕业设计说明书
设置RC522内部定时器初值为0x30。最后打开天线。
初始化复位RC522关闭天线选择ISO14443的type A设置寄存器延迟2ms开启天线 图6.2 RC522初始化流程图
(3)寻卡:进行IC卡的检测,发送请求命令为ISO 14443 TYPE A通信协议的REQIDL命令(寻天线区内未进入休眠状态的卡),将此命令存入FIFO缓冲区,当有卡靠近入感应区,用TRANSCEIVE命令将REQIDL命令发送到IC卡,等待感应区域的卡对读卡器的返回应答码ATQA,接收到卡片的类型码0x0400(Mifare 1 S50)。
(4)防冲撞:清认证标志位,设置帧格式,即最后一个字节的所有位都应该被发送,复位冲突寄存器,用TRANSCEIVE命令将防冲撞ANTICOLL1命令发送到IC卡,接收IC卡返回的4个字节的序列号。
(5)选定卡片:得到校验码,将2个字节的卡片类型、4个字节的序列号和1字节的校验码进行CRC计算,将其发送给卡片,通信成功,则返回SAK(选择确认)SAK 1字节+2字节CRC校验(0x18(24)共3个字节)。
(6)认证:验证区0的密钥KEY A,默认密码为6个字节的FF,密码正确则认证成功,卡允许进行读写操作。
(7)写用户名:可以在程序里定义一个常量数组,用户名字由英文组成,每个英文字母用ASCII码表示,如INT8U const tangliankai[16] = {0x74, 0x61, 0x6e,
第 37 页 共 61 页
中北大学2016届毕业设计说明书
0x67, 0x6c, 0x69, 0x61,0x6e,0x6b,0x61, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00,}。用PICC_WRITE(0xA0)写命令将数组写入区0的块1处。
(8)读卡号和用户名:通过PICC_READ(0x30)读命令读出区0的块0,这里要得到前4个字节的序列号。读写命令只能读写整块16个字节的数据。读出块1的数据,存到CardReadBuf数组。
(9)转换卡号:由于串口助手显示的是ASCII码所表示的字符,则需要将读出的4个字节的序列号进行转换,转换后的数据存入CardUid数组中。(转换过程:假设读到的序列号的其中一个字节为2A,将2A拆成2个字节02、0A,再换成02、0A所代表的ASCII码32H、41H,将32H、41H输出到串口助手上,显示出02、0A。)
(10)发送数据:关闭接收中断,中断标志位TI清零,将数组中的第一个字节给到SBUF寄存器,判断TI位,发送结束后,TI=1,再打开接收中断。如此,将CardUid和CardReadBuf数组一个字节一个字节地连续发送给计算机。 6.2 软件调试
该软件是串口调试助手,程序正确下载到单片机后,IC卡一进入天线的工作范围,该软件就会显示如下信息,前4个字节为卡的序列号,后面为用户名字。
图6.3 信息软件显示
第 38 页 共 61 页
中北大学2016届毕业设计说明书
7 总结
非接触近距离身份识别技术研究是一个硬件和软件相结合的课题,国家也正致力于非接触式IC卡识别技术的研究,该项技术被广泛应用于各个场所,所以该课题是十分具有意义。
通过这次毕设的研究学习,我深入了解到RFID系统和读卡器系统的原理,熟悉掌握51单片机和射频芯片的运用,掌握了单片机与计算机的串口串行通信原理,也学会了天线的设计。同时,也再次熟悉C语言的语句结构,学会编写C语言程序达到设定的功能。其次,我完成本次毕设所要求的任务,设计了各个模块的电路原理图,制作了PCB版图,也做出演示电路板,能达到读卡器与计算机相互通信并正确显示信息。不同的是,我开题时参考了许多毕设论文及相关资料,多数学生都是将得到的信息在读卡器上的LCD屏或者数码管上显示,我是首先想到读卡系统与计算机通信的,并完成了这个想法。但是,我没有达到自己最初的设想,我的最初的想法是想将集合所有模块的一整个PCB板制作成实物,但由于RC522的芯片太小且引脚在芯片底下,以我的能力还焊接不了,所以就只制作了单片机的最小系统,就用各模块演示了。
总之,通过这次毕设的研究学习,我做到学以致用,学到了课程之外的知识,锻炼了动手能力,基本达到学院和老师的要求,对我今后的生活工作具有不可磨灭的意义。
第 39 页 共 61 页
中北大学2016届毕业设计说明书
附录A 读卡器图
附图1 读卡器实物图
附图2 读卡器PCB图
第 40 页 共 61 页