之前上傳的所有門禁制作程序絕大部分為本人原創(只有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); }