新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 非接觸ID卡在自動識別系統中的應用

        非接觸ID卡在自動識別系統中的應用

        作者: 時間:2006-05-07 來源:網絡 收藏

        摘要:非接觸ID卡具有數據讀數速度快、抗干擾能力強、價格低等特點,在自動識別系統中有良好的應用前景。本文分析非接觸ID卡的數據讀取及數據校驗的操作,并給出相應的源程序。

        本文引用地址:http://www.104case.com/article/255629.htm

        關鍵詞:非接觸ID卡 自動識別 數據讀取及校驗

        隨著半導體芯片技術的不斷發展,自動識別系統(如巡更系統、門禁系統、考勤系統、倉儲管理系統、流水線生產自動化管理系統等)所采用的ID標識也在不斷地更新,從條形碼、磁卡到智能IC卡、非接觸ID卡,都有各自的特點及適用場合,表1列出了幾種ID標識的特性與區別。在實踐應用過程中,用戶可根據不同的使用環境及功能要求選擇不同的ID標識。

        非接觸ID卡的數據讀取具有非常接觸的特性,即根據不同的硬件電路設計,可以在距離非接觸ID卡4~10cm處讀取其數據。因此,讀取非接觸ID卡數據無需機械接觸即可完成,避免了接觸式數據讀取而產生的卡損傷,從而大大提高了卡的使用壽命。此外,非接觸ID卡還可以按不同的應用采用異型封裝,如硬幣型、柱型等,并可將其預埋于設備的混凝土基礎中,使其不容易受到外力破壞。

        1 非接觸ID卡主要特性

        目前市場上非接觸ID卡主要有臺灣凌航科技的GK4001卡和瑞士SWATCH集團的H4001卡。它們都采用125kHz的典型工作頻率,有64位激光可編程ROM,調制方式為曼徹斯特碼(Manchester)調制,位數據傳送周期為512μs,其64位數據結構如圖1所示。

        連續9位“1”作為頭數據,是讀取數據時的同步標識;D00~D93位是用戶定義數據位;P0~P9是行奇校驗位,PC0~PC3是列奇校驗位,最后位“0”是結束標志。非接觸ID卡的這種數據結構非常有利于判斷讀出數據的正確性。

        由于Temic U2270B射頻基站的典型工作頻率為125kHz,因此,可采用以U2270B作為射頻基站模塊構成的電路(參見本刊2001年第3期《Temic RF卡讀寫器的設計》)來實現對非接觸ID卡的數據讀取。在工作狀態下,只要射頻基站電路不斷電,非接觸ID卡循環發送64位數據。

        2 非接觸ID卡數據讀取及校驗

        根據曼徹斯特碼的編碼原則(參見本刊2001年第一期《一種采用曼碼調制的非接觸IC卡讀寫程序編制》),非接觸ID卡采用上升沿對應著位數據“0”,下降沿對應著位數據“1”,微控制器通過檢測U2270B輸出數據位的跳變來實現對曼徹斯特碼的譯碼。在現實工作中,數據信號會受到調制、解調、噪聲各種效應的影響,其上升沿和下降沿存在抖動,可采用鍵盤消抖的辦法來消除抖動的影響。根據非接觸ID卡64位數據循環發送以及其數據緒構特點,即數據流中第64位為“0”,第1位至第9位為“1”。據此,將“0111111111”作為讀數據的起始標識,如圖2所示。在確定了數據起始標識后,采用延時大于0.5T采樣數據位的方法,如圖3所示,來避開曼徹斯特碼編碼中的空跳對數據譯碼造成的影響,簡化了譯碼程序。

        通過實驗得到:480μs≤1T≤520μs,220μs≤0.5T≤280μs,由此取Tnext=300μs。為了便于對讀出數據進行奇校驗,讀出數據每5位作為一個字節。因此確定起始標識和讀取數據對時鐘有嚴格要求,所以尋找起始標識和讀取數據部分程序采用匯編語言編寫。數據讀以后,根據前面所提到的非接觸ID卡的數據結構,通過比較奇校驗算法與讀出數據中的奇校驗位來驗證出數據的正確性。非接觸ID卡的數據讀取程序如下:

        ;------------------------------------------

        ;讀出數據程序

        ;晶振11.059 2MHz

        ;Lable define

        ;-----------------------------------------

        TLL EQU 2DH

        TLH EQU 42H

        THL EQU 62H

        THH EQU 81H

        TDL EQU 88H

        TDL1 EQU 2AH

        BLK1 EQU 70H ;讀出數據緩存

        OK BIT 79H

        OUT BIT P1.1

        CFE BIT P1.2

        ;-------------------------------------------

        ORG 0000H

        LJMP RD_D

        ORG 0050H

        ;------------------------------

        ;READ RF CARD

        ;-------------------------------

        RD_D:MOV A,R6

        PUSH ACC

        MOV A,R7

        PUSH ACC

        LCALL EDGEM

        JB OK,RD_OK

        RD_D0:CLR OK

        LJMP RD_D

        RD_OK:NOP

        RD_D1:MOV R0,#BLK1 ;讀到BLK1

        RD_DL0:MOV R6,#0BH ;位計數---R6*R5

        RB_L:CLR A

        MOV @R0,A

        RD_DL1:MOV R5,#05H

        RD_DL2:JB OUT,RD_DL5

        MOV A,#00H

        RD_DL3:CJNE A,#TDL1,RD_DL4

        LJMP RD_D0

        RD_DL4:JB OUT,RD_DLK

        INC A

        SJMP RD_DL3

        RD_DL5:MOV A,#00H

        RDDL5:CJNE A,#TDL1,RD_DL6

        LJMP RD_D0

        RD_DL6:JNB OUT,RD_DLK

        INC A

        SJMP RDDL5

        RD_DLK:MOV C,OUT

        CPL C

        MOV A,@R0

        RLC A

        MOV @R0,A

        MOV R1,#TDL ;延時TNEXT

        DJNZ R1,$

        DJNZ R5,RD_DL2

        INC R0

        DJNZ R6,RB_L

        SETB OK

        RDRET:POP ACC

        MOV R7,A

        POP ACC

        MOV R6,A

        SJMP $

        ;---------------------------------------------

        ;確定數據流起始標識

        ;---------------------------------------------

        EDGEM:MOV R7,#00H

        EDGE0:MOV R1,#08H

        NOP

        DJNZ R7,EDGE1

        EDGER:CLR OK

        RET

        ;--------------------

        EDGE1:JNB OUT,$

        MOV DPTR,#0000H

        EDGE2:INC DPTR

        JB OUT,EDGE2

        MOV A,DPH

        JNZ EDGER

        MOV A,DPL

        CLR C

        SUBB A,#THL

        JC EDGE0

        MOV A,DPL

        CLR C

        SUBB A,#THH

        JNC EDGER

        ;--------------------

        EDGE3:JNB OUT,$

        MOV DPTR,#0000H

        EDGE4:INC DPTR

        JB OUT,EDGE4

        MOV A,DPL

        CLR C

        SUBB A,#TLH

        JNC EDGE0

        MOV A,DPH

        JNZ EDGER

        MOV A,DPL

        CLR C

        SUBB A,#TLL

        JC EDGER

        MOV A,DPL

        CLR C

        SUBB A,#TLH

        JNC EDGE0

        DJNZ R1,EDGE3

        MOV R1,#TDL

        DJNZ R1,$

        SETB OK

        RET

        END

        結束語

        通過實驗得出,只有在正確找到數據的起始標識和通定合適的時間間隔常數后,才能正確讀出非接觸ID卡的數據。經過一段實踐,以上兩點并不難解決。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 富源县| 广河县| 湖州市| 四子王旗| 新余市| 察哈| 宜宾市| 肥城市| 吴川市| 扎囊县| 温泉县| 敖汉旗| 中阳县| 桦甸市| 新津县| 荥经县| 白城市| 石台县| 绿春县| 凌云县| 扬中市| 商南县| 定安县| 宁明县| 凤阳县| 兰州市| 井冈山市| 拜城县| 益阳市| 融水| 阳山县| 黄陵县| 利津县| 武功县| 新乐市| 嘉善县| 翁牛特旗| 钟山县| 漯河市| 平山县| 宁夏|