非接觸式智能卡模塊ID-0/10/15的原理及應(yīng)用
這里介紹一種非接觸式智能卡模塊的原理,性能。并給出了與MCS51單片機接口的詳細程序。
1 概述
當前社會生活中使用的主要為接觸式智能卡,工作時需與讀寫終端觸點接觸,存在易磨損、并行性差、響應(yīng)時間長等特點;而非接觸式智能卡由于具有無接觸,可并行處理、與接觸式相比可節(jié)約70%-90%的時間等優(yōu)點正越來越廣泛的運用于 醫(yī)療、交通,社會保險、稅務(wù)等諸多領(lǐng)域。
這里提供的ID10/15非接觸式智能卡模塊具有遠距離、低功耗、小體積等特點,它專為OEM 廠商設(shè)計。
2 ID10/15模塊工作原理
ID10/15模塊外接的電感應(yīng)線圈產(chǎn)生125KHZ的電磁波,當ID-0/1-/15智能卡片在ID-0/10/15產(chǎn)生的磁場范圍內(nèi)時,智能卡片內(nèi)的線圈接收電磁波的能量,智能卡片內(nèi)的電路對其整流、穩(wěn)壓后作為卡片系統(tǒng)工作電壓,并從接收到的振幅調(diào)制脈沖調(diào)制出信息并送到內(nèi)部控制邏輯,并將內(nèi)部數(shù)據(jù)經(jīng)由天線送出,ID-0/10/15收到智能卡上的資料后再重新依輸出格式編碼輸出。
3 ID-0/10/15模塊特點
電源﹕5VDC。
數(shù)據(jù)輸出接口:有二種數(shù)據(jù)輸出格式
(1)Wiegand 26模式
(2)ASCⅡ模式
讀卡距離﹕ 0/7~10cm/12~15cm @5V
工作頻率﹕125KHz
讀寫能力﹕只讀
視覺聲音指示﹕指示燈和2.7KHz蜂鳴器驅(qū)動輸出
體積﹕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 應(yīng)用實例
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數(shù)據(jù)引腳輸出波形如下﹕
data0
。。。
data1 950μs 50μs
。。。
50μs 950μs
DATA0 和 DATA1總共26個低電平脈沖,每一個脈沖代表一個BIT 數(shù)據(jù),第1個BIT 為1-13 BIT 的偶校驗位,第26 個BIT 為14-26 BIT 的奇校驗位,BIT2-BIT25 共6 DIGITS(每4 BIT 為一個DIGITS)代表卡片號碼的后六位數(shù)。
此模式下與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