




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include #include #include24C0x.h#includeLCD12864.h#define uchar unsigned char#define uint unsigned int #define buffer1ID 0x01#define buffer2ID 0x02#define queren 0x88#define tuichu 0x84#define shanchu 0x82#define User 2 void fan(); sbit B0=B0;sbit B7=B7;sbit k2=P37;sbit jidianqi=P36;/sbit Buzzer=P00; extern unsigned char times;uchar Member,sec,z=0; / =1uchar code bufferUser6= 000000; uchar dz4;uchar time4; uchar mima6;uchar mimag6;/uchar mimaID6=1,2,3,4,5,6;uchar mimaID6;uchar data K;uchar data Key; uint PageID;uchar data querenma=11;uchar sum2;int summaf,summas;uchar xdata UserPassword6=0;/密码uchar xdata DSY_BUFFER16 =0;/缓存void Red_Init(void);/检测脉冲宽度unsigned char check(void);unsigned char redchange(unsigned char rednum); void delayms(unsigned int z)unsigned int x,y;for(x=z;x0;x-)for(y=110;y0;y-);/* 名称 : Chack(uchar User_Number)* 功能 : 单一用户密码检测* 输入 : User_Number* 输出 : 密码正确与错误,错误返回0,正确返回1*/uchar Chack(uchar User_Number)uchar flag, i,temp6,Address;Address=User_Number*10;for(i=0;i6;i+)tempi=x24c02_read(Address);delayms(10);Address+;for(i=0;i6;i+)if(tempi=UserPasswordi)flag=1;else flag=0;return flag;/* 名称 : PassWord_Chack()* 功能 : 所有用户密码检测* 输入 : 无* 输出 : 密码正确与错误,错误返回0,正确返回1*/uchar PassWord_Chack()uchar i=0;while(iUser)if(Chack(i)=1)Member=i+1;return 1;i+;return 0; void delay(uint tt) uchar i; while(tt-) for(i=0;i125;i+); /* 名称 : UART_Init()* 功能 : 单片机串口初始化* 单片机:晶振11.0592MHz 波特率为9600bps* 指纹模块:波特率为9600bps,*/ void UART_Init()SCON= 0x50; /串口方式1/REN=1; 允许接收PCON=0x00; /SMOD=0TMOD= 0x21; /定时器1定时方式2TH1= 0xFD; /11.0592MHz 模块默认波特率为9600bpsTL1= 0xFD; TR1= 1; /启动定时器 EA=1; unsigned char Keycan(void) /按键扫描程序 P1.0-P1.3为行线 P1.4-P1.7为列线 unsigned char rcode, ccode; P1 = 0xF0; / 发全0行扫描码,列线输入 if(P1&0xF0) != 0xF0) / 若有键按下 delay(1);/ 延时去抖动 if(P1&0xF0) != 0xF0) rcode = 0xFE; / 逐行扫描初值 while(rcode&0x10) != 0) P1 = rcode; / 输出行扫描码 if(P1&0xF0) != 0xF0) / 本行有键按下 ccode = (P1&0xF0)|0x0F; /do; while(P1&0xF0) != 0xF0); /等待键释放 return (rcode) + (ccode); / 返回键编码 else rcode = (rcode1)|0x01; / 行扫描码左移一位 return 0; / 无键按下,返回值为0 void KeyDeal(unsigned char Key) /unsigned char n; if(Key!=0) switch(Key) case 0x11: K=1; break; case 0x21: K=2; break; case 0x41: K=3; break; case 0x81: break; case 0x12: K=4; break; case 0x22: K=5; break; case 0x42: K=6; break; case 0x82: K=34;break; case 0x14: K=7; break; case 0x24: K=8; break; case 0x44: K=9; break; case 0x84: break; case 0x18: break; case 0x28: K=0; break; case 0x48: K=11; break; case 0x88: break; default: break; /*/ void SFG_getimage() /录入指纹图像 uchar i; SBUF=0xef; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; SBUF=0X03; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; summaf=0x05; SBUF=summaf; while(TI=0); TI=0; for(i=0;i9;i+) while(RI=0); RI=0; while(RI=0); RI=0; querenma=SBUF; while(RI=0); RI=0; sum1=SBUF; while(RI=0); RI=0; sum0=SBUF; summas=(sum18; SBUF=sum1; while(TI=0) TI=0; SBUF=sum0; while(TI=0) TI=0; for(i=0;i9;i+) while(RI=0); RI=0; while(RI=0); RI=0; querenma=SBUF; while(RI=0); RI=0; sum1=SBUF; while(RI=0); RI=0; sum0=SBUF; summas=(sum1255都会使程序卡 uchar i,ID1,ID2; SBUF=0xef; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; SBUF=0X08; while(TI=0); TI=0; SBUF=0X1b; while(TI=0); TI=0; SBUF=bufferID; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; SBUF=0; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; SBUF=180; while(TI=0); TI=0; summaf=9+0x1b+bufferID+180; sum0=summaf; sum1=summaf8; SBUF=sum1; while(TI=0); TI=0; SBUF=sum0; while(TI=0); TI=0; for(i=0;i9;i+) while(RI=0); RI=0; while(RI=0); RI=0; querenma=SBUF; while(RI=0); RI=0; ID1=SBUF; while(RI=0); RI=0; ID2=SBUF; /接收到的ID号 while(RI=0); RI=0; while(RI=0); RI=0; while(RI=0); RI=0; sum1=SBUF; while(RI=0); RI=0; sum0=SBUF; summas=(sum18)+sum0; /PageID=ID1; PageID=(ID18)+ID2; void SFG_enroll() /自动注册模板返回存储ID =录图像+合并生成模板+储存模板 uchar i,ID1,ID2; SBUF=0xef; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; SBUF=0X03; while(TI=0); TI=0; SBUF=0X10; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; summaf=0x14; SBUF=summaf; /校验和 while(TI=0); TI=0; for(i=0;i9;i+) while(RI=0); RI=0; while(RI=0); RI=0; querenma=SBUF; while(RI=0); RI=0; ID1=SBUF; while(RI=0); RI=0; ID2=SBUF; while(RI=0); RI=0; sum1=SBUF; while(RI=0); RI=0; sum0=SBUF; summas=(sum18)+sum0; /PageID=ID1; PageID=(ID18; SBUF=ID2; while(TI=0); TI=0; SBUF=ID1; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; SBUF=1; while(TI=0); TI=0; summaf=0x15+ID1+ID2; sum0=summaf; sum1=summaf8; SBUF=sum1; while(TI=0); TI=0; SBUF=sum0; while(TI=0); TI=0; for(i=0;i9;i+) while(RI=0); RI=0; while(RI=0); RI=0; querenma=SBUF; while(RI=0); RI=0; sum1=SBUF; while(RI=0); RI=0; sum0=SBUF; summas=(sum18)+sum0; void SFG_identify()/自动验证指纹 录图像+生成特征+搜索 uchar i,ID1,ID2; SBUF=0xef; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0XFF; while(TI=0); TI=0; SBUF=0X01; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; SBUF=0X03; while(TI=0); TI=0; SBUF=0X11; while(TI=0); TI=0; SBUF=0X00; while(TI=0); TI=0; summaf=0x15; SBUF=summaf; /校验和 while(TI=0); TI=0; for(i=0;i9;i+) while(RI=0); RI=0; while(RI=0); RI=0; querenma=SBUF; while(RI=0); RI=0; ID1=SBUF; while(RI=0); RI=0; ID2=SBUF; while(RI=0); RI=0; while(RI=0); RI=0; /得分 while(RI=0); RI=0; sum1=SBUF; while(RI=0); RI=0; sum0=SBUF; summas=(sum18)+sum0; /PageID=ID1; PageID=(ID18)+ID2;void shuazhiwen() uchar IDs1,IDs2,IDs3; LcmClearTXT();PutStr(1,2,请按指纹); SFG_identify();while(querenma=2)SFG_identify(); if(querenma=0) LcmClearTXT();PutStr(1,2,门已打开); IDs1=PageID/100;IDs2=PageID/10%10;IDs3=PageID%10;PutStr(2,1,编号为:);WriteCommand(0x8D);/指定第三行显示位置WriteData(0x30+IDs1);WriteData(0x30+IDs2);WriteData(0x30+IDs3);jidianqi=0;delay(2500); jidianqi=1; else if(querenma=9) LcmClearTXT();PutStr(1,1,没搜索到指纹);PutStr(2,1,请重新刷指纹); else LcmClearTXT();PutStr(1,1,接收包出错);delay(2000); / while(Keycan()=0);void addfinger()uchar IDa1,IDa2,IDa3;LcmClearTXT();PutStr(1,2,请按指纹); SFG_getimage();while(querenma!=0)SFG_getimage();SFG_genchar(buffer1ID);UART_Init();SFG_fastsearch(buffer1ID);while(querenma=1)SFG_fastsearch(buffer1ID);if(querenma=0)LcmClearTXT();PutStr(1,1,该指纹已存储);PutStr(3,0,请按任意键继续); while(Keycan()=0);else if(querenma=9)LcmClearTXT();PutStr(1,1,请再次按指纹);SFG_enroll();while(querenma=2)SFG_enroll();LcmClearTXT();if(querenma=0) IDa1=PageID/100;IDa2=PageID/10%10;IDa3=PageID%10;PutStr(1,1,指纹采集成功);PutStr(2,1,编号为:);WriteCommand(0x8D); WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3); else if(querenma!=0) PutStr(1,1,指纹采集失败);PutStr(2,1,请重新操作); PutStr(3,0,请按任意键继续); while(Keycan()=0); LcmClearTXT();void deletfinger()uchar i,j=0;LcmClearTXT();PutStr(1,0,输入删去的指纹号);for(i=0;i=0)&(K=9) dzj=K; if(j=2)PageID=dz2+dz1*10+dz0*100;if(j=1)PageID=dz1+dz0*10;if(j=0)PageID=dz0;SFG_deletchar(PageID);if(querenma=0)LcmClearTXT();PutStr(1,1,删指纹号成功); elseLcmClearTXT();PutStr(1,2,删除失败); PutStr(2,0,请按任意键继续); while(Keycan()=0);LcmClearTXT(); void gaimima()uchar i,j=0,mima16,mima26;uchar k,temp;LcmClearTXT();PutStr(1,1,请输入密码);for(i=0;i=0)&(K=9) mima1j=K; if(j6) WriteCommand(0x89+j);/指定第三行显示位置WriteData(0x0f); +j; if(j=7) j=6; /#yinhuang /显示LCD12864并行显示 if(K=34)/按了删除键 if(j=0)WriteCommand(0x89);/指定第三行显示位置WriteData(0x20);else-j;WriteCommand(0x89+j); /指定第三行显示位置WriteData(0x20);LcmClearTXT();LcmClearTXT();j=0;PutStr(1,0,请再次输入密码);for(i=0;i=0)&(K=9) mima2j=K; if(j6) WriteCommand(0x89+j);/指定第三行显示位置WriteData(0x0f); +j; if(j=7) j=6; /#yinhuang /显示LCD12864并行显示 if(K=34)/按了删除键 if(j=0)WriteCommand(0x89);/指定第三行显示位置WriteData(0x20);else-j;WriteCommand(0x89+j); /指定第三行显示位置WriteData(0x20);LcmClearTXT();if(mima10=mima20)&(mima11=mima21)&(mima12=mima22)&(mima13=mima23)&(mima14=mima24)&(mima15=mima25)for(i=0;i6;i+)mimaIDi=mima1i;/for(i=0;i6;i+) /密码限制在6位以内UserPasswordi=mima1i+0x30; temp=(Member-1)*10;delayms(5);for(k=0;k6;k+)x24c02_write(temp,UserPasswordk);delayms(10);temp+; /PutStr(0,1,密码更新成功); PutStr(2,0,请按任意键继续);while(Keycan()=0);elsePutStr(0,0,两次输入的密码不); PutStr(1,0,一致,请重新操作); PutStr(2,0,请按任意键继续); while(Keycan()=0);LcmClearTXT();void guanliyuan() uchar i,j=0,x=1; uchar Right_flag; LcmClearTXT();PutStr(1,1,请输入密码); for(i=0;i=0)&(K=9) mimaj=K; if(j6) WriteCommand(0x89+j);/指定第三行显示位置 WriteData(0x0f); +j; if(j=7) j=6; /显示LCD12864并行显示 if(K=34)/按了删除键 if(j=0) WriteCommand(0x89);/指定第三行显示位置 WriteData(0x20);else -j; WriteCommand(0x89+j); /指定第三行显示位置 WriteData(0x20); LcmClearTXT(); for(i=0;i6;i+) UserPasswordi=mimai+0x30; if(j=6)Right_flag=PassWord_Chack(); if (Right_flag=1&Member=1) Right_flag=0; while(Keycan()!=tuichu) PutStr(0,0,按键1 : 增加指纹); PutStr(1,0,按键2 : 删去指纹);PutStr(2,0,按键3 : 开锁密码);PutStr(3,0,按键4 : 更新密码);KeyDeal(Keycan(); switch(K) case 1: addfinger();K=6; break; case 2: deletfinger(); break; case 3:Member=2; gaimima();K=8;break; case 4: Member=1 ;gaimima(); break; default: break; else PutStr(1,2,密码错误);PutStr(2,0,请按任意键继续); while(Keycan()=0); Key=0; LcmClearTXT();void mimakaisuo()uchar i,j=0,x=1; uchar Right_flag; LcmClearTXT();PutStr(0,0,请输入六位密码);PutStr(3,1,门锁状态:);PutStr(3,6,关); for(i=0;i=0)&(K=9) mimaj=K; if(j6) WriteCommand(0x91+j);/指定第三行显示位置 WriteData(0x0f); +j; if(j=7) j=6; /显示LCD12864并行显示 if(K=34)/按了删除键 if(j=0) WriteCommand(0x91);/指定第三行显示位置 WriteData(0x20);els
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品牌联盟活动方案
- 团委诵读活动方案
- 国庆端午活动方案
- 团队散场活动方案
- 国企公司集体活动方案
- 咖啡售卖活动方案
- 国庆装饰公司活动方案
- 喝水小班活动方案
- 品牌游戏活动方案
- 商场跨年策划活动方案
- 口腔诊所前台主管述职报告
- 2024年石家庄市市属国有企业招聘笔试真题
- 2024年广东“三支一扶”计划招募笔试真题
- 设备租赁方案(3篇)
- 公关费用标准管理制度
- 2025-2030年中国洁净室风扇过滤单元行业市场现状供需分析及投资评估规划分析研究报告
- 2025至2030中国汽车租赁行业发展分析及发展战略与市场策略报告
- 2025年烟台市中考地理试卷真题
- 安徽省合肥市名校2025届八年级英语第二学期期末统考试题含答案
- 2024年广东省广州市初中生物会考真题(含答案)
- 2025年河北省中考麒麟卷生物(一)
评论
0/150
提交评论