在这个基于RFID的考勤系统项目中,我们将向您解释如何使用RFID卡自动计算出勤率。RFID技术(射频识别和检测)通常用于学校,学院,办公室和车站,用于各种目的,以自动跟踪人员。在这里,我们将使用RFID计算授权人员的出席次数。
我们可以将整个考勤系统分为不同的部分:阅读器部分,控制部分,驾驶员部分和显示部分。下面的框图显示了每个部分的作用:
读者专区
此部分包含RFID,RFID是一种电子设备,它分为两部分-一个是RFID阅读器,另一个是RFID标签或卡。当我们将RFID标签放在RFID阅读器附近时,它会顺序读取标签数据。RFID标签在线圈中具有12位数字的字符代码。该RFID的波特率为9600 bps。RFID使用电磁体将数据从读取器传输到标签或将标签传输到读取器。
控制部分:
8051微控制器用于控制该项目的完整过程。在这里,通过使用8051,我们正在接收RFID数据并将状态或消息发送到LCD。
显示部分:
此项目中使用了16x2 LCD来显示消息。
驱动程序部分:
此部分具有一个用于打开门的电机驱动器L293D和一个带有BC547 NPN晶体管的蜂鸣器,用于指示。
加工
当一个人将其RFID标签放置到RFID阅读器上时,RFID会读取标签的数据并将其发送到8051微控制器,然后微控制器会将这些数据与定义的数据或信息进行比较。如果数据与定义的数据匹配,则微控制器使标签人员之一的出勤率增加;如果未发生匹配,则微控制器在LCD上显示无效的卡,并且蜂鸣器连续发出哔声。
上面显示了RFID低音签到系统项目的电路图。在电路中,LCD与8051微控制器以四位模式连接。LCD的RS,RW和EN引脚直接连接到端口1的引脚号P1.0,P1.1和P1.2。LCD的D4,D5,D6和D7引脚直接连接到端口1的引脚P1.4,P1.5,P1.6和P1.7。电机驱动器连接到PORT引脚号P2.4和P2.5。蜂鸣器连接到PORT2的P2.6。
程序说明
要为基于RFID的出勤系统编程,我们首先需要包含头文件并定义输入和输出引脚以及变量。
#包括
之后,我们需要创建一个延迟函数。
void delay(int itime){int i,j; 对于(i = 0; i
然后我们为LCD做一些功能并初始化LCD功能,
void lcd_init(void){lcdcmd(0x02); lcdcmd(0x28); lcdcmd(0x0e); lcdcmd(0x01); }
在这里,我们有一些在程序中使用过的功能。在此,我们在11.0592MHz的晶体频率下配置了9600bps的波特率。我们正在监视SBUF寄存器以接收数据。
无效的uart_init(){TMOD = 0x20; SCON = 0x50;TH1 = 0xfd;TR1 = 1;} char rxdata(){while(!RI); ch = SBUF; RI = 0;返回ch }
在主程序中完成此操作后,我们初始化了lcd和UART,然后读取其中任何一个标签时的RFID输出。我们将此字符串存储在数组中,然后与预定义的数组数据匹配。
lcdcmd(1); lcdstring(“放置您的卡:”); lcdcmd(0xc0); i = 0; for(i = 0; i <12; i ++)rfid = rxdata(); rfid ='\ 0'; lcdcmd(1);
如果发生匹配,则控制器将出席人数增加一。其他蜂鸣器持续运行,并且液晶显示屏显示无效的卡。
if(strncmp(rfid,“ 160066A5EC39”,12)== 0){count1 ++; lcdcmd(1); lcdstring(“出勤”); lcdcmd(0xc0); lcdstring(“ Registered”); 延迟(200); lcdcmd(1); lcdstring(“ Student1”); lcdcmd(0xc0); lcdstring(“ Attnd。No.:”); sprintf(result,“%d”,count1); lcdstring(result);
PCB布局
这是基于RFID的考勤系统的PCB布局: