基于单片机及MFRC522的餐卡充值消费系统_第1页
基于单片机及MFRC522的餐卡充值消费系统_第2页
基于单片机及MFRC522的餐卡充值消费系统_第3页
基于单片机及MFRC522的餐卡充值消费系统_第4页
基于单片机及MFRC522的餐卡充值消费系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、射频识别技术课程设计报告题 目:基于单片机及MFRC522的餐卡 充值消费系统 院 (系):信息与电子工程学院 专业班级: 学生姓名: 学 号: 目录1.题目32.目的与要求32.1目的32.2要求32.2.1系统功能32.2.2系统原则33.内容与步骤(设计思想)43.1硬件设计43.1.1系统框架43.1.2最小系统模块设计53.1.3键盘模块设计63.1.4 LCD驱动模块设计63.1.5 蜂鸣器模块设计73.1.6 电源模块设计73.1.7 RFID读卡器模块设计83.1.8 S50卡简介93.2软件设计103.2.1 总体设计103.2.2 读卡程序设计113.2.3 MCU与读卡模

2、块通信程序设计124.部分代码(详细的注释)144.1键盘程序144.2 LCD1602程序144.3 读写卡程序165.课程设计实践总结21 1.题目基于单片机及MFRC522的餐卡充值消费系统2.目的与要求2.1目的科技高速发展,人们的需求也在日益增长,智能化与便携化成为人们孜孜不倦的追求。电子计算机的出现丰富了这个世界,也简化了这个世界。当然微型处理系统也悄悄产生了,并大量应用在实际中,利用MCU控制,处理一些事务,降低了劳动时间,提高了劳动效率,也提高了精度。MCU的出现使生活与生产发生很大的改变。人们的生活与智能越来越密不可分。RFID的普及,丰富了人们的生活,使得人们的物理数量转化

3、为虚拟数量,比如现金数字化。RFID的发展,是信息现代化的主流和趋势,RFID的广泛应用将会掀起一场住宅革命,促进物联网的快速发展。传统的现金消费方式并不适合学校、企业等人口集中且密集的地域。此方式不仅不方便单位对消费记录的获取,而且对于买卖双方也是非常不方便的。餐卡充值消费系统会使人们生活更加方便,不用随时随地的带好现金,也不用担心现金丢失,更不用担心收到假币。人们只要一张IC卡,便能够对自己的现金进行数字化,不管是交易还是携带都是方便至极。 2.2要求2.2.1系统功能(1) 读卡器对IC初始化,设置IC卡的密码,设置卡号及充值相应的初始金额。(2) 充值IC卡功能,学生等人可以通过带上自

4、己的现金去充值点让管理员进行充值。(3) 刷卡功能,工作人员按下键盘设置相应金额后,消费者可以近距离刷卡从而达到消费效果。(4) 读卡提示,lcd液晶屏上显示出本次消费或者充值的金额,如果没有操作,则是显示余额。蜂鸣器做出相应的声音提示。(5) 容错功能,当工作人员不小心刷多了金额,工作人员可以设置读卡器为充值模式对卡进行加款功能。2.2.2系统原则(1)实用性,餐卡消费系统的内容应符合实际需要,不能华而不实。因此,系统的实用性是首先应遵循的第一原则。(2)准确性,能够对IC卡上的数据准确的进行读取、充值以及扣款,避免出现更种漏洞而不实用。(3)实时性,即读卡器能快速地对IC卡上的金额进行读取

5、或者其他操作,减少等待时间,提高工作效率。(4)完整性,一个完整的餐卡充值消费系统是建筑整体形象的重要标志。功能完善,设备齐全,管理方便是设计应考虑的一个因素。(5)容错性,读卡器必须具备有了解消费者的所有操作,避免消费者或营业员的错误操作而出现bug。(6)健壮性,实现多卡防冲突、防碰撞灯功能,避免系统误操作,避免发生崩溃。(7)安全性,系统必须在物理安全与技术安全方面做好可靠的保障,防止不法分子的盗取与恶意破坏而带来损失。(8)易维护性,餐卡充值消费系统在运行过程中的维护应该尽量做到简单易行。(9)稳定性,餐卡充值消费系统的职能是保护人身和财产的安全,一旦系统开始工作就要求连续不间断的运行

6、,所以稳定性对于餐卡系统来说就显得非常重要。3.内容与步骤(设计思想)本系统设计分为硬件设计以及软件设计总共两个部分。硬件设计包括:单片机最小系统、MFRC522读卡器模块、LCD1602及驱动模块、蜂鸣器模块、键盘模块、电源管理模块等。软件设计包括:单片机与MFRC522读卡器模块通信,读卡程序设计,防碰撞算法设计,加密算法设计,LCD1602模块驱动程序,键盘搜索程序,蜂鸣器驱动程序等。3.1硬件设计3.1.1系统框架本系统通过MCU中央控制器对RFID读卡器模块进行控制,RFID读卡器进而对IC卡进行读写数据等通信,最后把数据返回给MCU,再通过液晶屏显示出来。过程可以通过键盘的输入来手

7、动控制。IC卡键盘模块RFID读卡器mcuLCD液晶屏蜂鸣器电源模块图3-1 系统框架图3.1.2最小系统模块设计本系统MCU采用STC89C52RC芯片,STC89C51RC单片机是宏晶科技推出的新一代超强抗干扰、高速、低功耗的单片机,基于Intel 标准的8052,指令代码完全兼容传统的8051 系列单片机,12 时钟/机器周期和6 时钟/机器周期可任意选择,最新的D 版本内集成MAX810 专用复位电路。图3-2 STC80C52RC最小系统原理图3.1.3键盘模块设计系统需用到数字键及其逻辑功能键,所需要哦的按键比较多,为了节省单片机的I/O口。采用了矩阵键盘进行系统计算器键盘的设计。

8、图3-3 矩阵键盘原理图3.1.4 LCD驱动模块设计为了能有友好的交互面,系统采用LCD1602液晶显示屏模块。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x11的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。但是用它来设计可以方便软件设计,减少开发的成本。图3-4 LCD1602模块连接图图3-5 LCD1602实物图3.1.5 蜂鸣器模块设计为了能让刷卡时有提示,系统采用了蜂鸣器作为提示源。图3-6 蜂

9、鸣器电路图3.1.6 电源模块设计要给各个模块提供不同电压,就必须进行电源模块的设计,电源模块要能提供5V以及3.3V的电压,且电流要能驱动各个模块,使其正常工作。采用以下电路,能设计出稳定的电压值。图3-7 电源模块电路图3.1.7 RFID读卡器模块设计系统采用了MFRC522读卡模块。MFRC522是高度集成的非接触式(13.56MHz)读写卡芯片。此发送模块利用调制和解调的原理,并将它们完全集成到各种非接触式通信方法和协议中(13.56MHz)。MFRC522发送模块工作模式:MFRC522的内部发送部分可驱动读写器天线与ISO 1443A/MIFARE卡和答应机的通信,无需其他的电路

10、。接收器部分提供一个功能强大和高效的解调和译码电路,用来处理ISO 1443A/MIFARE的卡和应答机的信号。数字电路部分处理完整的ISO 1443A帧和错误检测(奇偶&CRC)。MRFC522支持MIFARE Classic(如,MIFARE标准)器件。MFRC支持MIFARE更高速的非接触式通信,双向数据传输速率高达424kbit/s.可实现各种不同主机接口功能:SPI接口、串行Uart以及I2C接口。模块具有以下特性:1) 高度集成的模拟电路,解调和译码相应。2) 缓冲的输出驱动器与天线的连接使用最少的外部元件。3) 支持ISO 1443A/MIFATE。4) 读写模式中与ISO 14

11、43A/MIFARE的通信距离高达50mm,取决天线的长度和调谐。5) 读写器模式下支持MIFARE Classic加密。6) 支持ISO 1443 212kbit/s和424bit/s的更高传输速率的通信。7) 64字节的发送和接收FIFO缓冲区。8) 灵活的中断模式。9) 低功耗的硬件复位功能。10) 软件掉电模式。11) 可编程定时器。12) 内部振荡器,连接27.12MHz的晶体。13) 3.3V的电源电压。14) CRC协议处理器。15) 自由编程的I/O管脚。16) 内部只测试图3-8 简化的MFRC522框图3.1.8 S50卡简介系统采用MIFARE S50卡作为餐卡设计。S5

12、0卡主要指标:(1) 容量为8K位EEPROM;(2) 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位;(3) 每个扇区有独立的一组密码及访问控制;(4) 每张卡有唯一序列号,为32位;(5) 具有防冲突机制,支持多卡操作;(6) 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路;(7) 数据保存期为10年,可改写10万次,读无限次;(8) 工作温度:-2050(湿度为90%);(9) 工作频率:13.56MHZ;(10) 通信速率:106 KBPS;(11) 读写距离:10 cm以内(与读写器有关);存储结构:M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成

13、,(我们也将16个扇区的64个块按绝对地址编号为063。第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。每个扇区的块0、块1、块2为数据块,可用于存贮数据。 块0 数据块0扇区0 块1数据块1块2数据块2块3密码A 存取控制 密码B控制块3 块0数据块4扇区1块1数据块5块2数据块6块3密码A 存取控制 密码B控制块7 0数据块60扇区15 1数据块61 2数据块62 3密码A 存取控制 密码B控制块63图3-9 S50卡存储结构图卡片的电气部分只由一个天线和ASIC组成。天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。ASIC:卡片的ASIC由一个高

14、速(106KB波特率)的RF接口,一个控制单元和一个8K位EEPROM组成。工作原理:读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。3.2软件设计3.2.1 总体设计系统开机进入欢迎界面,5秒后进入首次注册模式(为IC卡充值100元钱)。通过按键选择充值模式或者是消费模式。如果LCD显示金额且是充卡

15、模式,即可为卡进行相关金额的充值。如果是消费模式,则扣除相关金额,如果卡中金额不够扣款,则扣款不成功,蜂鸣器发出相应的声响。如果LCD上没有显示金额,当卡靠近时可查看卡的余额。欢迎界面注册M=0余额小于金额M=1充卡模式消费模式余额大小于金额充值成功扣款成功图3-10 系统程序流程图3.2.2 读卡程序设计S50卡要与MFRC522读卡器通讯,读卡器必须先执行寻卡操作,进而记性防碰撞机制,接着对进入范围的卡取一张进行选择,再接着验证IC卡中的密码,如果密码核对正确即可进行下一步操作,否则不可操作。验证成功之后,最后可以读取S50卡中的金额、卡号等数据信息,也可以往IC卡中写入金额信息,也可以对

16、密码进行修改。图3-11 读卡器读S50卡程序流程图3.2.3 MCU与读卡模块通信程序设计为了使编程方便,本系统使用简单的SPI通信协议来使单片机控制读卡器模块。SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。SPI的通信原理很简单,它

17、以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要4根线,事实上3根也可以。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCLK(时钟),CS(片选)。MOSI(SDO):主器件数据输出,从器件数据输入。MISO(SDI):主器件数据输入,从器件数据输出。SCLK :时钟信号,由主器件产生。CS:从器件使能信号,由主器件控制。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效,这就允许在同一总线上连接多个SPI设备成为可能。需要注意的是,在具体的应用中,当一条SPI总线上连接有多个设

18、备时,SPI本身的CS有可能被其他的GPIO脚代替,即每个设备的CS脚被连接到处理器端不同的GPIO,通过操作不同的GPIO口来控制具体的需要操作的SPI设备,减少各个SPI设备间的干扰。SPI是串行通讯协议,也就是说数据是一位一位从MSB或者LSB开始传输的,这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,MISO、MOSI则基于此脉冲完成数据传输。 SPI支持4-32bits的串行数据传输,支持MSB和LSB,每次数据传输时当从设备的大小端发生变化时需要重新设置SPI Master的大小端。图3-12 SPI协议时序图4.部分代码(详细的注释)4.1键盘程序/扫描按键又没有按下void

19、 KeyScan(void)char a = 0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)/读取按键是否按下Delay10ms(1);/延时10ms进行消抖if(GPIO_KEY!=0x0f)/再次检测键盘是否按下/测试列GPIO_KEY=0X0F;switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=4;break;case(0X0d): KeyValue=8;break;case(0X0e):KeyValue=12;break;/测试行GPIO_KEY=0XF0;switch(GPIO_KEY

20、)case(0X70):KeyValue=KeyValue+3;break;case(0Xb0):KeyValue=KeyValue+2;break;case(0Xd0):KeyValue=KeyValue+1;break;case(0Xe0):KeyValue=KeyValue;break;while(a0; c-) for (b=199;b0;b-) for(a=1;a0;a-); /写命令函数void LcdWriteCom(uchar com) /写入命令LCD1602_E = 0; /使能LCD1602_RS = 0; /选择发送命令LCD1602_RW = 0; /选择写入LCD1

21、602_DATAPINS = com; /放入命令Lcd1602_Delay1ms(1);/等待数据稳定LCD1602_E = 1; /写入时序Lcd1602_Delay1ms(5); /保持时间LCD1602_E = 0;/写数据函数 void LcdWriteData(uchar dat)/写入数据LCD1602_E = 0;/使能清零LCD1602_RS = 1;/选择输入数据LCD1602_RW = 0;/选择写入LCD1602_DATAPINS = dat; /写入数据Lcd1602_Delay1ms(1);LCD1602_E = 1; /写入时序Lcd1602_Delay1ms(5

22、); /保持时间LCD1602_E = 0;/LCD初始化子程序void LcdInit() LcdWriteCom(0x38); /开显示LcdWriteCom(0x0c); /开显示不显示光标LcdWriteCom(0x06); /写一个指针加1LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /设置数据指针起点4.3 读写卡程序/功 能:寻卡/参数说明: req_codeIN:寻卡方式/ 0x52 = 寻感应区内所有符合14443A标准的卡/ 0x26 = 寻未进入休眠状态的卡/ pTagTypeOUT:卡片类型代码/ 0x4400 = Mifare_Ul

23、traLight/ 0x0400 = Mifare_One(S50)/ 0x0200 = Mifare_One(S70)/ 0x0800 = Mifare_Pro(X)/ 0x4403 = Mifare_DESFire/返 回: 成功返回MI_OK/char PcdRequest(unsigned char req_code,unsigned char *pTagType) char status; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ClearBitMask(Status2Reg,0x08); WriteRawRC(

24、BitFramingReg,0x07); SetBitMask(TxControlReg,0x03); ucComMF522Buf0 = req_code;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen); if (status = MI_OK) & (unLen = 0x10) *pTagType = ucComMF522Buf0; *(pTagType+1) = ucComMF522Buf1; else status = MI_ERR; return status;/功 能:防冲撞/参数说明: p

25、SnrOUT:卡片序列号,4字节/返 回: 成功返回MI_OK/ char PcdAnticoll(unsigned char *pSnr) char status; unsigned char i,snr_check=0; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ClearBitMask(Status2Reg,0x08); WriteRawRC(BitFramingReg,0x00); ClearBitMask(CollReg,0x80); ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF

26、522Buf1=0x20; status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen); if (status = MI_OK) for (i=0; i4; i+) *(pSnr+i) = ucComMF522Bufi; snr_check = ucComMF522Bufi; if (snr_check != ucComMF522Bufi) status = MI_ERR; SetBitMask(CollReg,0x80); return status;/功 能:选定卡片/参数说明: pSnrIN:卡片序列号,

27、4字节/返 回: 成功返回MI_OK/char PcdSelect(unsigned char *pSnr) char status; unsigned char i; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF522Buf1 = 0x70; ucComMF522Buf6 = 0; for (i=0; i4; i+) ucComMF522Bufi+2 = *(pSnr+i); ucComMF522Buf6 = *(pSnr+i); Calulat

28、eCRC(ucComMF522Buf,7,&ucComMF522Buf7); ClearBitMask(Status2Reg,0x08); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen); if (status = MI_OK) & (unLen = 0x18) status = MI_OK; else status = MI_ERR; return status;/功 能:验证卡片密码/参数说明: auth_modeIN: 密码验证模式/ 0x60 = 验证A密钥/ 0x61 = 验证B密钥

29、/ addrIN:块地址/ pKeyIN:密码/ pSnrIN:卡片序列号,4字节/返 回: 成功返回MI_OK/ char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = auth_mode; ucComMF522Buf1 = addr; for (i=0; i6; i+)

30、ucComMF522Bufi+2 = *(pKey+i); for (i=0; i6; i+) ucComMF522Bufi+8 = *(pSnr+i); / memcpy(&ucComMF522Buf2, pKey, 6); / memcpy(&ucComMF522Buf8, pSnr, 4); status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen); if (status != MI_OK) | (!(ReadRawRC(Status2Reg) & 0x08) status = MI_ERR; retu

31、rn status;/功 能:读取M1卡一块数据/参数说明: addrIN:块地址/ pDataOUT:读出的数据,16字节/返 回: 成功返回MI_OK/ char PcdRead(unsigned char addr,unsigned char *pData) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_READ; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2);

32、 status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); if (status = MI_OK) & (unLen = 0x90) / memcpy(pData, ucComMF522Buf, 16); for (i=0; i16; i+) *(pData+i) = ucComMF522Bufi; else status = MI_ERR; return status;/功 能:写数据到M1卡一块/参数说明: addrIN:块地址/ pDataIN:写入的数据,16字节/返 回: 成功返回MI_OK/ char PcdWrite(unsigned char addr,unsigned char *pData) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_WRITE; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论