智能停车场系统的设计_第1页
智能停车场系统的设计_第2页
智能停车场系统的设计_第3页
智能停车场系统的设计_第4页
智能停车场系统的设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

PAGE26题目:智能停车场系统的设计作者姓名:学号:单位:通信与电子工程学院指导教师:目录TOC\o"1-3"\h\z87801.引言 133102.相关背景 1169872.1停车场管理系统概述 1220232.2研究意义以及前景 28563.方案论证 2301643.1总体论证 2217033.1.1设计要求 2255143.1.2实现方案 217923.2方案分析 2295523.2.1检测探头的选用 260053.2.2从机微处理器的选用 2269673.2.3从机显示模块选择 330924.系统设计 392504.1硬件设计 3160894.1.1系统模型 3232994.1.2硬件简介 3170975.结论 55613附录 7

摘要本文将介绍基于51单片机的智能停车场系统设计,重点是方案论证、系统设计及优化几个方面。整个智能停车场系统,分为四大模块:IC读卡器控制模块、12864液晶显示模块、步进电机控制模块、红外线控制模块。12864液晶显示模块以微控制器51单片机为核心,采集各停车位车辆的信息指导车主停车;IC读卡器控制模块通过读取IC卡信息实现身份验证、门控等功能;关键词:智能停车场系统;IC读卡;51单片机;12864液晶显示屏智能停车场管理系统1.引言随着科学技术的不断发展和人们生活水平的提高,汽车数量迅速增加,车位日益紧张,给人们日常停车带来了诸多麻烦,迫切需要高级停车场和智能的停车管理系统。然而目前大部分停车场不仅规模小且相对分散,停车管理存在以下弊端:1、人们不能及时掌握各停车场的信息2、在进入停车场时更不能及时找到空车位3、服务质量不高,车辆进出混乱该智能停车场管理系统将会克服上述不足,设计更智能化、人性化。不仅给车主停车和管理停车场带来了方便,更能充分利用车位资源,减少了拥堵,改善了交通秩序。2.相关背景随着中国现代化进程的加快,各停车场车流量日渐增多,单单依靠人工管理,其日常保安与管理工作也日渐繁重。现代企业和政府管理部门为树立良好的形象,对所辖小区进行规范的现代化管理,已广泛地采用智能停车场,对出入车辆的进行高效管制。2.1停车场管理系统概述智能停车场管理系统是一种高效快捷、公正准确、科学经济的停车场管理手段,是停车场对于车辆实行动态和静态管理的综合。从用户的角度看,其服务高效;从管理者的角度看,其易于操作维护、动化程度高、大大减轻管理者的劳动强度。采用先进的单片机控制,从高标准、高可靠、高安全的设备,利用了高度自动化的机电和微机设备对停车场进行安全、有效的管理,包括、保安、监控、防盗等。2.2研究意义以及前景随着科技的进步和人类文明的发展,大型停车场在住宅小区、大厦、机关单位的应用越来越普遍。而人们对停车场管理的要求也越来越高,智能化程度也越来越高,使用更加方便快捷,也给人类的生活带来了方便和快乐。不仅提高了现代人类的工作效率,也大大的节约了人力物力,价低了公司的运营成本,并使得整个停车场安全可靠,因此该智能停车场管理系统将会得到极大的推广。3.方案论证3.1总体论证3.1.1设计要求设计一款具备停车指导,安全监控的智能停车场管理系统。3.1.2实现方案为了实现以上功能从大的方面有以下三个方案可供选择:方案一:采用高端CPU利用Internet网络进行信息传输和远程监控。方案二:采用廉价51单片机对各个车位进行信息采集同时利用电力线载波通信技术或无线网络技术进行信息传输和控制,并将信息提交的主控单片机进行。方案三:采用廉价51单片机对各个车位进行信息采集并提供给将寻找车位的车主。比较:方案一该设计智能化程度高、控制相当准确,便于与网络连接;但是施工工程量很大,费用高;方案二避免了布线安装施工的困难,但成本高,网络性能一般;方案三不仅技术成熟、成本低廉而且通信性能高布线简单,易于实现。通过以上比较决定采用方案三。3.2方案分析3.2.1检测探头的选用红外检测原理实现简单、成本低廉,利用红外线控制模块检测车辆不仅抗干扰性强、检测距离远,提高智能化程度,故在停车位选用红外控制模块检测,在停车场门口选用IC读卡控制模块控制车辆出入。3.2.2从机微处理器的选用单片机选用深圳宏晶的STC89C52。此单片机与AT89C52完全兼容,而且STC89C52功能更强、更稳定,特别的一点是STC系列单片机支持串口在线编程功能,且价格与AT89C52相当,故选用STC89C52为控制核心。3.2.3从机显示模块选择选用12864液晶显示器,功耗低,显示功能强大。4.系统设计4.1硬件设计4.1.1系统模型图1系统整体模型图使相对分散的停车场形成一个统一的整体,便于调度和协调。停车场内部自成独立的系统适用于小型停车场和独立停车场,扩大了适用范围,此外本系统具有良好的扩展性,便于和监控系统的对接,使其更具有推广应用价值。4.1.2硬件简介(1)单片机STC89C52STC89C52单片机是深圳宏晶科技代理美国一家高科技公司的产品,它具有无法解密、超低功耗、高速高可靠、抗静电抗干扰的众多优点。而且STC89C52向下完全兼容ATMEL公司的AT89C52,其中STC89C52支持串口在线编程的功能给实验者带来了很大的方便。内置8K的FLASH程序存储器更是能够反复擦鞋10000次,使实验者不必担心FLASH存储器的老化。下面是STC89C52的引脚定义:(2)IC读卡器模块RFID系列的rc522射频读卡器,是采用先进的射频接收线路设计及嵌入式微控制器,结合高效解码算法,完成对64bitsRead-OnlyEM4100兼容式ID卡的接收,具有接收灵敏度高,工作电流小,单直流电源供电,低价位高性能等特点,适用于门禁,巡更等各种射频应用领域。有效距离10cm以上,在有效距离内数据接收时间小于100ms,单直流电源+5V供电,工作电流小于70mA。接口描述:IC读卡器接口定义5.结论本设计利用微型计算机作上位机提供友好的人机界面、语音服务、网络服务,对停车场的管理和监控更加人性化、智能化、合理化,真正实现了对停车场的综合控制管理。而且本系统利用性能可靠、价格廉价的51单片机作从机微处理器降低了系统成本,便于普通小区普及应用。系统参数:工作电压: 220V,50Hz磁卡有效距离: 10cm红外检测探头:3cm

致谢本设计的顺利完成得到了院系领导老师的大力支持和帮助,尤其是我的张劲松老师在百忙之中抽出宝贵的休息时间,仔细耐心地指导我、鼓励我、让我有了解决问题的信心,使设计得以顺利的完成。本设计的过程中曾多次与同学探讨问题,通过探讨使自己的想法更完善。另外,我院学生创新实验室的全体师生,也为本设计提供了很大的帮助,在模型的制作中我的女朋友也参与其中帮助我完成了模型制作。在此,对他们表示由衷的感谢!电子信息技术日新月异地飞速发展,人们总是处在不断学习阶段,再加上我水平有限,所以本设计肯定存在许多不尽如人意的地方,欢迎广大老师和同学批评指正。最后,我在这里要感谢系里的所有老师,是他们精心的栽培与悉心指导为我以后的学习、工作打下了坚实的基础。谢谢通信与电子信息工程学院所有老师。

附录实物图:智能停车场管理系统程序:12864液晶显示程序:#ifndef__LCD12864_H#define__LCD12864_H//包含头文件//#include"LPCREG.H"//重定义关键词//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif//如果使用画图模式定义这个////#defineLCD12864_PICTURE//定义使用的IO口//#defineLCD12864_DATAPORTP1 //数据IO口sbitLCD12864_RS=P0^7;//(数据命令)寄存器选择输入sbitLCD12864_RW=P0^6;//液晶读/写控制sbitLCD12864_EN=P0^5;//液晶使能控制sbitLCD12864_PSB=P3^5;//串/并方式控制sbitLCD12864_RST=P3^4; //复位端//声明全局函数//voidLCD12864_Delay1ms(uintc);ucharLCD12864_Busy(void);voidLCD12864_WriteCmd(ucharcmd);voidLCD12864_WriteData(uchardat);voidLCD12864_Init();voidLCD12864_ClearScreen(void);voidLCD12864_SetWindow(ucharx,uchary);#endif#include"lcd12864.h"/********************************************************************************函数名:LCD12864_Delay1ms*函数功能 :延时1MS*输入:c*输出:无*******************************************************************************/voidLCD12864_Delay1ms(uintc){uchara,b; for(;c>0;c--) { for(b=199;b>0;b--) { for(a=1;a>0;a--); } }}/********************************************************************************函数名:LCD12864_Busy*函数功能 :检测LCD是否忙*输入:无*输出:1或0(1表示不忙,0表示忙)*******************************************************************************/ucharLCD12864_Busy(void){ uchari=0; LCD12864_RS=0; //选择命令 LCD12864_RW=1; //选择读取 LCD12864_EN=1; LCD12864_Delay1ms(1); while((LCD12864_DATAPORT&0x80)==0x80) //检测读取到的值 { i++; if(i>100) { LCD12864_EN=0; return0; //超过等待时间返回0表示失败 } } LCD12864_EN=0; return1;}/********************************************************************************函数名:LCD12864_WriteCmd*函数功能 :写命令*输入:cmd*输出:无*******************************************************************************/voidLCD12864_WriteCmd(ucharcmd){ uchari; i=0; while(LCD12864_Busy()==0) { LCD12864_Delay1ms(1); i++; if(i>100) { return; //超过等待退出 } } LCD12864_RS=0;//选择命令 LCD12864_RW=0;//选择写入 LCD12864_EN=0;//初始化使能端 LCD12864_DATAPORT=cmd;//放置数据 LCD12864_EN=1; //写时序 LCD12864_Delay1ms(5); LCD12864_EN=0; } /********************************************************************************函数名:LCD12864_WriteData*函数功能 :写数据*输入:dat*输出:无*******************************************************************************/voidLCD12864_WriteData(uchardat){ uchari; i=0; while(LCD12864_Busy()==0) { LCD12864_Delay1ms(1); i++; if(i>100) { return; //超过等待退出 } } LCD12864_RS=1;//选择数据 LCD12864_RW=0;//选择写入 LCD12864_EN=0;//初始化使能端 LCD12864_DATAPORT=dat;//放置数据 LCD12864_EN=1; //写时序 LCD12864_Delay1ms(5); LCD12864_EN=0; } /********************************************************************************函数名:LCD12864_ReadData*函数功能 :读取数据*输入:无*输出:读取到的8位数据*******************************************************************************/#ifdefLCD12864_PICTUREucharLCD12864_ReadData(void){ uchari,readValue; i=0; while(LCD12864_Busy()==0) { LCD12864_Delay1ms(1); i++; if(i>100) { return0; //超过等待退出 } } LCD12864_RS=1;//选择命令 LCD12864_RW=1; LCD12864_EN=0; LCD12864_Delay1ms(1);//等待 LCD12864_EN=1; LCD12864_Delay1ms(1); readValue=LCD12864_DATAPORT; LCD12864_EN=0; returnreadValue;}#endif/********************************************************************************函数名:LCD12864_Init*函数功能 :初始化LCD12864*输入:无*输出:无*******************************************************************************/voidLCD12864_Init(){ LCD12864_PSB=1; //选择并行输入 LCD12864_RST=1; //复位 LCD12864_WriteCmd(0x30);//选择基本指令操作 LCD12864_WriteCmd(0x0c);//显示开,关光标 LCD12864_WriteCmd(0x01);//清除LCD12864的显示内容}/********************************************************************************函数名:LCD12864_SetWindow*函数功能 :设置在基本指令模式下设置显示坐标。注意:x是设置行,y是设置列*输入:x,y*输出:无*******************************************************************************/voidLCD12864_SetWindow(ucharx,uchary){ ucharpos; if(x==0) //第一行的地址是80H { x=0x80; } elseif(x==1)//第二行的地址是90H { x=0x90; } elseif(x==2)//第三行的地址是88H { x=0x88; } elseif(x==3) { x=0x98; } pos=x+y; LCD12864_WriteCmd(pos);} RC522射频读卡器程序:#include"intrins.h"#include"LPCREG.H"#include"mfrc522.h"#defineMAXRLEN18sbitMF522_NSS=P0^0; //SDAsbitMF522_SCK=P0^1;sbitMF522_SI=P0^2;//MOSIsbitMF522_SO=P0^3;//MISOsbitMF522_RST=P0^4;///////////////////////////////////////////////////////////////////////功能:寻卡//说明参数:req_code[IN]:寻卡方式//0x52=寻感应区内所有符合14443A标准的卡//0x26=寻未进入休眠状态的卡//pTagType[OUT]:卡片类型的代码//0x4400=Mifare_UltraLight//0x0400=Mifare_One(S50)//0x0200=Mifare_One(S70)//0x0800=Mifare_Pro(X)//0x4403=Mifare_DESFire//返回:成功返回MI_OK///////////////////////////////////////////////////////////////////// PICC_REQIDLcharPcdRequest(unsignedcharreq_code,unsignedchar*pTagType){charstatus; //idataunsignedintunLen; //idataunsignedcharucComMF522Buf[MAXRLEN]; //idataClearBitMask(Status2Reg,0x08);WriteRawRC(BitFramingReg,0x07);SetBitMask(TxControlReg,0x03);ucComMF522Buf[0]=req_code;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);if((status==MI_OK)&&(unLen==0x10)){*pTagType=ucComMF522Buf[0];*(pTagType+1)=ucComMF522Buf[1];}else{status=MI_ERR; }returnstatus;}///////////////////////////////////////////////////////////////////////功能:防冲撞//参数说明:pSnr[OUT]:卡片序列号,4字节//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdAnticoll(unsignedchar*pSnr){charstatus; //idataunsignedchari,snr_check=0;unsignedintunLen;unsignedcharucComMF522Buf[MAXRLEN];ClearBitMask(Status2Reg,0x08);WriteRawRC(BitFramingReg,0x00);ClearBitMask(CollReg,0x80);ucComMF522Buf[0]=PICC_ANTICOLL1;ucComMF522Buf[1]=0x20;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);if(status==MI_OK){ for(i=0;i<4;i++){*(pSnr+i)=ucComMF522Buf[i];snr_check^=ucComMF522Buf[i];}if(snr_check!=ucComMF522Buf[i]){status=MI_ERR;}}SetBitMask(CollReg,0x80);returnstatus;}///////////////////////////////////////////////////////////////////////功能:选定卡片//参数说明:pSnr[IN]:卡片序列号4字节//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdSelect(unsignedchar*pSnr){charstatus; //idataunsignedchari; //idataunsignedintunLen; //idataunsignedcharucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=PICC_ANTICOLL1;ucComMF522Buf[1]=0x70;ucComMF522Buf[6]=0;for(i=0;i<4;i++){ ucComMF522Buf[i+2]=*(pSnr+i); ucComMF522Buf[6]^=*(pSnr+i);}CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf[7]);ClearBitMask(Status2Reg,0x08);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen);if((status==MI_OK)&&(unLen==0x18)){status=MI_OK;}else{status=MI_ERR;}returnstatus;}///////////////////////////////////////////////////////////////////////功能:验证卡片密码//参数说明:auth_mode[IN]:密码验证模式//0x60=验证A秘钥//0x61=验证B秘钥//addr[IN]:块地址//pKey[IN]:密码//pSnr[IN]:卡片序列号4字节//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdAuthState(unsignedcharauth_mode,unsignedcharaddr,unsignedchar*pKey,unsignedchar*pSnr){charstatus; //idataunsignedintunLen; //idataunsignedchari; //idata unsignedcharucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=auth_mode;ucComMF522Buf[1]=addr;for(i=0;i<6;i++){ucComMF522Buf[i+2]=*(pKey+i);}for(i=0;i<6;i++){ucComMF522Buf[i+8]=*(pSnr+i);}//memcpy(&ucComMF522Buf[2],pKey,6);//memcpy(&ucComMF522Buf[8],pSnr,4);status=PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen);if((status!=MI_OK)||(!(ReadRawRC(Status2Reg)&0x08))){status=MI_ERR;}returnstatus;}///////////////////////////////////////////////////////////////////////功能:读取MI卡一块数据//参数说明:addr[IN]:块地址·//pData[OUT]:读出的数据,16数据//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdRead(unsignedcharaddr,unsignedchar*pData){charstatus; //idataunsignedintunLen;//idataunsignedchari; //idata unsignedcharucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=PICC_READ;ucComMF522Buf[1]=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status==MI_OK)&&(unLen==0x90))//{memcpy(pData,ucComMF522Buf,16);}{for(i=0;i<16;i++){*(pData+i)=ucComMF522Buf[i];}}else{status=MI_ERR;}returnstatus;} ///////////////////////////////////////////////////////////////////////功能:写数据到MI卡一块//参数说明:addr[IN]:块地址//pData[IN]:写入数据16字节//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdWrite(unsignedcharaddr,unsignedchar*pData){charstatus;unsignedintunLen;unsignedchari,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=PICC_WRITE;ucComMF522Buf[1]=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}if(status==MI_OK){//memcpy(ucComMF522Buf,pData,16);for(i=0;i<16;i++){ucComMF522Buf[i]=*(pData+i);}CalulateCRC(ucComMF522Buf,16,&ucComMF522Buf[16]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}}returnstatus;} ///////////////////////////////////////////////////////////////////////功能:扣款和充值//参数说明:dd_mode[IN]命令字//0xC0=扣款//0xC1=充值//addr[IN]:钱包地址//pValue[IN]4字节增(减)值,低位在前//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdValue(unsignedchardd_mode,unsignedcharaddr,unsignedchar*pValue){charstatus;unsignedintunLen;unsignedchari,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=dd_mode;ucComMF522Buf[1]=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}if(status==MI_OK){//memcpy(ucComMF522Buf,pValue,4);for(i=0;i<16;i++){ucComMF522Buf[i]=*(pValue+i);}CalulateCRC(ucComMF522Buf,4,&ucComMF522Buf[4]);unLen=0;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,6,ucComMF522Buf,&unLen);if(status!=MI_ERR){status=MI_OK;}}if(status==MI_OK){ucComMF522Buf[0]=PICC_TRANSFER;ucComMF522Buf[1]=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}}returnstatus;}///////////////////////////////////////////////////////////////////////用MF522计算crc16函数/////////////////////////////////////////////////////////////////////voidCalulateCRC(unsignedchar*pIndata,unsignedcharlen,unsignedchar*pOutData){unsignedchari,n;ClearBitMask(DivIrqReg,0x04);WriteRawRC(CommandReg,PCD_IDLE);SetBitMask(FIFOLevelReg,0x80);for(i=0;i<len;i++){WriteRawRC(FIFODataReg,*(pIndata+i));}WriteRawRC(CommandReg,PCD_CALCCRC);i=0xFF;do{n=ReadRawRC(DivIrqReg);i--;}while((i!=0)&&!(n&0x04));pOutData[0]=ReadRawRC(CRCResultRegL);pOutData[1]=ReadRawRC(CRCResultRegM);}///////////////////////////////////////////////////////////////////////功能:复位RC522//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdReset(void){ //unsignedchari;MF522_RST=1; _nop_();MF522_RST=0; _nop_();MF522_RST=1; _nop_(); WriteRawRC(CommandReg,PCD_RESETPHASE); _nop_(); WriteRawRC(ModeReg,0x3D);//oíMifare?¨í¨??£?CRC3?ê??μ0x6363WriteRawRC(TReloadRegL,30);WriteRawRC(TReloadRegH,0);WriteRawRC(TModeReg,0x8D);WriteRawRC(TPrescalerReg,0x3E);WriteRawRC(TxAutoReg,0x40);returnMI_OK;}///////////////////////////////////////////////////////////////////////功能:读RC632寄存器//参数说明:Address[IN]:寄存器地址//返回:读出的值/////////////////////////////////////////////////////////////////////unsignedcharReadRawRC(unsignedcharAddress){unsignedchari,ucAddr;unsignedcharucResult=0;MF522_SCK=0;MF522_NSS=0;ucAddr=((Address<<1)&0x7E)|0x80;for(i=8;i>0;i--){MF522_SI=((ucAddr&0x80)==0x80);MF522_SCK=1;ucAddr<<=1;MF522_SCK=0;}for(i=8;i>0;i--){MF522_SCK=1;ucResult<<=1;ucResult|=(bit)MF522_SO;MF522_SCK=0;}MF522_NSS=1;MF522_SCK=1;returnucResult;}///////////////////////////////////////////////////////////////////////功能:写RC632寄存器//参数说明:Address[IN]:寄存器地址·//value[IN]:写入的值/////////////////////////////////////////////////////////////////////voidWriteRawRC(unsignedcharAddress,unsignedcharvalue){unsignedchari,ucAddr;MF522_SCK=0;MF522_NSS=0;ucAddr=((Address<<1)&0x7E);for(i=8;i>0;i--){MF522_SI=((ucAddr&0x80)==0x80);MF522_SCK=1;ucAddr<<=1;MF522_SCK=0;}for(i=8;i>0;i--){MF522_SI=((value&0x80)==0x80);MF522_SCK=1;value<<=1;MF522_SCK=0;}MF522_NSS=1;MF522_SCK=1;}///////////////////////////////////////////////////////////////////////功能:置RC522寄存器位//参数说明:reg[IN]:寄存器地址//mask[IN]:置位值/////////////////////////////////////////////////////////////////////voidSetBitMask(unsignedcharreg,unsignedcharmask){chartmp=0x0;tmp=ReadRawRC(reg);WriteRawRC(reg,tmp|mask);//setbitmask}///////////////////////////////////////////////////////////////////////功能:置RC522寄存器位//参数说明:reg[IN]:寄存器地址·//mask[IN]:清位置/////////////////////////////////////////////////////////////////////voidClearBitMask(unsignedcharreg,unsignedcharmask){chartmp=0x0;tmp=ReadRawRC(reg);WriteRawRC(reg,tmp&~mask);//clearbitmask}///////////////////////////////////////////////////////////////////////功能:通过RC522和ISO14443卡通讯//参数说明:Command[IN]:RC522命令字//pInData[IN]:通过RC522发送到卡片的数据//InLenByte[IN]:发送数据的字节长度//pOutData[OUT]:接受到的卡片返回数据//*pOutLenBit[OUT]:返回数据的位长度/////////////////////////////////////////////////////////////////////charPcdComMF522(unsignedcharCommand,unsignedchar*pInData,unsignedcharInLenByte,unsignedchar*pOutData,unsignedint*pOutLenBit){charstatus=MI_ERR;unsignedcharirqEn=0x00;unsignedcharwaitFor=0x00;unsignedcharlastBits;unsignedcharn;unsignedinti;switch(Command){casePCD_AUTHENT:irqEn=0x12;waitFor=0x10;break;casePCD_TRANSCEIVE:irqEn=0x77;waitFor=0x30;break;default:break;}WriteRawRC(ComIEnReg,irqEn|0x80);ClearBitMask(ComIrqReg,0x80);WriteRawRC(CommandReg,PCD_IDLE);SetBitMask(FIFOLevelReg,0x80);for(i=0;i<InLenByte;i++){WriteRawRC(FIFODataReg,pInData[i]);}WriteRawRC(CommandReg,Command);if(Command==PCD_TRANSCEIVE){SetBitMask(BitFramingReg,0x80);}i=600;//根据时钟频率调整,操作M1卡最大等待时间25msdo{n=ReadRawRC(ComIrqReg);i--;}while((i!=0)&&!(n&0x01)&&!(n&waitFor));ClearBitMask(BitFramingReg,0x80); if(i!=0){if(!(ReadRawRC(ErrorReg)&0x1B)){status=MI_OK;if(n&irqEn&0x01){status=MI_NOTAGERR;}if(Command==PCD_TRANSCEIVE){ n=ReadRawRC(FIFOLevelReg); lastBits=ReadRawRC(ControlReg)&0x07;if(lastBits){*pOutLenBit=(n-1)*8+lastBits;}else{*pOutLenBit=n*8;}if(n==0){n=1;}if(n>MAXRLEN){n=MAXRLEN;}for(i=0;i<n;i++){pOutData[i]=ReadRawRC(FIFODataReg);}}}else{status=MI_ERR;}}SetBitMask(ControlReg,0x80);//stoptimernowWriteRawRC(CommandReg,PCD_IDLE);returnstatus;}///////////////////////////////////////////////////////////////////////开启天线//每次启动或关闭天线发射之间应至少有1ms的间隔/////////////////////////////////////////////////////////////////////voidPcdAntennaOn(){unsignedchari;i=ReadRawRC(TxControlReg);if(!(i&0x03)){SetBitMask(TxControlReg,0x03);}}///////////////////////////////////////////////////////////////////////关闭天线/////////////////////////////////////////////////////////////////////voidPcdAntennaOff(){ClearBitMask(TxControlReg,0x03);}基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推

温馨提示

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

评论

0/150

提交评论