- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于非接触IC卡自动计时停车收费系统设计开发
随着国民经济飞速发展.城市汽车数量剧增,停车难问题愈来愈凸现,在增加停车场数量的同时,提高停车场的智能化管理是解决这个问题的关键。本设计开发的自动计时停车收费系统,以非接触IC卡技术为基础.实现了停车场收费管理现代化,它具有效率高、管理科学、安全可靠等特点。
1 系统整体设计
整个系统硬件设备由停车场人口设备、停车场出口设备和发卡设备三部分组成。人口设备和出口设备位于停车场人口和出口单机工作,而发卡设备位于管理中心,由上位机控制。三部分设备的硬件设计和主要功能如表1所示。
表1 设备硬件组成与功能
硬件组成上,发卡设备直接由上位机控制,所以无需键盘、LCD模块等硬件,出口设备包含人口设备和发卡设备所有的硬件,它们的设计只需在出口设备硬件基础上去掉相应模块,所以在后面的硬件设计介绍中以出口设备为代表 三种设备的不同功能由软件编程实现,出口程序经过精简和简单的修改可得到人口设备程序,所以在软件设计中主要讨论了出口设备和发卡设备的程序流程。在整个系统中,非接触IC卡是三部分硬件设备相互联系的桥梁,非接触IC卡的读写程序设计是系统实现的关键,本文将重点讨论。
2 IC卡卡内存储空间的分配
本设计使用PHILIPS公司的MF1 IC卡,卡内集成1KB的E2PROM,并划分为16个可独立使用的扇区,每个扇区又分为4个16字节的存储块,每个扇区的第4个存储块保存该扇区的密码和访问控制,IC卡中的16个扇区可用于16个不同系统中。本设计使用扇区2,具体存储空间划分:块0的低4个字节存储用户序列号,块1存放存储用户余额,块2低7个字节存放停车起始时间 块3存放两套6字节密码和4宁节访问控制。
3 硬件设计
3.1出口设备硬件结构
出口设备硬件结构如图1所示.AT89C55单片机作为控制器,它片内集成20KB的程序存储器,满足本设计对程序存储器容量的要求:ZLG7289芯片外接4x4的键盘;DS1302为停车计时提供准确时钟;LCD液晶显示各种信息,如按键信息、时间和停车费用等:AT24C256存储用户结算信息:通过RS-232 I亍上位机通信:通过ZLG500对IC卡进行读写操作:MCU通过P1.7端口向挡车闸电机控制器发送开关车闸信号。为充分利用单片机有限的端口,外围设备多采用了具有I2C接口f如AT2,4C256、DS1302)和SPI接1:3(如ZLG7289、ZLG500)的器件。
图1 出口设备硬件示意图
3.2非接触IC卡读写模块ZLG500
ZLG500负责对非接触IC卡的读写操作。需外接PCB天线。ZLG500模块连接电路如图2所示.传输启动端SS接MCU的外部中断O,MCU和ZLG500之问发送数据,首先由发送方将SS拉低并且在发送结束后将SS拉高,本设计中MCU以下降沿中断触发的方式接收ZLG500发送的数据.并将外部中断O设置为最高优先级,保证第一时间接收到IC卡数据。SCLK为SPI接口的时钟线,总是由MCU产生。SDATA为双向数据线,在数据传输开始前,由数据发送方将SDATA拉低,数据接收方同意接收数据则将SDATA拉高,作为接收响应信号,之后SDATA作为数据传送线。模块自带看门狗,复位端RST可悬空或接低电平。CTRL和BZ接发光二极管和蜂呜。
图2 ZLG500模块电路连接图
3.3 AT24C256存储器存储空间划分
采用具有32KB存储容量AT24C256存储收费结算信息。存储空间划分:第1、2字节为出口设备号,第3、4个字节为已打卡数量,第5到第8个字节为收费总金额,后面为用户数据区,每位用户数据由13字节组成.包括4字节用户序列号和2字节消费金额(BCD码1.最多记录5460个用户数据。
3.4 LCD显示
采用SMG12864液晶显示模块,可显示4行8列共32个16x16的汉字。它自带2个KS0108B和1个KS0107B显示驱动控制器.2个KS0108B分别控制左右两个半屏64x64)像素点的显示.KS0107B作为64行的行驱动控制。液晶模块采用直接控制方式.P2.2和P2.3分别接CS1和CS2用于左右半屏控制器的片选,RS(接P2.O)为内部功能寄存器选择,R/W(接P2.1)为读写控制信号.P2.7接LCD驱动器的使能端E。
3.5键盘设计
键盘接口电路采用ZLG7289芯片.其按键有效输出端,KEY)接MCU的INT1./KEY在有效按键时为低电平,平时为高电平。 EY的下降沿触发按键中断之后,MCU根据ZLG7289发送的键值进行相应处理。设计按键有:数字键0—9、“.”、“功能”、“退出”、“退格”、“确定”。
4 软件设计
软件设计采用了模块化设计方法.首先设计出设备外围各硬件的驱动程序,将各硬件的驱动函数声明在相应头文件(.h文件)中,然后在主程序中包含这些头文件,按系统功能需要调用各个模块的驱动函数。限于篇幅,本文只详细讨论了主程序流程和读写卡程序。
4.1主程序
4.1.1出口设备主程序流程
(1)启动后对LCD、E2pROM、ZLG500和时钟等初始化;
(2)读取当前时间、LCD显示待机界面;
(3)等待射频IC卡的请求、按键请求或串13通信请求。有任一种请求则进入相应处理程序,并且处理程序返回之前。屏蔽其它两种请求。① IC卡请求,验证用户IC 合法性,若为非法卡.则放弃IC卡请求,若为合法卡,从DS1302和IC卡中获取当前时间和停车起始时间,计算出停车费用,从IC卡获取用户余额。若判断消费金额超过用户余额则蜂呜报警并在LCD 中提示。否则将扣除消费金额并将余额写入IC卡中,最后将用户序列号和消费金额存储到AT24C256中,上位机根据存储器中用户消费金额更新用户余额。② 按键请求.“功能”键被按下会中断触发按键处理程序,液晶显示“请输入密码”,正确输入密码后,在液晶中显示各种功能,如“设置时间”、“查询总金额”、“记录个数”等,按数字键选择相应功能,按“退出”键可以退到上一层操作界面,按“确定”键可确认输入,“退格”键取消前一步输入。③ 串口通信请求,出口设备与上位机连接时.根据上位机命令.可进行存储器数据上传、设置设备时间等操作。
(4)向挡车闸电机控制器发出开关信号。
4.1.2 发卡设备主程序流程
开机后对读写卡模块和串口进行初始化. 然后等待上位机命令:
(1)若为“发新卡命令”.接着接收上位机发来的新用户数据,当在有效范围内检测到合法卡时将数据写入IC卡内扇区2
中相应位置中:
(2)若为“充值命令”,将有效范围内IC卡的用户信息传给上位机,然后等待上位机发来“写卡命令”:
(3)收到“写卡命令”,紧接着接收上位机发送的数据,然后将接收到的数据写入IC卡中。
4.2读写IC卡模块通信协议与程序设计
4.2 1 MCU与ZLG500之间的通信协议
MCU与ZLG500之间的通信接图3所示的数据格式进行。
图3 MCU与ZLG500之间通信的数据格式
数据块各字段描述如下:
① SeqNr:数据交换包的序号;
② Command:MCU向ZLG500发送命令的代码,例如Read命令为0x46。Write命令为0x47:
③ Status:ZLG500对MCU发出命令的响应;
④ Len:要发送数据的个数,以字节为单位;
⑤ Data[0
8943;N1:要发送的Len个字节的数据;
⑥ BCC:BCC校验码,计算公式为:Byte[n]=NOT(Byte XOR Byte XOR....XOR Byte[n一11)。
MCU与ZLG500之间通信必须先由MCU发起,MCU按照数据格式向ZLG500发送命令和数据,ZLG500执行完命令后,将命令执行的状态和响应数据按照数据格式发回给MCU。
4.2.2读写IC卡过程的代码实现
读写IC卡程序分为底层驱动函数和高层应用接口。底层驱动函数使用汇编语言设计, 主要包括SPI总线数据发送函数(_SPI_SEND)和接收函数(SPI_RCV1,目的是为了提高收发数据的准确性和访问速度。高层应用接口包括对IC卡的各种操作, 采用C51编程实现。
5 结论
现在我国私家车刚刚进入普及阶段,该系统的提出具有一定的前瞻性,系统是在实际考察和实验基础上开发的,对现有停车场只需进行简单的改造,就可实现智能化管理。目前该系统已成功应用于翔达运输公司的停车场管理中,进一步推广使用必将带来巨大的社会效益和经济效益。
本文作者创新点:
1)提出自动计时收费停车的实现方案:
2)采用SPI接El和FC总线接El的器件,充分的利用了单片机有限的端El;f3)读写卡采用了C语言和汇编语言混合编程,
优化了程序。
经济效益:24万元/年。在翔达运输公司的2个货运停车场中使用,在1个月的总收人为:2万元,昕以年收人为2万元x12个月=24万元/年。
作者简介:李宏佳(1981-),男(汉族),山东省青岛市人,青岛科技大学控制理论与控制工程专业,硕士,主要从事嵌入式系统研究:魏权利(1960一),男(汉族),山东省青岛市人,青岛科技大学信息科学学校,硕士,教授,硕士生导师,主要从事计算机网络、嵌入式系统、人工智能研究;徐晓晓(1983一),女(汉族),山东省青岛市人,青岛科技大学控制理论与控制_T:程专业,硕士,主要从事嵌入式系统研究。
(266042 山东青岛青岛科技大学信息科学技术学院)李宏佳 魏权利 徐晓晓 郭思文
通讯地址:(266042 山东青岛科技大学四方校区280信箱) 李宏佳