摘 要: 本文基于Autotag射频通讯器,利用增强型高性能8051单片机P89LPC932设计了基于RS-232协议的射频智能车辆门禁控制系统的软硬件。
关键词:射频 ;门禁; 单片机
系统概述
门禁控制领域中,读卡器通讯器读取各类非接触式身份识别卡, 将ID信息转化为二进制数据,采用串行通讯方式与各类控制设备相连,以实现相应的管理和控制功能。本文所介绍的车辆门禁控制系统,采用射频通讯器识别用户ID,充分利用增强型高速8051单片机P89LPC932资源,实现单片机控制的大容量、低成本、快速响应车辆门禁系统。
系统介绍
本系统采用Autotag射频通讯器识别用户电子标签,增强型8051单片机P89LPC932作为主控芯片。该系统充分利用单片机片内资源,所有1000个用户ID码和相应权限均存储在单片机内,不需扩充任何外部存储器件,实现了系统最小化、最简化。主控芯片读取用户数据信号并根据用户权限情况做出是否开门信号,并对异常做出声光报警,系统响应时间小于0.9s,响应距离8m。系统示意图如图1所示。
图1 射频智能车辆禁系统工作示意图(略)
P89LPC932单片机特性介绍
LPC932是一款低功耗、低价格单片封装的微控制器,采用了高性能的处理器结构,指令执行时间只需2到4个时钟周期,6倍于标准80C51器件,电源电压低,操作电压范围为2.4~3.6V。同时集成了许多系统级的功能,这样可大大减少元件的数目、电路板面积以及系统的成本。片内具有8KB
Flash程序存储器,1KB可擦除扇区和64字节可擦除页规格;256字节RAM数据存储器;512字节附加片内RAM,512字节片内用户数据EEPROM存储区可用来存放器件序列码及设置参数等;4个中断优先级,8个键盘中断输入,另加2路外部中断输入;可配置的片内振荡器及其频率范围和RC振荡器选项(通过用户可编程Flash配置位选择),选择RC振荡器时不需要外接振荡器件。选择片内振荡和片内复位时可多达26个I/O口,所有口线均有20mA的LED驱动能力。
系统硬件设计
本门禁控制系统硬件主要部分如图2所示。
图中可以按照功能分为以下几部分。
主控制器
采用公司的P89LPC932,是控制系统的核心部件。上电后从EEPROM中读取密码。当车辆触发入口感应线圈,产生外部触发1,该触发信号送入单片机和通讯器。单片机产生外部中断,开始准备读取数据。通讯器响应该触发信号,开始发送数据。单片机片内在FLASH中存储有1000个用户ID码,每个用户ID占用4个字节。同时用户权限资料存储在片内的EEPROM中,每个用户占用半个字节。当判别所读到的ID存在且合法,则发出开门信号。若ID非法,则进行声光报警。当车辆驶过出口线圈,触发外部中断2,单片机发出关门信号。
图2 系统硬件主体图(略)
数据读取部分
本系统采用Autotag通讯器识别用户ID并送出RS-232电平信号。Autotag通讯器工作频率为433.9MHz,将由电子标签读出的独一无二的32位代码通过RS232传输线发出。发送数据格式为:8个数据位,无奇偶校验,一个结束位,波特率为9600。当车辆到达入口,触发感应线圈,通讯器开始工作,识别安装于车辆上的电子标签,并将用户ID码转换为RS-232电平信号,由MAX3232将其转换为TTL电平信号并送入单片机串口。
系统的服务模块包括显示电路和声光报警电路。显示电路通过译码/驱动器CD4511将BCD码译为7段LED显示,并驱动LED显示,利用2
4译码器74HC139进行LED位选。声光报警部分采用单片机直接驱动发光二极管进行光报警,因为该单片机最大驱动电流可达20mA,通过三极管驱动蜂鸣器进行声报警。
系统软件设计
软件总体设计
该系统软件从功能上可以分为几大模块:读取用户ID并判别合法性模块、系统和用户权限管理模块、声光报警模块、键盘模块、显示模块。其中读取用户ID并判别合法性模块和用户权限管理模块是本系统的核心模块。
在主程序中主要完成上电初始化、初始密码读取,并对不同模块入口标志进行循环扫描,根据标志的不同状态,进入不同的子程序模块,做出响应的处理。
主程序简要流程如图5所示。
读取用户ID子程序
本系统读取ID子程序采用外部触发方式。当有外部中断触发时,单片进入外部中断处理函数,进行用户ID的读取。部分C源代码如下所示。函数trigger_ISR()为外部触发中断处理函数。
Autotag通讯器将电子标签的32位代码转化为10位BCD,然后将这10位BCD转化为ASCII码通过CRLF终端发送。10位BCD码前8位为有效信息,后两位分别为ASCII码0X0D,0X0A,这两位是为了标识一个有效用户ID发送完成而设置的,其相对应的意义为回车符和换行符。本系统的ID读取子程序中以判别0X0D为数据结束。
void trigger_ISR() interrupt 2
{ uchar serial_temp;
EA=0;
n=0;
do
{
while(!RI);
serial_temp=SBUF; //暂存读到的ASCII码
RI=0; //清标志位,以便接收下一个
ID[n]=serial_temp; //将读到的ASCII码存入数组
n++; //指向下一个存储位置
if (n>11)n=0; //若超出,重新存储。
}while(serial_temp!=0x0D); //当读到结束符0x0D时停止接收。
uart_ISR=1; //置位中断服务完成标志。
IE1=0;
EA=1;
return;
}
图5 系统主程序流程图(略)
结论
本系统软件系统在Keil51下调试通过,硬件系统制作了电路板。经过实际测试,该系统容量大,用户可达1000个。响应速度快,响应时间小于0.9s,响应距离可达8m。系统集成度高,外围电路少,抗干扰能力强,运行稳定可靠。
|