本人用的C51。之前一直没想明白RC522通以下函数 识别到的M1卡ID是什么格式,字符还是16进制。最后在github上参考了一个大佬的代码(用C51整得门禁系统,链接在文末),然后就成功了。
char PcdRequest(unsigned char req_code,unsigned char *pTagType)
{
char status;
unsigned int unLen;
unsigned char ucComMF522Buf[18];
ClearBitMask(Status2Reg,0x08);//寄存器清零,状态寄存器2置为0x08,3号位的“1”卡的所有数据通信都被加密,置0表示解除加密状态。
WriteRawRC(BitFramingReg,0x07);//00000111表示不传输最后一个字节的所有位
SetBitMask(TxControlReg,0x03);
ucComMF522Buf[0] = req_code;//获取需要寻找卡的类型,0x26为休眠卡,0x52为所有卡
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);
if ((status == MI_OK) && (unLen == 0x10))//如果成功通信返回pk,否则返回错误。
{
*pTagType = ucComMF522Buf[0];
*(pTagType+1) = ucComMF522Buf[1];
}
else
{ status = MI_ERR; }
return status;
}
大佬用的函数给改装了一下:
void lcd1602_ShowCardId(unsigned char x, unsigned char y, unsigned char *CradId)
{

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



