安阳工学院计算机科学与信息工程学院 常国权
为了给人们提供一个方便、安全、环保的饮料消费环境,降低饮料的制造成本和减少对资源的浪费,本文提出以STC15F2K32S2高速单片机和MFRC500读卡芯片为核心,以FM1208作为存储消费金额的载体,设计出了一款具有较高性价比CPU卡饮料销售机系统,并论述了该系统的硬件和软件设计的具体方案。
饮料销售机作为一种高科技智能化产品,以其操作方便、服务便捷、昼夜服务等优点得到广大消费者的青睐。如今,在高校、超市、住宅小区、地铁、商场、公园等客流量和人口较大的场所以及人员较集中的企业、公司等场所,随处都可以发现饮料销售机的身影。但是当今市场上的自动饮料销售机大多数为投币式,这种自动饮料销售机找零是个相当麻烦的问题,而且即使有少量的刷卡消费的自动饮料销售机,使用的也是最广泛的IC卡M1卡,但是这种卡早年被破解,安全性较低。CPU卡是一种加密性很好的IC卡,内部嵌有微处理器,它特有的内外部认证机制以及以金融IC卡规范为代表的专用认证机制,能够完全保证交易的合法性。因此,该设计采用FM1208作为存储金额的载体设计出了一款基于CPU卡的饮料销售机控制系统,该系统可以读取合法的FM1208用户卡、管理卡,具有饮料选择、存储消费记录、提取消费记录等功能。该系统安全性高、人机交互界面友好,操作灵活、方便,极大地方便了消费者,有效地提高了工作效率,并对CPU卡的普及应用具有一定的推动作用。
该系统采用宏晶科技公司生产的STC15F2K32S2高速单片机驱动MFRC500读卡芯片来操作CPU卡,硬件系统由单片机主控、射频读卡模块、饮料检测模块、时钟日历模块、数码管显示模块、Flash存储模块等组成。系统具有2个独立式按键,可以用来选择饮料种类或者对系统进行参数设置;读卡模块可以读取合法的CPU卡用户卡以及管理卡等;TM1620驱动芯片驱动六位数码管实时显示消费金额;大容量的Flash存储器和日历时钟模块可以实时记录用户的消费金额和刷卡时间,以备查询;电磁阀门可以实现对饮料流出进行控制等功能。系统使用上位机管理软件配合CPU卡发卡器,实现用户登录、注册、各种类型的卡发放、圈存、退款,记录查询,账目管理等功能;下位机控制系统主要实现对CPU卡检测、扣款、显示、报警、控制饮料机电磁阀动作等功能,最终实现饮料销售的功能。系统的总体设计框图如图1所示。
图1 系统总体设计框图
该控制系统采用高速、低功耗STC15F2K32S2增强型单片机和MFRC500射频读卡芯片来实现系统设计,具有读卡速度快、读卡距离远、设计成本低等特点,既可以读取M1系列的IC卡,也可以支持符合ISO14443A协议的CPU卡。STC15F2K32S2单片机是宏晶科技公司生产的单周期单片机,内部集成高可靠复位电路和5MHz~35MHz可选的高精度R/C时钟,可用在高速通信、智能控制等场合。利用该单片机内部的EEPROM可以存储系统的各种参数,如系统密码、费率、开机画面显示等,使用非常方便。单片机和射频芯片接口采用模拟总线方式,主控制器通过AD0-AD7以并行方式与MFRC500射频芯片通讯,完成对其配置和读写控制,WR和RD控制MFRC500射频芯片对数据的读和写,NCS用来控制是否选中MFRC500射频芯片,低电平有效。
数码管驱动电路采用的是专用的LED数码管显示驱动芯片TM1620,TM1620可替代HC595、HC373等传统的驱动电路,性价比较高,TM1620无需加三极管及电阻而直接驱动数码管/数码屏,且驱动电流大,亮度8级可调。在单片机程序设计方面,只要刷新一次显示RAM数据而不用动态扫描,3线串行和单片机通信,非常省单片机硬件和软件资源。TM1620芯片的TSTB、TCLK和TDIN引脚分别与单片机的P3.7、P3.6、P3.5引脚相连;TSTB为片选引脚,为低后的第一个字节作为指令;TDIN数据输入引脚,在时钟上升沿输入串行数据,从低位开始在上升或下降沿初始化串行接口,随后等待接收指令。TCLK时钟输入引脚,在上升沿读取串行数据,下降沿输出数据。
图2 系统硬件设计电路图
电磁阀门控制电路主要是使用大功率三极管驱动TIP122来驱动的,TIP122是一种中等功率线性开关器件,经常用于低速开关电路中。当给单片机P2.3和P2.4引脚低电平时候,三极管导通,TIP122开始工作;反之,当两个引脚为低电平时候,TIP122不工作。电路中的两个二极管D2、D3起到保护TIP122晶体管的作用。系统硬件设计电路图如2所示。
CPU卡饮料销售机系统的下位机软件采用的是Keil C集成开发环境,用C语言设计相应COS命令来实现的,上位机软件是用VC++6.0开发的,配合CPU卡发卡器实现用户各种类型的卡发放、充值、退款等功能,限于篇幅,此处主要论述下位机软件设计方法。
下位机上电后首先对系统进行初始化,包括读取系统参数、初始化射频芯片MFRC500、初始化TM1620等操作,然后显示系统年月日、时分秒、费率、系统空闲时数码管上显示的状态等,完成以上操作之后,系统进入寻卡循环。如果检测到合法的CUP卡后则在数码管上显示出卡内的余额,并给出蜂鸣器提示,通过按键来可以选择饮料,若有被选择的饮料则系统开始扣费,没有则不扣费,用户消费完拿走CPU卡后关闭电磁阀门,并把用户的消费金额及消费时间存入的系统的Flash存储器中。
系统上电进入正常状态后,一直处于寻卡状态,一旦有合法的CPU卡进入天线区域,则读取卡片内存储的卡类型信息,通过卡号来区分是哪种类型的卡。卡类型是按照卡号进行分类的,该卡号不是CPU卡默认的序列号,而是在发卡器发卡时通过COS命令写入到CPU卡内部的二进制文件信息。下位机启动后,默认进入检测CPU卡模式。当检测到有合法的用户卡后,进行外部密钥和金额读取,并在数码管上显示出金额,同时蜂鸣器发出提示,等待用户按键选择对应的饮料按键。当按下某种饮料对应的按键,此时数码管上会按消费比率进行扣款,并在数码管上一直显示消费总额,如果某种饮料已经售完,则按下相应的按键不会进行扣款。按键处理任务负责接收用户的按键输入信息,并根据按键输入信息进入不同处理模式,分配对应的任务,完成人机交互功能。
结论:该设计叙述了基于CPU卡的饮料销售机系统设计的基本原理和设计方法,分析了硬件和软件设计的具体方案。该系统实现了对FM1208 CPU卡的各种操作,同时对消费信息的存储、整理、提取也带来了极大的方便。系统有效的解决了IC卡消费的不安全性和当前市场上投币式自动饮料销售机找零麻烦的问题,对CPU卡普及应用具有推动作用,对CPU卡技术的研究也具有重要的意义。