歡迎您訪問鄭州興邦電子股份有限公司官方網站!
    阿里巴巴誠信通企業(yè)
    全國咨詢熱線:40000-63966
    興邦電子,中國水控機第一品牌

    聯系興邦電子

    全國咨詢熱線:40000-63966

    售后:0371-55132951/55132952

    工廠:河南省 鄭州市 高新區(qū)蓮花街電子電器產業(yè)園

    RFID閱讀器的驅動程序撰寫

    文章出處:http://www.xujuanpiju.com 作者:T博士研發(fā)團隊    人氣: 發(fā)表時間:2011年10月27日

    [文章內容簡介]:RFID閱讀器的驅動程序撰寫

     

       

    本文將介紹如何以MCU簡單的設計一個RFID的閱讀器,所示范的的程序模塊是采用HOLTEK MCU HT49R50A-1的匯編語言,希望透過程序模塊的分享以達到共同討論的目的。

    RFID是英文“Radio Frequency Identification”的縮寫,中文名稱為「無線射頻身份識別」是為目前相當受到重用的感應式電子芯片或是近接卡、感應卡、非接觸卡...等等,非接觸式自動識別技術的一種。是一種內建有無線電技術的芯片,芯片中還可紀錄一系列信息,如產品別、位置、日期等,最大的好處是能提高物品管理效率。

    目前市面上以使用條形碼,將物品的相關信息多記錄在條形碼上,而再以掃描儀掃瞄條形碼取得信息,而RFID只需在一定范圍內感應,并可一次讀取大量訊息。射頻識別系統(tǒng)(RFID)最早在1948年即被提出,利用無線電波傳送識別數據,達到身分識別的目的。無須接觸即可自動讀取及收集資料的一種科技,乃屬于自動資料搜集(Automated Data Collection, ADC)技術之一種,可無線讀取卷標信息。傳輸頻率分為低頻(LF:125~134KHz),高頻(HF:13.56MHz),超高頻 (UHF: 400~ 1000MHz),微波(Microwave; 1GHz以上),其中以超高頻之技術較先進且其穩(wěn)定度與應用效果較佳。

    于本文將介紹如何以MCU簡單的設計一個RFID的接收器,所使用的是為高頻(13.56 MHz)的頻域,于本文中的程序模塊是采用Holtek MCU HT49R50A-1的匯編語言來撰寫,希望透過程序模塊的分享以達到共同討論的目的。

    RFID的特性

    條形碼是一種只讀式的、需要對準標的、一次只能讀一個、且容易破損;而RFID是可擦寫的、使用時不需對準標的、同時可讀取多個、堅固全天候使用,可不需人力介入操作。RFID具有許多條形碼所難以達成的下列特性:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     

    () 數據的讀寫(Read Write)機能:只要通過RFID Reader即可不需接觸,直接讀取訊息至數據庫內,且可一次處理多個標簽,并可以將物流處理的狀態(tài)寫入標簽,供下一階段物流處理的讀取判斷之用。

    () 容易小型化和多樣化的形狀:RFID在讀取上并不受尺寸大小與形狀之限制,不需為了讀取精確度而配合紙張的固定尺寸和印刷品質。此外,RFID TAG更可往小型化與多樣型態(tài)發(fā)展,以應用在不同產品。

    () 耐環(huán)境性:紙張一受到臟污就會看不到,但RFID對水、油和藥品等物質卻有強力的抗污性。RFID在黑暗或臟污的環(huán)境之中,也可以讀取數據。

    () 可重復使用:由于RFID為電子數據,可以反復被覆寫,因此可以回收標簽重復使用。如被動式RFID,不需要電池就可以使用,沒有維護保養(yǎng)的需要。

    () 穿透性:RFID若被紙張、木材和塑料等非金屬或非透明的材質包覆的話,也可以進行穿透性通訊。不過如果是鐵質金屬的話,就無法進行通訊。

    () 數據的記憶容量大:數據容量會隨著記憶規(guī)格的發(fā)展而擴大,未來物品所需攜帶的資料量愈來愈大,對卷標所能擴充容量的需求也增加,對此RFID不會受到限制。為期


    RFID所使用的頻率介紹

    為避免各國無線電頻率使用標準不一,造成使用上的混亂與困擾,國際上大多遵守國際電信聯合會(ITU)的規(guī)范。目前RFID使用的頻率有6種,分別為135KHz以下、13.56MHz、433.92MHz、860M~930MHz(即UHF)、2.45GHz以及5.8GHz,其各有特色和缺陷。135KHz以下傳輸距離短約10公分左右,通訊速度慢。此頻段在絕大多數的國家屬于開放,不涉及法規(guī)開放和執(zhí)照申請的問題,因此使用最廣,主要使用在寵物、門禁管制和防盜追蹤。 13.56MHz薄化的效果最佳傳輸距離為1公尺以下,代表性應用為會員卡、識別證、飛機機票和建筑物出入管理,通訊距離10公分左右的近距離非接觸式IC卡發(fā)展快速。

    RFID系統(tǒng)的基本架構

    RFID的基本組成組件及其主要的功能為:
    •讀取器:負責讀/寫電子卷標上的數據。
    • 電子卷標/卡(Transponder; Tag):分為被動與主動兩種結構如圖1所示,如表1所示主要負責除存被識別物的相關資料,如品號,品名,規(guī)格等等,可以藉由讀取器來偵測,另外于表2所示則為頻率與Tag的關系及被使用的特性。
    •計算機:負責系統(tǒng)平臺的操作,將RFID的讀取器與計算機系統(tǒng)整合就可以偵測到物品的移動狀況和信息。

    圖1 Tag的基本結構

    等級(Class)

    內存

    電源

    特性

    應用領域

    Class 0

    被動式的感應偶合

    1位的Tag

    EAS商品防竊

    Class 1

    只讀式

    被動式的感應偶合

    只能寫入一次

    EPC識別碼

    Class 2

    /寫式

    被動式的感應偶合

    可編密碼

    EPC識別碼

    Class 3

    /寫式

    半被動式內建有電源

    接收能量才讀寫

    環(huán)境感應型

    Class 4

    /寫式

    主動式內建有電源

    多任務Tag讀寫

    智能型

    Class 5

    /寫式

    主動式內建有電源

    具有上述的綜合

    遠距無線網絡

    1 Tag的等級分類表

     


    頻率 
     

    低頻(LF 125 KHz

    高頻
    HF; 13.56 MHz

    超高頻(UHF; 860-930 MHz

    微波(2.45- 5.8 MHz

    性統(tǒng)型態(tài)

    被動式

    14443

    15693

    被動式

    主動式

    被動式

    主動式

    讀取距離

    <0.5m

    <0.5m

    <1.5m

    3-10m

    >10m

    3-10m

    >10m

    內存bytes

    64-1k

    8k-128k

    256k-512k

    64k-512k

    -

    16k-64k

    -

    傳輸功率

    72dBμA/m

    42dBμA/m

    10mW-4W

    4W(USA)0.5W

    讀取方法

    感應線圈

    感應線圈

    電容式電場效應

    電容式電場效應

    讀取速度

    ←→

    環(huán)境適應性

    ←→

    尺寸

    ←→

    2 Tag與頻率的關系

     

    RFID的應用領域


    RFID之應用相當廣泛,最常見的應用為:
    * 門禁管制:人員出入門禁監(jiān)控、管制及上下班人事管理
    * 回收資產:棧板、貨柜、臺車、籠車等可回收容器管理
    * 貨物管理:航空運輸的行李識別,存貨、物流運輸管理
    * 物料處理:工廠的物料清點、物料控制系統(tǒng)
    * 廢物處理:垃圾回收處理、廢棄物管控系統(tǒng)
    * 醫(yī)療應用:醫(yī)院的病歷系統(tǒng)、危險或管制之生化物品管理
    * 交通運輸:高速公路的收費系統(tǒng)
    * 防盜應用:超市的防盜、圖書館或書店的防盜管理
    * 動物監(jiān)控:畜牧動物管理、寵物識別、野生動物生態(tài)的追蹤
    * 自動控制:汽車、家電、電子業(yè)之組裝生產
    * 聯合票證:聯合多種用途的智能型儲值卡、紅利積點卡

    以下對幾個應用作深入的介紹說明:

    一般消費品
    實務應用:從倉儲到商品架的有效管理長久以來,消費品制造商一直苦于如何將適切的產品,在適當的時間運交給適當的零售商。而藉由 RFID 解決方案,制造商可以有效追蹤貨品,管理庫存水準,并維持適當的庫存量以滿足零售商的需求。導入 RFID 解決方案后,工廠內的貨品棧板無需人工檢視可直接運出,取貨疏失的情形減少,退貨管理的效率提升,又免了實際的存貨盤點作業(yè),廠商可以降低人事成本。

    零售業(yè)
    實務應用:協(xié)助提升獲利能力,在零售業(yè),競爭慘烈、資本成本高,消費者的反復無常也是眾所周知,想要維持獲利率,特別艱難。從增加銷售額、改善促銷活動到降低失竊率,零售業(yè)者必須全心全力尋找創(chuàng)新的方式才能提升利潤。

    制藥業(yè)
    實務應用:在嚴格管制的環(huán)境中提高生產效率,制藥業(yè)者除了在發(fā)展及配銷藥品等方面。

    物流業(yè)
    實務應用:發(fā)揮貨運及配送流程的最高效率除了倉儲,貨柜場也可以利用 RFID 方案來建立高效率的配送及貨運流程。將商品從消費性產品業(yè)者運交到零售商的流程,是供應鏈中絕不可缺少的一環(huán)。

    運輸業(yè)
    實務應用:密切監(jiān)控運輸中的資產,RFID 可用來追蹤載貨卡車與軌道車輛的位置,也可以收集在特定地點的貨運車輛上最新存貨數字。實際出貨期間,RFID
    可以根據貨車所在的最新地點追蹤商品,并監(jiān)督這些貨運車輛所載送的商品明細
    實務應用:密切監(jiān)控運輸中的資產,RFID 可用來追蹤載貨卡車與軌道車輛的位置,也可以收集在特定地點的貨運車輛上最新存貨數字。實際出貨期間,RFID 可以根據貨車所在的最新地點追蹤商品,并監(jiān)督這些貨運車輛所載送的商品明細。

    接收器的制作及程序

    于圖2所示為RFID接收器的結構圖,是由Holtek MCU HT49R50A-1所控制,由于RFID的技術目前尚處于商業(yè)保密期,故于短時間內可能無法公開時感抱歉,有關系統(tǒng)的程序模塊,主要有三大部分所成如圖3所示,分別為主程序是為負責:鍵的掃描,LCD顯示,聲響,LED指示,以及RFID中的Tag數據的核對。外部中斷子程序為負責計數的管理;最后主中斷子程序的控制主要負責計數移位,數據接收等工作。相關的處和語言的詳列及說明如圖4。

    圖2 RFID 接收器的實際電路圖

     

    圖3 程序流程圖

    于圖2所示為本文中所舉RFID接收器范例的實際電路圖,程序使用一組Timer及一組External Interrupt來搭配接收RFID Data,其中應特別注意的是所使用的外部Clock Sounce需要精準,以達到接收數據的穩(wěn)定性及正確性。于圖3所示為程序的設計流程,所設計的程序如圖4所示。 .

    ODE    .SECTION        AT 00H  'CODE'

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

                 ;--- START 開始副程式  ---

                    ORG     00H

                    JMP     START

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

                 ;--- INT0 中斷0副程式 ---

                    ORG     04H

                 JMP EXTERNAL_INTERRUPT0

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

                 ;--- INT1       中斷1副程式---

                    ORG     08H

                 JMP EXTERNAL_INTERRUPT1

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

                 ;--- TIMER 0 計時器0副程式      ---

                 ORG 0CH

                 JMP TIMER0_INT

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

                 ;--- TIMER 1 計時器1副程式  ---

                 ORG 010H

                 JMP TIMER1_INT

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

                 ;--- TB  ---

                 ORG 014H

                 RETI

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

                 ;--- RTC ---

                 ORG 018H

                 RETI

                 ORG 020H

    ;================================

    ;=

    ;=          INT PROGRAM

    ;=

    ;===============================

    ;=

    ;=    TIMER 0 INTERRUPT 100uS

    ;=

    ;===============================

    TIMER0_INT:

                 MOV S_ACC,A              ;SAVE ACC&STATUS TO MEMORY

                 MOV A,STATUS          ;push pop

                 MOV S_STA,A

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

                 RL   M_DATA_BUFFER        ;EVERY 100uS SHIFT LEFT ONCE

                 SNZ P_RFID_DATA

                 JMP RFIDGETDATA0

    RFIDGETDATA1:

                 CLR M_DATA_BUFFER.0            ;RECEIVER DATA "1"

                 JMP CHECK_RFID_LEADING_CODE

    RFIDGETDATA0:

                 SET M_DATA_BUFFER.0            ;RECEIVER DATA "0"

    CHECK_RFID_LEADING_CODE:

                 SZ   F_RFID_1ST_OK

                 JMP BIT8_RECEIVER

                 MOV A,098H               ;FIRST ID 98H

                 XOR A,M_DATA_BUFFER           ;CHECK LEAD CODE

                 SNZ Z

                 JMP RESET_TIMER0

                 SET F_RFID_1ST_OK

                 MOV A,12

                 MOV M_RFID_BYTES_COUNT,A   ;TOTAL DATA 12 BYTES

                 MOV A,0F3H

                 MOV MP0,A

    SAVE_RF_ID_DATA:

                 INC MP0

                 MOV A,M_DATA_BUFFER

                 MOV R0,A

                 CLR M_DATA_BUFFER

                 SDZ M_RFID_BYTES_COUNT

                 JMP RESET_TIMER0

                 CLR F_RFID_1ST_OK

                 ;

                 CALL     CRC_CHECK_PROCESS      ;CHECK CRC

                 SNZ ACC.0                 ;ACC=FFH DATA OK

                 JMP TIMER0_INT_END

                 SET F_RFID_RX_OK

                 JMP TIMER0_INT_END

    BIT8_RECEIVER:

                 SDZ M_ROTATE_COUNT

                 JMP RESET_TIMER0

                 MOV A,08

                 MOV M_ROTATE_COUNT,A

                 JMP SAVE_RF_ID_DATA

                 ;

    RESET_TIMER0:

                 CLR TMR0C.4                   ;TIMER0 COUNTING 100uS

                 MOV A,154                  ;TIMR0 100uS TIMEOUT FOR RFID

                 MOV TMR0,A

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

    TIMER0_INT_END:

                 MOV A,S_STA              ;RELOAD ACC&STATUS

                 MOV STATUS,A           ;Pop acc Status Regiter

                 MOV A,S_ACC

                 RETI

          ;===============================

          ;=

          ;=    EXTERNAL_INTERRUPT 0

          ;=

          ;===============================

    EXTERNAL_INTERRUPT0:

                 SNZ       F_RFID_RX_OK

                 SET       TMR0C.4             ;Enable TIMER0 START COUNTING 100uS

                 RETI

    ;=============================================================

    ;=

    ;=          MAIN PROGRAM

    ;=

    ;=============================================================

    START:

           ;--- POWER ON RESET ---

                 MOV       A,11111111B ;I/O port initial

                 MOV       PA,A

                 MOV       A,11111111B

                 MOV       PB,A

                 MOV       A,11111111B

                 MOV       PC,A

                 ;--- TIMER 0 ---

                 MOV       A,159            ;Initial TIMR0 100uS TIMEOUT FOR RFID Receiver

                 MOV       TMR0,A

                 MOV       A,10100000B

                 MOV       TMR0C,A

     

                 ;--- TIMER 1 ---

                 MOV       A,56            ;TIMR1 FOR MAIN LOOP

                 MOV       TMR1,A

                 MOV       A,10110000B

                 MOV       TMR1C,A

        ;--- INT 0,1 ---

                 MOV       A,00001001B

                 MOV       INTC0,A       ;Enable Mcu interrupt founction

                 MOV       A,00000101B

                 MOV       INTC1,A

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

          ;---- CLEAR WORK RAM ----

                 CALL     CLEAR_RAM        ;CLEAR MCU RAM

         ;==========================

                 ;=  MAIN

                 ;==========================

    MAIN:

          ;------- MAIN LOOP 20MS ---------

                 SNZ       F_20MSTIMEOUT

                 JMP       MAIN

                 CLR       F_20MSTIMEOUT ;MAIN LOOP 20MS FOR CYCLE

          ;*********************************

          ;----- Make some function --------

          ;ex:

          ;       CALL    KEY_SCAN

          ;      CALL     SHOW_LCD

          ;      CALL     BEEP_SOUND

          ;      CALL     SHOW_LED

                 JMP MAIN

    ;===============================================

    圖4系統(tǒng)程序語言

     

    結語

        整體看來,RFID無線射頻身份識別系統(tǒng)在未來的發(fā)展在很多的產業(yè)都是相當被看好的,雖然目前該技術有一些潛在問題,但科技的發(fā)達日新月異,相信要克服RFID的種種隱憂,所需要的也只是時間上的問題而已。舉例說隱私權問題,現正研發(fā)自毀型卷標或消磁型卷標來解決這問題;配合奈米技術所研發(fā)適用于特殊物品的超小型標簽;還有WhereNet新版物流管理軟件可支持物流業(yè)者使用RFID系統(tǒng)。因此我們可以預見RFID將會促使相當多產業(yè)產生一場大的變革。然而RFID對印刷產業(yè)有多大的影響呢?是否會為印刷產業(yè)帶來重大的商機嗎?從上述文章的內容,相信在可預見的未來,不論是各式產品包裝盒、食物外包裝或是圖書雜志里,只要是目前有條形碼標簽的印刷品上,將來就會有RFID的身影,甚至沒有條形碼標簽的也可能會有RFID。所以不論是印制包裝外盒的業(yè)者(厚紙)或是印制書籍雜志的業(yè)者(薄紙)都應會產生影響,尤其是對目前專門印制條形碼卷標或是條形碼報表的業(yè)者所產生的影響更大。目前使用的RFID的天線部份,都是使用銅片制作,黏貼在一般自黏標簽上,再轉貼到所需的位置上。希望將來RFID的天線部份以印刷方式印上,就如同目前印制條形碼一般。

    本文關鍵詞:RFID閱讀器的驅動程序撰寫
    回到頂部