射频识别高频综合.docx
- 文档编号:9890899
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:36
- 大小:144.46KB
射频识别高频综合.docx
《射频识别高频综合.docx》由会员分享,可在线阅读,更多相关《射频识别高频综合.docx(36页珍藏版)》请在冰豆网上搜索。
射频识别高频综合
课程设计报告
课程名称:
射频识别原理与应用
题目:
高频综合
专业信息工程系
班级物联网
学号_____
姓名
成绩________________
指导教师
2015年1月5日至2015年1月9日
1、设计实验目的
1、学习和掌握高频RFID电子标签的数据读写原理。
2、体会RFID的应用实例
二、设计实验内容
将电子标签放入RFID模块的识别范围内,RFID模块读取电子标签的卡号和余额后在LCD上显示。
同时也可以利用按键进行电子标签的余额的“消费”和“充值”。
3、使用仪器
电脑一台、WSN通用底板、RF2530模块、RFID模块、电子标签、zigbee多功能仿真器(带10pin的JTAG下载线)、A转MiniUSB线。
4、设计实验原理
射频识别技术(RFID)是一种新型自动识别技术,具有可靠性高、保密性强、方便快捷的特点,它利用无线射频方式,通过电磁感应、无线电波或微波能量,在读写基站和应答目标之间进行非接触双向通信,以达到目标识别和数据交换的目的,这项技术简称为“电子标签”。
射频识别系统通常由电子标签(射频标签)和阅读器组成,电子标签内存有一定格式的电子数据,常以此作为待识别目标的标示性信息。
应用中将电子标签附在待识别目标上,作为待识别目标的电子标记,阅读器与电子标签可按约定的通信协议互传信息,RFID标签主要分为无源标签和有源标签两类(或是称为主动和被动)。
最常见的是被动标签(无源标签),当阅读器遇见RFID标签时,发出电磁波,周围形成电磁场,标签从电磁场中获得能量激活标签中的微芯片电路,芯片转换电磁波,然后发送给解读器,解
读器把它转换成相关数据。
在SPI通信中RC522用作从机。
SPI时钟由主机产生。
数据通过MOSI线从主机传输到从机;数据通过MISO线从RC522发回主机。
MOSI和MISO传输每个字节时都是高位在前。
MOSI上的数据在时钟上升沿保持不变,在时钟的下降沿改变。
MISO也与之类似,在时钟下降沿,MISO上的数据由RC522来提供,在时钟的上升沿数据保持不变。
使用下面的结构可将数据通过兼容SPI的接口写入。
这样对应一个地址可以写入多达n个数据字节。
发送的第一个字节定义了模式本身和地址。
字节0
字节0
字节0
...
字节0
字节0
MOSI
地址
数据0
数据1
...
n-1
n
MISO
X
X
X
...
X
X
注:
先发送最高位(MSB)
5、注意事项
1、实验前,请正确安装RF2530模块和RFID模块,注意其丝印方向应与底板丝印方向一致,严禁反接;
2、实验过程中,严禁带电插拨器件,防止损坏电路;
3、实验过程中,严禁用手触摸裸露的器件特别是芯片,防止造成短路或损坏芯片;
4、所有模块出厂前均已调试完毕,除非有特别说明,否则不建议自行对电路
中可调部分进行调节。
6、设计实验步骤
1、将一个RF2530模块和RFID模块插入到WSN通用底板的相应位置。
2、将zigbee多功能仿真器的一端通过10pin下载线接到WSN通用底板的JTAG接口上,
另一端通过USB线接到PC机上,并正确下载相应的实验例程(…\实验例程\hex格式
实验代码\感知层实验\RFID应用实验\RFID应用.HEX)。
3、通过USB外接电源(或锂电池BT)给WSN通用底板供电并将电源开关拨至USB供电(或
锂电池BT供电)的位置,程序自动运行,LCD显示“欢迎光临”;将RFID电子标签放在RFID模块上方,如果首次使用的是未注册卡,则只显示卡号,“余额”后面没有数字,按SW3键“注册”,如果成功,会发出急促的蜂鸣声,LCD显示“注册成功”字样;接着根据SW1、SW2、SW4、SW5按键不同的功能进行应用操作。
进入消费界面,按下SW1即可,SW2设置消费金额加10,SW3设置消费金额减10,按下SW5设置成功;进入充值界面,按下SW2即可,SW2设置充值金额加10,SW3设置充值金额减10,按下SW5设置成功;SW4读取卡号信息,包括余额和卡号。
注意:
RFID电子标签重新放在感应区时,需要等待2s左右,即会显示卡号和余额数值。
4、实验完毕,关闭电源,各模块放回原位
七、设计实验程序流程图
8、各模块功能说明
(1)射频卡电路
(2)读卡器芯片(MFRC522)介绍
MFRC522是应用于13.56MHz非接触式通信中高集成度读写
卡系列芯片中的一员。
是NXP公司针对“三表”应用推出的一款低
电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。
MFRC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。
支持ISO14443A的多层应用。
其内部发送器部分可驱动读写器天线与ISO14443A/MIFARE?
卡和应答机的通信,无需其它的电路。
接收器部分提供一个坚固而有效的解调和解码电路,用于处理ISO14443A兼容的应答器信号。
数字部分处理ISO14443A帧和错误检测(奇偶&CRC)。
此外,它还支持快速CRYPTO1加密算法,用于验证MIFARE系列产品。
MFRC522支持MIFARE?
更高速的非接触式通信,双向数据传输速率高达424kbit/s。
作为13.56MHz高集成度读写卡系列芯片家族的新成员,MFRC522与MFRC500和MFRC530有不少相似之处,同时也具备诸多特点和差异。
它与主机间的通信采用连线较少的串行通信,且可根据不同的用户需求,选取SPI、I2C或串行UART(类似RS232)模式之一,有利于减少连线,缩小PCB板体积,降低成本。
9、总结
(1)通过学习,了解到了RFID在通信领域和物流领域的应用意义,同时也认识到学习RFID技术能为我们以后在通信行业的发展打下一定的基础;
(2)通过课程设计对高频电子线路和通信原理等专业知识进行了复习和巩固,从而对能量和信息的传递过程有了更清晰的认识;
(3)在调试之前应理清思路,对实验系统的工作原理和过程有一个全面准确的地把握,了解每一个工作部件的正常工作情况,这样才能有条不紊地进行调试;
在课设过程中遇到盲点时,应虚心地向老师同学请教,这样可以提高知识点掌握的速率。
团队合作在程序设计过程中同样重要,有时候由于自身思维模式的限制难以找到实验电路中的错误和不足,相互检查可以提高找到错误和缺陷准确率。
因此,无论是生活还是学习,团队精神都是十分必要的。
10.参考文献
[1] 周晓光.王晓华.射频识别(RFID)技术原理与应用实例[M].北京:
人民邮电出版社.2006
[2] 赵军辉.射频识别技术与应用[M].北京:
机械工业出版社,2008.
[3] 游战清.李苏剑.无线射频识别技术(RFID)理论与应用[M].北京:
电子工业出版社,2004.
[4] 邱李华,曹青,郭志强.Visual Basic 程序设计教程[M].2版.北京:
机械工业出版社.2007.
[5] 教育部考试中心.全国计算机等级考试二级教程——Visual Basic 语言程序设计(2008年版)[M].北京:
高等教育处出版社.2008.
11、附录源程序
#include"ioCC2530.h"
#include"hal_mcu.h"
#defineSCLP1_0//IIC时钟线
#defineSDAP1_1//IIC数据线
#defineON0x01//LED状态
#defineOFF0x00
//定义IO方向控制函数
#defineIO_DIR_PORT_PIN(port,pin,dir)\
do{\
if(dir==IO_OUT)\
P##port##DIR|=(0x01<<(pin));\
else\
P##port##DIR&=~(0x01<<(pin));\
}while(0)
#defineOSC_32KHZ0x00//使用外部32K晶体振荡器
//时钟设置函数
#defineHAL_BOARD_INIT()\
{\
uint16i;\
\
SLEEPCMD&=~OSC_PD;/*开启16MHzRC和32MHzXOSC*/\
while(!
(SLEEPSTA&XOSC_STB));/*等待32MHzXOSC稳定*/\
asm("NOP");\
for(i=0;i<504;i++)asm("NOP");/*延时63us*/\
CLKCONCMD=(CLKCONCMD_32MHZ|OSC_32KHZ);/*设置32MHzXOSC和32K时钟*/\
while(CLKCONSTA!
=(CLKCONCMD_32MHZ|OSC_32KHZ));/*等待时钟生效*/\
SLEEPCMD|=OSC_PD;/*关闭16MHzRC*/\
}
#defineIO_IN0//输入
#defineIO_OUT1//输出
uint8ack;//应答标志位
uint8PCA9554ledstate=0;//所有LED当前状态
/******************************************************************************
*函数名称:
QWait
*
*功能描述:
1us的延时
*
*参数:
无
*
*返回值:
无
*****************************************************************************/
voidQWait()
{
asm("NOP");asm("NOP");
asm("NOP");asm("NOP");
asm("NOP");asm("NOP");
asm("NOP");asm("NOP");
asm("NOP");asm("NOP");
asm("NOP");
}
/******************************************************************************
*函数名称:
Wait
*
*功能描述:
ms的延时
*
*参数:
ms-延时时间
*
*返回值:
无
*****************************************************************************/
voidWait(unsignedintms)
{
unsignedcharg,k;
while(ms)
{
for(g=0;g<=167;g++)
{
for(k=0;k<=48;k++);
}
ms--;
}
}
/******************************************************************************
*函数名称:
Start_I2c
*
*功能描述:
启动I2C总线,即发送I2C起始条件.
*
*参数:
无
*
*返回值:
无
*****************************************************************************/
voidStart_I2c()
{
IO_DIR_PORT_PIN(1,0,IO_OUT);//设置P1.0为输出
IO_DIR_PORT_PIN(1,1,IO_OUT);//设置P1.1为输出
SDA=1;/*发送起始条件的数据信号*/
asm("NOP");
SCL=1;
QWait();/*起始条件建立时间大于4.7us,延时*/
QWait();
QWait();
QWait();
QWait();
SDA=0;/*发送起始信号*/
QWait();/*起始条件锁定时间大于4μs*/
QWait();
QWait();
QWait();
QWait();
SCL=0;/*钳住I2C总线,准备发送或接收数据*/
asm("NOP");
asm("NOP");
}
/******************************************************************************
*函数名称:
Stop_I2c
*
*功能描述:
结束I2C总线,即发送I2C结束条件.
*
*参数:
无
*
*返回值:
无
*****************************************************************************/
voidStop_I2c()
{
IO_DIR_PORT_PIN(1,0,IO_OUT);//设置P1.0为输出
IO_DIR_PORT_PIN(1,1,IO_OUT);//设置P1.1为输出
SDA=0;/*发送结束条件的数据信号*/
asm("NOP");/*发送结束条件的时钟信号*/
SCL=1;/*结束条件建立时间大于4μs*/
QWait();
QWait();
QWait();
QWait();
QWait();
SDA=1;/*发送I2C总线结束信号*/
QWait();
QWait();
QWait();
QWait();
}
/******************************************************************************
*函数名称:
SendByte
*
*功能描述:
将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
*此状态位进行操作.(不应答或非应答都使ack=0假)
*发送数据正常,ack=1;ack=0表示被控器无应答或损坏。
*
*参数:
c-需发送的数据
*
*返回值:
无
*****************************************************************************/
voidSendByte(uint8c)
{
uint8BitCnt;
IO_DIR_PORT_PIN(1,0,IO_OUT);//设置P1.0为输出
IO_DIR_PORT_PIN(1,1,IO_OUT);//设置P1.1为输出
for(BitCnt=0;BitCnt<8;BitCnt++)/*要传送的数据长度为8位*/
{
if((c< elseSDA=0; asm("NOP"); SCL=1;/*置时钟线为高,通知被控器开始接收数据位*/ QWait(); QWait();/*保证时钟高电平周期大于4μs*/ QWait(); QWait(); QWait(); SCL=0; } QWait(); QWait(); QWait(); SDA=1;/*8位发送完后释放数据线,准备接收应答位*/ asm("NOP"); IO_DIR_PORT_PIN(1,1,IO_IN); SCL=1; QWait(); QWait(); QWait(); QWait(); if(SDA==1)ack=0; elseack=1;/*判断是否接收到应答信号*/ SCL=0; QWait(); QWait(); IO_DIR_PORT_PIN(1,1,IO_OUT); } /****************************************************************************** *函数名称: RcvByte * *功能描述: 用来接收从器件传来的数据,并判断总线错误(不发应答信号), *发完后请用应答函数。 * *参数: 无 * *返回值: retc-从器件传来的数据 *****************************************************************************/ uint8RcvByte() { uint8retc; uint8BitCnt; IO_DIR_PORT_PIN(1,0,IO_OUT);//设置P1.0为输出 IO_DIR_PORT_PIN(1,1,IO_OUT);//设置P1.1为输出 retc=0; SDA=1;/*置数据线为输入方式*/ IO_DIR_PORT_PIN(1,1,IO_IN); for(BitCnt=0;BitCnt<8;BitCnt++) { asm("NOP"); SCL=0;/*置时钟线为低,准备接收数据位*/ QWait(); QWait();/*时钟低电平周期大于4.7μs*/ QWait(); QWait(); QWait(); SCL=1;/*置时钟线为高使数据线上数据有效*/ QWait(); QWait(); retc=retc<<1; if(SDA==1)retc=retc+1;/*读数据位,接收的数据位放入retc中*/ QWait(); QWait(); } SCL=0; QWait(); QWait(); IO_DIR_PORT_PIN(1,1,IO_OUT); return(retc); } /****************************************************************************** *函数名称: Ack_I2c * *功能描述: 主控器进行应答信号,(可以是应答或非应答信号) * * *参数: 无 * *返回值: 无 *****************************************************************************/ voidAck_I2c(uint8a) { IO_DIR_PORT_PIN(1,0,IO_OUT);//设置P1.0为输出 IO_DIR_PORT_PIN(1,1,IO_OUT);//设置P1.1为输出 if(a==0)SDA=0;/*在此发出应答或非应答信号*/ elseSDA=1; QWait(); //QWait(); //QWait(); SCL=1; QWait(); QWait();/*时钟低电平周期大于4μs*/ QWait(); QWait(); QWait(); SCL=0;/*清时钟线,钳住I2C总线以便继续接收*/ QWait(); //QWait(); } /****************************************************************************** *函数名称: ISendByte * *功能描述: 从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla. *如果返回1表示操作成功,否则操作有误。 * * *参数: sla-从器件地址 *c-需发送的数据 * *返回值: 0--失败 *1--成功 *****************************************************************************/ uint8ISendByte(uint8sla,uint8c) { Start_I2c();/*启动总线*/ SendByte(sla);/*发送器件地址*/ if(ack==0)return(0); SendByte(c);/*发送数据*/ if(ack==0)return(0); Stop_I2c();/*结束总线*/ return (1); } /****************************************************************************** *函数名称: ISendStr * *功能描述: 从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件 *地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。 *如果返回1表示操作成功,否则操作有误。 * * *参数: sla-从器件地址 *suba-从器件子地址 **s-数据 *no-数据字节数目 * *返回值: 0--失败 *1--成功 * *注意: 使用前必须已结束总线。 *****************************************************************************/ uint8ISendStr(uint8sla,uint8suba,uint8*s,uint8no) { uint8i; Start_I2c();/*启动总线*/ SendByte(sla);/*发送器件地址*/ if(ack==0)return(0); SendByte(suba);/*发送器件子地址*/ if(ack==0)return(0); for(i=0;i { SendByte(*s);/*发送数据*/ if(ack==0)return(0); s++; } Stop_I2c();/*结束总线*/ return (1); } /****************************************************************************** *函数名称: IRcvByte * *功能描述: 从启动总线到发送地址,读数据,结束总线的全过程,从器件地 *址sla,返回值在c.如果返回1表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 射频 识别 高频 综合