基于W78E516 的射频读卡器实现
作者:罗士栋 白长清 汪峰
来源:RFID世界网
日期:2007-12-12 15:13:43
摘要:以射频识别技术的实际应用为背景,采用北京远兴时代科技有限公司的低功耗RF射频感应式收发模块MFP-K4,结合带ISP功能的Flash EPROM的低功耗8位微处理W78E516,设计一个门禁控制系统。给出了各部分的硬件电路设计原理图,描述了各个功能的实现方法,同时给出了部分程序代码。
1.引言
手持式IC 卡读写器广泛应用于需要现场进行IC 卡收费及验证的各个领域,是很多IC卡应用系统的重要组成部分。由于它具有体积小巧、轻便易携带、数据存贮量大、通信能力强等优点,所以已在越来越多的应用系统中充当着越来越重要的角色。
射频卡是一种非接触式的智能IC卡,和接触式的智能IC卡相比,射频卡没有电器触点,它与读卡器之间信息的传递采用电磁感应,以无线电波的方式进行。射频识别是非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无需人工干预,可工作于各种恶劣环境[1]。因此,相对于传统的接触式智能IC卡,具有可靠性高、寿命长等明显优点。
2.系统设计
本系统为一种刷卡门禁系统,每个用户对应一个唯一的卡号。射频读卡器系统读入用户的卡号,经由处理器W78E516处理,处理器再将处理结果传送给门禁控制系统,门禁控制系统根据结果控制门的开关。另外本系统专门使用了扩展EPROM系统配合RS232对处理器进行ISP编程,这样我们就不需要购买专门的编程器就可以随时对处理器进行ISP编程。系统框图如图1所示。
根据需要完成的功能,该读卡器实现电路由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允许电编程和电读写。一旦代码确定后,用户就可以对代码进行保护[2]。
W78E516有两种节电模式,空闲模式和掉电模式,2种模式均可由软件来控制选择。空闲模式下,处理器时钟被关闭,但外设仍继续工作。在掉电模式下晶体振荡器停止工作,以将功耗降至最低。外部时钟可以在任何时间及状态下被关闭,而不影响处理器运行。
本系统复位电路使用MAX6317作为复位芯片,MAX6317具有用户自定义的复位门限、输出结构、复位时间延迟、“看门狗”定时延迟等功能。“看门狗”功能用于当软件陷入死循环时中断微处理器,如果在“看门狗”定时周期内,“看门狗”检测器输入端WDI没有收到触发信号,则产生复位脉冲中断微处理器,内部“看门狗”定时器不断地由复位脉冲或WDI端的触发脉冲清零重新计时,复位期间“看门狗”定时器保持零状态,不计数。 复位采用按钮的形式,当复位按钮被按下时,单片机的RST端处于低电平状态,只需要低电平保持2个机器周期以上的时间,单片机就能够正确地复位。在复位按钮正常状态(没有按下),则RST端一直处于高电平,单片机正常工作。
W78E516的P1.1,P1.2各接了一个发光二极管,P1.3接了一个蜂鸣器,作为各种提示用。W78E516系统电路如图2所示。
射频卡的读写以无线电波的方式进行,当卡片移到电磁场的有效作用范围时,卡片里的线圈将感应到读写器模块天线发送的电磁波,从而获得电源并进行数据传送。在本系统中我们采用了MTP-K4系列射频卡。MTP-K4射频卡具有体积小、引脚少、功耗低等特点。它的主要技术性能参数如下[3]:
● 尺 寸: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:
把在线下载程序烧写到4K LDROM 后,拔掉外置EPROM, 把EA 跳到VCC,使P4.3为低,复位处理器让处理器进入在线下载模式,在线下载程序通过串口配合上位机程序从上位机获取要执行的程序写入64K APROM。这样我们就完成了对64K APROM 的ISP 编程。图3 为扩展EPROM 插座电路图。图4 为外置EPROM 电路图。图5 为串口的电路连接。
采用此种编程方法可以使我们不用购买专门的编程器就可以随时对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进行编程,具有简单,实用,成本低廉的特点。
参考文献
[1]Klause Finkenuller.射倾识别(RFID)技术[M],北京:电子工业出版社,2001.6。
[2] WinBond Electronics Corp。W78LE516 Data Sheet。
[3] 北京远兴时代科技有限公司。MTP-125K4 Series Low Cost Proximity Reader。
手持式IC 卡读写器广泛应用于需要现场进行IC 卡收费及验证的各个领域,是很多IC卡应用系统的重要组成部分。由于它具有体积小巧、轻便易携带、数据存贮量大、通信能力强等优点,所以已在越来越多的应用系统中充当着越来越重要的角色。
射频卡是一种非接触式的智能IC卡,和接触式的智能IC卡相比,射频卡没有电器触点,它与读卡器之间信息的传递采用电磁感应,以无线电波的方式进行。射频识别是非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无需人工干预,可工作于各种恶劣环境[1]。因此,相对于传统的接触式智能IC卡,具有可靠性高、寿命长等明显优点。
2.系统设计
本系统为一种刷卡门禁系统,每个用户对应一个唯一的卡号。射频读卡器系统读入用户的卡号,经由处理器W78E516处理,处理器再将处理结果传送给门禁控制系统,门禁控制系统根据结果控制门的开关。另外本系统专门使用了扩展EPROM系统配合RS232对处理器进行ISP编程,这样我们就不需要购买专门的编程器就可以随时对处理器进行ISP编程。系统框图如图1所示。
根据需要完成的功能,该读卡器实现电路由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允许电编程和电读写。一旦代码确定后,用户就可以对代码进行保护[2]。
W78E516有两种节电模式,空闲模式和掉电模式,2种模式均可由软件来控制选择。空闲模式下,处理器时钟被关闭,但外设仍继续工作。在掉电模式下晶体振荡器停止工作,以将功耗降至最低。外部时钟可以在任何时间及状态下被关闭,而不影响处理器运行。
本系统复位电路使用MAX6317作为复位芯片,MAX6317具有用户自定义的复位门限、输出结构、复位时间延迟、“看门狗”定时延迟等功能。“看门狗”功能用于当软件陷入死循环时中断微处理器,如果在“看门狗”定时周期内,“看门狗”检测器输入端WDI没有收到触发信号,则产生复位脉冲中断微处理器,内部“看门狗”定时器不断地由复位脉冲或WDI端的触发脉冲清零重新计时,复位期间“看门狗”定时器保持零状态,不计数。 复位采用按钮的形式,当复位按钮被按下时,单片机的RST端处于低电平状态,只需要低电平保持2个机器周期以上的时间,单片机就能够正确地复位。在复位按钮正常状态(没有按下),则RST端一直处于高电平,单片机正常工作。
W78E516的P1.1,P1.2各接了一个发光二极管,P1.3接了一个蜂鸣器,作为各种提示用。W78E516系统电路如图2所示。
射频卡的读写以无线电波的方式进行,当卡片移到电磁场的有效作用范围时,卡片里的线圈将感应到读写器模块天线发送的电磁波,从而获得电源并进行数据传送。在本系统中我们采用了MTP-K4系列射频卡。MTP-K4射频卡具有体积小、引脚少、功耗低等特点。它的主要技术性能参数如下[3]:
● 尺 寸: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:
把在线下载程序烧写到4K LDROM 后,拔掉外置EPROM, 把EA 跳到VCC,使P4.3为低,复位处理器让处理器进入在线下载模式,在线下载程序通过串口配合上位机程序从上位机获取要执行的程序写入64K APROM。这样我们就完成了对64K APROM 的ISP 编程。图3 为扩展EPROM 插座电路图。图4 为外置EPROM 电路图。图5 为串口的电路连接。
采用此种编程方法可以使我们不用购买专门的编程器就可以随时对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进行编程,具有简单,实用,成本低廉的特点。
参考文献
[1]Klause Finkenuller.射倾识别(RFID)技术[M],北京:电子工业出版社,2001.6。
[2] WinBond Electronics Corp。W78LE516 Data Sheet。
[3] 北京远兴时代科技有限公司。MTP-125K4 Series Low Cost Proximity Reader。