精品人妻伦一区二区三区久久,狼友av永久网站免费极品在线,欧美日韩黄色大片,香港三日本8a三级少妇三级99

單片機(jī)與RFID的非接觸式讀卡器軟件設(shè)計

來源:譽澄智能 2012/4/30 12:43:27??????點擊:

單片機(jī)與RFID的非接觸式讀卡器軟件設(shè)計

 一、背景
  隨著中國物聯(lián)網(wǎng)熱的興起,人們對物聯(lián)網(wǎng)的興趣也極大的增加,各種對物聯(lián)網(wǎng)應(yīng)用的研究也逐步展開。所謂“物聯(lián)網(wǎng)”(Internet of Things),指的是將各種信息傳感設(shè)備,如射頻識別(RFID)裝置、紅外感應(yīng)器、全球定位系統(tǒng)、激光掃描器等種種裝置與互聯(lián)網(wǎng)結(jié)合起來而形成的一個巨大網(wǎng)絡(luò)。其目的,是讓任何物品都與網(wǎng)絡(luò)連接在一起,方便識別和管理。 物聯(lián)網(wǎng)是利用無所不在的網(wǎng)絡(luò)技術(shù)建立起來的。
  其中非常重要且應(yīng)用得最為廣泛的的是RFID技術(shù)。RFlD是射頻識別技術(shù)(Radio Frequency denti-fieation)的英文縮寫,又稱電子標(biāo)簽,是一項利用射頻信號通過空間耦合(交變磁場或電磁場)實現(xiàn)無接觸信息傳遞并通過所傳遞的信息達(dá)到識別目的的技術(shù)。RFID具備自動識別的能力,而且能夠應(yīng)用到任何物體上. RFlD又可分為接觸式與非接觸式兩種. 非接觸式刷卡方便,安全性能高.故其應(yīng)用越來越廣泛。
  射頻識別技術(shù)具有很多突出的優(yōu)點:第一,安全性高。適合于高安全性的終端。數(shù)據(jù)安全方面除電子標(biāo)簽的密碼保護(hù)外,數(shù)據(jù)部分可用一些算法實現(xiàn)安全管理。讀寫器與標(biāo)簽之間存在相互認(rèn)證的過程。可實現(xiàn)安全通信和存儲,讀寫器具有不直接對最終用戶開放的物理接口,可保證其自身的安全性:第二。可同時識別多個電子標(biāo)簽;第三,無機(jī)械磨損。壽命長。并可工作于各種油漬、灰塵污染等惡劣的環(huán)境;第四,非接觸操作,完成識別工作時無需人工干預(yù)。應(yīng)用便利。正是因為具有這些優(yōu)點,使RFID的應(yīng)用在近年來如火如荼。為了使復(fù)雜的RFID系統(tǒng)簡化。筆者設(shè)計了基于單片機(jī)與MF RC500型讀卡器的低成本無源RFID系統(tǒng)。系統(tǒng)外部接口為串口,使得包括PC在內(nèi)的有串口的設(shè)備可以方便地與它相連。對RFID的推廣有重要意義。
  二、方案及元器件選擇
  本次讀卡器的RFID芯片上我選擇了Philip公司的mifare技術(shù)及其芯片MF RC500, 它目前占據(jù)世界非接觸式IC卡市場80%的份額,具有方案成熟,價資料全面的優(yōu)點格低廉。
  隨著半導(dǎo)體技術(shù)的進(jìn)步,單片機(jī)成為功能越來越強(qiáng)的片上系統(tǒng)SOC,正向小型化,低功耗及模數(shù)混合的方向發(fā)展,使其在通用小型化系統(tǒng)中成為處理器的首選.而51系列單片機(jī)更是其中最為典型,應(yīng)用最為廣泛,最穩(wěn)定的一系列產(chǎn)品.
  因此,在本次非接觸式IC讀卡器的設(shè)計上我選擇了atmel公司生產(chǎn)的89c51單片機(jī).它是一種帶4k字節(jié)可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS8位微處理器。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器。它結(jié)構(gòu)穩(wěn)定,技術(shù)成熟,資料全面,價格低廉.89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。
  89c51系列單片機(jī)與MF RC500的組合已有許多成熟的方案,資料眾多,便于實現(xiàn) 。
  三、系統(tǒng)硬件設(shè)計
  1、系統(tǒng)工作概述
  非接觸式卡讀IC卡器硬件電路包括以下部分:控制器,mifare讀寫芯片,天線匹配電路,天線,RS232通信電路,分為電路,電源電路,LED狀態(tài)顯示和蜂鳴器驅(qū)動電路等。
  RFID標(biāo)簽由耦合元件及電路組成,其發(fā)射電波及內(nèi)部處理器運行所需能量均來自閱讀器產(chǎn)生的電磁波。無源標(biāo)簽接收到閱讀器發(fā)出的電磁波信號后。將部分電磁能量轉(zhuǎn)化為供自己工作的能量。每個電子標(biāo)簽具有全球惟一的識別號(ID),無法修改、無法仿造,保證了安全性。電子標(biāo)簽中保存有約定格式的電子數(shù)據(jù)。
  天線在標(biāo)簽和閱讀器間傳遞射頻信號。即標(biāo)簽的數(shù)據(jù)信息。
  RFID閱讀器是讀取(或?qū)懭?電子標(biāo)簽信息的設(shè)備。閱讀器可無接觸地讀取并識別電子標(biāo)簽中所保存的電子數(shù)據(jù)。能自動識別物體。閱讀器通過網(wǎng)口與計算機(jī)相連。將讀取的標(biāo)簽信息傳送到計算機(jī)上。進(jìn)行下一步處理。
  2、MF RC500的特點
  Philips公司的MF RC500型讀卡器是應(yīng)用于13。56 MHz非接觸式通信的高集成讀卡IC系列中的一員。該讀卡IC系列利用先進(jìn)的調(diào)制和解調(diào)概念。完全集成了在13。56 MHz下所有類型的被動非接觸式通信方式和協(xié)議。MF RC500支持IS014443A所有的層。內(nèi)部的發(fā)送器部分不需要增加有源電路就能夠直接驅(qū)動近操作距離的天線(可達(dá)100 mm):接收器部分提供一個堅固而有效的解調(diào)和解碼電路,用于IS014443兼容的應(yīng)答器信號;數(shù)字部分處理IS014443A幀和錯誤檢測(奇偶&CRC)。此外,它還支持快速CRYPTOI加密算法,用于驗證Mifare系列產(chǎn)品。方便地并行接口可直接連接到任何8位微處理器。給閱讀器的設(shè)計提供了極大的靈活性。。MF RC500可方便的用于各種基于ISO/IEC 14443A標(biāo)準(zhǔn)并且要求低成本、小尺寸、高性能以及單電源的非接觸式通信的應(yīng)用場合。
  3、MF RCS00的功能
  MF RC500內(nèi)部包括并行微控制器接口、雙向。FIFO緩沖區(qū)、中斷、數(shù)據(jù)處理單元、狀態(tài)控制單元、安全和密碼控制單元、模擬電路接口及天線接口。MF RC500的外部接口包括數(shù)據(jù)總線、地址總線、控制總線(包含讀寫信號和中斷等)和電源等。MF RC500的并行微控制器接口自動檢測連接的8位并行接口的類型。它包含一個易用的雙向FIFO緩沖區(qū)和一個可配置的中斷輸出,為連接各種MCU提供了很大的靈活性。即使采用成本非常低的器件也能滿足高速非接觸式通信的要求。數(shù)據(jù)處理部分執(zhí)行數(shù)據(jù)的并行一串行轉(zhuǎn)換。支持的幀包括CRC和奇偶校驗。MF RC500以完全透明的模式進(jìn)行操作。因而支持IS014443A的所有層。狀態(tài)和控制部分允許對器件進(jìn)行配置以適應(yīng)環(huán)境的影響,并將性能調(diào)節(jié)到最佳狀態(tài)。當(dāng)與Mifare Standard和Mifare通信時,使用高速CRYPTOI流密碼單元和一個可靠的非易失性密匙存儲器。模擬電路包含一個具有阻抗非常低的橋驅(qū)動器輸出的發(fā)送部分。這使得最大操作距離可達(dá)100 mm。接收器可以檢測到并解碼非常弱的應(yīng)答信號。
  根據(jù)RFID原理和MF RC500的特性,可設(shè)計基于AT89C51和MF RC500的REID閱讀器系統(tǒng)。
  系統(tǒng)主要由AT89C51、MF RC500、時鐘電路、看門狗、MAX232和矩陣鍵盤等組成。系統(tǒng)的工作方式是先由。MCU控制MF RC500驅(qū)動天線對Mifare卡也就是對應(yīng)答器(PICC)進(jìn)行讀寫操作,然后與PC通信,把數(shù)據(jù)傳給上位機(jī)。主控電路采用AT89C51,因為AT89C51的開發(fā)簡單、快捷。運行穩(wěn)定。采用ATMEL的AT24C256型。12C總線EEPROM存儲系統(tǒng)的數(shù)據(jù)。為了防止系統(tǒng)“死機(jī)”.使用MAX813作為看門狗來實現(xiàn)系統(tǒng)上電復(fù)位、按鍵的熱重啟及電壓檢測等。與上位機(jī)的通信采用RS一232方式,整個系統(tǒng)由9V電源供電。再由穩(wěn)壓模塊7805穩(wěn)壓成5V的電源。
  MF RC500和單片機(jī)AT89C51都是采用標(biāo)準(zhǔn)TTL電平,不需電平轉(zhuǎn)換。單片機(jī)AT89C51與PC串口電平不匹配。使用MAX232型電平轉(zhuǎn)換器進(jìn)行電平轉(zhuǎn)換。
  4、系統(tǒng)天線設(shè)計
  MF RC500的非接觸式天線接口使用4個引腳。
  為了驅(qū)動天線,MF RC500通過TXl和TX2提供13。56 MHz的能量載波。根據(jù)寄存器的設(shè)定對發(fā)送數(shù)據(jù)進(jìn)行調(diào)制來得到發(fā)送的信號。S50卡采用RF場的負(fù)載調(diào)制進(jìn)行響應(yīng)。天線拾取的信號經(jīng)過天線匹配電路送到RX腳。MF RC500的內(nèi)部接收器對信號進(jìn)行檢測和解調(diào)并根據(jù)寄存器的設(shè)定進(jìn)行處理。然后數(shù)據(jù)發(fā)送到并行接口。由微控制器進(jìn)行讀取。MF RC500對驅(qū)動部分使用單獨電源供電。
  一般的天線設(shè)計要達(dá)到如下要求:
  1)使天線線圈的電流最大,用于產(chǎn)生最大的磁通量;2)功率匹配。以最大程度地利用產(chǎn)生磁通量的可用能量;3)足夠的帶寬。以便無失真地傳送用數(shù)據(jù)調(diào)制的載波信號。天線是有一定負(fù)載阻抗的諧振回路。閱讀器又具有一定的源阻抗。為了獲得最佳性能,必須通過無源的匹配回路將線圈阻抗轉(zhuǎn)換為源阻抗。然后,通過同軸線纜即可無損失且無輻射地將功率從讀寫器末級傳送到匹配電路。
  為了節(jié)約成本和減小系統(tǒng)體積。本系統(tǒng)采用PCB板天線設(shè)計。品質(zhì)因數(shù)Q是一個很重要的參數(shù)。用于電感耦合式射頻識別系統(tǒng)的天線,其特征值就是它的諧振頻率和品質(zhì)因數(shù)。較高的品質(zhì)因數(shù)值會增加天線線圈中的電流強(qiáng)度,由此改善對RFID卡的功率傳送。與之相反,天線的傳輸帶寬剛好與品質(zhì)因數(shù)值成反比例變化,選擇的品質(zhì)因數(shù)過高會導(dǎo)致帶寬縮小。從而明顯地減弱卡片接收到的調(diào)制邊。品質(zhì)因數(shù)可以通過電感線圈電抗與電阻的比值計算出來,公式:Q=(coaxLm)/RANT
  四、系統(tǒng)軟件設(shè)計
  1、系統(tǒng)的工作方式
  硬件掉電階段
  以下三種情況導(dǎo)致系統(tǒng)掉電階段有效:(1)DVDD引腳電壓上升導(dǎo)致上電復(fù)位。(2)AVDD引腳電壓上升導(dǎo)致上電復(fù)位。(3)RSTPD引腳為高電平。
  (1)復(fù)位和復(fù)位響應(yīng)
  復(fù)位和復(fù)位響應(yīng)是根據(jù)ISO/IEC 10536-1標(biāo)準(zhǔn)來進(jìn)行的, 在操作期間的任意時候都可以復(fù)位開始地址計數(shù)器隨一個時鐘脈沖而被設(shè)置為零。復(fù)位階段需要512個時鐘周期,在復(fù)位階段,一些寄存器由硬件預(yù)設(shè)。如果使用內(nèi)部晶振,需要注意他是由AVDD供電,需要一點時間等到晶振穩(wěn)定。當(dāng)RST 線從高狀態(tài)(H)置到低狀態(tài)(L)時,第一個數(shù)據(jù)位(LSB)的內(nèi)容被送到I/O上,若連續(xù)輸入32個時鐘脈沖,主存儲器中的前四個字節(jié)地址單元中的內(nèi)容被讀出在第33 個始終脈沖的下降沿I/O線被置成高狀態(tài)而關(guān)閉。
  (2)命令模式
  復(fù)位響應(yīng)以后,芯片等待著命令每條命令都以一個啟動狀態(tài)開始整個命令,包括3 個字節(jié)隨后緊跟著一個附加脈沖,并用一個停止?fàn)顟B(tài)來結(jié)束操作。
  啟動狀態(tài):在CLK 為高狀態(tài)(H 狀態(tài))期間I/O 顯得下降沿為啟動狀態(tài)。
  停止?fàn)顟B(tài):在CLK 為高狀態(tài)(H 狀態(tài))期間I/O 顯得上升沿為停止?fàn)顟B(tài)。
  在接受一個命令之后有兩種可能的模式輸出數(shù)據(jù)模式(即讀數(shù)據(jù))和處理數(shù)據(jù)模式。注:IFD (INTERFACE DEVICE)指接口設(shè)備。
  (3)輸出模式
  輸出數(shù)據(jù)模式是將IC 卡芯片中的數(shù)據(jù)傳送個外部設(shè)備接口(IFD)的一種操作 ,在第一個CLK 脈沖的下降沿之后I/O 線上的第一位數(shù)據(jù)變?yōu)橛行?,隨后每增加一個時鐘脈沖芯片內(nèi)部的一位數(shù)據(jù)被送到I/O 線上,其傳送順序從每個字節(jié)的最低位(LSB)開始。當(dāng)所需要的最后一個數(shù)據(jù)送出以后,需要在附加一個時鐘脈沖來把I/O 置成高狀態(tài)以便接受新的命令。在輸出數(shù)據(jù)期間任何啟動狀態(tài)和停止?fàn)顟B(tài)均被屏蔽掉。
  (4)讀操作
  基站產(chǎn)生固定間隙的射頻振蕩,并通過控制兩個間隙之間的振蕩時間對位數(shù)據(jù)"1"和位數(shù)據(jù)"0"進(jìn)行編碼,持續(xù)地發(fā)送位數(shù)據(jù)流,完成寫操作。 
  (5) 時鐘特性
  MF RC500包含一個TIMER, TIMER的主要部分是一個自減計數(shù)器值不為0,就會在時鐘控制下做自減操作。如果AutoRestart置1,則TIMER不會自減到0。當(dāng)TIMER計數(shù)到1時會在下一個時鐘自動加載TimerReolad寄存器的值。
  TIMER時鐘由芯片13.56 MHz時鐘分配得到。由TpreScaler寄存器決定分頻數(shù):
  TpreScaler寄存器范圍從0到21,對應(yīng)T從74ns到150ms。從上一個開始時間到目前的時間范圍為74ns到40s。
  2、單片機(jī)軟件設(shè)計
  下位機(jī)程序主要包括對MF RC500進(jìn)行初始化、接收上位計算機(jī)的指令、控制MF RC500,并且把MF RC500的狀態(tài)信息反饋給計算機(jī)。MCU對Mifare1卡操作的命令主要有空操作、裝載密碼、驗證密碼、讀卡、寫卡和關(guān)卡等。無論哪種操作都必須先把命令代碼寫入到Command寄存器,比如執(zhí)行驗證密碼則需要執(zhí)行WriteRC(RegCommand,0x0c)命令。
  整個系統(tǒng)的工作由對Mifare卡操作和系統(tǒng)后臺處理兩大部分組成。由于篇幅有限,本文只介紹對Mifare卡操作流程。Mifare卡的操作可以分為以下幾項:
 ?。?)復(fù)位請求
  當(dāng)一張Mifare卡處在讀寫器的天線的工作范圍之內(nèi)時,復(fù)位請求開始工作,并按以下步驟進(jìn)行操作:
  1)讀寫器向卡片發(fā)出Request all(或Request std)命令。Request all指令是連續(xù)性的讀卡指令。Request all指令是非連續(xù)性的讀卡指令,只讀一次。
  2)Request all指令在成功地讀取一張卡片之后,會一直等待使用者拿走這一張卡片,直到有新一張卡片進(jìn)入MF的天線有效工作范圍之內(nèi)
  3)卡片的ATR將啟動,將卡片Block 0中的卡片類型(TagType)號共2個字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。
  具體代碼如下:
  void SerialIRQ() interrupt 4
  {   if(RI){RI=0;
  if(SBUF=='[')//開始接收
  point_in=0;
  else if(!Request all)
  { Request std[point_in]=SBUF;} // 放入緩沖
  (2)反碰撞操作
  如果有多張Mifare卡片處在卡片讀寫器的天線的工作范圍之內(nèi)時,讀卡器將:
  1)與每一張卡片進(jìn)行通信,取得每一張卡片的系列號。由于每一張Mifare卡片都具有其唯一的序列號,決不會相同。
  2)讀卡器根據(jù)卡片的序列號來保證一次只對一張卡操作。
  3)讀卡器得到PICC的返回值為卡的序列號。
 ?。?)卡選擇操作步驟
  1) MCU向MF RC500發(fā)送“SELECT”命令。
  2)同時在“AntiCollision”操作中得到Mifare 1卡片的40bit長的序列號的前四個字節(jié)以及前四個字節(jié)的異或結(jié)果。
  3)同時再重新發(fā)送給Mifare 1卡,只有本身的序列號和接收的序列號相同的卡片才被真正地選中。
  4)Select指令成功執(zhí)行后,MCU將得到DATA寄存器傳來的一個字節(jié)長的卡片容量信息(SIZE字節(jié))。SIZE字節(jié)被存儲在Mifare 1卡片上的第00H扇區(qū)中的第00H 塊中。
  (4)認(rèn)證操作步驟
  1)設(shè)置密碼控制寄存器KEYSTACON,使AL=1。
  2)然后設(shè)置KS0和KS1以指定一套密碼集。
  3設(shè)置密碼地址寄存器KEYADDR。
  4)通過寫"Authentication" 認(rèn)證命令代碼和寫“地址”(Mifare 1卡要認(rèn)證的扇區(qū)地址是0~15)到DATA寄存器。如果三遍認(rèn)證的每一個環(huán)都為“真”,且都能正確通過驗證,則整個認(rèn)證成功。這時讀寫器即可對剛剛認(rèn)證通過的卡片上的這個扇區(qū)進(jìn)行下一步READ/WRITE 等操作。
 ?。?)讀寫操作步驟
  1)“Authentication” 認(rèn)證指令完成。
  2)對數(shù)據(jù)扇區(qū)或數(shù)據(jù)塊進(jìn)行“Write”寫指令操作。
  3)完成數(shù)據(jù)塊的初始化。
  3、MF RC500編程方法
  除了復(fù)位以外。對MF RC500的絕大多數(shù)控制是通過讀寫MF RC500的寄存器來實現(xiàn)的。MFRC500共有64個寄存器,分為8個寄存器頁,每頁8個。每個寄存器都是8位。單片機(jī)將這些寄存器作為片外RAM進(jìn)行操作。最常用的是FIFODATA(數(shù)據(jù)堆棧)、COMMAND(命令)、FIFOLENGTH(堆棧長度)和PRIMARYSTATUS(標(biāo)記)等。要實現(xiàn)某個操作。只需將該操作對應(yīng)的代碼寫入對應(yīng)地址即可。例如MF RC500休眠模式對應(yīng)的控制寄存器名為Contr01,地址為09H的bit4且為1有效,那么讓MFRC500進(jìn)入休眠模式只需要將Contr01寫入0x10即可。
  當(dāng)對應(yīng)的RFlD卡S50進(jìn)入閱讀器的有效范圍時,天線的能量使RFID卡耦合出自身工作的能量,并建立通信。MF RC500對卡的操作主要是通過寫通訊命令、參數(shù)和數(shù)據(jù)到FIFODATA,再通過寫命令到120MMAND,實現(xiàn)與RFID卡的通訊。
  工程中用到的函數(shù)主要有:系統(tǒng)初始化、驗證密碼、復(fù)位射頻卡、認(rèn)證狀態(tài)、防重疊認(rèn)證、讀?。停桑疲粒遥趴?、寫EEprom、蜂鳴器響、命令執(zhí)行標(biāo)志置1、沖掉FIFO等。其他就不一一列舉了。很多函數(shù)只是在基本的讀寫寄存器操作的基礎(chǔ)上做了一個封裝,使得調(diào)用起來更加方便,這種模塊化的程序設(shè)計方法在項目中得到了很好的體現(xiàn)。
  五、結(jié)束語
  物聯(lián)網(wǎng)的研究以及應(yīng)用涉及到很多方面,本著專而精的原則,再加上時間的限制,我選擇了應(yīng)用最為廣泛,且最貼近人們?nèi)粘I畹幕趩纹瑱C(jī)與非接觸式IC射的頻讀卡器作為本次的課題。本文介紹了基于Philips公司MF RC500型芯片和atmel公司AT89c51型單片機(jī)的RFID閱讀器的低成本軟硬件設(shè)計。且重點放在這兩塊芯片的I/O接口設(shè)計及相互通信方面,對MF RC500與IC卡片之間的射頻通信及單片機(jī)與上位機(jī)之間的通信則未作過多的介紹。經(jīng)實踐驗證,本系統(tǒng)可成功實現(xiàn)對符合IS014443協(xié)議的MifareS50卡的讀寫,并且能對范圍內(nèi)的多個卡準(zhǔn)確無誤地讀寫,讀寫距離達(dá)到8 cm。本系統(tǒng)成本低廉,足協(xié)速度快,可靠性高,操作便利,可以方便地和包括PC在內(nèi)的有申口的設(shè)備連接。它可以作為簡單模塊與其他系統(tǒng)相連。對RFID的推廣有重要意義。
  通過本次課題的設(shè)計,我也從對單片機(jī)及射頻方面的知識一點也不懂進(jìn)步到對單片機(jī)的工作原理、接口設(shè)計、射頻的原理、系統(tǒng)的整合等都有一定了解。由于之前并沒有相關(guān)知識,所以平時主要以看書及查資料為主,邊查邊學(xué)習(xí),進(jìn)步較快。同時也認(rèn)識到要進(jìn)行一個項目一定要先進(jìn)行市場調(diào)查,全面把握,對各方面都要考慮到。