分立元件读卡模块读取4100卡成功,求酷!,但不能在改进下读取T5557,求助!谢谢!
使用C51,读卡函数读取4100没问题,就是125K输出没问题,曼彻斯特解码没问题!而读写T5557又如何改进呢?以下是本人修改接收T5557的程序,请高手多给意见!谢谢!void gap(uint titemp)
{
WAKE_CLKO &= 0xf0;
TR0=0;
power=0;
fctick=0;
ET1 = 1;
while(fctick<titemp);
ET1 = 0;
power=1;
TR0=1;
WAKE_CLKO |= 0x01;
}
void fcdelay(uinttick)
{
fctick=0;
ET1 = 1;
while(fctick<tick);
ET1 = 0;
}
void WriCode(uchar SendVal,uchar len)
{
uchar i;
for(i=0; i<len; i++)
{
if((SendVal<<i)&0x80)
{
fcdelay(bit1); //发送数据“1”
}
else
{
fcdelay(bit0); //发送数据“0”
}
gap(Tgap);
}
}
void resetCmd(void) // 00 reset
{
gap(Tstar); //开始间隙 GAPS:50个场时钟
fcdelay(bit0); //发送数据“0”
gap(Tgap);
fcdelay(bit0); //发送数据“0”
gap(Tgap);
}
void stopCmd(void) // 11 stop
{
gap(Tstar); //开始间隙 GAPS:50个场时钟
fcdelay(bit1); //发送数据“1”
gap(Tgap);
fcdelay(bit1); //发送数据“1”
gap(Tgap);
}
//操作码2+锁定位1+数据位32+地址位3=38
void Read_cmd(uchar opcode,uchar addr)
{
gap(Tstar); //开始间隙 GAPS:50个场时钟
WriCode(opcode,2);
WriCode(0,1);
// WriCode(data1,8);
// WriCode(data2,8);
// WriCode(data3,8);
// WriCode(data4,8);
WriCode((addr<<5),3);
}
uchar jtemp=0;
void Read_Card(void)//读卡
{
uint i=0;
uint bits=0;
// uchar temp=0;
for (i=0;i<33;i++)
{
decode=0;
}
data1=0;data2=0;data3=0;data4=0;
lastbit=0;
checkin=0;
half=0;
i=0;
if(page==0xc0)
{
if(addrtick>2)
{
addrtick=0;
page=0x80;
}
}
else
{
if(addrtick>7)
{
addrtick=0;
page=0xc0;
}
}
Read_cmd(page,addrtick); //写时序
addrtick++;
for (bits=0;bits<60000;bits++) //读取曼彻斯特_码
{
ET1=1;
fctick=0;
while((!Manchester_IN)==lastbit)//
{
if(fctick>=TIME_OF)
{
break;//超时退出
}
}
tcomp=fctick;
ET1=0;
TL1 = 0xB8;//9600;
TH1 = 0xB8;//9600;
if(tcomp>15)
{
if(checkin)
{
if((tcomp>15)&&(tcomp<35))
{
if (half==1)
{
half=0;
decode=lastbit;
i++;
}
else
half=1;
}
if((tcomp>40)&&(tcomp<60))
{
if (half==1)
{
if (lastbit==0)
{
decode=1;
}
else
{
decode=0;
}
}
else
{
i--;
}
i++;
half=1;
}
if(i>=32)
{
i=0;
databuf=((decode<<7)|(decode<<6)|(decode<<5)|(decode<<4)|(decode<<3)|(decode<<2)|(decode<<1)|(decode));
databuf=((decode<<7)|(decode<<6)|(decode<<5)|(decode<<4)|(decode<<3)|(decode<<2)|(decode<<1)|(decode));
databuf=((decode<<7)|(decode<<6)|(decode<<5)|(decode<<4)|(decode<<3)|(decode<<2)|(decode<<1)|(decode));
databuf=((decode<<7)|(decode<<6)|(decode<<5)|(decode<<4)|(decode<<3)|(decode<<2)|(decode<<1)|(decode));
sendChar(databuf);
sendChar(databuf);
sendChar(databuf);
sendChar(databuf);
jtemp++;
if(jtemp>10){jtemp=0;return;}
}
}
else
{
if((tcomp>65)&&(tcomp<90))
{
if (lastbit==1)
{
checkin=1;
i=0;
}
}
}
}
lastbit=!lastbit;
}
} http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_719838MOEBRC.jpg
分立元件结构 (原文件名:ourdev_705529MZL97C.jpg) 分立元件不知道怎么弄
用U2270B折腾T5557倒是有见过,坛子里面有人放出过资料,请自行搜索 http://cache.amobbs.com/bbs_upload782111/files_53/ourdev_724250QJMD2N.jpg
(原文件名:T5577读卡电路.jpg)
这是我在项目中用的分立元件做的.用的单片机是AVR的ATmega88PA.读卡距离15cm.有卡片入场自动识别功能. 楼上的主能否说说你这电路是怎么弄的,需要AD来检测? 那个AD应该是检测是否有卡接近的。 ADC6是检测峰值电压变化的,有卡进场峰值变小,D3检波后,经两级低通滤波,两级放大后输出到M88的输入捕捉引脚,检测电平变化,用于解码。
这个读卡距离能达到15CM吗? to,4楼,你没有把Mega88PA用到极致啊,内部的比较器要是用上的话,电路可以更简洁 近距离的电路五花八门 ,不都原理都一样 学习当中{:smile:} mark 一下!可能用到 mark一下! 电路无须改变,解码程序修改即可.
具体怎么改,看看T5557的波形,再参考T5557的数据手册 wishu520 发表于 2012-2-18 11:32 static/image/common/back.gif
分立元件结构 (原文件名:ourdev_705529MZL97C.jpg)
楼主,我是个RFID新人,想学习用分立元件做读卡器,能不能把你的原理图发我学习学习,谢谢。ontheway.lj@qq.com 没改过密码的就行 学习学习 学习学习 学习了, boss2013 发表于 2013-9-29 17:42
电路无须改变,解码程序修改即可.
具体怎么改,看看T5557的波形,再参考T5557的数据手册 ...
我用 em4095 读 Page1,发现有时候读的数据不一样,不知道是为什么 时序对吗?丢码
页:
[1]