硬件设计

(末尾附文件)

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程序设计相关推荐

  1. 基于51单片机的篮球赛计时计分器(仿真+源程序+原理图+PCB+论文)

    资料编号:207 功能介绍(全套毕设资料齐全) 采用51单片机一种篮球赛计时计分器的设计方法,即单片机带外围扩展来驱动数码管工作的电路.电路采用单片机作为核心元件,利用两个供阴的三位一体数码管来显示两 ...

  2. 基于51单片机的温湿度测量电力载波通信(实物+原理图+PCB+全套资料)

    资料编号:085 采用51单片机,测量温湿度,通过电力载波协议将数据通过220V供电线传到电脑显示,具体功能请看下方演示视频,全套资料齐全 85-基于51单片机温湿度测量电力载波通信系统(源码+原理图 ...

  3. 61、基于51单片机无线蓝牙音乐喷泉控制系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

    方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度.非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通 ...

  4. 基于51单片机的指纹识别锁管理门禁密码锁系统方案原理图程序设计

    硬件电路的设计 (附文件) 3.1系统的功能分析及体系结构设计 3.1.1系统功能分析 本系统由STC89C52单片机电路+指纹模块传感器电路+LCD1602液晶显示电路+继电器电路+按键电路+电源电 ...

  5. 基于51单片机GPS定位系统设LCD12864显示(程序+原理图+PCB+论文)

    资料编号:202 功能介绍: (1).定位功能 GPS通过接收卫星信号,可以准确地定出其所在的位置,位置误差小于10米.利用GPS,在12864上面显示当前位置. (2).查询时间功能 GPS还可以接 ...

  6. 基于51单片机超声波的停车场车位管理系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前车位状态 2.当超声波探头检测到距离小于500mm时,判断为当前车位有车,否则无车 3.超声波传感器型号采用HC ...

  7. 基于51单片机的数字音乐彩灯电子琴proteus仿真原理图PCB

    0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前工作模式或曲目编号 2.支持电子琴模式和歌曲模式(内置8首歌曲) 3.按'切换'键可切换工作模式 4.电子琴模式下,按矩阵键 ...

  8. 基于51单片机的水箱水位监测控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.通过传感器监测水位,当水位低于水位下限时,接通加水水泵,直到水位达到水位上限,停止加水 2.水位低于水位下限时,声光报警 3.可按键手动加水, ...

  9. 基于51单片机及NB-IoT的消防管道压力检测原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统采用LCD1602实时显示管道压力等信息 2.通过四个功能按键可设置压力等阈值 3.压力传感器采用的型号是松下的D3B 4.采用DC002 ...

  10. T027基于51单片机的智能窗帘窗户控制系统proteus仿真原理图PCB

    功能: 0.本系统采用单片机STC89C52作为系统的主控芯片 1.系统采用LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.系统具有四个功能按键,支持手动按键/定时/遥控三种模式控制窗帘 ...

最新文章

  1. DotNet并行计算的使用误区(二)
  2. uchome后台系统配置分析
  3. 支付宝扫一下就能体验的深度学习模型
  4. 2018-2019-2 20165330《网络对抗技术》Exp9 Web安全基础
  5. 使用Gridview绑定数据库中的图片
  6. Spring Session快速入门
  7. android chrome cast,有了它 任何安卓设备瞬间变身ChromeCast
  8. consul命令行查看服务_第三章 consul服务注册与服务查询
  9. 如何实现新浪微博功能:关注某个的发布信息,自动点赞和转发
  10. 苹果id是什么格式的_iTunes Converter mac(音频格式转换工具)
  11. SAP License:MM中的几个概念
  12. 化工原理物性参数_化工原理
  13. NASM汇编语言与计算机系统16-保护模式-全局描述符表GDT
  14. Hadoop巨头完成合并,成全球第二大开源软件公司!
  15. 【深度学习】循环神经网络(RNN)的tensorflow实现
  16. 【深入浅出通信原理-学习笔记】信道
  17. 嵌入式c学习第一步:dev cpp编译器安装
  18. html日期格式化标签,js日期格式化yyyymmdd
  19. 作为一个测试人,软件测试流程包括哪些内容,你都知道吗?
  20. 微软拼音输入法调整状态栏水平/垂直选项失效解决办法

热门文章

  1. 2005年九大受宠技术:TD-SCDMA
  2. 单AP对多终端无线上行带宽下降问题
  3. [运动规划算法]Minimum Snap轨迹规划
  4. 2011移动互联网企业评优
  5. (莫队算法)CodeForces - 617E XOR and Favorite Number
  6. 【支付】第三方支付收单机构
  7. AXD 查看register笔记
  8. php微博采集,微博采集方法
  9. x战娘2服务器维护,x战娘2变态版攻略
  10. UOJ220 [NOI2016] 网格 【割顶】【并查集】