基于單片機的射頻卡讀卡器設(shè)計
3.1 射頻卡讀/寫控制程序設(shè)計
在本次設(shè)計中選用的射頻卡是TI公司的疏耦合IC卡Tag-it HF-I,遵循ISO/IEC15693-3通信協(xié)議。讀/寫控制程序的具體過程如流程圖2所示。本文引用地址:http://m.butianyuan.cn/article/172164.htm
時間寄存器主要用來設(shè)置數(shù)字解碼器的采樣點,在對射頻卡進行其他操作前,需先對時間寄存器進行初始化??C通信需在一定的時間內(nèi)完成,若在規(guī)定的時間內(nèi)讀卡器檢測不到應(yīng)答信號,則認為無卡,具體通過TIME0定時器在規(guī)定的時間內(nèi)檢測SOF信號來實現(xiàn)。所以,首先要初始化TIME0定時器,并對TIME0開中斷,將讀命令串寫入命令發(fā)送緩沖區(qū),另外需要計算命令串的CRC驗證碼(循環(huán)驗證碼),接著存放命令串,最后調(diào)用發(fā)送模塊將其一起發(fā)送。發(fā)送命令時鐘由單片機控制,接收時鐘由讀卡器控制,因此在發(fā)送完命令串后接著要將時鐘控制權(quán)交還給讀卡器,定時器TIME0開始計時,檢測射頻卡發(fā)回的開始位信號,如果在規(guī)定時間內(nèi)檢測不到信號,定時器TIMER0便會發(fā)生溢出信號,CP U相應(yīng)溢出中斷,進入TIME0的中斷服務(wù)子程序,將無卡標志位NOCARD置1,程序就會跳回,重新開始定時檢測。當在計時范圍內(nèi)檢測到SOF信號時,按照返回數(shù)據(jù)格式,接收數(shù)據(jù)標志(Flags)字節(jié)、安全狀態(tài)字節(jié)等相應(yīng)字節(jié)的數(shù)據(jù),最后接收結(jié)束位EOF。若數(shù)據(jù)標志的最后一位為1,表明發(fā)送命令有誤,射頻卡會發(fā)送錯誤類型標識字節(jié),否則射頻卡會依次發(fā)送數(shù)據(jù),調(diào)用接收模塊,將接收的數(shù)據(jù)依次存放于接收緩沖區(qū),用于對用戶信息的核對。
在射頻卡讀/寫控制程序中,命令發(fā)送模塊和數(shù)據(jù)接收模塊是射頻卡讀/寫的關(guān)鍵所在。命令發(fā)送模塊首先必須發(fā)出起始位SOF信號,然后發(fā)送具體的命令串。命令串的發(fā)送分為3部分:命令字發(fā)送;數(shù)據(jù)字發(fā)送;校驗字節(jié)發(fā)送。命令字的發(fā)送必須是高位在先,而數(shù)據(jù)字發(fā)送則是低位在先,CRC校驗碼放在命令串最后,同命令串一起發(fā)送。命令串的傳送通過移位實現(xiàn),再通過DIN口逐位發(fā)送。在命令發(fā)送結(jié)束后,還要發(fā)送一個結(jié)束位EOF。接收模塊在接收時必須先把時鐘控制權(quán)交給讀/寫模塊,接收時每次按位接收一個字節(jié)的內(nèi)容,采樣間隔為10μs,必須在規(guī)定的時間內(nèi)完成接收工作,否則認為接收出錯。程序通過定時器TIMER1實現(xiàn)計時,當計時到時IMER1發(fā)出溢出中斷信號,CPU響應(yīng)溢出中斷,進入TIMER1中斷服務(wù)子程序,將接收錯誤標志位VICCERROR置1,表示發(fā)生錯誤。程序在接收完一個字節(jié)的內(nèi)容后判斷VICCERROR的狀態(tài),如果發(fā)生錯誤,程序跳回,重新發(fā)送讀命令。
3.2 液晶顯示控制程序
LCD是通過P0口與P2口的P2.3,P2.4共同完成控制的。其中P0口作為數(shù)據(jù)口,P2.3,P2.4口作為控制口。首先通過P2.3口將REQ清零,準備向LCD寫入數(shù)據(jù),然后通過P2.4口讀出LCD的BUSY口的狀態(tài)。如果LCD為空閑狀態(tài),便可向LCD寫入數(shù)據(jù)。向LCD寫入數(shù)據(jù)需先將數(shù)據(jù)送到LCD數(shù)據(jù)線,然后給REQ一個上升沿,將數(shù)據(jù)線上的內(nèi)容寫入LCD。
3.3 鍵盤控制程序
鍵盤掃描通過P1口完成,先給第1列加低電平其余位皆為高電平,檢查第1列是否有鍵按下,沒有則檢查第2列,再沒有,檢查第3列,第3列仍沒有,返回重新檢查第1列,依次循環(huán)檢查。當有鍵按下時將鍵碼存下,再重復檢查若干次,實現(xiàn)去抖。最后通過查表得到有效鍵值返回。
3.4 輔助功能程序
射頻卡讀出的信息由2部分組成,首先是一串用戶識別碼,可在添加用戶功能中向射頻卡寫入,其次就是一個字節(jié)的用戶代號,設(shè)計用戶代號主要是考慮用戶掛失所用,在對用戶信息驗證時,先對用戶代碼驗證,然后對用戶識別碼進行驗證,其中任何一環(huán)節(jié)出現(xiàn)錯誤,則認為是非法用戶,無法開啟門鎖。在具體設(shè)計上,“添加用戶”主要通過向用戶的新卡中寫入合法的用戶信息識別碼來實現(xiàn)。此項功能屬于用戶的私人操作,在操作前必須經(jīng)過密碼驗證,密碼驗證通過后,再由用戶輸入此卡對應(yīng)的編號。掛失功能也是本文設(shè)計中的一個必備功能,它主要通過設(shè)置用戶狀態(tài)標志字來實現(xiàn),在程序設(shè)計中給每一個用戶分配一個字節(jié)的用戶狀態(tài)標志字,通過驗證狀態(tài)字來判斷是處于正常狀態(tài)還是掛失狀態(tài)。同添加用戶功能一樣,該功能亦屬于用戶私人操作,也要經(jīng)過密碼驗證。上述2項輔助功能都需經(jīng)過密碼驗證,因此對密碼的保密性、可更改性都提出了較高的要求,在本文設(shè)計中同樣設(shè)置了“更改密碼功能”,用戶更改密碼的前提是輸入正確的用戶密碼,然后由用戶連續(xù)兩次輸入格式和數(shù)據(jù)完全相同的密碼,最后將新密碼替換原先的舊密碼。
4 結(jié)語
本文設(shè)計的射頻卡讀卡器是應(yīng)工程實際需求而專門設(shè)計,采用單片機為主控器件,充分結(jié)合硬件、軟件優(yōu)勢,采用低功耗、體積小、集成度高的元器件,減小了系統(tǒng)體積、重量、功耗,提高了編程靈活性。應(yīng)用實踐證明:該讀卡器設(shè)計合理可行,具有工作可靠、操作方便、成本低廉、響應(yīng)速度快、抗干擾能力強等優(yōu)點。另外,該讀卡器可以方便地與包括PC在內(nèi)的串口設(shè)備連接,易于針對不同的的應(yīng)用對象嵌入到其他各種射頻識別應(yīng)用系統(tǒng)中,拓展能力強,應(yīng)用前景十分廣闊。
c語言相關(guān)文章:c語言教程
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
射頻卡相關(guān)文章:射頻卡原理
評論