基于W78E516的射頻讀卡器實現
文章出處:http://hz-huyue.com 作者:羅士棟 白長清 汪峰 人氣: 發表時間:2011年10月22日
1.引言
手持式IC卡讀寫器廣泛應用于需要現場進行IC卡收費及驗證的各個領域,是很多IC卡應用系統的重要組成部分。由于它具有體積小巧、輕便易攜帶、數據存貯量大、通信能力強等優點,所以已在越來越多的應用系統中充當著越來越重要的角色。
射頻卡是一種非接觸式的智能IC卡,和接觸式的智能IC卡相比,射頻卡沒有電器觸點,它與讀卡器之間信息的傳遞采用電磁感應,以無線電波的方式進行。射頻識別是非接觸式的自動識別技術,它通過射頻信號自動識別目標對象并獲取相關數據,識別工作無需人工干預,可工作于各種惡劣環境[1]。因此,相對于傳統的接觸式智能IC卡,具有可靠性高、壽命長等明顯優點。
2.系統設計
本系統為一種刷卡門禁系統,每個用戶對應一個唯一的卡號。射頻讀卡器系統讀入用戶的卡號,經由處理器W78E516處理,處理器再將處理結果傳送給門禁控制系統,門禁控制系統根據結果控制門的開關。另外本系統專門使用了擴展EPROM系統配合RS232對處理器進行ISP編程,這樣我們就不需要購買專門的編程器就可以隨時對處理器進行ISP編程。系統框圖如圖1所示。
3.讀卡器功能設計
根據需要完成的功能,該讀卡器實現電路由W78E516單片機電路﹑MTP-K4射頻讀卡器電路﹑ISP編程電路﹑門禁控制系統電路組成。
3.1 W78E516單片機系統電路
W78E516是具有帶ISP功能的Flash EPROM的低功耗8位微處理器;ISP功能的Flash EPROM可用于固件升級。它的指令集同標準8052指令集完全兼容。W78E516包含64K字節的主ROM﹑4K字節的輔助ROM。(位于4K字節輔助ROM中的裝載(loader)程序,可以讓用戶更新位于64K主ROM中的類容。)512字節片內RAM;4個8位雙向﹑可位尋址的I/O口;一個附加的4位I/O口P4;3個16位定時/計數器及一個串行口。這些外圍設備都有8個中斷源和2級中斷能力的中斷系統支持。為了方便用戶進行編程和驗證,W78E516內含的ROM允許電編程和電讀寫。一旦代碼確定后,用戶就可以對代碼進行保護。
W78E516有兩種節電模式,空閑模式和掉電模式,2種模式均可由軟件來控制選擇??臻e模式下,處理器時鐘被關閉,但外設仍繼續工作。在掉電模式下晶體振蕩器停止工作,以將功耗降至最低。外部時鐘可以在任何時間及狀態下被關閉,而不影響處理器運行。
本系統復位電路使用MAX6317作為復位芯片,MAX6317具有用戶自定義的復位門限、輸出結構、復位時間延遲、"看門狗"定時延遲等功能。"看門狗"功能用于當軟件陷入死循環時中斷微處理器,如果在"看門狗"定時周期內,"看門狗"檢測器輸入端WDI沒有收到觸發信號,則產生復位脈沖中斷微處理器,內部"看門狗"定時器不斷地由復位脈沖或WDI端的觸發脈沖清零重新計時,復位期間"看門狗"定時器保持零狀態,不計數。 復位采用按鈕的形式,當復位按鈕被按下時,單片機的RST端處于低電平狀態,只需要低電平保持2個機器周期以上的時間,單片機就能夠正確地復位。在復位按鈕正常狀態(沒有按下),則RST端一直處于高電平,單片機正常工作。
W78E516的P1.1,P1.2各接了一個發光二極管,P1.3接了一個蜂鳴器,作為各種提示用。W78E516系統電路如圖2所示。
3.2 MTP-K4讀卡器電路
射頻卡的讀寫以無線電波的方式進行,當卡片移到電磁場的有效作用范圍時,卡片里的線圈將感應到讀寫器模塊天線發送的電磁波,從而獲得電源并進行數據傳送。在本系統中我們采用了MTP-K4系列射頻卡。MTP-K4射頻卡具有體積小、引腳少、功耗低等特點。它的主要技術性能參數如下:
● 尺 寸:26.5 x 16.5 x 6.9 mm
● 電 源:5V@44mA nominal
● 工作頻率:125KHz
● 卡片格式:EM4001/4102 或兼容卡
● 譯碼方式:Manchester 64bit,modulus 64
● I/O 輸出電流 : 25mA sink/source
● 天線電壓: 150Volt PKPK
● 感應距離:max. 30cm
● 感應速度:約0.3 秒
● 工作溫度:-15℃~75℃
● 儲存溫度:-25℃~85℃
● 儲存濕度:5-95﹪RH
● 輸出格式:韋根26位/RS232 TTL (ASCII)
MTP-K4有兩種輸出格式:韋根26位/RS232 TTL(ASCII)。在這里我們使用RS232 TTL(ASCII)輸出格式。MTP-K4總共有9個引腳,引腳3接高為RS232 TTL(ASCII)輸出格式,接低為韋根26位輸出格式。故Pin3在這里接高。天線接在引腳1和引腳2之間。引腳4可接蜂鳴器或者LED,這里把它懸空。引腳5為TX非反相輸出,在這里把它接到CPU的P3.0/RxD管腳上,引腳6為TX反相輸出,這里把它懸空。引腳7低電平復位,引腳8接地,引腳9接VCC,VCC范圍可從4.6V至5.5V。MTP-K4讀卡器電路如圖2所示。
3.3 ISP 編程電路
W78E516 內建一個64K 字節的主ROM 區,來存儲應用程序(APROM),和一個4K的輔助ROM 區用于存儲裝載程序(LDROM)。在正常運作方式下,控制器執行APROM中的代碼。如果要更改APROM 中的代碼,W78E516 允許用戶通過硬件連接方式,來使控制器進入在線下載模式即跳轉到4K 區程序執行。進入在線下載模式硬件條件如下表1:
在這里我們通過一個開關使處理器在復位時P4.3 為低讓處理器進入在線下載模式,此時處理器從4K LDROM 啟動,使能ISP, 64K APROM 是再編程區。正常運行時把開關撥開來使P4.3 為高,此時處理器從64K APROM 啟動,使能ISP, 4K LDROM 是再編程區。處理器的EA 管腳控制訪問內部64K APROM 還是外部ROM,當EA 保持高電平時處理器訪問內部64K APROM,當EA 保持低電平時處理器訪問外部ROM。在這里我們把EA 接到一個跳線上,當使用外部ROM 時把它跳到GND,使用內部64K APROM 時跳到VCC。在這里我們擴展一個20 引腳的EPROM 插座,把EA 跳到GND,把開關拔開使P4.3 為高,讓處理器訪問外置EPROM,使用串口配合上位機程序從上位機把在線下載管理程序燒寫到4K LDROM 里面。這樣以后我們就可以通過4K LDROM 在線對64K APROM 實現在線編程了。
把在線下載程序燒寫到4K LDROM 后,拔掉外置EPROM, 把EA 跳到VCC,使P4.3為低,復位處理器讓處理器進入在線下載模式,在線下載程序通過串口配合上位機程序從上位機獲取要執行的程序寫入64K APROM。這樣我們就完成了對64K APROM 的ISP 編程。圖3 為擴展EPROM 插座電路圖。圖4 為外置EPROM 電路圖。圖5 為串口的電路連接。
MAX232 可以用作單片機和單片機之間、單片機和PC 機串行口之間的符臺RS 一232串行接口電路,只要將待進行傳輸的設備的發送和接收端相應的接上,縮程即可。MAX232外圍需要4 個電解電容C1、C2、 C3、C4,是內部電源轉換所需電容。其取值均為1 F/25V.宜選用鉭電容并且應盡量靠近芯片。C5 為0.1uF 的去耦電容。MAX232 的引腳TlIN、T2IN、R1OUT、R2OUT 為接TTL/CMOS 電平的引腳.引腳T1OUT、T2OUT、R1IN、P,2IN 為接RS 一232C 電平的引腳.因此TTL/CMOS 電平的TIIN、T2IN 引腳應接MCS 一51 的串行發送引腳TXD;R1OUT、P,2OUT 應接MCS 一51 的串行接收引腳RXD。與之對應的RS 一232C 電平的T1OUT、T2OUT 應接PC 機的接收端RD;R1IN、R2IN 應接PC 機的發送端TD。由于W78E516 只有一個串行口,故我們需要在RxD 管腳上接個跳線,以滿足讀卡器和MAX232 串行接口電路的需求。
采用此種編程方法可以使我們不用購買專門的編程器就可以隨時對CPU 進行編程,而不用對CPU 進行插拔。這樣我們就可以使用無鉛封裝QFP44 的W78E516, 減小了板子的大小。另外一塊外置EPROM 板子可以對多塊電路板編程,而且只需使用一次即可,具有簡單,實用,成本低廉的特點。
3.4 門禁控制系統電路
本系統采用專門用來驅動繼電器的芯片ULN2003,它的內部結構是達林頓的,甚至在芯片內部做了一個消線圈反電動勢的二極管。ULN2003 的輸出端允許通過IC 電流200mA,飽和壓降VCE 約1V 左右,耐壓BVCEO 約為36V。用戶輸出口的外接負載可根據以上參數估算。采用集電極開路輸出,輸出電流大,故可以直接驅動繼電器或固體繼電器(SSR)等外接控制器件,也可直接驅動低壓燈泡。繼電器使用DS2Y-S-DC6V。電路連接上把處理器的P1.4 接到ULN2003 的1 腳上,ULN2003 的2 腳和自己的16 腳相連,ULN2003的15 腳接到DS2Y-S-DC6V 的1 腳。這樣把P1.4 置低就可以使繼電器吸合。
4.系統軟件設計
簡單地說微 處理器對MTP-K4 的控制事實上就是對非接觸式智能射頻卡的控制。每當有卡刷入時,單片機通過串口從讀卡器芯片讀入數據,對它進行處理,然后根據結果控制門的開關。軟件設計的主要工作是初始化串口,從串口讀入數據并對它進行處理。本系統軟件設計時大量采用自定義函數,在主程序中調用不同的函數完成相應的接口功能。采用這種方式,該系統軟件也可以很容易移植到其他類似系統。本系統軟件在Keil uVision2 下編寫,以下給出部分C 語言程序。
4.1串口初始化函數
void initUart()
{
TMOD=0x20; /*定時器1,方式2*/
TL1=0xfd;
TH1=0xfd; /*9600 波特11.0592MHz*/
TCON=0x40; /*啟動定時器1*/
PCON=0x00; /*電源控制寄存器設初值*/
SCON=0x50; /*允許接收*/
EA=1; /*允許總中斷*/
ES=1; //允許串口中斷
}
4.2讀數據函數
Uart()interrupt 4 using 1
{
if(RI&&~r_full)
{
rs_buf[r_in]=SBUF;
RI=0;
r_in++;
if(r_in==13)
{
r_full=1;
ES=0;
r_in=0;
P1&=GLED_ON;
P1&=BELL_ON;
delay100ms(2);
P1|=GLED_OFF;
P1|=BELL_OFF;
}
}
}
4.3看門狗"喂狗"函數
void watchdog(void)
{
P1&=0x7f;
NOP();
NOP();
P1|=0X80;
NOP();
NOP();
P1&=0x7f;
}
4.4 延時函數
void delay100ms(unsigned char n)
{
unsigned char k;
for(k=0;k<n;k++)
{
unsigned char i=100;
unsigned char j;
do
{
j=7;
do{ j+=2;j--; }
while(j);
j=1;
}
while(--i);
}
watchdog();
}
5.總結
本文設計的門禁系統其讀卡器在9600 bps 通信速率下普通卡讀卡距離為18cm,遠距離卡可以達40cm,可以實現考勤功能,整個系統采用低功耗器件,使系統的功耗降至最低。另外本文介紹了W78E516 的一種ISP 方法,使得我們不用專門的編程器就可以隨時對MCU進行編程,具有簡單,實用,成本低廉的特點。