加密IC卡保险柜控制器的设计_传感与控制论文
关键词:ic卡 单片机 保险柜
随着社会的进步和为民生活水平的提高,为们出差、旅游和度假的机会日益增加。在宾馆、饭店等居住场所都需要一保险柜来保存贵重物品和易失物品,即便在家里,也往往需要有一个地方来保存一些单据等物品。传统的手段已不能满足人们对其安全性和灵活性要求,把应用愈来愈广泛的ic卡技术应用到保险柜上,可以充分满足这方面的需求。例如,根据客户要求,可以给每个房间配备一个带有ic卡电子门锁的保险柜供他们存放物品;待客人走后,可以灵活地对保险柜的密码进行重新设置,更换ic卡。下面对我们自行设计的加密型ic卡保险柜的核心部件--控制器件一详细的介绍。
一、控制器的硬件设计
本系统的主要任务是完成对ic卡的识别和控制,因此,首先介绍一下所选用的ic卡。
1.sle4442加密ic卡简介
目前市场上的ic卡种类较多,比较有代表性的有atmel公司的at系列和siemens公司的sle系列。我们根据用户的要求和市场的供给情况选用了siemens公司设计的sle4442卡。此卡的特点是:
(1)卡内有2k位的存储容量和完全独立的可编程逻辑代码存储器(psc);
(2)多存储器结构,其中包括256×8位eeprom,32×1位prom的4×8位eeprom型加密存储器;
(3)串行口满足iso7816同步传递协议;
(4)每一字节的擦除/写入时间为2.5ms;
(5)存储器可擦除1000次以上,数据可保存10年以上。
sle4442型ic卡的触点排列及功能如图1所示。
sle4442芯片的传送协议包括4种模式。
(1)复位和复位响应
复位可在操作期间任何时候进行。在复位响应期间,任何开始和停止条件均被禁止。复位与复位响应时序如图2所示。
(2)命令方式
每个命令由起始条件、1个3字节长的命令和停止条件构成。命令方式时序如图3所示。
起始条件:clk处于高状态h期间,i/o的下降沿。
停止条件:clk处于高状态h期间,i/o的上升沿。
(3)输出数据方式
在这种试上,ic卡发送数据至接口设备ifd。在clk上第一个下降沿后,i/o上第一位有辩效,最后一个数据位之后,需要一个额外的时钟脉冲,以设置i/o处于高状态,同时准备ic卡接收新的命令。在这种方式下,任何开始和停止条件均被禁止。输出数据方式时序如图4所示。
(4)处理方式
在第一个clk的下降沿,将i/o线从高状态h切换至低状态l并开始处理,直到低状态l的i/o被设置成高状态h结束。在这种方式下,任何开始和停止条件均被禁止。处理方式时序如图5所示。
sle4442卡共有7个命令,每个命令包括3个字节,其命令格式及功能如表1所列。
表1 sle4442命令
字节1控制字节 | 字节2地址字节 | 字节3数据字节 | 操 作 |
b7 b6 b5 b4 b3 b2 b1 b0 | a7a0 | d7d0 | |
0 0 1 1 0 0 0 0 | 地址 | 无 效 | 读/从给定的字节地址至用户存储器结束 |
0 0 1 1 1 0 0 0 | 地址 | 输入数据 | 编程输入地址对应的用户存储区 |
0 0 1 1 0 1 0 0 | 无效 | 无 效 | 读保护存储器 |
0 0 1 1 1 1 0 0 | 地址 | 无 效 | 写保护存储器中的保护位 |
0 0 1 1 0 0 0 1 | 地址 | 无 效 | 读保密存储器 |
0 0 1 1 1 0 0 1 | 地址 | 输入数据 | 写/编程输入址对应的保密存储器 |
0 0 1 1 0 0 1 1 | 地址 | 输入数据 | 比较可编程密码psc字节 |
这里只介绍比较可编程密码psc命令的使用。比较过程由4个步骤组成:
①写错误计数器ec(至少1位)。地址0。密码比较结果将在错误计数器中反馈,3次密码出错ic卡被阻塞。
②比较psc字节1,地址1。写完错误计数器之后,以不同的命令格式送入3个密码字节。密码比较成功,将通过刷新错误计数器来识别,然后施加上操作电压,就可以对所有存储器进行读写操作了。
③比较psc字节2,地址2。
④比较psc字节3,地址3。
芯片在出厂时可根据用户的专门要求将可编程加密代码(psc)存储器中编入一个专用代码。这样在使用时,就必须合法地得到这个代码,从而防止非法窃用或伪造卡片。
2.系统组成及工作原理
本系统的硬件主要由单片机、串行eeprom、电磁阀和ic卡读/写插座组成。具体电路如图6所示。
电路中的单片机at89c2051是89c51的简化体。20引脚为dip封装。片内有2k字节闪烁存储器,128字节ram,15条i/o线,全双工串行口。p1.0、p1.1分别作为片内精确模拟电压比较器的正、负输入端;p1.2作为ic卡的复位端;p1.3、p1.4分别作为ic卡的时钟线与数据线;p3.7作为ic卡工作指示灯的控制端;p1.5作为非法操作的声音报警控制;p3.4作为电磁阀门sw1的控制端。图中的u5是串行eeprom--at24c01,它的作用是用来随机存储每个ic卡的密码等;u4为电压比较器,用来监测电源电压:如果电源电压下降至4.5v左右就会产生报警信号。为了使系统更可靠地工作,采用cd4060设计了单片机"看门狗"电路,由4060定时产生一个复位脉冲,对单片机进行复位操作。整个电路设计中,充分考虑了能源的节约问题,所以在ic卡插入前整个电路的大部分芯片没有供电,只有门电路u1工作;当ic卡插入后,由于ic卡座的开关接通,促使门电路u1触发翻转,由t1导通使其他芯片得到供电。如果在使用过程中客人忘记拔出ic卡,电路除了要产生报警信号外,还会在30s(秒)后自动停止供电。
二、控制器的软件设计
该软件包括三部分:
(1)ic卡的读取及at24c01数据的读取;
(2)比较校验数据,修改存储器数据;
(3)各种控制功能的实现,包括门锁开启,声、光报警等操作。
限于篇幅,这里只给出了利用51汇编语言编写的加密ic卡sle4442的读/写程序,并给出了主程序的流程图,如图7所示。
读子程序
read:mov r0,#30h ;设置存放ic卡读入数据的首地址为30h
lcall reset ;调ic卡复位子程序
mov r2,#10h ;读ic卡数据的个数送r2
lcall start ;调起始条件子程序
mov r5,#00110000b ;发送读的命令码
lcall spout ;调发送一个字节子程序
mov r5,#20h ;发送ic卡的起始地址
lcall spout
mov r5,#00h ;将数据00h发送出去
lcall sput
lcall stop ;调停止条件子程序
read1:lcall spinc ;调数据采集子程序
mov a,r6
mov @r0,a
inc r0
djnz r2,read1
lcall pluse ;调发送脉冲子程序
ret ;读ic卡数据子程序结束
写子程序
wrt:lcall reset ;写ic卡数据子程序开始,调ic卡复位子程序
mov r2,#10h ;写入ic卡的字节个数送r2
mov r1,#40h ;将40h为首地址的内容写入ic卡
mov r4,#30h ;r4中放的是写到ic卡起始地址30h
wrt1:lcall start ;调起始条件子程序
mov r5,#00111000b ;发送写的命令码
lcall spout
mov a,r4 ;发出要写入的ic卡地址
mov r5,a
lcall spout
mov a,@r1 ;写入ic卡数据
mov r5,a
lcall spout
lcall stop ;调停止条件子程序
lcall proce ;调一个编程过程子程序
inc r1 ;数据指针加1,直到数据写完
inc r4
djnz r2,wrt1
ret ;写子程序结束
proce:mov r3,#0ffh ;一个编程过程子程序
proc1:setb p1.2
nop
clr p1.2
djnz e3,proc1
ret
spinc:mov r3,#08h ;数据采集子程序
spin1:clr p1.2
mov c,p1.4
mov a,r6
rlc a
mov r6,a ;读出的一字节内容送r6
setb p1.2
djnz r3,spin1
ret
spout:mov r3,#08h ;一字节发送子程序
mov a,r5
sptc1:clr p1.2
rlc a
mov p1.4,c
nop
setb p1.2
djnz r3,sptc1
ret
start:setb p1.2 ;起始条件子程序
nop
clr p1.4
nop
ret
stop:clr p1.2 ;停止条件子程序
nop
clr p1.4
nop
setb p1.2
clr c
nop
setb p1.2
nop
clr p1.2
ret
reset:setb p1.3 ;复位ic卡子程序
nop
clr p1.3
nop
ret
end
保险柜的安全性能是本控制器系统设计的出发点之一,为此,在软件上,将ic卡分为母卡和子卡,母卡由管理人员掌握,子卡由客人掌握。在每次客人走后,将母卡插入保险柜,那么原来的开机子卡宣布作废,这时可以插入一个新的卡形成一个新的子卡。母卡的功能是负责生成新的子卡,而不负责开门,从而确保了保险柜的安全性能。
结束语
该ic卡保险柜控制器具有结构简单、功耗低、体积小、成本低等特点,完全达到了用户的要求,目前已投入了小批量的生产。如果将现有的产品稍作改动和扩展,就能实现其他的功能。例如,给它扩展上一个语音芯片,即可进行语音提示或报警;如果将本控制器应用于防盗门就可制成ic卡防盗门,从而实现对传统防盗门的更新换代,具有广阔的市场前景。