找回密码
 立即注册

QQ登录

只需一步,快速开始

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

RC-522+S50+038+12864刷卡程序

[复制链接]
跳转到指定楼层
楼主
ID:457281 发表于 2018-12-28 15:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/************** 全遥控操作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.自动设定数据范围,超范围自动提示。
     
出品:聚龙居士 qq:15080987   2014.6.8
*/
/****************************************/
#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;     
    }
   }
  }
/*---------------------遥控键盘输入功能-----------------------------------*/
}
}

RC-522+S50+038+12864刷卡程序-未修改.zip

225.13 KB, 下载次数: 12, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-12-28 17:42 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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