Mifare系列射頻卡讀寫器的研制
4.3 串行存儲(chǔ)器
我們用AT24C256作數(shù)據(jù)存儲(chǔ)器。AT24C256是串行E2PROM存儲(chǔ)器,支持I2C總線數(shù)據(jù)傳輸協(xié)議,32KB存儲(chǔ)器容量,用兩根線與CPU構(gòu)成串行接口。SDA是雙向數(shù)據(jù)線,接CPU的P2.1;SCL是時(shí)鐘線,接CPU的P2.0;這兩根線必須接上拉電阻。WP是寫保護(hù)線,一般接地,表示允許讀寫操作。A0、A1是地址線,通過(guò)這二根地址線CPU最多可尋址4個(gè)AT24C256器件,4個(gè)芯片都有固定的地址,分別對(duì)應(yīng)A0、A1為00到11,在此二根地址線上可擴(kuò)充1~3片AT24C256串行E2PROM存儲(chǔ)器。串行E2PROM讀寫格式和操作時(shí)序如圖4所示。本文引用地址:http://2s4d.com/article/157991.htm
圖4 串行E2PROM讀寫格式和操作時(shí)序
寫數(shù)據(jù)到AT24C256有字節(jié)寫和頁(yè)面寫兩種方式。在字節(jié)寫模式下,主器件(單片機(jī)) 發(fā)送起始信號(hào)和從器件(AT24C256)地址信息,在從器件送回應(yīng)答信號(hào)后,主器件發(fā)送兩個(gè)8位地址字節(jié)給AT24C256,主器件在收到從器件的應(yīng)答信號(hào)后,再發(fā)送數(shù)據(jù)到被尋址的存儲(chǔ)單元。AT24C256再次應(yīng)答,并在主器件產(chǎn)生停止信號(hào)后開(kāi)始內(nèi)部數(shù)據(jù)的擦寫周期,在內(nèi)部擦寫過(guò)程中AT24C256 不再應(yīng)答主器件的任何請(qǐng)求。頁(yè)寫模式下一次最多可以寫入64個(gè)字節(jié)數(shù)據(jù)。從AT24C256中讀數(shù)據(jù)有三種方式,即當(dāng)前地址讀、隨機(jī)讀和連續(xù)讀。如隨機(jī)讀,允許主器件對(duì)E2PROM的任意地址進(jìn)行讀操作。分兩步進(jìn)行,首先主器件發(fā)起始信號(hào)、器件地址和兩字節(jié)的存儲(chǔ)器地址執(zhí)行一個(gè)偽寫操作,在 AT24C256應(yīng)答之后,主器件再發(fā)起始信號(hào)和器件地址,AT24C256響應(yīng)并發(fā)應(yīng)答信號(hào),然后輸出8位數(shù)據(jù),主器件收到數(shù)據(jù)后發(fā)停止信號(hào)結(jié)束本次操作。連續(xù)讀可用隨機(jī)讀開(kāi)始,在收到AT24C256發(fā)來(lái)的8位數(shù)據(jù)后,主器件不發(fā)停止信號(hào),而發(fā)應(yīng)答信號(hào), AT24C256收到主器件的應(yīng)答信號(hào)后,又傳下一個(gè)地址的數(shù)據(jù),一直進(jìn)行下去,直到主器件發(fā)停止信號(hào)為止。
5 程序設(shè)計(jì)
5.1 單片機(jī)主程序流程圖
單片機(jī)的程序包括:IC卡讀/寫/密碼驗(yàn)證/擦除操作程序,與RC500通信中斷處理程序,鍵盤中斷處理程序,與PC機(jī)通信中斷處理程序,顯示程序及存儲(chǔ)器讀寫程序等。讀卡器的主程序流程圖如圖5所示:
圖5 讀卡器的主程序流程圖
5.2 讀/寫卡程序設(shè)計(jì)
讀寫卡過(guò)程是一個(gè)很復(fù)雜的程序執(zhí)行過(guò)程,要執(zhí)行一系列的操作指令,調(diào)用多個(gè)C51函數(shù)。包括裝載密碼,詢卡,防沖突,選卡,驗(yàn)證密碼,讀寫卡,??ā_@一系列的操作必須按固定的順序進(jìn)行。在沒(méi)有Mifare卡進(jìn)入射頻天線有效范圍時(shí),在低5位顯示當(dāng)前時(shí)鐘,當(dāng)有Mifare卡進(jìn)入到射頻天線的有效范圍,讀卡程序驗(yàn)證卡及密碼成功后,將卡號(hào)和讀卡時(shí)間及相關(guān)數(shù)據(jù)作為一條記錄存入E2PROM存儲(chǔ)器中,并在LED顯示器高5位上顯示卡號(hào)。
程序設(shè)計(jì)采用單片機(jī)匯編語(yǔ)言和KeilC51混合編程。看門狗定時(shí)器中斷服務(wù)程序采用匯編語(yǔ)言編寫,其它程序采用C語(yǔ)言編寫。程序的每一部分按模塊化設(shè)計(jì)成一個(gè)文件,單獨(dú)調(diào)試通過(guò)后,再在KeilC51環(huán)境下加入到工程文件中匯編生成HEX文件,用仿真器進(jìn)行仿真通過(guò)后,寫入P89C58BP芯片中脫離仿真器運(yùn)行。
6 結(jié)束語(yǔ)
本文設(shè)計(jì)的Mifare系列射頻卡讀寫器能夠讀寫多種 Mifare系列射頻卡,如Mifare 1 S50、Mifare Light和Mifare Pro等,讀寫距離在10cm范圍內(nèi)。該讀寫器操作方便靈活,只要通過(guò)計(jì)算機(jī)串口按規(guī)定協(xié)議發(fā)送命令給它即可完成讀卡、寫卡、取消和更改密碼等操作;也可設(shè)置為脫離計(jì)算機(jī)獨(dú)立工作方式,必要時(shí)再將所存儲(chǔ)的記錄數(shù)據(jù)上傳到上位機(jī)供其處理。本讀寫器已經(jīng)實(shí)際應(yīng)用在長(zhǎng)沙某非接觸式IC卡預(yù)付費(fèi)電度表的售電系統(tǒng)中,系統(tǒng)運(yùn)行良好、可靠性高。實(shí)際應(yīng)用中證明:此射頻卡讀寫器系統(tǒng)讀寫非接觸式IC卡片迅速、方便、可靠、安全、穩(wěn)定,深受用戶歡迎。有足夠的優(yōu)勢(shì)取代目前仍使用磁卡和接觸式IC卡讀寫器的應(yīng)用,具有巨大的市場(chǎng)競(jìng)爭(zhēng)力和廣闊的發(fā)展前景。
電度表相關(guān)文章:電度表原理
評(píng)論