资源描述:
《基于某单片机地IC卡读写》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、标准文档基于单片机的IC卡读写系统实验目的:1.学会并掌握可keil软件的使用;2.学会并掌握protues软件的使用;3.实现基于单片机的IC卡读写;4.通过实验巩固单片机相关知识和检验自身动手能力实验要求:掌握单片机相关知识,利用单片机控制和射频模块组合来读写IC卡,并实现软硬件的仿真模拟。lC卡读卡器以MCS-51系列单片机作为核心构成,主要用于家庭和机构门锁的开关,具有安全稳定的特点,在识别,删除,添加,自动开锁时,用于对IC卡进行读写操作。实验设备和仪器:1.89c51单片机最小系统2.射频模块RC522,智能IC卡以及其他附加电路实验内容:本次实验设计是由小组五个成员共同完成基于单
2、片机的IC卡读写系统并完成实物搭建和撰写实验报告。方案一:实验步骤:1.利用protues画电路图,电路图如图1所示:实用文案标准文档图1:方案一电路图2.模拟刷卡后显示,如图二:实用文案标准文档图2:方案一实现图3.根据电路图编写C语言代码:代码如下:#include"reg52.h"#include"main.h"#include"mfrc522.h"实用文案标准文档#include#include"LCD1602.h"#include"DS1302.h"#defineucharunsignedchar#defineuintunsignedintsbitSpeak=P2
3、^7;//蜂鸣器sbitRED=P3^4;//红色指示灯sbitGREEN=P3^3;//绿色指示灯sbitRelay=P3^2;//继电器sbitKEY1=P1^3;//小时加按键sbitKEY2=P1^4;//小时减按键sbitKEY3=P1^5;//分钟加按键sbitKEY4=P1^6;//分钟减按键sbitKEY5=P1^7;//添加删除卡sbitKEY=P2^6;//开门unsignedcharidataRevBuffer[30];unsignedcharCard_Num;voidiccardcode();//系统初始化voidInitializeSystem()//IC卡初始化{P
4、cdReset();//IC卡初始化实用文案标准文档PcdAntennaOff();//IC卡初始化PcdAntennaOn();//IC卡初始化M500PcdConfigISOType('A');//IC卡初始化}unsignedcharidataUID[4],Temp[4];//读取卡号数组unsignedcharTable[3];//显示数组unsignedcharNum;unsignedcharCount,Countf,Count1,Count2,Count3,Count4,Count5,C_flag;//卡序号voidAuto_Reader(void)//自动寻卡{if(PcdReq
5、uest(0x52,Temp)==0)//找到卡{if(PcdAnticoll(UID)==0){Speak=0;delay_10ms(20);Speak=1;//蜂鸣器提示Table[0]=UID[0]/100+0x30;//卡号显示Table[1]=UID[0]/10%10+0x30;//卡号显示Table[2]=UID[0]%10+0x30;//卡号显示LCD1602_Disp_ZF(0x80+0x40,"Num:",16);//卡号显示LCD1602_Disp_ZF(0x84+0x40,Table,3);//卡号显示Count=UID[0];//判断卡是不是有效if((Count==C
6、ount1)
7、
8、(Count==Count2)
9、
10、(Count==Count3)
11、
12、(Count==Count4)
13、
14、(Count==Count5))实用文案标准文档{LCD1602_Disp_ZF(0x88+0x40,"Welcome",7);//卡有效GREEN=0;Relay=0;delay_10ms(200);Relay=1;GREEN=1;//绿灯亮,打开继电器C_flag=1;}else{LCD1602_Disp_ZF(0x88+0x40,"Error",7);//卡无效RED=0;delay_10ms(500);RED=1;//红灯亮C_flag=2;}delay_10ms(20
15、0);LCD1602_Disp_ZF(0x80+0x40,"PleaseSwipecard",16);//显示初始界面}}}ucharDS1302_Table[7]={0};//读取时间值voidDisplay_LCD2(ucharDis_Hour,ucharDis_Min,ucharDis_Sec)//显示时间值{ucharDis_Table[8]="11:22:33";Dis_Table[0]