利用java实现简单模块RC522模块制作的电子钱包系统怎么实现卡片挂失?

进入中国三十一年以来,德州仪器(TI)在不断推出创新半……
2017德州仪器(TI)中国教育者年会上,TI与来自全国97所……
据外媒报道,上周三在社交媒体上出现了一些针对苹果开发……
你所想到的一块芯片多少钱?如果这款MCU同时具有25种功能……
物联网以基础软硬件、互联网技术联合,开动智能电子产品……
演讲人:杨正龙时间: 10:00:00
演讲人:李思齐时间: 10:00:00
演讲人:杨熙时间: 10:00:00
预算:小于¥10,000预算:小于¥10,000
基站芯片RC522的14443A读卡器设计
[导读]介绍基于Philips公司的基站芯片RC522的14443A协议读卡器系统的设计与实现;着重介绍了RC522应用过程中防冲突处理的实现方法,给出了相应的设计程序;指出对射频卡进行操作时必须按照卡内存储器的组织形式进行读/写,并简要介绍了RC522应用时通信模拟接口的设置问题。
本文引用地址: 摘要 介绍基于Philips公司的基站芯片RC522的14443A协议读卡器系统的设计与实现;着重介绍了RC522应用过程中防冲突处理的实现方法,给出了相应的设计程序;指出对射频卡进行操作时必须按照卡内存储器的组织形式进行读/写,并简要介绍了RC522应用时通信模拟接口的设置问题。关键词 14443A基站芯片RC522 防冲突PIC单片机
引 言&&& 14443 TypeA密耦合射频卡标准广泛应用在门禁、身份识别和电子钱包等领域,而RC522作为Philips基站芯片产品系列的新成员,不仅兼容14443A/MIFARF标准,还具备低电压(3.3V)、低功耗(休眠电流&lμA)、低成本、小尺寸等优点,适用于智能仪表和手持设备的数据采集和处理。RC522对外提供多种标准的数字接口(如并行接口、SPI、I2C等),对其的控制通过对芯片内部的4页64个寄存器进行读/写来实现。由于寄存器控制涉及数字接口、防冲突和通信模拟接口等功能模块,因此,基于RC522的读卡器的设计难度主要体现在通过软件与RC522片内寄存器的交互,以实现对RC522与系统主控芯片间以及RC522与14443A射频卡间通信过程的控制上。&&& 本文设计的读卡器系统以PICl6F7x单片机作为主控芯片,选用MIFARE S50卡片,读卡器与卡片间以106kbps速率通信,同时实现读卡过程中的防冲突处理和对卡E2PROM块内容的读/写等功能。读卡器内部设置了Flash存储器以存放卡数据,在Flash容量满的情况下可通过读卡器的以太网口读出全部数据到管理中心上位机,便于建立对卡数据的综合管理系统。
1 硬件系统设计&&& 读卡器硬件框图如图1所示。
&&& 单片机PICl6F7x通过SPI总线与RC522和Flash芯片AT45D011相连,同时用简化的ISA总线连接以太网接口芯片C58900,以提供连接到局域网的能力。AT45D0ll存储容量为lMb,可同时存储7400多组MIFARE的E2PROM块和UID号,提供了足够读卡器一天内读取的信息量的存放容量。对于RC522天线部分的设计,Philips公司有专门的手册详细介绍,本文不再赘述。RC522的SPI总线接口有其自身的时序要求。它只能工作于从模式,最高传输速率为10 Mbps,数据与时钟相位关系满足“空闲态时钟为低电平,在时钟上升沿同步接收和发送数据,在下降沿数据转换”的约束关系。PICl6F7x系列单片机的片上外设包括1个SSP模块。该模块可配置为SPI接口使用,通过相应的寄存器可控制SPI接口的数据传输率、数据一时钟相位天系等通信参数。本文中配置SSP模块工作于SPI主模式下,时钟为1/4单片机主频,接收和发送数据都在时钟上升沿发生。&&& 需要注意的是,由于RC522支持的数字接口形式多种多样,因此芯片在每次复位时都会检测外部引脚连接关系。对于SPI接口,RC522的相关引脚必须按照图2所示的连接关系配置。
&&& 除了通用的4条SPI信号线(时钟线SCK、输入数据线MOSI、输出数据线MOSO和选通线NSS)以外,RC522要求额外的2个引脚I2C和EA分别固定接低电平和高电平。这2个引脚不参与SPI总线传输,只起设定RC522数字界面采用SPI接口的作用。另外,片选信号必须保证在写入数据流期问为低电平,而在无数据流写入时则为高电平;用户不得为节省PIC单片机引脚资源而一直将NSS置为低电平。
2 软件系统设计&&& 相对于Philips公司生产的其他14443基站芯片(如RC500、RC530等),RC522简化了内部系统结构,去掉了片内E2PROM。从而大大缩减了芯片命令集。另外,对载波调制电路,发送电路和解调、解码电路的控制也相应简化,去掉了校准接收电路I时钟、Q时钟、校准发送与接收时钟相位等繁琐的操作。一般而言,单片机与RC522的通信流程如图3所示。
&&& 根据RC522和MIFARE卡问传送的控制流数据的不同,通信过程中可能会出现不同的状态。对各种状态须作不同处理,这正是软件系统开发的难度所在。下面给出RC522命令集中2个最基本命令(Tranceive和MFAuthe-nt)执行过程中可能遇到的通信状态及处理。这两个命令分别实现向MIFARE卡发送/接收数据和加密认证功能。实际上,通过它们即可完成对MIFARE卡的所有操作,包括Request、Anticollision、Select、READ、WRITE等。2.1 RC522命令集的实现&&& RC522主要的状态指示寄存器包括ComIrqReg、Er-rorReg、Status2Reg和FIFOLevelReg等。软件处理的思路:通过ComIrgReg得到RC522内部中断状态;由中断判断RC522与MIFARE卡的通信流程信息,从而决定是否进行下一流程处理;若中断指示有错误发生,则需进一步读取ErrorReg的内容,据此返回错误字。2.1.1 Tranceive命令&&& Tranceive命令的具体执行过程;读取RC522 FIFO中的所有数据,经基带编码和数字载波调制后通过通信接口以射频形式发送到MIFARE卡;发送完毕后通过通信接口检测有无MIFARE卡发送的射频信号回应,并将收到的信号解调、解码后放入FIFO中。分析以上Ttanceive命令执行过程,可以得到处理该命令的算法流程图,如图4所示。
&&& 为了处理MIIFARE卡在读卡器产生的电磁场中激励后,未完成处理义从激励场中拿开的情况,软件中启用了RC522芯片内部的定时器。若超过设定的时间未得到卡片应答,则中止与卡的通信,返回“卡无反应”的错误信息。&&& 从图4中可以看出Tranceive命令的核心处理方法:根据相关通信状态指示寄存器的内容返回各种错误状态字,若有位冲突错误,则进一步返回位冲突位置。Tranceive命令不处理面向比特的帧,这种帧只可能在MIFARE卡防冲突循环中出现。为了保持Tranceive命令对各种MI-FARE卡命令的普适性,该命令只完成帧的发送和接收,不对帧信息作处理,所有位冲突处理留在函数外进行。&&& 需要注意的是,Tranceive命令不能自动中止,在任何情况下从该命令返回时必须先执行IDLE指令使RC522转入空闲态。2.1.2 MFAuthent命令&&& RC522简化了与MIFARE卡的加密认证操作,用一个MFAuthent命令代替了原来RC500需要的Authentl和Authent2两条命令。MFAuthent命令执行的最终目的在于开启RC522的加密认证单元。该指令执行成功后,RC522芯片与MIFARE卡间的通信信息将首先加密,然后再通过射频接口发送。从本质上讲,MFAuthent是一条变相的Tranceive命令,其算法流程图与图4一致。但RC522芯片内部已经对通信过程中的各种通信状态作了相应处理,且该命令执行完后自动中止,因此用户只须检测定时器状态和错误寄存器状态来判断执行情况。实际上,MFAuthent只可能有一种错误状态(RC522与MI-FARE卡通信帧格式错误),此时该命令不能打开加密认证单元,用户必须重新执行认证操作。&&& MFAuthent执行过程中RC522将依次从FIFO中读取1字节认证模式、l字节要认证的E2PROM块号、6字节密钥和4字节射频卡UID号等信息,在命令执行前必须保证这12字节数据完整地保存在FIFO中。认证模式有A密钥认证和B密钥认证两种,一般选用A密钥认证。&&& 一次MFAutllent认证只能保证对MIFARE卡的一个扇区中的4个数据块解密,若要操作其他扇区的数据用户还须另外启动对该扇区的认证操作。2.2 MIFARE卡操作指令&&& 对MIFARE卡常用的操作指令包括查询、防冲突、选卡、读/写E2PROM块等。其中,防冲突指令是14443A协议的精华部分,实现难度较大。下面将重点介绍防冲突算法的软件实现方法。2.2.1 防冲突指令&&& 14443A标准定义的防冲突算法本质上是一种基于信道时分复用的信道复用方法。在某一时刻若多个射频卡占用射频信道与读卡器通信,则读卡器将会检测到比特流的冲突位置;然后重新启动另一次与射频卡的通信过程,在过程中将冲突位置上的比特值置为确定值(一般为1)后展开二进制搜索,直到投有冲突错误被检测到为止。MIFARE卡内有4字节的全球惟一序列号UID,而RC522防冲突处理的目的就在于最终确定MIFARE卡的UID。14443A标准的防冲突指令格式如下:
&&& &&& 其中:命令代码“93”代表要处理的射频卡UID只有4字节;NVM表示此次防冲突命令的UID域中正确的比特数;BCC字节只有在NVM为70(即UID的4字节都正确)时才存在,它表示此时整个UID都被识别,防冲突流程结束。&&& 防冲突算法流程图如图5所示。
&&& NVM初始值为20,表示该命令只含有2个字节,即“93+20”,不含UID数据,MIFARE卡须返回全部UID字节作为响应。若返回的UID数据有位冲突的情况发生,则根据冲突位置更新NVM值。可知在搜索循环中,随着UID已知比特数的加入,NVM不断增加,直到70为止。它表示除了“93+70”两个命令字节外,还有UID0~UID3和BCC 5个UID数据字节。此时命令字节共有7个,防冲突命令转变为卡片选择命令。&&& 防冲突流程中若遇到须发送和接收面向比特的帧的情况,则必须预先设置通信控制寄存器BitFramingReg。该寄存器可指明发送帧中最后一个字节和接收帧第一个字节中不完整的比特的位数。2.2.2 读卡和写卡指令&&& 14443A协议中并没有具体规定对射频卡的读写操作方式,故对每种卡的读写操作都必须考虑该卡的存储区域组织形式和应答形式。MIFARE卡内部存储器是由E2PROM组成的,共划分为16个扇区,每个扇区4个块,每块16字节。对E2PROM的读写都以块为单位进行,即每次读/写16字节。&&& 以写卡指令为例,MIFARE卡要求有两步握手,指令格式分别如下所述。&&& Setp A:查询块状态。
&&& &&& 若块准备好,则MIFARE卡返回4比特应答。若值为1010,则可进行下一步操作;若值非1010,则表示块未准备好,必须等待直至块准备好为止。&&& Step B:写数据。
&&& &&& 若写入成功,则MIFARE卡返回4比特应答,值仍为1010;若非lOl0,则表示写入失败。&&& 读卡指令格式如下:
&&& &&& 若执行成功,则MIFARE卡返回18字节应答比特。需要注意的是,其中只有16字节是读取的块数据,另外2个字节为填充字节。若字节数不为18,则可判断读卡操作错误。&&& MIFARE卡数据加密时以扇区为单位,一次加密认证仅能操作一个扇区的数据。这为用户实现“一卡通”功能提供了便利,用户可在不同的扇区内采用不同加密方式互不干扰地存放各种目的应用数据。实际生活中常见的一种应用是电子钱包,对卡的写操作须按照一定的格式进行。一个块的数据组成如下:
&&& &&& 注意:address值无意义,但value值写入时必须在4~7字节中存入取反值。2.3 读卡器总体软件设计&&& 读卡器的软件设计思路是利用RC522的Tranceive命令作为标准函数,通过调用此函数实现MIFARE卡操作指令。MIFARE卡的操作流程如图6所示,其要点是将操作完成的卡转入休眠态,递减可能发生冲突的卡片数目直至所有卡片操作完毕,此时防冲突函数无卡片应答。
&&& RC522芯片在每次使用前都必须复位,除了在复位引脚NRSTPD输入从低电平至高电平的跳变沿外,还必须向RC522的命令寄存器CommandReg写人软复位命令代码0x0I?进行软复位。在利用Rc522操作MIF’RAE卡之前,用户必须正确设置芯片模拟部分的工作状态。依笔者经验,一般情况下RC522调制、解调方式采用默认设置即可;在106 kbps通信速率下可正常使用,但必须保证天线驱动接口打开,可以通过设置Tx―controlReg寄存器实现。另外,由于14443A协议采用调制深度为100}《的ASK调制,这一点与默认设置不同,因此必须相应设置TxASKRc毽来实现该种调制方式。&&& RC522的通信参数设置很复杂,可以调控调制相位、调制位宽、射频信号检测强度、发送/接收速度等设置。在硬件调试过程中,用户可根据实际情况选用适合自身使用的设置形式。
结语&&& 本文设计的读卡器在106 kbps通信速率下读卡距离达50 mm,可以实现考勤、电子钱包功能;整个读卡器采用低功耗元件,可以作为一个网络终端、以电池作后备电源可靠地工作。对于Rc522的应用,防冲突和通信接口的设置是重点。不同的射频卡协议,防冲突流程各不相同,通信接口也会有差异,但修改Rc522的相关设置即可使物理接口满足协议要求。对于防冲突处理,Rc522{支持基于比特冲突检测的处理方式,不可处理类似144。13B的ALOHA时隙方式。(针对PIC16F7x开发的部分源程序见本刊网站www.mesnet.com.cn――编者注)
去年Google已经先帮iPad版本的GoogleSearchapp重新设计了界面,也已经变成小编满常使用的App之一,而现在终于轮到了最近传说即将长高的iPhone与iPodTouch装置上了。这次的2。0版本中应该可以简单看作是iPad......关键字:
Google 的搜索引擎和 Chrome 的 Omnibox 早已为我们提供了「随打即搜」(Google Instant)的体验,而现在他们推出了全新的 Google Search As You Type,为零售伙伴的网站也加入了这一功能......关键字:
这是一辆基于 DeLorean DMC-12 复刻版改装的气垫船,它最早出现在 Make 网站上;随之这个气垫船的改造者 Matthew Riese 将其放上了 Kickstarter 网站,并获得了 5,600 多美元的基金,最终打造成......关键字:
如果你很喜欢海盗船的 Force GT 系列 SSD 但又觉得其容量有些不足,那他们新推出的 Force GS 系列可能会满足你的需要。它采用了 SandForce SF-2200 SSD 芯片,配以 Toggle NAND 闪存。容量......关键字:
IBM将与Salesforce展开合作,方便Salesforce客户使用IBM沃森人工智能平台的数据。作为此次合作的一部分,IBM已经签订协议,在内部部署Salesforce服务云。双方均未披露此次合作的具体价值以及相关产品的价格。......关键字:
Google 发现了美国有 46% 的平板用户都会在平板上使用 Google Flight Search 的功能去搜寻航班,所以他们的 UI 设计团队特地将服务的界面设计成有利平板操作。所谓有利平板操作,其实很大程度上就是将原本为滑鼠游标......关键字:
拥有 2010 或 2011 版本 MacBook Air 的你,有想过给他换一颗新的 SSD 吗?还是担心在换了新的以后,旧的那颗不知如何处置,所以迟迟没有下手?如果是这样的话,你的恶魔出现了(XD)-- OWC Murcury Aur......关键字:
艾滋病的可怕是众所周知的,而一直以来,对艾滋病的预防也是从未停止过,越来越多的人开始重视并参与艾滋病的预防研究工作中,开发 HIV 疫苗的努力从未停止过。......关键字:
BI中文站 7月24日报道 知情人士透露的消息,电动汽车制造商特斯拉与太阳能面板制造商SolarCity之间的合并交易已经取得了重大进展。众所周知,埃隆&马斯克(Elon
Musk)都是这两家公司的大股东。如今,这两......关键字:
据太阳能面板制造商SolarCity的官方博客,该公司已经同意与电动汽车制造商特斯拉进行合并。特斯拉最初在6月21日宣布,拟以全部股票交易方式收购SolarCity。根据上述官方博客,SolarCity的市值约为26亿美元。据SolarC......关键字:
根据 ValveTime 的报道已经有人在动画工具 Source Filmmaker 的代码中发现了 Valve 新一代游戏引擎「Source 2」的「身影」。鉴于三大游戏主机都即将迎来更新换代,Valve 在这个时候做一些准备似乎也没什......关键字:
我 要 评 论
热门关键词查看: 4804|回复: 23
红外遥控RC522芯片RFID公交卡、饭卡刷卡系统应用(附源码)
0.png (57.84 KB, 下载次数: 54)
22:18 上传
全部源码下载:
(225.13 KB, 下载次数: 208)
22:16 上传
点击文件名下载附件
下载积分: 黑币 -5
一、功能简介:
1.有读卡信息(卡类型、类号、余额),初始化卡,充值和扣款功能。
2.多级菜单操作,菜单有反白高度显示。
3.全遥控操作,通过遥控键盘控制读、写卡,并可输入读、写数值。
4.自动设定数据范围,超范围自动提示。
5.可应用于公交卡刷卡和饭卡刷卡等类似应用。
124026wsexsfs3qsp3eess.jpg.thumb.jpg (28.02 KB, 下载次数: 29)
22:15 上传
124142taw4f8nz4kgeqkgu.jpg.thumb.jpg (27.71 KB, 下载次数: 34)
22:15 上传
1.系统组成& && && && && && && && && && && && &&&2. 欢迎界面
124145lygxwdwwjj0dmggs.jpg.thumb.jpg (26.9 KB, 下载次数: 23)
22:15 上传
rrf1yro4mb4ff.jpg.thumb.jpg (25.65 KB, 下载次数: 34)
22:15 上传
3.主菜单& && && && && && && && && && && && && &&&4.卡信息二级子菜单
ds.jpg.thumb.jpg (26.05 KB, 下载次数: 29)
22:15 上传
124200rzohj9clifoulpjh.jpg.thumb.jpg (27.95 KB, 下载次数: 34)
22:15 上传
5.读卡信息& && && && && && && && && && && && &&&6. 输入充值额
124201pcma2zsher9smram.jpg.thumb.jpg (28.58 KB, 下载次数: 29)
22:15 上传
124201osbdmds3mvjdw4d4.jpg.thumb.jpg (28.5 KB, 下载次数: 36)
22:15 上传
7.充值刷卡& && && && && && && && && && && && &&&8. 输入消费额
124202suvsn918mlrmdxx1.jpg.thumb.jpg (28.67 KB, 下载次数: 33)
22:15 上传
124203idx4b05ut5rfmvd7.jpg.thumb.jpg (29.04 KB, 下载次数: 40)
22:15 上传
9.消费刷卡& && && && && && && && && && && && &&&10. 余额超范围提示
二、系统组成:
& && && && && && &&&1.MCU:STC12C5A60S2 ,11.0592MHz
& && && && && &&&2.12864带中文字库液晶
& && && && && &&&3.RFID读卡模块:RC522,+ S50卡
& && && && && &&&4.红外遥控038接收头,CARMP3遥控器,不同遥控器键值不同,若用不同品牌遥控器需修改键值& &
& && && && && &&&5.LED指示灯(或为蜂鸣器)
& && && && && && && && &RC522接法:
& && && && && && && && &sbit& &&&MF522_RST&&=& & P1^4;& && && && && && &
& && && && && && && && &sbit& &&&MF522_NSS&&=& & P1^2;
& && && && && && && && &sbit& &&&MF522_SCK&&=& & P1^1;
& && && && && && && && &sbit& &&&MF522_SI& &=& & P1^0;
& && && && && && && && &sbit& &&&MF522_SO& &=& & P1^3;
& && && && && && && && &
& && && && && && && && &LED指示灯接法:
& && && && && && && && &sbit& &&&LED_GREEN&&=& & P1^5;& && && && && && & //指示灯
& && && && && && && && &
& && && && && && && && &12864接法:
& && && && && && && && &#define Lcd_Bus P0& && && && & //数据口
& && && && && && && && &sbit LCM_RS&&=&&P2^0;& && && && &//寄存器选择输入
& && && && && && && && &sbit LCM_RW&&=&&P2^1;& && && && &//液晶读/写控制
& && && && && && && && &sbit LCM_EN&&=&&P2^2;& && && && &//液晶使能控制
& && && && && && && && &sbit LCM_PSB =&&P2^3;& && && && &//串/并方式
& && && && && && && && &
& && && && && && && && &红外遥控接法:
& && && && && && && && &sbit IRIN = P3^2; //红外接收器数据线
& && && && && && && && &遥控器功能键说明:prev为退格键,next为切换键,play为确认键,0-9为相应数字键& && &&&100+为小数点键
& && && & 注意:务必确保RC522供电为3.3V,接5V必烧!!!同时,为了系统运行稳定,整个系统最好单独供电,用usb供电可能电流不足!
下面是主程序预览:
/************** 全遥控操作RFID刷卡系统************/
/*
& &硬件:1.MCU:STC12C5A60S2 ,11.0592MHz
& && && & 2.12864带中文字库液晶
& && && & 3.RFID读卡模块:RC522,+ S50卡
& && && && && && &4.红外遥控038接收头,CARMP3遥控器,不同遥控器键值不同,若用不同品牌遥控器需修改键值& &
& && && && && && &5.LED指示灯(或为蜂鸣器)
& && && && && && && && &RC522接法:
& && && && && && && && &sbit& &&&MF522_RST&&=& & P1^4;& && && && && && &
& && && && && && && && &sbit& &&&MF522_NSS&&=& & P1^2;
& && && && && && && && &sbit& &&&MF522_SCK&&=& & P1^1;
& && && && && && && && &sbit& &&&MF522_SI& &=& & P1^0;
& && && && && && && && &sbit& &&&MF522_SO& &=& & P1^3;
& && && && && && && && &
& && && && && && && && &LED指示灯接法:
& && && && && && && && &sbit& &&&LED_GREEN&&=& & P1^5;& && && && && && & //指示灯
& && && && && && && && &
& && && && && && && && &12864接法:
& && && && && && && && &#define Lcd_Bus P0& && && && & //数据口
& && && && && && && && &sbit LCM_RS&&=&&P2^0;& && && && &//寄存器选择输入
& && && && && && && && &sbit LCM_RW&&=&&P2^1;& && && && &//液晶读/写控制
& && && && && && && && &sbit LCM_EN&&=&&P2^2;& && && && &//液晶使能控制
& && && && && && && && &sbit LCM_PSB =&&P2^3;& && && && &//串/并方式
& && && && && && && && &
& && && && && && && && &红外遥控接法:
& && && && && && && && &sbit IRIN = P3^2; //红外接收器数据线
& && && && && && && && &遥控器功能键说明:prev为退格键,next为切换键,play为确认键,0-9为相应数字键& && &&&100+为小数点键
& && && && && && && && &
& && && && && && && && &注意:务必确保RC522供电为3.3V,接5V必烧!!!
& && &&&功能: 1.多级菜单操作,菜单有反白高度显示。
& && && && && &2.全遥控操作,通过遥控键盘控制读、写卡,并可输入读、写数值。
& && && && && && & 3.有读卡信息(卡类型、类号、余额),初始化卡,充值和扣款功能。
& && && && && && & 4.自动设定数据范围,超范围自动提示。& && &&&
& && && && && && &
& && &&&出品:聚龙居士
*/
/****************************************/
#include &reg52.h&
#include &main.h&
#include &mfrc522.h&& && &&&
#include &string.h&
#include &12864.h&
#include &hw.h&
#include &set.h&
#include &delay.h&
//M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令
//4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反
unsigned char code data1[16] = {0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};
uchar g_ucTempbuf[20];& &
sfr AUXR&&= 0x8E;
/////////////////////////////////////////////////////////////////////
//系统初始化
/////////////////////////////////////////////////////////////////////
void InitializeSystem()
{
& && &&&LED_GREEN = 1;
& && &&&PcdReset();
& && &&&PcdAntennaOff();
& && &&&PcdAntennaOn();&&
& && &&&M500PcdConfigISOType( 'A' );
& && &&&LED_GREEN = 0;
& && &&&delay_10ms();& && &&&
& && &&&LED_GREEN = 1;
& && &&&delay_10ms();
& && &&&LED_GREEN = 0;
}
void main( )
{& &
& && &&&IE = 0x81;& & //允许总中断中断,使能 INT0 外部中断 相当于EA=1; EX0=1;
& & TCON = 0x01;&&//触发方式为脉冲负边沿触发& &相当于IT0=1;
& & IRIN=1;& && & //红外接收器数据初始化
& && &&&lcm_init();
& & InitializeSystem( );
& && &&&write12864GDRAM(bmp12864);//显示开机画面
& && &&&Delay100ms(20);//延时
& && &&&Clean_12864_GDRAM();
& && &&&lcm_init();
& && &&&display_welcome();
& && &&&Delay100ms(20);
& && &&&mainmenu(0);
& && &&&w=1;
& && &&&menu2=0;& && &&&
& && &&&while(1)
& & {& && &&&
/*-----------------------------红外遥控切换功能---------------------------*/
& && && && && & if (key_manue==1)& && && &
& && && && && & {& && && && && && &
& && && && && && && && &DelayM(8);
/*-----------------当是主菜单调时状态 本键用于调整下一项---------------------------*/& && && && && &
& && && && && && && && &if(key_manue==1&&w==1&& menu2==0)& &//w为主菜单状态位,menu2为子菜单状态参数
& && && && && && && && &{
& && && && && && && && && && && & key_manue=0;
& && && && && && && && && && &&&e++;
& && && && && && && && && && &&&if (e &= 3 ) {e = 0;}& && && && && && && && && && && && && && && &
& && && && && && && && && && &&&mainmenu(e);& && && && && && && &//主菜单调整& && && && && && && && && && &&&
& && && && && && && && &}
/*------------------------当是子菜单时调整信息显示子菜单-----------------------*/
& && && && && && && && &if(key_manue==1&&w == 0 &&menu2==1&&e==0)
& && && && && && && && &{
& && && && && && && && && && &&&key_manue=0;
& && && && && && && && && && &&&d++;
& && && && && && && && && && &&&if(d&=3){d=0;}
& && && && && && && && && && &&&set_info(d);& && && && && && && && && && && && && &
& && && && && && && && &}
/*---------------------当是子菜单时调整充值子菜单------------------------------*/
& && && && && && && && &if(key_manue==1&&w == 0&&menu2==1&&e==1)
& && && && && && && && &{
& && && && && && && && && && &&&key_manue=0;
& && && && && && && && && && &&&t++;
& && && && && && && && && && &&&if(t&=2){t=0;}
& && && && && && && && && && &&&set_inch(t);
& && && && && && && && &}
/*---------------------当是子菜单时调整消费子菜单-------------------------------*/
& && && && && && && && &if(key_manue==1&&w == 0&&menu2==1&&e==2)
& && && && && && && && &{
& && && && && && && && && && &&&key_manue=0;
& && && && && && && && && && &&&a++;
& && && && && && && && && && &&&if(a&=2){a=0;}
& && && && && && && && && && &&&set_cons(a);
& && && && && && && && &}
& && && && && && && && &key_manue=0;
& && && && && & }
/*-----------------------------红外遥控切换功能---------------------------*/
/*--------------红外遥控确认功能----------------------------------------*/& && && && && &
& && && && && & if (key_ok==1)& && && && && && &&&
& && && && && & {
& && && && && && && && &DelayM(8);
/*---------------------主菜单时选项选择确认功能-----------------------------------*/
& && && && && && && && &if(key_ok==1&&w==1&&menu2==0)
& && && && && && && && &{& && && && && && && && &
& && && && && && && && && && &&&key_ok=0;
& && && && && && && && && && &&&menu2=1;
& && && && && && && && && && &&&w=0;
& && && && && && && && && && &&&switch(e) //进入相应子菜单
& && && && && && && && && && &&&{
& && && && && && && && && && && && && & case 0:& && &&&
& && && && && && && && && && && && && && && && && && &&&d=0;
& && && && && && && && && && && && && && && && && && &&&set_info(d);
& && && && && && && && && && && && && && && && && && &&&
& && && && && && && && && && && && && & case 1:& && &&&t=0;
& && && && && && && && && && && && && && && && && && &&&set_inch(t);
& && && && && && && && && && && && && && && && && && &&&
& && && && && && && && && && && && && & case 2:& && &&&a=0;
& && && && && && && && && && && && && && && && && && &&&set_cons(a);
& && && && && && && && && && && && && && && && && && &&&
& && && && && && && && && && &&&}
& && && && && && && && &}
/*---------------------子菜单时选项选择确认功能-----------------------------------*/
& && && && && && && && &if(key_ok==1&&w==0&&menu2==1)
& && && && && && && && &{& && && && && && && && &
& && && && && && && && && && &&&key_ok=0;
& && && && && && && && && && &&&switch(e) //各子菜单确认键功能定义
& && && && && && && && && && &&&{
& && && && && && && && && && && && && &
& && && && && && && && && && && && && & case 0:& && &&&
& && && && && && && && && && && && && && && && && & if(d==0)
& && && && && && && && && && && && && && && && && && && & { info();}
& && && && && && && && && && && && && && && && &&&if(d==1)
& && && && && && && && && && && && && && && && && && && & { initcard();}
& && && && && && && && && && && && && && && && &&&if(d==2)
& && && && && && && && && && && && && && && && && && && & { menu2=0; w=1;& && &&&mainmenu(0);}
& && && && && && && && && && && && && && && && && && &&&
& && && && && && && && && && && && && & case 1:
& && && && && && && && && && && && && && && && &&&if(t==0)
& && && && && && && && && && && && && && && && && && &&&{incharg();}& && && &
& && && && && && && && && && && && && && && && &&&if(t==1)
& && && && && && && && && && && && && && && && && && && & {menu2=0;w=1;mainmenu(1);}
& && && && && && && && && && && && && && && && &&&
& && && && && && && && && && && && && & case 2:
& && && && && && && && && && && && && && && && &&&if(a==0)
& && && && && && && && && && && && && && && && && & {consume();}& && && && && && && && && && && && && && && && && && && &&&
& && && && && && && && && && && && && && && && &&&if(a==1)
& && && && && && && && && && && && && && && && && && && & {menu2=0;w=1;mainmenu(2);}
& && && && && && && && && && && && && && && && &&&
& && && && && && && && && && &&&}& && && && && && && && &
& && && && && && && && &}
& && && && && && && && &key_ok=0;
& && && && && & }
/*--------------红外遥控确认功能----------------------------------------*/
/*---------------------遥控键盘输入功能-----------------------------------*/
& && && && && & if(key0==1||key1==1||key2==1||key3==1||key4==1||key5==1||key6==1||key7==1||key8==1||key9==1||key_back==1||key_dot==1)
& && && && && & {
& && && && && && & DelayM(8);
& && && && && && & if(key0==1||key1==1||key2==1||key3==1||key4==1||key5==1||key6==1||key7==1||key8==1||key9==1||key_back==1||key_dot==1)
& && && && && && & {
& && && && && && && && && && &&&if(w==0&&menu2==1)
& && && && && && && && && && &&&{
& && && && && && && && && && && && && & set_inch_input();
& && && && && && && && && && && && && & key0=0;
& && && && && && && && && && && && && & key1=0;
& && && && && && && && && && && && && & key2=0;
& && && && && && && && && && && && && & key3=0;
& && && && && && && && && && && && && & key4=0;
& && && && && && && && && && && && && & key5=0;
& && && && && && && && && && && && && & key6=0;
& && && && && && && && && && && && && & key7=0;
& && && && && && && && && && && && && & key8=0;
& && && && && && && && && && && && && & key9=0;
& && && && && && && && && && && && && & key_back=0;
& && && && && && && && && && && && && & key_dot=0;& && && && && && && && && && && && && &
& && && && && && && && && && &&&}
& && && && && && && && &}
& && && && && & }
/*---------------------遥控键盘输入功能-----------------------------------*/
& && &&&}
}
实际应用的话还需要结合php、易语言、app开发一套管理系统、再做个php服务器以保存消费记录和开卡人身份信息和卡密码余额等信息,以实现网上充值以及挂失补办和余额冻结等功能,卡里保存各种防复制盗刷的高级加密的数据。
运行之后12864上什么都不显示是为什么呐
好像12864要接DB0~7的接口
然后电流一定要足
太给力了,好厉害啊
感谢分享,太厉害了,我来学习一下。
wawa,不错。
是跟51单片机结合的是吧?
楼主有原理图吗?谢谢
楼主,请问 如何使用按键操作,附件中只定义了 K1..K4 4个按键,没有这四个按键的语句!
好东东!!!
好东东学习学习
路过学习学习
改完IO口后,屏幕能显示,但是按遥控器不能切换页面,遥控器一样的,请教怎么回事。另外:sbit K1&&= P3^7; //K1-设置
sbit K2&&= P3^6; //K2-确认、返回
sbit K3&&= P3^5; //K3-加
sbit K4&&= P3^4; //K4-减&&这个是定义什么的?
好东西,谢谢分享,拿来看看
IMG_252.jpg (5.5 MB, 下载次数: 2)
11:54 上传
这样的屏怎么接???
很好!&&CPU卡可以吗
Powered by

我要回帖

更多关于 电子钱包有哪些 的文章

 

随机推荐