来源:中国一卡通网 作者:不详 发布时间:2012-05-24 10:12:39 字体:[大 中 小]
摘 要:这里介绍一种非接触式智能卡模块的原理,性能。并给出了与MCS51单片机接口的详细程序。
这里介绍一种非接触式智能卡模块的原理,性能。并给出了与MCS51单片机接口的详细程序。
1 概述
当前社会生活中使用的主要为接触式智能卡,工作时需与读写终端触点接触,存在易磨损、并行性差、响应时间长等特点;而非接触式智能卡由于具有无接触,可并行处理、与接触式相比可节约70%-90%的时间等优点正越来越广泛的运用于 医疗、交通,社会保险、税务等诸多领域。
这里提供的ID10/15非接触式智能卡模块具有远距离、低功耗、小体积等特点,它专为OEM 厂商设计。
2 ID10/15模块工作原理
ID10/15模块外接的电感应线圈产生125KHZ的电磁波,当ID-0/1-/15智能卡片在ID-0/10/15产生的磁场范围内时,智能卡片内的线圈接收电磁波的能量,智能卡片内的电路对其整流、稳压后作为卡片系统工作电压,并从接收到的振幅调制脉冲调制出信息并送到内部控制逻辑,并将内部数据经由天线送出,ID-0/10/15收到智能卡上的资料后再重新依输出格式编码输出。
3 ID-0/10/15模块特点
电源﹕5VDC。
数据输出接口:有二种数据输出格式
(1)Wiegand 26模式
(2)ASCⅡ模式
读卡距离﹕ 0/7~10cm/12~15cm @5V
工作频率﹕125KHz
读写能力﹕只读
视觉声音指示﹕指示灯和2.7KHz蜂鸣器驱动输出
体积﹕22*20*6mm/26*25*6mm/39*39*9mm
4 ID-0/10/15模块引脚定义
1. 电源地
2. 重置脚(Reset Bar)
3. 天线A
4. 天线B
5. 接地为ASCⅡ模式/接5V为韦根26模式
6. CMOS/One Output
7. TTL Data/Zero Output
8. Beeper/Led
9. +4.6V~+5.5V
ID-10的读卡距离为8厘米,ID-15的读卡距离为14厘米
5 应用实例
5.1 Wiegand 26 模式
在Wiegand 26 模式下,ID-0/10/15引脚接法如下﹕
PIN1﹕ 地
PIN2﹕Reset Bar
PIN3,4 ﹕Antenna
PIN5 ﹕接+5VDC
PIN6﹕DATA 1
PIN7: DATA0
PIN8: Beeper/Led
PIN9: +4.6V~+5.5V
在Wiegand 26 模式下,ID-0/10/15数据引脚输出波形如下﹕
data0
。。。
data1 950μs 50μs
。。。
50μs 950μs
DATA0 和 DATA1总共26个低电平脉冲,每一个脉冲代表一个BIT 数据,第1个BIT 为1-13 BIT 的偶校验位,第26 个BIT 为14-26 BIT 的奇校验位,BIT2-BIT25 共6 DIGITS(每4 BIT 为一个DIGITS)代表卡片号码的后六位数。
{$Page$}
此模式下与MCS51单片机接口的程序如下﹕
ID-0_DATA0: EQU P1.7 ;P1.7 CONNECT TO DATA0
ID-0_DATA1: EQU P1.6 ;P1.6 CONNECT TO DATA1
ADDR_1: EQU 30H ;6 BYTES DATA SAVE IN INRAM 30-35H
EVEN_CHECK EQU 00H ;20H_BIT0 SAVE AS EVEN PARITY
ODD_CHECK EQU 01H ;20H_BIT1 SAVE AS ODD PARITY
EVEN_FLAG EQU 02H ;20H_BIT2
TIME_OUT_FLAG EQU 03H ;20H_BIT3
ORG 000BH
LJMP TIMER0_IN
ORG 30H
WIEGAND_START: TMOD,#01H ;
SETB EA
SETB EVEN_FLAG ;SET EVEN CHECK FLAG
CLR TIME_OUT_FLAG
MOV R2,#6 ;TOTAL 6 BYTES DATA
MOV R3,#4 ;4 BITS PER BYTE
MOV R0,#ADDR_1 ;START ADDRESS OF DATA
WIEGAND1: JNB ID-0_DATA0,WIEGAND2 ;DATA0 IS LOW THEN START TO OUTPUT DATA
JB ID-0_DATA1,WIEGAND1 ;DATA0 AND DATA1 IS HIGH THEN WAIT DATA
JB TIME_OUT_FLAG,ERR
MOV TH0,#0F8H ;2000US INTERRUPT
MOV TL0,#30H
CLR TIME_OUT_FLAG
SETB TR0 ;TIMER0 START
LCALL DELAY25US
MOV C,ID-0-DATA0
LCALL DELAY175US
JNB ID-0-DATA1,ERR
LJMP WIEGAND3
WIEGAND2: NOP
JB TIME_OUT_FLAG,ERR
MOV TH0,#0F8H ;2000US INTERRUPT
MOV TL0,#30H ;
CLR TIME_OUT_FLAG
SETB TR0 ;TIMER0 START
LCALL DELAY25US ;DELAY 25 μS
MOV C,ID-0_DATA0 ;MOVE DATA IN C REGISTER
LCALL DELAY175US
JNB ID-0-DATA,ERR
WIEGAND3: JNB EVEN_FLAG,WIEGAND_DATA ;EVEN IS 0 THEN OUTPUT IS DATA
MOV EVEN_CHECK,C ;OUTPUT IS EVEN CHECK BIT
CLR EVEN_FLAG ;CLR EVEN CHECK BIT
LJMP WIEGAND1 ;RECEIVE DATA
WIEGAND_DATA: RLC A ;
DJNZ R3,WIEGAND1 ;BYTE IS NOT OVER
ANL A,#00001111B ;BYTE OVER
MOV @R0,A ;SAVE DATA TO INRAM
INC R0 ;INCREASE INRAM ADDRESS
MOV R3,#4 ;4 BITS PER BYTE
DJNZ R2,WIEGAND1 ; READ DATA AGAIN
ODD: JNB ID-0_DATA0,ODD_BIT ;WAIT ODD CHECK BIT
JB ID-0_DATA1,ODD ;
ODD_BIT: NOP ;
LCALL DELAY25US ;DELAY 25 μS
MOV C,ID-0_DATA0 ;ODD CHECK BIT
MOV ODD_CHECK,C ;SAVE ODD CHECK BIT
NOP
LJMP OTHER_PROGRAM ;READ CARD OVER
DELAY25US: MOV R4,#11 ;DELAY 25μS
DELAY25US_A: DJNZ R4,DELAY25US_A
NOP
RET
DELAY175US: MOV R4,#86 ;DELAY 175 μS
DELAY175US_A: DJNZ R4,DELAY175US_A
NOP
RET
TIMER0_IN: SETB TIME_OUT_FLAG
CLR TR0
RETI
ERR: NOP ;ERR EXECEL
. ;
. ;
. ;
LJMP WIEGAND_START ;READ DATA AGAIN
5.2 ASCⅡ模式
在ASCⅡ模式下,ID-0/10/15引脚接法如下﹕
PIN1﹕ 地 PIN2﹕Reset Bar PIN5 ﹕接地
PIN3,4 ﹕Antenna
PIN6: CMOS
PIN7: TTL Data
PIN8: Beeper/Led
PIN9: +4.6V~+5.5V
在ASCⅡ模式下,ID-0/10/15与MCS51单片机的连接如下图﹕
ID-0/10/15 PIN7 80C51 UART
80C51 I/O波形如下﹕
在c模式下,ID-0/10/15输出数据为9600波特率,8位数据位,1位停止位,无奇偶校验位。
此模式下输出数据格式如下﹕
STX(02H) DATA CHSUM CR LF ETX(03H)
The checksum is the result of the ‘exclusive or ‘ of the 5 Binary Data bytes
(the 10 ASCⅡ data characters)
eg: DATA=0000001164(Hex)
CHECKSUM=75H
STX(02 HEX)是数据启示位,DATA是10位卡片号码,CR (0D HEX)是计算器回车符,LF(0A HEX)是计算器换行符,ETX(03 HEX)是数据停止位。
此模式下与MCS51单片机接口的程序如下﹕
ID-0/10/15_DATA: EQU P1.7 ;P1.7 CONNECT TO DATA
ADDR_1: EQU 30H ;6 BYTES DATA SAVE IN INRAM 30-35H
MAIN: MOV SP,#60H ;
MAIN_1: MOV R2,#14 ;TOTAL 14 BYTES
MOV R0,#ADDR_1 ;
LOOP_BYTE_READ:MOV R3,#8 ;8 BITS PER BYTES
WAIT_DATA1: JB ID-0_DATA,WAIT_DATA1 ;DATA IS HIGH THEN WAIT
WAIT_DATA2: JNB ID-0_DATA,WAIT_DATA2 ;
LCALL DELAY_BIT_2 ;DELAY 45μS
LOOP_BIT_READ: LCALL DELAY_BIT_1 ;DELAY 95 μS
CLR EA ;INTERRUPT DISABLE
MOV C,ID-0_DATA ;MOVE DATA IN C RESIGTER
RRC A ;
DJNZ R3,LOOP_BIT_READ ;8 BITS PER BYTE
CPL A ;
MOV @R0,A ;SAVE DATA IN NRAM
INC R0 ;INCREADE INRAM ADDRESS
LCALL DELAY_BIT_1 ;DELAY 95μS
DJNZ R2,LOOP_BYTE_READ ;14 BYTE IS NOT OVER THEN AGAIN
SETB EA ;INTERRUPT ENABLE
LJMP OTHER_PROGRAM ;READ CARD END
DELAY_BIT_1: MOV R4,#46 ;DELAY 95μS
DELAY_BIT_1_A: DJNZ R4,DELAY_BIT_1_A
NOP
RET
DELAY_BIT_2: MOV R4,#21 ;DELAY 45μS
DELAY_BIT_2_A: DJNZ R4,DELAY_BIT_2_A
NOP
推荐文章
论坛热帖