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