RFID签到
通过STM32F103核心板作为主控,通过连接外设rc522,iic-oled等,实现完整的管理系统。
代码功能
注册学号
注册学号采用随机生成五位数字作为学生学号进行使用,代码如下
//注册学号
void Registered_Class(void)
{
u16 Seed=0,Class=0;
Seed=Get_Adc_Average(ADC_Channel_14,3);
srand(Seed);
Class=(u16)(rand()%40000+10000);
Class_tab[Class_People]=Class;
Class_People++;
status=Number_Change(Class,Students_Number);
if(status==MI_OK)
{
Write_Student();
}
}
学号生成成功,将学生学号写进卡中。
写学号
写学号先检测卡片是否存在,然后通过写函数将学号写进卡片中。代码如下:
//将学号写进卡片
void Write_Student(void)
{
Read_Card();
status=PcdWrite(0x08,Students_Number);
if(status==MI_OK) //读卡成功
{
status=MI_ERR;
}
}
读学号
检测卡片是否存在,当卡片存在时,将利用读函数,将卡片中的内存固定读取出来,并存到缓存区当中。
//读学号
u16 Read_Class(void)
{
Read_Card();
status=PcdRead(0x08,RFID);
if(status==MI_OK)
{
status=MI_ERR;
Class_Number=RFID[0]+RFID[1]*256u+RFID[2]*65536u+RFID[3]*4294967295u+RFID[4]*28147497671065u;
}
prove_class[Prove_class]=Class_Number;
Prove_class++;
return Class_Number;
}
签到
当系统开始签到时,每个学生利用自己的卡片进行签到,通过读取相应内存中的数据,从而进行签到,把那个利用oled进行显示签到人数。代码如下:
void Roll_Class(void)
{
u8 i,j;
u16 people=0;
for(i=0;i<Class_People;i++)
{
for(j=0;j<Prove_class;j++)
{
if(Class_tab[i]==prove_class[j])
{
people++;
}
}
}
OLED_P8x16Str(0,2,"current people:",0);
Oled_Printf_U16(0,4,people,1);
}
新人发帖,请各位大神批评改正。
本人为技术菜鸟,希望通过一点一滴的总结学习笔记来成长,希望与各位大神有更多的交流。
侵删。