ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:618.34KB ,
资源ID:7871512      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7871512.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(新版非接触IC卡读写器使用说明.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

新版非接触IC卡读写器使用说明.docx

1、新版非接触IC卡读写器使用说明新版非接触IC卡开发板使用说明新版非接触IC开发板功能强大,可以作为一个读写卡器,通过1602或12864液晶屏显示相关信息,也可以作为一个独立的产品,实现相关功能,如门禁系统(需要另购程序)、电子钱包功能(需要自编或与我们联系)。第一部分 上位机为DELPHI,1602显示读写卡一、下载下位机1602程序1. 把串口线(如果是笔记本电脑,须采用USB转串口线)将开发板与PC 机连接好。2. 把1602液晶显示器插在开发板上。3.打开STC下载软件,选择STC89C516RD+单片机,内部扩展选择禁止内部AUX-RAM,如图所示:4.点击打开按钮,找到1602下位

2、机源程序中的hex文件。再点击下载按钮,提示给开发板上电,此时,用USB线给开发板供电,将程序下载到开发板的单片机中。二、用DELPHI上位机软件读写卡1.双击启动测试软件,进入功能选项“参数设置”里面,可以设置串口通讯参数:串口号、波特率、校验位、数据位、停止位等等,设置玩了以后点击“修改串口”,如果出现“串口参数设置成功”,表明串口设置成功,如果出现异常,请按照提示做出改动。2.设置完毕以后可以点击“测试读卡器”,如果出现“读卡器连接成功”,并且听到读卡器的风鸣器响声,证明串口设置正确,如果出现“读卡器连接失败”,表明串口设置有问题,请重新设置。读写器默认参数:Com1、9600bps、N

3、、8、1.3.把一张Mifare One 卡片放在天线区域范围内4.进入功能选项“低级操作”里面点击“寻卡”,如果出现“寻卡成功!”表明寻卡正常,如果出现“执行失败!”表明出现异常,请检查卡片是否在寻卡范围内,如果确认卡片没有问题,那么程序下载不正确,或读写器异常。5.点击“防冲突”,如果出现“执行成功”表明防冲突正常,如果出现“执行失败”表明读写器出现异常或者卡片没有在天线区域范围内。6.点击“选择”,如果出现“执行成功”表明选择正常,如果出现“执行失败” 表明读写器出现异常或者卡片没有在天线区域范围内。7.进入功能选项“密码下载”里面下载卡片密码,比如需要测试卡片扇区1 数据的读写,那么就

4、在扇区1 后面填上密码A/B(注:卡片的初始密码A/B 均为全F),然后选择“A 组密码”或者“B 组密码”,最后点击“下载”,如果出现“密码下载成功”表明密码下载成功,如果出现异常请按照错误提示更改后再下载一次,直至“下载成功”为止。如果密码下载不成功,下步操作无法进行,即无法读写卡。8.进入功能选项“数据读写”里面,“请选择扇区号”下面的可拉选项里面选择第5步下载密码的扇区号(比如扇区1),然后点击“读出”,如果提示“第*扇区数据读出成功”表明读数据正确。如果出现“第*扇区数据读出失败”表明密码校验出错或者出现其他异常,请返回第5 步重新下载密码。9.如果读数据正确,在块0、块1、块2 后

5、面修改数据,比如改成:“块0:12345678901234567890123456789012”“块1:234567*78901234567890123”“块2:34567890123456789012345678901234”然后点击“写入”,如果出现“第*扇区数据写入成功”表明写入数据正确。如果出现“第*扇区写入失败”表明密码校验出错或者出现其他异常,请返回第5 步重新下载密码。10.再次点击“读出”键,然后点击“读出”,如果提示“第*扇区数据读出成功”表明读数据正确,再对比块0、块1、块2 是否和第7 步写入的数据一样,如果数据一样,证明写入成功了。如果出现“第*扇区数据读出失败”表明密

6、码校验出错或者出现其他异常,请返回第5 步重新下载密码。三、Mifare One 卡片块值测试1.进入功能选项“块值操作”里面,在“扇区号”下面的可拉选项里面选择下载密码的扇区号(比如扇区1),在“块号”下面的可拉选项里面选择你想测试的块号(比如第1 块)2.在“操作值”后面填上你所希望的初始值(比如“11111111”),然后点击“初始化”,如果出现“数据初始化成功”表明操作成功。如果出现“数据初始化失败”表明操作失败,请检查密码是否正确,返回第前面重新操作一次。3.点击“读出”,如果在“当前值”后面出现是你原来写进去的初始值,证明操作正确,如果“数据读出失败”表明块值操作有异常,请重新初始

7、化。4.在“操作值:”后面填上你所希望的操作值(比如“22222222”),然后点击“加值”,如果出现“数值加操作成功”,表明操作成功。如果出现其他提示表明操作失败。5.点击“读出”,如果在“当前值:”后面出现是你初始值加上加值(111111112222222233333333)表明操作正确,如果是其他的值表明失败。6.在“操作值:”后面填上你所希望的操作值(比如“11111111”),然后点击“减值”,如果出现“数值减操作成功”,表明操作成功。如果出现其他提示表明操作失败。7.点击“读出”,如果在“当前值:”后面出现是你当前值减去操作值(333333331111111122222222),表

8、明操作正确,如果是其他值表明失败。四、修改密码和控制位1.进入功能选项“修改密码”里面,在“扇区号”下面的可拉选项里面选择前面下载密码的扇区号(比如扇区1)。2.在“密码A”和“密码B”后面分别写入你想修改的密码A 和密码B。3.卡片控制位修改之前请详细阅读卡片资料,因为控制位修改不正确,就会导致卡片不能再使用,请务必小心使用。4.在控制位后面填上该扇区的控制位。5.点击“修改密码”,如果出现“修改密码成功”,表示操作正确,如果出现出错提示,请按照出错提示做相应的处理。(注:密码修改后请务必记住,密码遗忘卡片就不能再次是使用了)。五、调试信息进入功能选项“调试信息”里面,在“串口信息发送与接受

9、”处可以看到PC 机和读卡器之间通讯的详细过程,对调试非常有帮助。六、注意几点1. STC单片机下载程序时,一定要选AUX-RAM禁止访问。2.在密码下载选项卡中,要先输入相应扇区的密码后(比如扇区1输入:FFFFFFFFFFFF),才能读出和写入扇区1的数值,否则,无法读取和写入扇区1,其它扇区依次类推。3.当修改密码时,一定要记住,初始密码为FFFFFF,如果要修改为111111,请在修改密码的选项卡进行修改,修改后,密码即为111111,如果要改回到FFFFFF,请先将111111密码先下载,然后才能回到修改密码选项卡,对密码进行修改。修改完成后再下载,就可以读取数据了,否则,若密码不正

10、确,则无法读取数据。4.液晶显示只显示部分信息,使用者可根据情况,通过修改程序,显示相应信息。第二部分 上位机为DELPHI,12864并口显示读写卡将带汉字库的12864液晶显示屏插到开发板上,下载好程序,其它使用方法与第一部分完全相同。注意,12864显示的信息为部分内容,如果要显示其它信息,请自行修改下位机源程序。第三部分 上位机为VB,不采用液晶屏读写卡一、下载下位机程序1. 把串口线(如果是笔记本电脑,须采用USB转串口线)将开发板与PC 机连接好。2. 把1602液晶显示器插在开发板上。3.打开STC下载软件,选择STC89C516RD+单片机,内部扩展选择允许内部AUX-RAM,

11、如图所示:4.点击打开按钮,找到下位机源程序中的hex文件。再点击下载按钮,提示给开发板上电,此时,用USB线给开发板供电,将程序下载到开发板的单片机中。二、用VB上位机软件读写卡1.安装VB6软件,并将MSCOMM32.OCX文件 拷贝到windowssystem32 里面去。(如果之前已经拷贝,就不用再拷贝了)。2.双击启动可执行软件RFID Tools,选择串口,这里使用的是USB转串口线,虚拟串口号为COM3,点击打开串口,如图所示:2.打开串口后,将卡放到开发板天线附近,此时,会显示卡号,如图所示:3. 在密码A、密码B 编辑框中输入射频卡的相应密码,并选择使用A 密码或B 密码。一

12、般射频卡的初试密码是12 个F。之后点击“装载密码”,密码将被送往单片机用于读写卡操作时的密码认证。4. 之后将射频卡靠近RFID DEMO 天线,将会自动进行读卡操作,读出卡的卡号并显示在RFID Tool中。如果密码正确,电脑将发出短促清脆的“嘀”声,RFID_Tool 下半部分的数据显示区将默认显示第1 扇区第4 块的16 个字节的数据。如果密码错误,电脑将发出“嗤嗤”的声音,卡号显示为30303030,显示数据也不会更新。5. 要读出其他扇区其他块的数据,只需输入相应的扇区号和块号,点击“读卡操作”。之后将射频卡靠近天线即可,数据显示区将会自动显示读出的数据。6. 要往某扇区某块中写入

13、数据,首先按照前面的操作,读出该块的数据,之后在数据显示区直接修改,输入要写入的新数据,然后点击“写入数据”,再将射频卡靠近天线即可。(要验证写卡是否成功,可以按照前面的步骤,先读另外某个扇区某个块的数据,再重新读出刚刚写入过的块,看看数据显示区域的数据是否正确更新显示)7. 加减值对于块数据有格式要求,所以我们先将块数据初始化为要求的格式,上位机以初始化为数值0x00000055 为例。选择某扇区某块,之后点击“初始化(数值块) value:55”,然后将射频卡靠近天线即可,可以看到数据被初始化为如下值:之后点击“增加一(数据块)”,然后将射频卡靠近天线,可以看到数据更新,相应的增加了1;点

14、击“减少一(数据块)”,然后将射频卡靠近天线,可以看到数据更新,相应的减少了1。三、软件说明1. 软件目录结构说明源程序文件夹中有这样几个目录文件:SourceFile 目录:全套源代码(.c 和.h)放在该目录下。后文将介绍源代码结构。Keil 目录:单片机程序使用Keil编译,相关文件在该目录下。编译时,打开Keil,点击菜单Project-Open Project,选择Keil P1200.Uv2 打开编译工程,之后点击工具栏的即可编译。编译生成的目标代码是Keil P1200.hex,后面用单片机下载程序下载的目标代码也就是这个文件。需要Keil 的用户请自行下载或者与我们联系,由于该

15、程序体积较大不包含在资料包中。其他DesignEasy_RFID.*文件:我们通常使用Source Insight V3.5 查看代码,这是一款功能强大的代码编辑、阅读工具,用不同的颜色区分不同的语句,而且查找搜索十分方便。这些若干DesignEasy_RFID.* 文件即是Source Insight的工程文件。已经安装了Source Insight V3.5 程序的用户可以直接双击DesignEasy_RFID.PR 即可用Source Insight 查看代码。需要Source Insight 的用户请自行下载,由于该程序体积较大不包含在资料包中。当然,用户可以使用任意自己熟悉的代码查看

16、软件或者编辑器,不是一定非要用Source Insight,不用Source Insight 的用户可以忽略或者删除根目录下的那些DesignEasy_RFID.*文件。2. 源代码系统图解(8bit 并行接口)以下描述适用于8bit 并行接口,也就是适用于RC500、RC531、RC632、FM1702NL 这些读卡器芯片。从上图可以看出,单片机程序部分,有3 条主线(粉红色标注部分):外部中断1 中断处理函数RC500ISR()uart 中断处理函数UartInterruptService()main()中检测卡、读写卡的操作cmd_inqury()以下分别介绍。3. uart 中断处理函

17、数UartInterruptService()MCU 的uart 功能,每从串口接收到1 个字节的数据,就会产生一次uart 中断。因此在uart 中断处理函数中,我们需要将多次接收到的数据按照规定的数据格式进行解析,获取上位机程序向单片机发送的命令。此外,MCU 通过读卡芯片,获得卡的ID 信息,以及卡上的数据,也要通过串口发回上位机程序。接收和发送的串口数据格式定义如下: 起始符:1 个字节,一定为0x02; 命令,包括命令类型(1 个字节)和命令数据(小于100 个字节),其中命令数据为1 种或者多种具体的数据内容组成。根据命令类型不同,命令数据的格式也不同,具体如下:上位机发向单片机:

18、a. 命令类型为0x30:装载某个块的A 密码,命令数据为2 字节的块号数据 加上 12 字节的密码数据。b. 命令类型为0x31:装载某个块的B 密码命令数据为2 字节的块号数据 加上 12 字节的密码数据。c. 命令类型为0x32:读取某个块的数据命令数据为2 字节的块号数据。d. 命令类型为0x33:向某个块写数据命令数据为2 字节的块号数据 加上 32 字节的读写数据。e. 命令类型为0x34:将某块初始化为加减值要求的格式命令数据为2 字节的块号数据f. 命令类型为0x35:加值操作无命令数据g. 命令类型为0x36:减值操作无命令数据单片机发向上位机:h. 命令类型为0x39:上传

19、卡ID命令数据为8 字节ID 数据。i. 命令类型为0x32:读到某个块的数据命令数据为2 字节的块号数据 加上 32 字节的读写数据。 结束符:1 个字节,一定为0x03;各种类型的命令数据都用ASCII 码传输,具体格式定义如下: 块号数据:2 字节第一字节表示扇区号的ASCII 码,第二字节表示扇区内块号的ASCII 码。比如,第4 个扇区内的第2 个块(块号为:13 = 3x4+1,因为标号都从0 开始)将表示为:0x33 0x31,也就是字符:31 密码数据:12 字节相邻2 个字节组合成1 个字节的密码,分别为高4bit 的ASCII 码和低4bit 的ASCII。比如,密码若为:

20、0x1234567890AB(6 字节)将表示为:0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x370x38 0x39 0x30 0x41 0x42,也就是字符:0123456789AB 读写数据:32 字节相邻2 个字节组合成1 个字节的数据,分别为高4bit 的ASCII 码和低4bit 的ASCII。比如,如要往卡内写入数据的某字节是0x12,将表示为:0x30 0x31,也就是字符:12 ID 数据:8 字节相邻2 个字节组合成1 个字节的数据,分别为高4bit 的ASCII 码和低4bit 的ASCII。比如,如果ID 是0x1234ABCD 将表示为 0

21、x31 0x32 0x33 0x34 0x41 0x42 0x43 0x44,也就是1234 ABCDuart 中断处理函数UartInterruptService()中,将根据以上数据格式定义,对接收到的数据进行解析,将解析的结果存放在OperateState 、BlockNo、MKeys、blockdata 等全局变量中。4. main()中检测卡、读写卡的操作cmd_inqury()cmd_inqury()中的主要操作流程是: 检测是否有卡靠近; 如果有,选择某张卡(如果有多张的话),获得卡ID; 进行密码认证; 如果密码认证通过,那么根据OperateState 的值进行相应操作; 通

22、过串口将读到的数据传给电脑; 等待卡离开其中,通过串口将ID 或者读到的数据传给电脑,数据的传输格式如前所述。其中,对卡的操作函数,诸如Request、AnticollSelect、Authentication 等,是NXP 提供的函数接口,里面的操作主要是根据芯片工作流程、向读卡芯片内读、写数据,有兴趣请查看代码中的注释和定义。四、加减值说明值加减的意义:Mifare1 卡大量应用于小额消费领域,所以有冲值和消费两种。对于消费来说,只需要关心扣款即可,不需要知道卡里面有多少钱。而一般常规的扣款操作从卡中读出金额,与扣款金额相减,相减后把值返回卡中,这样很容易导致一个问题:1:知道卡中金额2:

23、通过扣款权限可以对卡进行冲值,导致作弊所以一般Mifare1 卡的A 密钥为扣款密码,B 密钥为冲值密钥,而对金额的管理权限也只能是加值或者减值,不能同时拥有两者。以上就是值加减的来由。一般的说,金融行业,把B 密钥作为冲值,有相应的密钥管理卡,一般叫冲值SAM 卡,把A 密钥作为消费密钥,有相应的密钥管理卡,一般叫消费SAM 卡,也叫PSAM 卡,SAM 卡类似手机SIM 卡,也是ISO7816接口。SAM 卡的作用有以下几点:1:管理Mifare1 卡的密码,每张卡,每个Block 的密码都是不同的,所以需要一张卡来管理,一般的流程如下,通过RFID 获取Mifare1 的ID 号,再把I

24、D 号通过SAM 卡获得Mifare1 卡的密码,如果是PSAM卡,就获得了A 密钥,如果是冲值SAM 卡,就获得了B 密钥。之后就可以根据流程处理2:对金额的管理,一般卡内存储的金额不是明码的,需要通过SAM 卡才能转换,或者处理。值操作流程:1:一个值最大不能超过32bit,其中最高位31bit 位是无效的,也就是说最大值是231。2:一个Block 是16BYTE,而值是32bit,也就是4Byte,所以这两者之间有一定的关联,格式如下:例子如下:blockdata0 = 0x55;blockdata1 = 0x00;blockdata2 = 0x00;blockdata3 = 0x00

25、;blockdata4 = 0xAA;blockdata5 = 0xFF;blockdata6 = 0xFF;blockdata7 = 0xFF;blockdata8 = 0x55;blockdata9 = 0x00;blockdata10 = 0x00;blockdata11 = 0x00;blockdata12 = BlockNo;blockdata13 = BlockNo;blockdata14 = BlockNo;blockdata15 = BlockNo;代码中,调用InitBlock 即可将块初始化为要求的格式,并将数据写入。之后就可以对值操作,用以下两个命令即可:加值指令status = ValueOper(MIFARE_INCREMENT, BlockNo, Test_Add_Sub_Step, BlockNo);减值指令status = ValueOper(MIFARE_DECREMENT, BlockNo, Test_Add_Sub_Step, BlockNo);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1