ic卡识别程序c语言,求ID/IC卡的原理与C语言读取程序?

第一次读取ID卡,费了不少周折 !本程序采用U2270B来读取卡号,所用单片机为新华龙的C8051F340,并采用串口1(P0.6和P0.7)的方式发送到PC机,通过串口调试助手观察所读到的数据,本程序不足之处就是所得到的校验位有些不正确,还请高手不吝赐教。

ID卡的工作原理:当读写器正常工作时,不断地向外辐射一组固定频率的电磁波,典型频率为125KHZ,当有卡靠近时,卡片内的一个LG串连谐振电路,其频率与读卡器的频率相同,这样在电磁波的激励下,LG谐振电路产生共振,从而使电容充电,在这个电容的另一端,接有一个单向导电的电子泵,将将电容内的电荷送到另一个电容内存储,当电容器充电达到2V时,电容就作为电源为卡片上的其他电路提供电压,将卡片的数据发射出去或接收读取。

/*****************************************************************************

新卡检测方法:检测上次接收数据的结束位与下次接收数据的起始位(半个周期的低电平

与一个周期的高电平),但是,此时INPORT输入脚电平已变为低电平信号。

之后再连续检测16个半周期电平翻转,到达第9个1的前半周期(高电平),

之后INPORT变为低电平,再通过定时器0来模拟同步时钟,对曼彻斯特码进行解码。

注意:卡号发送顺序:先发校验位,紧接着是最高位、次高位····连发5位数据。

如本卡的卡号是11100 00110 00000 00000 11100 10101 10100 00010 01011 01010 10010

最先接收到是第一个五位的校验位0,然后才是1110,依次类推。

下降沿为 1

上升沿为 0

整个程序的思想:每次采样完成,判断一次所采到的数据是否为1 ,若为1,继续采样,直到采完9个1,

若为0,丢掉数据,重新采样。从而实现是否有卡的判断。

***********************************************************************************/

#include 

#include 

#include 

//增加部分:由于改版,读卡输入和蜂鸣器输入的io口有所更改

//-----------------------------------------------------------------------------

// 16-bit SFR Definitions for 'F34x

sfr16 SBRL1 = 0xB4;

// Global CONSTANTS

#define SYSCLK 12000000 // SYSCLK frequency in Hz

#define BAUDRATE0 115200 // Baud rate of UART0 in bps

#define BAUDRATE1 115200 // Baud rate of UART1 in bps

#define BIT5 0x20

sbit SPK= P3^5

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值