EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > RFID接收器的驅(qū)動程序撰寫
RFID的應(yīng)用領(lǐng)域
RFID之應(yīng)用相當(dāng)廣泛,最常見的應(yīng)用為:
* 門禁管制:人員出入門禁監(jiān)控、管制及上下班人事管理
* 回收資產(chǎn):棧板、貨柜、臺車、籠車等可回收容器管理
* 貨物管理:航空運(yùn)輸?shù)男欣钭R別,存貨、物流運(yùn)輸管理
* 物料處理:工廠的物料清點(diǎn)、物料控制系統(tǒng)
* 廢物處理:垃圾回收處理、廢棄物管控系統(tǒng)
* 醫(yī)療應(yīng)用:醫(yī)院的病歷系統(tǒng)、危險(xiǎn)或管制之生化物品管理
* 交通運(yùn)輸:高速公路的收費(fèi)系統(tǒng)
* 防盜應(yīng)用:超市的防盜、圖書館或書店的防盜管理
* 動物監(jiān)控:畜牧動物管理、寵物識別、野生動物生態(tài)的追蹤
* 自動控制:汽車、家電、電子業(yè)之組裝生產(chǎn)
* 聯(lián)合票證:聯(lián)合多種用途的智能型儲值卡、紅利積點(diǎn)卡
以下對幾個應(yīng)用作深入的介紹說明:
一般消費(fèi)品
實(shí)務(wù)應(yīng)用:從倉儲到商品架的有效管理長久以來,消費(fèi)品制造商一直苦于如何將適切的產(chǎn)品,在適當(dāng)?shù)臅r(shí)間運(yùn)交給適當(dāng)?shù)牧闶凵獭6逵?RFID 解決方案,制造商可以有效追蹤貨品,管理庫存水準(zhǔn),并維持適當(dāng)?shù)膸齑媪恳詽M足零售商的需求。導(dǎo)入 RFID 解決方案后,工廠內(nèi)的貨品棧板無需人工檢視可直接運(yùn)出,取貨疏失的情形減少,退貨管理的效率提升,又免了實(shí)際的存貨盤點(diǎn)作業(yè),廠商可以降低人事成本。
零售業(yè)
實(shí)務(wù)應(yīng)用:協(xié)助提升獲利能力,在零售業(yè),競爭慘烈、資本成本高,消費(fèi)者的反復(fù)無常也是眾所周知,想要維持獲利率,特別艱難。從增加銷售額、改善促銷活動到降低失竊率,零售業(yè)者必須全心全力尋找創(chuàng)新的方式才能提升利潤。
制藥業(yè)
實(shí)務(wù)應(yīng)用:在嚴(yán)格管制的環(huán)境中提高生產(chǎn)效率,制藥業(yè)者除了在發(fā)展及配銷藥品等方面。
物流業(yè)
實(shí)務(wù)應(yīng)用:發(fā)揮貨運(yùn)及配送流程的最高效率除了倉儲,貨柜場也可以利用 RFID 方案來建立高效率的配送及貨運(yùn)流程。將商品從消費(fèi)性產(chǎn)品業(yè)者運(yùn)交到零售商的流程,是供應(yīng)鏈中絕不可缺少的一環(huán)。
運(yùn)輸業(yè)
實(shí)務(wù)應(yīng)用:密切監(jiān)控運(yùn)輸中的資產(chǎn),RFID 可用來追蹤載貨卡車與軌道車輛的位置,也可以收集在特定地點(diǎn)的貨運(yùn)車輛上最新存貨數(shù)字。實(shí)際出貨期間,RFID
可以根據(jù)貨車所在的最新地點(diǎn)追蹤商品,并監(jiān)督這些貨運(yùn)車輛所載送的商品明細(xì)
實(shí)務(wù)應(yīng)用:密切監(jiān)控運(yùn)輸中的資產(chǎn),RFID 可用來追蹤載貨卡車與軌道車輛的位置,也可以收集在特定地點(diǎn)的貨運(yùn)車輛上最新存貨數(shù)字。實(shí)際出貨期間,RFID 可以根據(jù)貨車所在的最新地點(diǎn)追蹤商品,并監(jiān)督這些貨運(yùn)車輛所載送的商品明細(xì)。
接收器的制作及程序
于圖2所示為RFID接收器的結(jié)構(gòu)圖,是由Holtek MCU HT49R50A-1所控制,由于RFID的技術(shù)目前尚處于商業(yè)保密期,故于短時(shí)間內(nèi)可能無法公開時(shí)感抱歉,有關(guān)系統(tǒng)的程序模塊,主要有三大部分所成如圖3所示,分別為主程序是為負(fù)責(zé):鍵的掃描,LCD顯示,聲響,LED指示,以及RFID中的Tag數(shù)據(jù)的核對。外部中斷子程序?yàn)樨?fù)責(zé)計(jì)數(shù)的管理;最后主中斷子程序的控制主要負(fù)責(zé)計(jì)數(shù)移位,數(shù)據(jù)接收等工作。相關(guān)的處和語言的詳列及說明如圖4。
本文中所舉RFID接收器范例的實(shí)際電路圖,程序使用一組Timer及一組External Interrupt來搭配接收RFID Data,其中應(yīng)特別注意的是所使用的外部Clock Sounce需要精準(zhǔn),以達(dá)到接收數(shù)據(jù)的穩(wěn)定性及正確性。于圖3所示為程序的設(shè)計(jì)流程,所設(shè)計(jì)的程序如圖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 定時(shí)器0子程序 ---
ORG 0CH
JMP TIMER0_INT
;------------------
;--- TIMER 1 定時(shí)器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 ACCSTATUS 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 ACCSTATUS
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
;===============================================
評論