摘要:RFID射频识别是一种非接触式的自动识别技术,单片机结合RFID技术的应用将给智能车库系统带来革命性变革。本文基于现实生活中进入出库的不便和延误,对车库控制系统进行可行性智能化设计,使车库达到智能化、无人化管理的目的,减少进出车库的时间,提高车库的效率。
1.引言
智能车库是近年来快速发展的一种先进的停车方式,为日益严重的城市停车难提供了一个有效的解决办法。通过软件控制车库,加快了车辆进出车库的速度,提高了车库利用效率,降低了劳动力成本,使车主的时间和车库的利用效率大幅度提高。
本文设计的智能车库在软件控制下使用STC11F32单片机接收通过RFID传回的磁卡信号并做出处理,对车库的运行和管理做出控制总体上的软件设计方案。软件以STC公司生产的STC 11F32XE单片机作为硬件平台,对软件系统中各个功能模块的具体设计进行了详细介绍。控制系统以C语言作为主要编程语言,对系统的监控程序以及主要软件功能模块子程序进行了具体设计。此方案在模型车库中已经通过验证和实际的信息采集并做出修改,为实际运用。
2.整个智能车库程序控制器部分
2.1 智能车库程序软件流程
整个智能车库程序除了智能小车控制部分的程序以外,还包括硬件控制部分的程序、射频识别部分的程序,其软件流程框图如图1所示。
2.2 硬件控制模块STC 11F32XE芯片
S T C 1 1 F 3 2 X E单片机是一种独特的微处理器,具有高可靠性、功能强、高速度、低功耗和低价位等优点。将S T C11F32 XE在系统程序中进行寄存器的初始化程序设置,经过这样的初始化操作后,对芯片的使用,就可以和其他的普通51单片机相同了,便于提高系统的移植性和通用部署,其设置程序如下:
void InitPort(void) / / 寄存器初
始化,便于后面对芯片的操作
{
P0M1=0×00; //I/O口0模式控制器1
P0M0=0xff; //I/O口0模式控制器0
//整个P0口为推挽输出模式,强上拉
输出,可达20mA,硬件电路需要加限流电
阻
P1M1=0×00; //I/O口1模式控制器1
P1M0=0×00; //I/O口1模式控制器0
//整个P1口选择准双向口,传统8051
I/O口模式,灌电流可达20mA,拉电流为
230mA
P24=1;
//接按键硬件模式选择接口,系统不同服
务场景使用
P2M1=0×10; //I/O口2模式控制器1
0001 0000
P2M0=0×88; //I/O口2模式控制器
1000 1000
//P2^3和P2^7为推挽输出;P2^4仅为
输入,空闲为高阻状态;其余位全为准双
向口
P30=1; //接max232电平转换芯。
片,从输入串口获得需要电位
P36=1; //接按键1、2,和P24一
起选择控制权限、模式
P3M1=0×41; //I/O口3模式控制器1
1000 0001
P3M0=0xa2; //I/O口3模式控制器0 1010 0010
//P3^7为开漏(Open Drain)状态,
内部使用上拉电阻断开,要外加上拉电阻
P41=1; //接磁卡控制端
P4M1=0×02; //I/O口4模式控制器1
0000 0010
P4M0=0×04; //I/O口4模式控制器0
0000 0100
}
对I/O口工作模式在同一个函数中的设置,减少了相同代码的反复编写,优化了程序结构,便于更加灵活的使用芯片内部的寄存器和存储器。
2.3 射频识别部分RC522芯片
射频识别部分采用解读器RC522读取信息并解码后,通过M-MFMOSI、M-MFMISO和M-MFRST送至STC 11F32芯片,通过信号相互传递,程序在进行有关的数据处理。
MF RC522在13.56MHz下的被动非接触式通信方式和协议。
系统软件设计中,STC 11F32XE通过M-MFMOSI、M-MFMISO和M-MFRST连接中选取串行UART(类似RS232)模式,数据传输速率高达424kbit/s,有利于减少连线,缩小PCB板体积,降低成本,便于大规模推广。其设置程序如下:
//功能:读取M1卡一块数据
//参数说明: addr[IN]:块地址
//pData[OUT]:读出的数据,16字节
//返回:成功返回MI_OK
char PcdRead(unsigned char data
addr,unsigned char *pData)
{
char data status;
unsigned int data unLen;
unsigned char data i,ucComMF
522Buf[MAXRLEN];
ucComMF522Buf[0] = PICC_READ;
ucComMF522Buf[1] = addr;
CalulateCRC(ucComMF522Buf,2,
&ucComMF522Buf[2]);
status=PcdComMF522(PCD_TRANSCEIVE,u
cComMF522Buf,4,ucComMF522Buf,&unLen);
if ((status == MI_OK) && (unLen
== 0×90))
{
for (i=0; i<16; i++)
{ *(pData+i) =
ucComMF522Buf[i]; }
}
else
{ status = MI_ERR; }
return status;
}
3.总结
整个智能车库程序设计过程中,考虑了现有正在使用的车库,根据对磁卡的不同操作,设置成多个工作模式,通过外部硬件进行选择,尽可能的降低程序间的相互影响,达到系统的通用性和易于操作。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。