之前上传的所有门禁制作程序绝大部分为本人原创(只有I2C程序为网上收集本人更改),所有看到的人可以用来用作个人讨论,学习和研究。禁止完全使用或修改使用在以盈利为目的的商业用途。如有违反,本人保留一切权利。解释权归本人所有。
昨天晚上终于完成了按键操作,由于太晚没上传,大部分功能已经完成,一个简单(功能相对于专业门禁来说简单,制作对我来说相当复杂,但也是体现我的单片机和电子技术水平又有提高)的门禁可以使用了,目前的功能有:读卡开门,密码开门,加卡,删卡,更改密码,系统初始化。后期要加上:远程控制开门,加卡,删卡,监控等。下面是程序:
/*//////////////////////////////////// 函数原型:void psw(void) 函数说明:密码写入EEPROM中 版本:V1.0.0 程序员:LIY12586 ////////////////////////////////////*/ void psw(void) { uchar a=0,b=2,c,d,x=0; timer=0; while(1) { c=key(); if(c==12) { sound(1); break; } if(ex==1) { sound(1); ex=0; break; } if(c!=0) { if(a<6) { keybuff[a]=c; a++; if(a==6)sound(2); } else if(a>6,a<13) { if(c!=keybuff[x]) { sound(20); x=0; a=0; break; } a++; x++; if(a==12) { a=0; x=0; b=2; for(d=0;d<6;d++) { wt24c(b,keybuff[d]); ys100us(1000); b++; } SEND(&keybuff[0]); break; } } } } } /*//////////////////////////////////// 函数原型:bit keyscan(void) 函数说明:键盘操作扫描 版本:V1.0.0 程序员:LIY12586 ////////////////////////////////////*/ bit keyscan(void) { uchar a=1,c,d; scan=key(); if(scan!=0) { if(scan!=11) { d=scan; timer=0; keybuff[0]=scan; scan=0; while(1) { if(d==12) { sound(1); break; } c=key(); if(c==12) { sound(1); break; } else if(ex==1) { sound(1); ex=0; break; } else if(c!=0) { keybuff[a]=c; a++; if(a==6) { a=0; SEND(&keybuff[0]); return 1; break; } } } } } return 0; } /*//////////////////////////////////// 函数原型:void password(void) 函数说明:确认密码 版本:V1.0.0 程序员:LIY12586 ////////////////////////////////////*/ bit password(void) { uchar a,b; if(keyscan()) { b=2; for(a=0;a<6;a++) { if(keybuff[a]!=rd24c(b)) { break; } b++; if(b==8)return 1; } if(b!=8) { sound(5); // LED=0; return 0; } } } /*//////////////////////////////////// 函数原型:void systeminit(void) 函数说明:系统初始化 版本:V1.0.0 程序员:LIY12586 ////////////////////////////////////*/ void systeminit(void) { uchar a; wt24c(0,0x02); ys100us(1000); wt24c(1,0xab); ys100us(1000); wt24c(2,0x01); ys100us(1000); wt24c(3,0x02); ys100us(1000); wt24c(4,0x03); ys100us(1000); wt24c(5,0x04); ys100us(1000); wt24c(6,0x05); ys100us(1000); wt24c(7,0x06); ys100us(1000); for(a=8;a<128;a++) { if(rd24c(a)!=0xff) { //ysms(100) wt24c(a,0xff); ys100us(1000); } } sound(5); }