摘要:介紹了韋根的概念和標準韋根26-bit信號的定義格式,依據其特點設計了一個韋根接收讀卡器電路,并提供了程序實現的部分代碼。該設計的電路和程序均已通過調試并在實際項目中得到應用。
關鍵詞:讀卡器;讀卡控制器;韋根信號;單片機
Wiegand,即韋根傳感器是一種當交變磁場經過時產生輸出電壓脈沖的傳感器。脈沖的幅度是由激勵磁場的場強決定的。因此,韋根傳感器不需要外界電源供電。由于韋根傳感器非常容易和數字系統相匹配,并且系統沒有可動的部件或半導體器件,這使得它們能適用于惡劣的環(huán)境和長期無人監(jiān)控的場所。
在設計讀卡器時,讀卡控制器既需要與上位機串行通信,又需要與讀卡器串行通信。大多數單片機只有一個串行通信口,而設計者希望控制器與讀卡器的通信不占用串行接口,因此,應用韋根信號是一個不錯的選擇。文章介紹了一種基于單片機的韋根信號接收的實現方法。
1 韋根信號的格式說明
韋根信號在數據的傳輸中只需要兩條數據線,分別是DATA0和DATA1。當空閑時,兩線相對于0 V的電源都是TTL電平的水平,即5 V;當有數據傳輸時,兩線交替發(fā)送400μs的低脈沖。當DATA0線發(fā)送脈沖時,數據輸出是‘0’;當DATA1線發(fā)送脈沖時,數據輸出是‘1’。兩根線不可同時發(fā)送脈沖。脈沖的間隔是1ms,寬度是100μs,周期是600μs。圖1中脈沖寬度在20μs~200μs之間,兩個脈沖間的時間間隔在200μs~200ms之間。
由于標準韋根26-bit格式是一個開放式的格式,這就意味著任何人都可以購買某一特定格式的HID卡,并且這些特定格式的種類是公開可選的。26-bit格式就是一個廣泛使用的工業(yè)標準,并且對所有HID的用戶開放。
韋根的數據一般由三部分組成:校驗位、出廠碼和數據位。不同的韋根格式有不同的組成。Weigand協議是國際上統一的標準,格式有很多種,標準的weigand26,即26-bit是最常用的格式。標準的26位韋根輸出是由26位二進制數組成,其中第1位和第26位是校驗位,2-9位是廠家碼,10-25位是卡號位,其輸出格式如下:
12 9 10 25 26
E XXXX XXXX XXXX…XXXX 0
第1位是前12bit的偶校驗位;前12位(第2-9位)對應電子卡HID碼的低8位,后12位(第10-25位)對應電子卡的PID碼,第26位是后12bit的奇校驗位。數據從左至右順序發(fā)送,高位在前。
如果電卡的地區(qū)碼位2個字符,即8位則可用那設置255個地區(qū)碼((15×16)+15=255);電子卡的卡號位4個字符,即16位則可設置65 536個卡號((15×16×16×16)+(15×16×16)+(15×16)+15=65 535)。
例如:一個HID:16 385,PID:00004的電子卡其26位韋根輸出為:
10000000100000000000001000
檢驗位HID=16 385(二進制的低8位)PID=4(二進制)檢驗位。
這26位數據在讀出器的韋根輸出線DATA0,DATA1上輸出。
2 接收電路的設計
韋根信號的接受有兩種方法,分別是查詢法和中斷法,如果用查詢的方法接收會出現丟幀的現象;所以作者選擇外部中斷的方法來實現韋根信號的接受,接收電路如圖2所示。接收電路選用了美國Atmel公司的89S51作為主控芯片。讀卡器使用了遠距離125 kHz射頻讀卡器,讀卡控制器為自行設計。讀卡控制器與上位機通信選用RS485總線;單片機為含WDT的89S51;存儲器為128 k字節(jié)的非易失存儲芯片HK1245-7,讀卡控制器還配置實時時鐘電路、門禁控制電路、數碼管顯示驅動電路等等。
3 程序代碼的實現
中斷接收韋根碼程序如下:
;外中斷0服務程序,接收DATA0
DTO: PUSH PSW
USH ACC
SETB RS1
CLR RS0 ;第二組寄存器
CLR C ;DATA0
MOV R7,#4 ;26位碼用4字節(jié)
MOV R0,#WGBUF ;緩沖器首地址
DTO1:MOV A,@R0
RLC A
MOV@R0,A
INC R0
DJNZ R7,DTO1
DJNZ WXH0,DTOE
MOV WXH0,#26 ;韋根數據位數
ACALL WG26 ;26位接收完畢?
DTOE:POP ACC
POP PSW
RETI
;外中斷1服務程序,接收DATA1
DT1: PUSH PSW ;
PUSH ACC
SETB RS1
CLR RS0 ;第二組寄存器
SETB C ;DATA1
MOV R7,#4 ;26位用4字節(jié)
MOV R0,#WGBUF ;緩沖器首地址
DT11:MOV A,@R0
RLC A
MOV@R0,A
INC R0
DJNZ R7,DT11
DJNZ WXH0,DTlE ;26位接收完畢?
MOV WXH0,#26 ;韋根數據位數
ACALL WG26 ;韋根處理
DT1E:POP ACC
POP PSW
RETI ;中斷返回
提供的兩個中斷服務程序可共同完成26位韋根碼的接收。其中,外中斷0負責DATA0的接收;外中斷1負責DATA1的接收。
當26位的韋根碼接收完整后調用子程序WG26,在子程序中進行韋根碼的奇偶校驗、存儲、發(fā)送等處理。程序使用4個字節(jié)作為韋根碼存儲單元,即前三個字節(jié)的全部和第四字節(jié)的最低2位。
4 結束語
應用單片機的中斷技術實現了韋根信號的接受,設計的電路和程序均已通過調試,并設計調試方案如圖3所示。
經測試,讀卡成功率100%,未發(fā)現差錯,通信正確率100%。設計完全達到預期效果,并在實際項目實施過程中運行正常。文章中給出了完整的接收程序。由于篇幅所限,初始化程序、信號處理程序未與列出,需要者可與作者聯系,愿予提供、交流。