非接觸IC卡在考勤機(jī)上的應(yīng)用設(shè)計(jì)
本文所設(shè)計(jì)的非接觸IC卡考勤機(jī),是在參考傳統(tǒng)機(jī)械式考勤機(jī)的基礎(chǔ)上所作出的進(jìn)一步的改進(jìn)。傳統(tǒng)的機(jī)械式考勤機(jī)雖然較可靠,但由于其將考勤數(shù)據(jù)記錄在紙片上,大量的考勤數(shù)據(jù)需要人工統(tǒng)計(jì),既費(fèi)時(shí)又費(fèi)力,而且容易出錯(cuò)。本文所介紹考勤機(jī)采用電子時(shí)鐘,計(jì)時(shí)準(zhǔn)確,操作方便,考勤數(shù)據(jù)通過(guò)RS485總線上傳給計(jì)算機(jī),統(tǒng)計(jì)快捷又準(zhǔn)確。
1、 系統(tǒng)工作原理
本考勤機(jī)以完全兼容與MCS-5l系列微處理機(jī)的ATMEL公司的AT89C52單片機(jī)作為微控制器,采用I2C總線的PCF8583作為考勤機(jī)時(shí)鐘,以I2C總線的多片(可選)AT24C64作為考勤機(jī)的不掉電存儲(chǔ)器,采用大屏幕點(diǎn)陣LCD顯示,并以RS485接口和計(jì)算機(jī)通信。組成了一套功能齊全的非接觸IC卡考勤系統(tǒng)。當(dāng)IC卡在天線區(qū)域經(jīng)過(guò)時(shí),單片機(jī)自動(dòng)把IC卡里邊的相關(guān)信息讀到考勤機(jī)上,再把打卡時(shí)間一起存到存儲(chǔ)器里邊,計(jì)算機(jī)可以通過(guò)RS485串口把相關(guān)打卡信息讀到計(jì)算機(jī)上,再進(jìn)行統(tǒng)計(jì)、報(bào)表和打印輸出等。其基本原理框圖如下:
2、非接觸IC卡數(shù)據(jù)編碼格式
MIFAREl IC卡的核心是PHILIPS公司的Mifarel IC S50系列微模塊,內(nèi)建高速CMOS EEPROM和MCU,并自帶一副高效率射頻天線。它總共有1 kBytes的容量,其中又分為16個(gè)扇區(qū)(Sector),每個(gè)扇區(qū)分為4個(gè)塊(Block),每塊16Bytes,考勤卡只需要使用其中的一個(gè)扇區(qū)(1扇區(qū)),地址編碼如下:
地址0-3:自定義員工工號(hào)
地址4-7:?jiǎn)T工工號(hào)的反碼
地址8-15:備用
Blockl和Block2地址備用
Block3
地址0-5:密碼A(KEYA)
地址6-9:狀態(tài)字節(jié)
地址工0-15:密碼B(KEYB)
3、非接觸IC卡讀寫(xiě)的硬件實(shí)現(xiàn)
非接觸IC卡的讀寫(xiě)采用PHILIPS公司的讀寫(xiě)模塊MFCM200。此模塊自帶天線接口,通過(guò)天線接口連接讀寫(xiě)天線,直接從IC卡讀寫(xiě)數(shù)據(jù)。單片機(jī)直接從數(shù)據(jù)總線讀寫(xiě)天線區(qū)域的IC卡數(shù)據(jù)。IC卡讀寫(xiě)的硬件原理如下圖所示:
4、非接觸IC卡讀寫(xiě)的軟件實(shí)現(xiàn)
MFCM200能執(zhí)行有限的一些指令,并將這些指令傳輸?shù)組IFAREl卡片上。
每一個(gè)指令包含7個(gè)獨(dú)立的步驟,每一個(gè)步驟在不同的指令執(zhí)行中有不一樣的時(shí)序。以下是MFCM200通信基本指令集。
Request:尋卡
Anticoll:防重疊(碰撞)
Select:選卡片
Authentication:密碼認(rèn)證
Loadkey:力口載密碼
Read:讀數(shù)據(jù)
Write:寫(xiě)數(shù)據(jù)
Increment:土曾值
Decrement:減值
Restore:存儲(chǔ)
Transfer:傳送
Halt:停止
在每一次讀寫(xiě)IC卡數(shù)據(jù)時(shí),必須按順序先執(zhí)行Request、Anticoll、Select、Authentication等指令,然后才能執(zhí)行Read和Write指令,下面重點(diǎn)介紹Read和Write指令的使用。
(1)''Read讀數(shù)據(jù)指令
Read指令允許單片機(jī)通過(guò)MFCM200來(lái)讀取MIFAREl卡片上完整的16個(gè)Bytes的數(shù)據(jù)塊(Data blocks)。
只有在預(yù)先Authentication認(rèn)證指令完成后,才允許進(jìn)行對(duì)Mifare l卡片上的某一數(shù)據(jù)扇區(qū)進(jìn)行Read指令操作。
Read指令操作只能一個(gè)塊(B1ock)一個(gè)塊地讀,即只能16個(gè)字節(jié)一次性地讀取。如果只要求某Block中的幾個(gè)字節(jié)的數(shù)據(jù),也只能一個(gè)整塊16個(gè)字節(jié)一起讀取,由程序員選取指定的字節(jié)。
從卡片上讀到的數(shù)據(jù)必須由單片機(jī)進(jìn)行校驗(yàn),以確保數(shù)據(jù)的有效性。
(2)Write寫(xiě)數(shù)據(jù)指令
Write指令允許用戶寫(xiě)數(shù)據(jù)到MIFARE l卡片上(完整的16個(gè)BYTEs的數(shù)據(jù)塊(Data blocks))。只有在先Authentication認(rèn)證指令完成后,才允許進(jìn)行對(duì)要求的數(shù)據(jù)扇區(qū)或數(shù)據(jù)塊(Block)進(jìn)行Write指令操作。
結(jié)束語(yǔ)
近幾年來(lái),隨著IC智能卡中的非接觸IC卡(射頻卡)的高度穩(wěn)定性和高度安全保密性,使之在IC智能卡領(lǐng)域中異軍突起,成為當(dāng)今智能卡中的流行寵物。做為非接觸工C卡中的主流,MIFARE技術(shù)已經(jīng)被制定為國(guó)際標(biāo)準(zhǔn):IS0/IEC14443 TYPE A標(biāo)準(zhǔn)。此卡在考勤系統(tǒng)中使用,是IC卡最典型的應(yīng)用之一,此卡同時(shí)也支持一卡多用,如考勤、門(mén)禁、售飯等,應(yīng)用前景非常廣闊。