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
|