概述
#include "STM32Lib\stm32f10x.h"
#include "hal.h"
#include "USART.h"
#include "rc500.h"
#include "CLRC632.h"
#include "stdio.h"
#define uchar unsigned char
#define uint unsigned int
//读卡类型定义
#define CARD_14443 0X01 //读14443的卡
#define CARD_15693 0X03 //读15693的卡
#define SUM_ERROR 4 //校验错误
#define SEARCH_ERROR 2 //寻卡操作错误
#define READ_ERROR 1 //读卡操作错误
#define WRITE_ERROR 1 //写卡操作错误
#define Orther_ERROR 8 //其他操作错误
//--------------------------------------------------------------------------------------------------
extern unsigned char RC530_OK; //RC500复位正常标志
unsigned char CardType =0x00; //当前读卡类型
unsigned char HaveInitedCard15693 = FALSE; //需要读的卡是否被初始化的状态暂存
unsigned char HaveInitedCard1443 = FALSE; //需要读的卡是否被初始化的状态暂存
unsigned char CommandType = 0x00; //上位机下发的指令类型
//~~~~~~~~~~~~~~~~~~~~新加的~~~~~~~~~~~~~~~~~~~~~~~~~~~~
unsigned char RxBuffer[200]; //串口数据缓存
unsigned char Uart_RevLEN=0; //串口接收数据个数
unsigned char Uart_RevFlag=1; //串口接收成功标志
unsigned char ReturnValueLen=0; //返回数据长度
unsigned char ReturnValue[200]; //返回数据存放
unsigned char WhichUSART_SearchCard=0; //串口号
unsigned char Wrong_Value=0; //错误类型
unsigned char DataLenth; //数据长度
unsigned char CardValue[16]; //存放15693卡号
unsigned char CardLenth; //卡号长度
unsigned char CardValue1443[4]; //14443卡号存放
unsigned char CardLenth1443; //14443卡号长度
unsigned char MFoutValue=0; //寄存器初始值
unsigned char TestAnaValue=0x03; //寄存器初始值
unsigned char TestDigiValue=0xF4; //寄存器初始值
unsigned char unkey[6]={0}; //密码A
unsigned char key[12]; //转换完格式以后的密码A
unsigned char KeyModel;
unsigned char BlockNum; //绝对块地址
//14443写卡数据
unsigned char WriteValue14443[3]={0x31,0x35,0x32}; //显示:152 需要串口显示的地方最大长度32
void CLRC632Process( void ) ;
int main(void)
{
ChipHalInit(); //片内硬件初始化
ChipOutHalInit(); //片外硬件初始化
Rc500Ready();
M500PcdConfigISO14443();
WhichUSART_SearchCard=3; //使用串口3发送数据
while(1)
{
Delay(240); //延时函数
CLRC632Process(); //主执行程序
}
}
void CLRC632Process( void )
{
static unsigned char i,status;
static unsigned char Wrong_Flag=0; //错误标志
static unsigned char Success_Flag=0; //成功标志
status=PcdRequest(PICC_REQALL); //寻卡
if(status!=MI_OK)
{
status=PcdRequest(PICC_REQALL);
}
if((status=PcdAnticoll(CardValue))==MI_OK) //防冲撞
{
status=PcdSelect(CardValue); //选定卡
if(!status)
{
for(i=0;i<6;i++)
{
unkey[i]=0xff;
}
status =ChangeCodeKey(unkey,key);
if(!status)
{
status = PcdAuthKey(key);
if(!status)
{
BlockNum= 1*4+1; //绝对快号,此处验证第一个扇区,绝对块号=1*4;
status=PcdAuthState(0x60,BlockNum,CardValue) ; //验证密码
if(!status)
{
status=PcdWrite(BlockNum,WriteValue14443);
status=PcdRead(BlockNum,ReturnValue);
if(!status)
{
LCM_Beep(); //蜂鸣器响
for(i=0;i<3;i++)//在串口显示
{
SendByte(ReturnValue[i]);
}
}
}
}
}
}
}
}
以上代码加其他配置文件已经上传:点击跳转
我自己的rfid课设可以在zigbee试验箱直接上刷卡运行:点击跳转
功能是:自己定义14443卡的内容我定义的是用户编号id,然后刷卡,运行java串口程序会自动搜索数据库建好的表内的id,根据id查询信息并显示出来,底层是c语言,数据库和串口显示是java语言。
最后
以上就是负责朋友为你收集整理的RFID_写卡_读卡_验证密码_串口显示(+zigbee课设资源)的全部内容,希望文章能够帮你解决RFID_写卡_读卡_验证密码_串口显示(+zigbee课设资源)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复