新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的射頻卡讀卡器設(shè)計(jì)

基于單片機(jī)的射頻卡讀卡器設(shè)計(jì)

作者: 時(shí)間:2012-02-08 來源:網(wǎng)絡(luò) 收藏

3.1 讀/寫控制程序
在本次中選用的是TI公司的疏耦合IC卡Tag-it HF-I,遵循ISO/IEC15693-3通信協(xié)議。讀/寫控制程序的具體過程如流程圖2所示。

本文引用地址:http://m.butianyuan.cn/article/172164.htm

b.jpg


時(shí)間寄存器主要用來設(shè)置數(shù)字解碼器的采樣點(diǎn),在對(duì)進(jìn)行其他操作前,需先對(duì)時(shí)間寄存器進(jìn)行初始化??C(jī)通信需在一定的時(shí)間內(nèi)完成,若在規(guī)定的時(shí)間內(nèi)檢測(cè)不到應(yīng)答信號(hào),則認(rèn)為無卡,具體通過TIME0定時(shí)器在規(guī)定的時(shí)間內(nèi)檢測(cè)SOF信號(hào)來實(shí)現(xiàn)。所以,首先要初始化TIME0定時(shí)器,并對(duì)TIME0開中斷,將讀命令串寫入命令發(fā)送緩沖區(qū),另外需要計(jì)算命令串的CRC驗(yàn)證碼(循環(huán)驗(yàn)證碼),接著存放命令串,最后調(diào)用發(fā)送模塊將其一起發(fā)送。發(fā)送命令時(shí)鐘由控制,接收時(shí)鐘由控制,因此在發(fā)送完命令串后接著要將時(shí)鐘控制權(quán)交還給,定時(shí)器TIME0開始計(jì)時(shí),檢測(cè)射頻卡發(fā)回的開始位信號(hào),如果在規(guī)定時(shí)間內(nèi)檢測(cè)不到信號(hào),定時(shí)器TIMER0便會(huì)發(fā)生溢出信號(hào),CP U相應(yīng)溢出中斷,進(jìn)入TIME0的中斷服務(wù)子程序,將無卡標(biāo)志位NOCARD置1,程序就會(huì)跳回,重新開始定時(shí)檢測(cè)。當(dāng)在計(jì)時(shí)范圍內(nèi)檢測(cè)到SOF信號(hào)時(shí),按照返回?cái)?shù)據(jù)格式,接收數(shù)據(jù)標(biāo)志(Flags)字節(jié)、安全狀態(tài)字節(jié)等相應(yīng)字節(jié)的數(shù)據(jù),最后接收結(jié)束位EOF。若數(shù)據(jù)標(biāo)志的最后一位為1,表明發(fā)送命令有誤,射頻卡會(huì)發(fā)送錯(cuò)誤類型標(biāo)識(shí)字節(jié),否則射頻卡會(huì)依次發(fā)送數(shù)據(jù),調(diào)用接收模塊,將接收的數(shù)據(jù)依次存放于接收緩沖區(qū),用于對(duì)用戶信息的核對(duì)。
在射頻卡讀/寫控制程序中,命令發(fā)送模塊和數(shù)據(jù)接收模塊是射頻卡讀/寫的關(guān)鍵所在。命令發(fā)送模塊首先必須發(fā)出起始位SOF信號(hào),然后發(fā)送具體的命令串。命令串的發(fā)送分為3部分:命令字發(fā)送;數(shù)據(jù)字發(fā)送;校驗(yàn)字節(jié)發(fā)送。命令字的發(fā)送必須是高位在先,而數(shù)據(jù)字發(fā)送則是低位在先,CRC校驗(yàn)碼放在命令串最后,同命令串一起發(fā)送。命令串的傳送通過移位實(shí)現(xiàn),再通過DIN口逐位發(fā)送。在命令發(fā)送結(jié)束后,還要發(fā)送一個(gè)結(jié)束位EOF。接收模塊在接收時(shí)必須先把時(shí)鐘控制權(quán)交給讀/寫模塊,接收時(shí)每次按位接收一個(gè)字節(jié)的內(nèi)容,采樣間隔為10μs,必須在規(guī)定的時(shí)間內(nèi)完成接收工作,否則認(rèn)為接收出錯(cuò)。程序通過定時(shí)器TIMER1實(shí)現(xiàn)計(jì)時(shí),當(dāng)計(jì)時(shí)到時(shí)IMER1發(fā)出溢出中斷信號(hào),CPU響應(yīng)溢出中斷,進(jìn)入TIMER1中斷服務(wù)子程序,將接收錯(cuò)誤標(biāo)志位VICCERROR置1,表示發(fā)生錯(cuò)誤。程序在接收完一個(gè)字節(jié)的內(nèi)容后判斷VICCERROR的狀態(tài),如果發(fā)生錯(cuò)誤,程序跳回,重新發(fā)送讀命令。
3.2 液晶顯示控制程序
LCD是通過P0口與P2口的P2.3,P2.4共同完成控制的。其中P0口作為數(shù)據(jù)口,P2.3,P2.4口作為控制口。首先通過P2.3口將REQ清零,準(zhǔn)備向LCD寫入數(shù)據(jù),然后通過P2.4口讀出LCD的BUSY口的狀態(tài)。如果LCD為空閑狀態(tài),便可向LCD寫入數(shù)據(jù)。向LCD寫入數(shù)據(jù)需先將數(shù)據(jù)送到LCD數(shù)據(jù)線,然后給REQ一個(gè)上升沿,將數(shù)據(jù)線上的內(nèi)容寫入LCD。
3.3 鍵盤控制程序
鍵盤掃描通過P1口完成,先給第1列加低電平其余位皆為高電平,檢查第1列是否有鍵按下,沒有則檢查第2列,再?zèng)]有,檢查第3列,第3列仍沒有,返回重新檢查第1列,依次循環(huán)檢查。當(dāng)有鍵按下時(shí)將鍵碼存下,再重復(fù)檢查若干次,實(shí)現(xiàn)去抖。最后通過查表得到有效鍵值返回。
3.4 輔助功能程序
射頻卡讀出的信息由2部分組成,首先是一串用戶識(shí)別碼,可在添加用戶功能中向射頻卡寫入,其次就是一個(gè)字節(jié)的用戶代號(hào),用戶代號(hào)主要是考慮用戶掛失所用,在對(duì)用戶信息驗(yàn)證時(shí),先對(duì)用戶代碼驗(yàn)證,然后對(duì)用戶識(shí)別碼進(jìn)行驗(yàn)證,其中任何一環(huán)節(jié)出現(xiàn)錯(cuò)誤,則認(rèn)為是非法用戶,無法開啟門鎖。在具體設(shè)計(jì)上,“添加用戶”主要通過向用戶的新卡中寫入合法的用戶信息識(shí)別碼來實(shí)現(xiàn)。此項(xiàng)功能屬于用戶的私人操作,在操作前必須經(jīng)過密碼驗(yàn)證,密碼驗(yàn)證通過后,再由用戶輸入此卡對(duì)應(yīng)的編號(hào)。掛失功能也是本文設(shè)計(jì)中的一個(gè)必備功能,它主要通過設(shè)置用戶狀態(tài)標(biāo)志字來實(shí)現(xiàn),在程序設(shè)計(jì)中給每一個(gè)用戶分配一個(gè)字節(jié)的用戶狀態(tài)標(biāo)志字,通過驗(yàn)證狀態(tài)字來判斷是處于正常狀態(tài)還是掛失狀態(tài)。同添加用戶功能一樣,該功能亦屬于用戶私人操作,也要經(jīng)過密碼驗(yàn)證。上述2項(xiàng)輔助功能都需經(jīng)過密碼驗(yàn)證,因此對(duì)密碼的保密性、可更改性都提出了較高的要求,在本文設(shè)計(jì)中同樣設(shè)置了“更改密碼功能”,用戶更改密碼的前提是輸入正確的用戶密碼,然后由用戶連續(xù)兩次輸入格式和數(shù)據(jù)完全相同的密碼,最后將新密碼替換原先的舊密碼。

4 結(jié)語
本文設(shè)計(jì)的射頻卡讀卡器是應(yīng)工程實(shí)際需求而專門設(shè)計(jì),采用為主控器件,充分結(jié)合硬件、軟件優(yōu)勢(shì),采用低功耗、體積小、集成度高的元器件,減小了系統(tǒng)體積、重量、功耗,提高了編程靈活性。應(yīng)用實(shí)踐證明:該讀卡器設(shè)計(jì)合理可行,具有工作可靠、操作方便、成本低廉、響應(yīng)速度快、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。另外,該讀卡器可以方便地與包括PC在內(nèi)的串口設(shè)備連接,易于針對(duì)不同的的應(yīng)用對(duì)象嵌入到其他各種射頻識(shí)別應(yīng)用系統(tǒng)中,拓展能力強(qiáng),應(yīng)用前景十分廣闊。

c語言相關(guān)文章:c語言教程


單片機(jī)相關(guān)文章:單片機(jī)教程


單片機(jī)相關(guān)文章:單片機(jī)視頻教程


單片機(jī)相關(guān)文章:單片機(jī)工作原理


射頻卡相關(guān)文章:射頻卡原理

上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉