读卡

while(1)
{
//        Debug("waiting for card .....");
    if(CHK_TIMEOUT(-1, ulTimerCount) == 0)
    {
      clear_below(2);
      disp_msg3("读卡超时");
      beeper_wait(500, 3);
      return -1;
    }


	 EvtType = read_event();
    
    if(((GetCardMode & SWIPE_ONLY) - 0x30) && (EvtType & EVT_MAG))
    {
      Debug("get mag_card.......");
      
      if(read_card())
        return(MAGCARD);
    }
    else if(EvtType & EVT_KBD)
    {
      Debug("get key press.......");
      return(KBCARD);
    }
    
    if(((GetCardMode & IC_ONLY) - 0x30) && Is_CustIcCard())
    {
      return (ICCARD);
    }
    
   
  }


2.如果只是等待刷卡的话可以用

 char  Crd1Bufl[80]; /*1磁信息(ASCII)*/
  char  Crd2Bufl[40];   /*二次信息(ASCII)*/
  char  Crd3Bufl[108];  /*三磁信息(ASCII)*/
  
  memset(Crd1Bufl, 0, 80);
  memset(Crd2Bufl, 0, 40);
  memset(Crd3Bufl, 0, 108);
  



  MmiUtil_ClearLines(0, 0);
  memset(buf, 0, sizeof(buf));
  
  MmiUtil_UserClr(LINE2);
  
  /* 刷信用卡或手输信用卡卡号 第一遍 */
  MmiUtil_DisplayLine((char*)"请刷测试卡->", LINE2);
  MmiUtil_flushcard();
  MmiUtil_GetTrack(Crd1Bufl, Crd2Bufl, Crd3Bufl, buf, 0);
  


RFID读卡模块原理图是ORCAD的,有PDF预览,PCB是PADS的,还有BOM烧写说明,标注图等。其中UART输出是量产过的 韦根输出的只是看示波器波形是对的,没有实际应用;里面有源代码,编写前提是是CODE小于1K RAM小于64字节。 原理图原理就是CD4060产生125KHZ的方波,经过推挽电路进行功率放大,高频电流进入LC串联谐振电路,345uH和4.7NF的谐振频率正好是125KHZ,这时电容两端电压会到十几伏,如果用CBB电容,会到二十多伏,这时读卡距离会到10CM以上。当有卡接近线圈时,线圈两端会有曼彻斯特编码的调幅波。通过二极管以及电容的检波和滤波,产生的小信号送入LM358进行放大和整形,变成单片机可以读取的曼彻斯特编码信号。 关于硬件电路设计上,CD4060在3.3V时 4M以下的晶振都可以起振,但2M的晶振体积很大,所以用了4M。实验发现ATTINY13的频率随着工作电压的变化会有很大的变化,所以不能用RC校准了,正好CD4060会输出4M,所以用来当系统时钟,保证时序的精确性。这样模块在3.3V 5V都能工作。 ATTINY13接不了无缘晶振 只能接有源的~ 它只有一个CLKIN脚~有源晶振价格就贵了。 另外ATTINY13只有5个IO口 1个用于中断 1个用于UART输出 1个用于CLKIN 1个用于上电波特率配置 1个用于曼彻斯特编码输入 正好用完了 RFID读卡模块 模块正反面 串口收到5个字节 前4个字节就是卡号 程序中,根据曼彻斯特原理,找到长电平和短电平,根据跳变沿分析出0数据还是1数据。然后寻找消息头,后面的数据进行 行 列奇偶校验,从而分析出卡号。 程序上电时,通过ADC引脚读取外部电阻的分压配置,从而初始化出4中波特率。然后进行读卡操作。实际应用中,要保证读卡的稳定,当卡靠近线圈时,要只发一次数据。要很好的去抖。代码不能超过1K。现在代码正好1024个字节。关于奇偶校验算法,异或和要比对2取余简洁,但我测试时发现异或和代码长度大于对2取余,所以用了对2取余。 RFID读卡模块原理图+PCB+代码+调试至附件下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值