找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助!一个51利用RFID模块识别卡号的程序,实现卡号对了灯就灭额,不对灯就亮

[复制链接]
跳转到指定楼层
楼主
ID:256652 发表于 2017-12-18 23:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
#include<reg52.h>
#include<string.h>

unsigned char num1[]={0x02,0x32,0x31,0x30,0x30,0x43,0x37,0x43,0x30,0x46,0x44,0x44,0x42,0x03};
unsigned char num2[]={0x02,0x32,0x31,0x30,0x30,0x43,0x36,0x42,0x34,0x42,0x44,0x45,0x45,0x03};
unsigned char num3[]={0x02,0x32,0x31,0x30,0x30,0x43,0x38,0x34,0x34,0x31,0x46,0x42,0x32,0x03};
unsigned char num4[]={0x02,0x32,0x31,0x30,0x30,0x43,0x38,0x42,0x33,0x35,0x41,0x30,0x30,0x03};
unsigned char num5[]={0x02,0x32,0x31,0x30,0x30,0x43,0x39,0x31,0x31,0x35,0x39,0x41,0x30,0x03};
unsigned char num6[]={0x02,0x32,0x31,0x30,0x30,0x35,0x42,0x45,0x43,0x34,0x38,0x44,0x45,0x03};
unsigned char num[14];//存放选定的卡号
unsigned int i,n=0;
unsigned char now[14];//存放读取的卡号

sbit LED=P1^2;

unsigned char m=100;
unsigned int j,k,temp,key=0;


void delaychar(unsigned int m)
{
  for(j=m;j>0;j--)
    for(k=125;k>0;k--);
}

void jvzhen()
{
  while(1)
  {
    P3=0xfe;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
      delaychar(10);
      if(temp!=0xf0)
      {
        temp=P3;
        switch(temp)
        {
          case 0xee:
               key=0;
               break;

          case 0xde:
               key=1;
               break;

          case 0xbe:
               key=2;
               break;

          case 0x7e:
               key=3;
               break;
         }
      }
    }
    P3=0xfd;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
      delaychar(10);
      if(temp!=0xf0)
      {
        temp=P3;
        switch(temp)
        {
          case 0xed:
               key=4;
               break;

          case 0xdd:
               key=5;
               break;

          case 0xbd:
               key=6;
               break;

          case 0x7d:
               key=7;
               break;
         }
      }
      }
    P3=0xfb;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
      delaychar(10);
      if(temp!=0xf0)
      {
        temp=P3;
        switch(temp)
        {
          case 0xeb:
               key=8;
               break;

          case 0xdb:
               key=9;
               break;

          case 0xbb:
               key=10;
               break;

          case 0x7b:
               key=11;
               break;
         }
      }
      }
    P3=0xf7;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
      delaychar(10);
      if(temp!=0xf0)
      {
        temp=P3;
        switch(temp)
        {
          case 0xe7:
               key=12;
               break;

          case 0xd7:
               key=13;
               break;

          case 0xb7:
               key=14;
               break;

          case 0x77:
               key=15;
               break;
         }
      }
    }
        switch(key)
        {
          case 1:strcpy(num,num1);break;
          case 2:strcpy(num,num2);break;
          case 3:strcpy(num,num3);break;
          case 4:strcpy(num,num4);break;
          case 5:strcpy(num,num5);break;
          case 6:strcpy(num,num6);break;
          default:break;
        }
        if(!strcmp(now,num))
             LED=1;
        else
             LED=0;
  }
}

void transfor() interrupt 4//串口通信中断
{
     if(RI)
     {
        RI=0;
        now[n]=SBUF;
        n++;
        if(n==14)
                        n=0;       
        }
}

void main(void)
{
    TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        SCON=0x50;
        TR1=1;
        ES=1;
        EA=1;   
       
        jvzhen();

}

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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