西南科技大学本科生毕业论文
块0
扇区0 块1
块2 块3
扇区1
块0 块1 块2 块3
块0 块2 块3
图3-3 M1卡存储结构示意图 密码A 存取控制 密码B 密码A 存取控制 密码B ∶ ∶ ∶ 数据块 数据块 数据块
60 61 62 63
数据块 数据块 数据块 控制块 数据块 数据块 数据块 控制块
0 1 2 3 4 5 6 7
扇区15 块1
密码A 存取控制 密码B 控制块
(2)第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。 (3)每个扇区的块0、块1、块2为数据块,可用于存贮数据。
数据块可作两种应用:
a) 用作一般的数据保存,可以进行读、写操作;
b) 用作数据值,可以进行初始化值、加值、减值、读值操作。
(4)每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:
A0 A1 A2 A3 A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 密码A(6字节) 存取控制(4字节) 密码B(6字节)
(5)每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:
块0: C10 C20 C30 块1: C11 C21 C31 块2: C12 C22 C32 块3: C13 C23 C33
13
西南科技大学本科生毕业论文
三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。三个控制位在存取控制字节中的位置,以块0为例: 表3-1 对块0的控制表 bit 字节6 字节7 字节8 字节9 7 6 5 4 C20_b 3 2 1 0 C10_b C30_b C10 C30 C20 注: C10_b表示C10取反 。
存取控制(4字节,其中字节9为备用字节)结构如下所示:
表3-2 存取控制表 bit 字节6 字节7 字节8 字节9 7 C23_b C13 6 C22_b 5 C21_b 4 C20_b 3 C13_b C33_b 2 C12_b C32_b 1 C11_b C31_b 0 C10_b C30_b C12 C32 C11 C31 C10 C30 C33 C23 C22 C21 C20 注: _b表示取反 。
3.2.3 IC卡读写过程
非接触式IC卡的读写过程:通常由非接触式IC卡与读写器之间通过无线电波来完成读写操作。非接触型IC卡本身是无源体, 当读写器对卡进行读写操作时,在电磁波的激励下,卡片的LC串联谐振电路,由于其频率与读写器发射的频率相同,使得卡片中的LC谐振电路产生共振,从而是卡片的内置电容有了电荷,并通过在此电容另一端接有的一个单项导通的电子泵将电容内的电荷送到另一个电容内存储,当所积累的电荷达到一定值时,此电容作为电源为电路提供工作电压,将卡内数据发射出去或接收读写器的数据。
本设计采用的是无源非接触式IC卡,其卡片距离读卡器的有效范围是1~15cm,属于近耦合卡。
整个读写卡过程包括装载密码、询卡、防冲突、选卡、验证密码、读写卡和停卡。这一系列操作必须按固定的顺序进行。在非接触通讯中,为了保证读写器和卡片之间数据传递完整、可靠,采取以下措施:一是防冲突算法,二是通过16位CRC纠错,三是检查每字节的奇偶校验位,四是检查位数,五是用编码方式来区分“1”、“0”或无信息,而Mifare1卡片采用的是防冲突算法,在进行硬件复位后就进入防冲突机制。并且Mifare1卡是针对用户便捷操作的需要来进行优化的,高速的数据传输使得用户不必在读卡器天线处停留,能够形成高通过率,这也是本设计中所要实现的一个目标。
14
西南科技大学本科生毕业论文
命令由读卡器发出,根据读写条件受数字控制单元的控制。当卡上电复位后,通过发送request应答码(ATQA,符合ISO/IEC14443A),能够回应读写器向天线范围内所有卡发出的request命令。并且只有通过了防冲突机制以后才能选定卡片和通过认证,此后才能进行数据存储的一系列功能。
3.2.4单片机与IC卡读卡模块接口电路设计
本系统单片机和IC卡读卡器模块通过5个I/O口相连,驱动程序通过SPI总线模式实现IC卡的读写操作。IC卡读卡器与单片机接口电路如图3-4所示:
图3-4 接口电路
3.3 键盘电路设计
3.3.1 键盘识别原理
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。
矩阵键盘的扫描通常采用:行扫描法。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。
(1)判断键盘中有无键按下 将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
(2)判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
15
西南科技大学本科生毕业论文
3.3.2 键盘电路及键盘按键定义
本系统中4*4矩阵键盘通过8个I/O口与单片机相接,电路中我们用到了P1口。每个按键通过程序识别唯一的编号,然后在程序中对按键的键值进行在定义,让按键具备新的功能。矩阵键盘电路及按键定义如图3-5所示:
图3-5 4*4键盘电路
表3-3 键盘按键对应功能表 0 4 8 设置 1 5 9 + 2 6 确认 - 3 7 退出 密码清除 行线所接的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
3.4 电子锁门禁继电器驱动电路设计
3.4.1 继电器介绍
继电器是具有隔离功能的自动开关元件,广泛应用于遥控、遥测、通讯、自动控制、机电一体化及电力电子设备中,是最重要的控制元件之一。如图3-6所示:
16
西南科技大学本科生毕业论文
图3-6 继电器示意图
继电器一般都有能反映一定输入变量(如电流、电压、功率、阻抗、频率、温度、压力、速度、光等)的感应机构(输入部分);有能对被控电路实现“通”、“断”控制的执行机构(输出部分);在继电器的输入部分和输出部分之间,还有对输入量进行耦合隔离,功能处理和对输出部分进行驱动的中间机构(驱动部分)。 3.4.2 继电器驱动电路设计
本系统设计的电子锁门禁系统,采用了一只PNP三极管S8550来驱动电路,其目的是增大驱动电流,因为继电器线圈驱动需要较大的电流才能启动,而单片机I/O输出的电流非常微弱,达不到驱动的要求。
当单片机I /O口输出低电平时S8550三极管导通,继电器线圈产生电磁感应将开关吸合,就接通了电子锁电源,电子锁就可以开了。当I/O口给高电平时,线圈没有电流,继电器断开。继电器电路如图3-7:
图3-7 继电器驱动电路
17