一.硬件方案
“考勤管理系统”是以RFID射频卡为信息识别载体的适用于企业单位或学校的考勤管理系统。整体电路由51单片机电路最小系统,RFID模块电路,1602液晶显示电路,按键电路,蜂鸣器报警电路+电源电路组成。原理图如下:
二.设计功能
- 系统有3张卡,分别代表依次是张三、李四、王二。
- 任何一个人刷卡成功能,1602液晶响应显示,未刷卡显示空“ ”位置上空的,刷卡成功后相应位置显示有人。液晶第二行显示刷卡人数,即出勤总人数。
- 按下按键表示上课,如果签到人数和总人数不符合,蜂鸣器报警处理。
三.软件设计
主程序源码
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; //蜂鸣器报警标志
}
}
}
}
资料链接:https://pan.baidu.com/s/1Pf3SxyMqWG799btx7hUUbw?pwd=4sb9
提取码:4sb9