找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5837|回复: 1
打印 上一主题 下一主题
收起左侧

RC522全遥控操作RFID刷卡系统源码

[复制链接]
跳转到指定楼层
楼主
ID:185063 发表于 2017-3-31 13:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

/************** 全遥控操作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);
  •                                                         break;
  •                                         case 1:        t=0;
  •                                                         set_inch(t);
  •                                                         break;
  •                                         case 2:        a=0;
  •                                                         set_cons(a);
  •                                                         break;
  •                                 }
  •                         }
  • /*---------------------子菜单时选项选择确认功能-----------------------------------*/
  •                         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);}
  •                                                         break;
  •                                         case 1:
  •                                                   if(t==0)
  •                                                         {incharg();}
  •                                                   if(t==1)
  •                                                           {menu2=0;w=1;mainmenu(1);}
  •                                                   break;
  •                                         case 2:
  •                                                   if(a==0)
  •                                                     {consume();}
  •                                                   if(a==1)
  •                                                           {menu2=0;w=1;mainmenu(2);}
  •                                                   break;
  •                                 }
  •                         }
  •                         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;
  •                                 }
  •                         }
  •                 }
  • /*---------------------遥控键盘输入功能-----------------------------------*/
  •         }
  • }

完整代码下载:http://www.51hei.com/bbs/dpj-57019-1.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:375715 发表于 2019-11-20 15:46 来自触屏版 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表