一.硬件方案
“考勤管理系统”是以RFID射频卡为信息识别载体的适用于企业单位或学校的考勤管理系统。
本设计由51单片机电路+RFID模块电路+1602液晶显示电路+按键电路+蜂鸣器报警电路+电源电路组成。:
二.设计功能
(1)系统有3张卡,分别代表依次是张三、李四、王二。
(2)任何一个人刷卡成功能,1602液晶响应显示,未刷卡显示空“ ”位置上空的,刷卡成功后相应位置显示有人。
(3)液晶第二行显示刷卡人数,即出勤总人数。
(4)按下按键表示上课,如果签到人数和总人数不符合,蜂鸣器报警处理。
全部资料如下:
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)PCB图如下:
四.软件设计
(1)程序流程图
(2)主程序源码
void main (void)
{
unsigned char disPlace=0; //显示位置
Init_Timer0(); //定时器0初始化
UART_Init(); //串口初始化
buzzer = 0; //报警 开
LCD_Init(); //初始化液晶
DelayMs(100); //延时有助于稳定
LCD_Clear();
buzzer = 0; //报警 关
PcdReset();//复位RC522
PcdAntennaOn();//开启天线发射
sprintf(dis0,"ZS:%c LS:%c WE:%c ",zsFlag,lsFlag,weFlag);//打印数据
LCD_Write_String(0,0,dis0);//显示第二行
while (1) //主循环
{
if(PcdRequest(0x52,Temp)==MI_OK) //检测到卡号
{
if(PcdAnticoll(UID)==MI_OK) //读取卡号成功
{
uartSendByte(0x00); //串口发送卡号
uartSendStr(UID,4);
uartSendByte(0x00);
if((UID[0]==zsID[0])&&(UID[1]==zsID[1]))//张三 到
{
if(zsFlag != 0xff) //第一次刷到该卡
{
zsFlag =0xff; //显示 到
time_20ms = 8;buzzer = 0; //蜂鸣器短暂鸣叫
}
}
else if((UID[0]==lsID[0])&&(UID[1]==lsID[1]))//李四 到
{
if(lsFlag != 0xff) //第一次刷到该卡
{
lsFlag =0xff; //显示 到
time_20ms = 8;buzzer = 0; //蜂鸣器短暂鸣叫
}
}
else if((UID[0]==weID[0])&&(UID[1]==weID[1]))//李四 到
{
if(weFlag != 0xff) //第一次刷到该卡
{
weFlag =0xff; //显示 到
time_20ms = 8;buzzer = 0; //蜂鸣器短暂鸣叫
}
}
}
}
if(disFlag == 1)
{
sprintf(dis0,"ZS:%c LS:%c WE:%c ",zsFlag,lsFlag,weFlag);//打印数据
LCD_Write_String(0,0,dis0);//显示第二行
manNum=0; //清空总人数
if(zsFlag==0xff) //张三到 +1
{manNum=manNum+1;}
if(lsFlag==0xff)
{manNum=manNum+1;} //李四到 +1
if(weFlag==0xff)
{manNum=manNum+1;} //王二到 +1
sprintf(dis1,"ZongRen:%d ",(int)manNum);//打印数据
LCD_Write_String(0,1,dis1);//显示第二行
disFlag =0;
}
if(key == 0) //按键按下
{
if(manNum != 3) //人数不够
{
buzFlag = 1; //蜂鸣器报警标志
}
}
}
}
全套资料下载地址: