125KHz读取ID卡卡号

项目需要,自己设计了125khz模块,发现了一些不难但是较为耗时的点,需要注意的地方有两个:

1.脉冲宽度的区分,需要根据板载主芯片决定,根据机器周期得出定时器每加一次的时间长短,然后根据半个周期和一个周期的时间长度来确定参数,注意要囊括半个周期最短时间及最长时间,一个周期的最短时间及最长时间。参数的确定尤为重要,差一点可能导致读取数据错误,下面是普通12个机器周期51单片机使用11.0592MHz晶振时的参数设定:

   11.0592MHz
#define TIME00	50        //54us
#define TIME05	260       //282us
#define TIME10	550       //597us

2.电压影响,常用的3.3V和5V电压在读卡的时候也会有影响,导致数据错误,在使用5V电压的时候,上升沿或下降沿的坡度变化时间长,当第二次时读取时,电压还没有完全变化,所以可能导致半个周期波形读取失败,一个周期因为时间较长,不会出现错误,但是读到的是稳定的错数据,无法通过后续的奇偶校验。当使用3.3V供电时,斜坡变化比较快,第二次读取的时候,电压已经变化了,所以3.3V的半周期读取时按照读取规则可以正常读取到。

unsigned char readdata()
{
	switch(readbit())
	{
		case 1:		//一个周期
			return !bitin;
		case 2:		//半个周期
			if(readbit()!=2) return 2;	//再读一次半个周期
			return !bitin;  //3.3V使用
            //return bitin;  //5V使用
		default:
			return 2;
	}
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值