基于51单片机的指纹考勤系统密码锁门禁原理图PCB程序设计
硬件设计
(末尾附文件)
1)开机:按下电源,电源指示灯点亮,液晶显示:“请先按键再刷指纹”,按下按键后,液晶显示:“请按指纹”,同时指纹模块绿灯亮起,可以进行指纹识别开锁功能。若指纹识别成功,继电器动作,LED指示灯亮起,开锁成功,人员可以进入,液晶显示:“指纹已找到,请进”; 若指纹识别不成功,继电器不动作,LED指示灯不亮,将不能开锁,人员不能进入,液晶显示:“没有搜索到指纹 请按任意键继续”。
2)管理员模式:按下按键进入管理员模式首先要输入6位密码,密码正确可以进入管理员模式,密码错误不能进入管理员模式,在管理员模式下可以完成录入指纹、删除指纹、应急开锁和修改密码的功能。进入录入指纹模式后,指纹模块绿灯亮起,将手指放到指纹头上,录入同一手指两次,此时液晶显示“指纹采集成功”。在删除指纹模式下,液晶显示“输入删去的指纹号”,输入后按确认键即可完成指定指纹的删除功能,同时液晶显示“删指纹号成功”。在非正常的情况下,如指纹模块不好用或者紧急情况下,可以使用紧急开锁功能。密码修改的功能是指可以修改并保存进入管理员的6位密码。
系统设计的总体框图如图1-3所示。
原理图:
PCB:
程序设计
#include"reg52.h"
#include"12864.h"
#include"eeprom.h"
#include"matrixkey.h"
#include"AT24CXX.h"
#include"finger.h"
uchar code table1[]="A:签到 B:添加 ";
uchar code table2[]="C:清空 D:上课 ";
uchar code table3[]=" *查询缺勤人员 ";
uchar code table4[]=" #查询迟到人员 ";
uchar code table5[]="请输入删去密码: ";uchar code table6[]=" 开始签到 ";
uchar code table7[]=" 请按指纹签到 ";
uchar code table8[]=" ";
uchar code table9[]="按D: 开始上课 ";
uchar code table10[]="请输入密码: ";
uchar code table11[]=" 签到成功 ";
uchar code table12[]="请按任意按键继续";
uchar code table13[]=" 编号为: ";
uchar code table14[]=" 请按手指 ";
uchar code table15[]=" 请再按一次 ";
uchar code table16[]=" 采集指纹成功 ";
uchar code table17[]="输入删去的指纹号";
uchar code table18[]="删去指纹库成功 ";
uchar code table19[]="删去指纹库失败 ";
uchar code table20[]=" 请输入新密码 ";
uchar code table21[]="请再次输入新密码";
uchar code table22[]=" 密码修改成功 ";
uchar code table23[]=" 两次密码不一样";
uchar code table24[]=" 输入密码错误 ";
uchar code table25[]=" 还有 机会 ";
uchar code table26[]=" 该指纹已存储 ";
uchar code table27[]=" 采集指纹失败 ";
uchar code table28[]="确定删去指纹库?";
uchar code table29[]="按D: 本节课结束";
uchar code table30[]="当前缺勤 人";
uchar code table31[]="当前迟到 人";
uchar code digital[15]={0x90,0x92,0x94,0x96,0x88,0x8a,0x8c,0x8e,0x98,0x9a,0x9c,0x9e};
uchar xdata table_qiandao[100];
uchar queqing=0;//缺勤人数
uchar zz;
uchar chidao=0;//迟到人数
uchar code admin[6]={1,3,1,4,2,0};//管理员的固定密码
uchar code init_code[6]={0,0,0,0,0,0};//上电第一次一般的初始化密码uchar now_code[6]={0,0,0,0,0,0};//当前存储器中存储的密码
uchar user[6]={0,0,0,0,0,0};//用户输入的密码
uchar user2[6]={0,0,0,0,0,0};//输入第二次修改的密码
sbit relay=P3^7;//开锁继电器
sbit wake=P3^6;//检测手指按压,有手指按下就是高电平
uchar jishu=0;
uchar err_user=3;//用户三次输入错误密码
uchar err_admin=3;//管理员三次输入错误密码
uchar num;//存储矩阵键盘转换的对应按键值
uchar number=0;//输入密码的个数默认0
uchar key_flag=0;//进入手动密码标志
uchar i;
uchar code_flag=0;//密码修改标志第一次输入密码时候是等于0再次输入是等于1
void init_dispay(void)//初始化界面
{PutStr(0,0,table1);PutStr(1,0,table2);PutStr(2,0,table3);PutStr(3,0,table4);
}
void admin_dispay(void)//管理员界面
{PutStr(0,0,table6); PutStr(1,0,table7);PutStr(2,0,table8); PutStr(3,0,table9);
}
void init_shuju(void)
{uchar i;for(i=0;i<100;i++){table_qiandao[i]=0x00;}
}
void que_renshu(void)
{ queqing=0;//缺勤人数
// WriteCommand(0x80+2);
// WriteData(jishu/10+0x30);
// WriteData(jishu%10+0x30);for(i=0;i<jishu;i++){if(table_qiandao[i]==0x00){ queqing++;WriteCommand(digital[queqing-1]);WriteData((i+1)/10+0x30);WriteData((i+1)%10+0x30); }}
}
void chidao_renshu(void)
{ queqing=0;//缺勤人数
// WriteCommand(0x80+2);
// WriteData(jishu/10+0x30);
// WriteData(jishu%10+0x30);for(i=0;i<jishu;i++){if(table_qiandao[i]>=2){ queqing++;WriteCommand(digital[queqing-1]);WriteData((i+1)/10+0x30);WriteData((i+1)%10+0x30); }}
}
void key(void)
{ num=keynum();if((num==12)&&(key_flag==0))//查看缺勤人数{LcmClearTXT();//清屏PutStr(0,0,table30);que_renshu();WriteCommand(0x80+6); WriteData(queqing/10+0x30);WriteData(queqing%10+0x30); while((keynum()>=16)); init_dispay(); }if((num==14)&&(key_flag==0))//查看迟到人数{LcmClearTXT();//清屏PutStr(0,0,table31);chidao_renshu();WriteCommand(0x80+6); WriteData(queqing/10+0x30);WriteData(queqing%10+0x30);while((keynum()>=16)); init_dispay(); }if((num==11)&&(key_flag==0))//如果按下C按键进{key_flag=1;//只显示“请输入密码开锁:“LcmClearTXT();//清屏PutStr(0,0,table28);PutStr(1,0,table5); }if((num==7)&&(key_flag==0))//如果按下B按键进入添加指纹{LcmClearTXT();//清屏PutStr(1,0,table14); //显示请按指纹if(regist(0)==1)//如果第一次按手指成功{PutStr(1,0,table15); //显示请再按一次Delay(10);//延时一会if(regist(1)==1)//两次采集手指成功{PutStr(1,0,table16); //采集指纹成功PutStr(2,0,table13); //指纹编号:WriteCommand(0x88+5);//指定第三行显示位置WriteData(' ');id=id+1;WriteData(id/100+0x30);WriteData(id%100/10+0x30);WriteData(id%10+0x30); SectorErase(0x2200);jishu=id%256;byte_write(0x2200, id%256);}else PutStr(1,0,table27); //采集指纹失败 }else if(regist(0)==2)//已经注册过指纹{PutStr(1,0,table26); //指纹已经存储}PutStr(3,0,table12); //请按任意键退出while(keynum()>=16); init_dispay();//管理员设置界面 key_flag=0;num=0xff;}if((num==3)&&(key_flag==0))//如果按下A按键管理员模式{key_flag=2;//进入输入管理员密码界面//只显示“请输入密码:“LcmClearTXT();//清屏PutStr(1,0,table10); }if((key_flag==1)&&(num!=0xff))//非管理员模式下输入密码{num=coding(num);//转换成可以识别的if((number<6)&&(num<10)){ user[number]=num;//用户输入的密码进行记忆WriteCommand(0x88+number); //指定第三行显示位置WriteData('*');//WriteData(num+0x30);//明码显示 number++;}if((num=='B')&&(number>0))//密码删除按键{ number--;WriteCommand(0x88+number); //指定第三行显示位置WriteData(' '); }if(number==6)//按下D键确定按键并且输入六位密码之后{ LcmClearTXT();//清屏number=0;key_flag=0;//如果管理员密码正确,进入添加指纹,删除指纹,收到开锁,修改密码界面if((user[0]==now_code[0])&&(user[1]==now_code[1])&&(user[2]==now_code[2])&&(user[3]==now_code[3])&&(user[4]==now_code[4])&&(user[5]==now_code[5])){ if(cancel(0x63)==1){PutStr(0,0,table18);//输入删去的指纹号成功SectorErase(0x2200);byte_write(0x2200, 0x00);
.
文件仅供参考:
链接:https://pan.baidu.com/s/1gVJJLnp6FxLZPikoezMXig
提取码:rrv9
.
基于51单片机的指纹考勤系统密码锁门禁原理图PCB程序设计相关推荐
- 基于51单片机的篮球赛计时计分器(仿真+源程序+原理图+PCB+论文)
资料编号:207 功能介绍(全套毕设资料齐全) 采用51单片机一种篮球赛计时计分器的设计方法,即单片机带外围扩展来驱动数码管工作的电路.电路采用单片机作为核心元件,利用两个供阴的三位一体数码管来显示两 ...
- 基于51单片机的温湿度测量电力载波通信(实物+原理图+PCB+全套资料)
资料编号:085 采用51单片机,测量温湿度,通过电力载波协议将数据通过220V供电线传到电脑显示,具体功能请看下方演示视频,全套资料齐全 85-基于51单片机温湿度测量电力载波通信系统(源码+原理图 ...
- 61、基于51单片机无线蓝牙音乐喷泉控制系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)
方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度.非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通 ...
- 基于51单片机的指纹识别锁管理门禁密码锁系统方案原理图程序设计
硬件电路的设计 (附文件) 3.1系统的功能分析及体系结构设计 3.1.1系统功能分析 本系统由STC89C52单片机电路+指纹模块传感器电路+LCD1602液晶显示电路+继电器电路+按键电路+电源电 ...
- 基于51单片机GPS定位系统设LCD12864显示(程序+原理图+PCB+论文)
资料编号:202 功能介绍: (1).定位功能 GPS通过接收卫星信号,可以准确地定出其所在的位置,位置误差小于10米.利用GPS,在12864上面显示当前位置. (2).查询时间功能 GPS还可以接 ...
- 基于51单片机超声波的停车场车位管理系统proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前车位状态 2.当超声波探头检测到距离小于500mm时,判断为当前车位有车,否则无车 3.超声波传感器型号采用HC ...
- 基于51单片机的数字音乐彩灯电子琴proteus仿真原理图PCB
0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前工作模式或曲目编号 2.支持电子琴模式和歌曲模式(内置8首歌曲) 3.按'切换'键可切换工作模式 4.电子琴模式下,按矩阵键 ...
- 基于51单片机的水箱水位监测控制系统proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.通过传感器监测水位,当水位低于水位下限时,接通加水水泵,直到水位达到水位上限,停止加水 2.水位低于水位下限时,声光报警 3.可按键手动加水, ...
- 基于51单片机及NB-IoT的消防管道压力检测原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.系统采用LCD1602实时显示管道压力等信息 2.通过四个功能按键可设置压力等阈值 3.压力传感器采用的型号是松下的D3B 4.采用DC002 ...
- T027基于51单片机的智能窗帘窗户控制系统proteus仿真原理图PCB
功能: 0.本系统采用单片机STC89C52作为系统的主控芯片 1.系统采用LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.系统具有四个功能按键,支持手动按键/定时/遥控三种模式控制窗帘 ...
最新文章
- DotNet并行计算的使用误区(二)
- uchome后台系统配置分析
- 支付宝扫一下就能体验的深度学习模型
- 2018-2019-2 20165330《网络对抗技术》Exp9 Web安全基础
- 使用Gridview绑定数据库中的图片
- Spring Session快速入门
- android chrome cast,有了它 任何安卓设备瞬间变身ChromeCast
- consul命令行查看服务_第三章 consul服务注册与服务查询
- 如何实现新浪微博功能:关注某个的发布信息,自动点赞和转发
- 苹果id是什么格式的_iTunes Converter mac(音频格式转换工具)
- SAP License:MM中的几个概念
- 化工原理物性参数_化工原理
- NASM汇编语言与计算机系统16-保护模式-全局描述符表GDT
- Hadoop巨头完成合并,成全球第二大开源软件公司!
- 【深度学习】循环神经网络(RNN)的tensorflow实现
- 【深入浅出通信原理-学习笔记】信道
- 嵌入式c学习第一步:dev cpp编译器安装
- html日期格式化标签,js日期格式化yyyymmdd
- 作为一个测试人,软件测试流程包括哪些内容,你都知道吗?
- 微软拼音输入法调整状态栏水平/垂直选项失效解决办法