?? untitled document.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0064)http://www.flyring.com.cn/chinese/UploadFiles/20044216617489.htm -->
<HTML><HEAD><TITLE>Untitled Document</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY background="" bgColor=#ffffff text=#000000>
<DIV align=center>
<P><BR><BR><FONT color=#0000ff><B>關于非接觸式IC智能(射頻)卡及其讀寫設備內核技術的研究與應用開發(連載7)
<BR></B></FONT></P><FONT color=#0000ff><B><BR></B></FONT>
<TABLE border=1 borderColor=#ff9900 width="80%">
<TBODY>
<TR>
<TD align=left height=362 vAlign=top>
<P>7. “Write” 寫指令操作<BR><IMG height=59 src="" width=561> </P>
<P> “Write“ 寫指令允許用戶寫數據到MIFARE卡片上(完整的16 個BYTEs的數據塊(Data
blocks))。只有在先“Authentication” 認證指令完成后,才允許進行對要求的數據扇區或數據塊(Block)進行“Write“
寫指令操作。<BR> 為了提供最大的數據集成度,以及包含大量密碼值的密碼數據塊的保密性,我們必須保持一個大數據結構。這樣可以允許MIFARE卡片執行增值/減值(Increment/Decrement)指令。<BR><IMG
height=134 src="" width=606> </P>
<P> 數據塊通過一個寫操作,將存儲的數據在每一個block塊中寫3次,1次反寫,從而完成數據塊的初始化。此外,一個地址引導位代碼域必須寫4次,其中2次為反向寫入。正/負數據值將以標準的2的補碼格式來表示。
<BR> 注意:在將數據寫到卡片上的某一扇區時,一定要小心。因為有些block中存儲了密碼數據以及存儲允許使能數據。特別是每一個扇區的Block3中存放了該扇區的存取條件,包含有KEYA,KEYB及該扇區的控制字。Mifare
1卡片出廠時的Block3有缺省值,為:“a0a1a2a3a4a5ff078069b0b1b2b3b4b5”,共16個Bytes。<BR> 涉及Mifare
1卡片的存儲結構等信息,請參考本文的關于Mifare 1 卡片章節。<BR> 程序員在使用Mifare
1卡片做應用時,一定要清清楚楚記住每一個扇區的Block3的數據,這樣也就記住了扇區的密碼和存取控制字。否則,扇區的存儲空間將不能被READ/WRITE等操作而失效。<BR> 任何人試圖用任何方式來讀寫不知密碼的卡片或某一扇區都是徒勞無益的。<BR> 卡片應放在安全的地方,即不要放在離MCM天線較近的地方。因為當MCM在執行某些指令時,有可能無意對這一卡片進行了讀/寫等操作。</P>
<P>8.“Increment “ & “ Decrement “ & “ Restore” 增值/減值/重儲<BR><IMG
height=95 src="" width=569> </P>
<P></P>
<P> 通過Mifare 1內部電路,MIFARE 1卡片能夠執行“Increment “ & “ Decrement “增值/減值
操作,如果:<BR> #用合適的寫指令對數據塊“value block”進行了初始化;<BR> #根據KEY A 和KEY B
,允許進行“Increment “ & “ Decrement “增值/減值 操作;<BR> #“Increment “ 增值 0
操作和“ Decrement “減值0 操作是不允許的;<BR> “Increment “ 增值:加指定的值到卡片的存儲器中<BR> “
Decrement “減值:從卡片的存儲器中減去指定的值<BR> “ Restore” 重儲: 執行一個“Decrement 0”(減
0)指令<BR> 上述指令的計算結果將被存儲在MCM的一個內部的數據緩沖寄存器中,直達以后的指令來存取。為了將結果寫到卡片上,緊接著必須執行“Transfer”指令。Transfer”指令并不改變數據緩沖寄存器中的數據值。這一操作保持數據塊中的數據結構,直到數據塊中的值被自動地反寫及校驗為止。存儲的地址也被正確地傳送存儲到數據塊中。<BR>數據塊的長度為4
字節(BYTES)。<BR> 萬一數據值溢出,即數據值遠大于最大的正數值 或
遠小于最小的負數值時,MIFARE卡片將停止操作,并返回一個NACK代碼。</P>
<P>9.“Transfer” 傳送指令</P>
<P><IMG height=57 src="" width=565></P>
<P></P>
<P> 每一個“Increment “ & “ Decrement “增值/減值 操作都必須跟隨一條“Transfer”
傳送指令,這樣真正地將數據結果傳送到卡片上去。否則,沒有傳送指令,數據結果仍保持在數據緩沖寄存器(value buffer
register)。“Transfer” (傳送) 指令的目標地址可能會相同與“Increment “ & “ Decrement
“增值/減值指令時的源地址。然而,如果有了完善的后備管理軟件,這樣的事可能不會發生。<BR> 除了“Transfer”指令之外,其他所有的指令將改變內部數據緩沖寄存器(value buffer
register)的內容。這將要求使用“Restore”指令。“Restore”指令將重建“Read“指令之后的數據緩沖寄存器(value buffer
register)的內容。<BR> 如果“Transfer” (傳送) 指令存取了一個新的存儲器位置時,將被要求一個相同于源地址的存儲條件的
目標地址。 <BR>即,對于兩個內存位置,要求執行“Increment “ & “ Decrement
“增值/減值指令。“Transfer” (傳送) 指令自動地保持正確的數據結構,包括存儲數據的地址。</P>
<P>10.“ Halt” 停機指令</P>
<P><IMG height=56 src="" width=568></P>
<P></P>
<P> “Halt” 停機指令將MIFARE
1卡片設置為“HALT MODE”。例如,卡片已經退出使用等。卡片將保持“HALT MODE”狀態,直到被復位(例如:重新用于通信 等)。</P>
<P><BR>第四章 MCM應用開發</P>
<P> 在這一章節里,將向廣大 讀者介紹MCM的具體的應用開發。 我們選用的卡片為Mifare 1 S50系列的標準的符合 ISO/IEC
14443 TYPE A
標準的非接觸式IC射頻卡。選用的讀寫器的核心模塊為MCM200(或是SB201)。<BR> 根據以上幾個章節的介紹,相信讀者可以理解如下的通用讀寫器DEMO電路的設計。</P>
<P>一.DEMO硬件電路的應用開發</P>
<P> 通用讀寫器DEMO的硬件電路請見所附的圖紙。具體說明如下:</P>
<P>1.DEMO電路中,對于MCU的說明:<BR> 筆者選用了市場上容易購置的美國ATMEL 公司的89C52芯片。其內建8K
EEPROM,256 bytes 的RAM ,內設P0,P1,P2,P3
等四個端口,其中P0,P2為數據/地址雙向的多用端口。內有3個定時器,T0,T1和T2。其振蕩晶體選用11.0592MHz,以利于以后通信時的波特率的精確設計和設置。89C52中還內設8級中斷控制系統,3級單向一次性可編程的密碼內存,可以防止芯片內的程序被非法讀寫,拷貝等,保護知識產權。等等。<BR> AT89C52
的軟件指令完全兼容與MCS-51系列的MCU的標準,包括指令的尋址方式,各種數據的操作等等。<BR> 有關詳細的資料,可以查閱ATMEL
公司的網頁: HTTP://WWW.ATMEL.COM</P>
<P>2.Demo電路中,對MCM的說明:<BR> 在DEMO電路中,筆者選用了Philips公司的MCM200模塊(也可用聯視工程公司的SB201模塊)。<BR> 將MCM的D0
~ D7 連接到MCU的P0端口;MCM的讀寫線連接到MCU的-RD和-WR端上; A0 ~
A7空缺,使用ALE線,連接到MCU的第30腳上;MCM的天線端點上(ANT,-ANT等)必須對地接高頻濾波電容,并串接高頻電感;MCM的第9腳必須接3.6V的后備鋰電池;MCM的第31腳及12腳分別接MCU的25腳和26腳,由程序員來控制MCM的啟動和關閉。MCM上的模擬電路供電和數字電路的供電端必須跨接高低頻濾波電容等。</P>
<P>3. Demo電路中,對顯示電路的說明:<BR> 在DEMO電路中,筆者選用了Motorola
公司的MC14499顯示模塊。<BR> 每個MC14499模塊可動態掃描4位段式LED(共陰)。DEMO電路中共使用了2個MC14499模塊,以顯示8位數據。<BR> MC14499顯示0
~9數字時很直觀,但是它是數字型的。由于我們經常要顯示16進制的數據,因此對于A,B,C,D,E,F的顯示,MC14499的顯示可能不很直觀,希望讀者注意。
<BR> 在新版本的DEMO電路中,筆者已經將顯示電路改為LCD點陣式,多字行的液晶顯示電路。這對于將這種低功耗的顯示電路直接應用于所要求開發的應用設備中將提供很大方便。<BR> 兩個MC14499模塊的CLK和DATA信號將分時復用,以節省MCU有限的資源,分別接到MCU的21
和22引腳上,兩個MC14499模塊的--ENB信號分別接到MCU的23
和24引腳上。如果選通-ENB1,則第一個MC14499顯示模塊將接收數據;如果選通-ENB2,則第二個MC14499顯示模塊將接收數據。
<BR> <BR>4.Demo電路中,對鍵盤電路的說明:<BR> 在DEMO電路中,筆者選用了4 X
4方陣式樣的鍵盤電路與MCU相連在P1端口上。<BR> 鍵盤電路中的4X4共16個鍵分別設置為0 ~ 9
十個鍵,一個“.”鍵,以及其他一些功能鍵及字母鍵。<BR> 鍵盤電路的掃描值通過一個LS244,送到MCU的P1的高四位,供MCU采集;MCU的P1的低四位送出鍵盤的掃描信號。LS244的選通(MCU采集P1的高四位時)信號和顯示電路的DATA線分時復用,以節省MCU有限的資源。<BR> 本鍵盤電路的軟件設計不同于傳統,而采用了比較直接,明了,快速的“位掃描法”,這對于讀者如果要求對鍵盤數目進行擴充,則讀者在仔細閱讀本文之后定能迎刃而解。
<BR> 在軟件設計說明章節中將詳細介紹鍵盤掃描電路軟件設計方法。</P>
<P>5.Demo電路中,對指示信號的說明:<BR> LED1:指示MCM的-CS信號是否被選中,LED1亮,則指示MCM已被MCU選中,可對MCM進行操作。(此時,應注意MCM的RST端指示信號LED2應亮,否則MCM不能被操作)。<BR> LED2:指示MCM的RST信號是否被選中,LED2亮,則指示MCM以被MCU選中,可對MCM進行操作。(此時,應注意MCM的-CS端指示信號LED1應亮,否則MCM不能被操作)。<BR> LED1
和LED2的指示應該同時有效才能使MCM工作。<BR> LED3:整個DEMO電路的“OK”指示信號。即在每次對MCM操作成功之后,LED3將指示為亮。例如在對MCM成功地進行了SELECT命令或REQUEST命令等操作之后,LED3將指示為亮。特別地,在本文的“門禁控制系統”應用程序中,LED3將直接作為門鎖的驅動信號。在實際的裝置中,如果“門禁控制系統”的讀寫器讀到某一張寫有該“門禁控制系統”密碼的非接觸式射頻卡,則LED3將指示發亮,并驅動門鎖,打開大門。(讀者如果已完全理解,讀通“門禁控制系統”應用程序的話,完全可在程序中適當的位置加入一段小程序,連同LED3的驅動信號,而作為門鎖的復合驅動信號。這樣的“門禁控制系統”將更具有安全性,可靠性。)
<BR> 喇叭(蜂鳴器):DEMO電路的喇叭(蜂鳴器)指示音信號,在每次對MCM操作成功之后,喇叭(蜂鳴器)將發聲。例如在對MCM成功地進行了SELECT命令或REQUEST命令等操作之后,喇叭(蜂鳴器)將發聲。特別地,在本文的“門禁控制系統”應用程序中,喇叭(蜂鳴器)將直接作為門鎖的驅動指示音信號。配合LED3的指示信號,僅當門鎖被合法地打開時,喇叭(蜂鳴器)將給出指示音信號。否則,喇叭(蜂鳴器)將不會給出指示音信號。<BR> 讀者如果已完全理解,讀通“門禁控制系統”應用程序的話,完全可在程序中適當的位置對LED3或喇叭(蜂鳴器)進行任意的程序設置。<BR> 電源輸入保護電路:在DEMO電路中,加入了簡單的電源保護電路。即在電源的輸入端加入一個反向二極管,當電源極性接反時,將輸入的電源短路,而不會使DEMO電路損壞。</P>
<P>6.
其他電路<BR> 通信電路:在新版本的DEMO電路中,筆者已經將RS232的通信電路連接上。以利于用上位PC來具體地控制讀寫器,并能編制用戶界面良好的應用軟件,等等。<BR> 為了方便讀者對于實際應用中不同的通信方式的要求,例如要求長線(長距離)方式(例如RS422/485等),筆者業已設計完成相應的“全雙工RS232《==》RS422/485通信(雙向)轉接設備”。該轉接設備非常輕巧,低功耗,成本很低,非常適合于各種不同應用類型的計算機與應用設備之間的轉接。例如大樓中的門禁系統中各讀寫設備與上位計算機之間的長線方式的通信就應采用這種轉接設備。其長線驅動可達1200米以上,且穩定可靠。傳統的RS232通信至多不超過20米。(注:關于“全雙工RS232《==》RS422/485通信(雙向)轉接設備”的介紹,筆者將會在另外文章中將做詳細介紹。)<BR> LCD顯示電路:輕巧,低功耗的非接觸式卡片讀寫器已越來越受到歡迎。因此大電流顯示的LED將被LCD顯示所取代。筆者在新版本的DEMO電路中,已經將LCD應用于讀寫設備中,且為圖形方式點陣大屏幕顯示。</P>
<P>二. DEMO電路的 軟件 應用開發</P>
<P> DEMO電路的 軟件
應用開發的目標是:主要根據所設計的DEMO硬件電路而進行第一步,最低層的面向微處理機MCU的應用程序的開發。<BR> 由于在DEMO電路中筆者選用的MCU為完全兼容與MCS-51系列微處理機的ATMEL公司的AT89C52,因此,筆者將重點介紹MCS-51系列的面向硬件操作的最低層的匯編語言的DEMO電路的應用程序的開發。<BR> 應用程序的開發將主要分為兩大部分,即對MCM的應用程序的開發及對讀寫器的其他電路的應用程序的開發。<BR> 程序開發的方式將主要建立一系列的匯編語言函數子程序以供主程序的隨時調用。即對MCM模塊或讀寫器的其他電路分別編制匯編語言函數子程序。(待續)</P>
<P align=right><BR><BR>來源: 《金卡工程》2000.8 <BR><A
href="file:///E|/index/index.htm">返回首頁</A>
</P></TD></TR></TBODY></TABLE><B></B></DIV></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -