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