|
做一個(gè)指紋密碼鎖,仿真方面老是出錯(cuò),液晶也不顯示字幕,是哪里的問題,懇請(qǐng)各位老師指出,程序如下:
屏幕截圖 2025-02-25 191123.jpg (39.58 KB, 下載次數(shù): 0)
下載附件
2025-2-26 16:52 上傳
屏幕截圖 2025-02-25 185242.jpg (626.82 KB, 下載次數(shù): 0)
下載附件
2025-2-26 16:52 上傳
#include <reg52.h>
#include <intrins.h>
#include"24C0x.h"
#include"LCD12864.h"
#define uchar unsigned char
#define uint unsigned int
#define buffer1ID 0x01
#define buffer2ID 0x02
#define queren 0x88
#define tuichu 0x18
#define shanchu 0x82
#define User 1
void fan();
sbit B0=B^0;
sbit B7=B^7;
sbit k2=P3^7;
sbit jidianqi=P3^6;
sbit BUZZ=P2^0;
//extern unsigned char times[];
uchar Member=1,sec;
uchar ERROR_TIME=0;
/*
uchar code buffer[User][6]=
{
{"000000"}
}; */
bit succeed_mm=0;
bit count_down=0;
bit alarm=0;
uchar dz[4];
uchar time[4];
uchar mima[6];
uchar mima_kai[6];
uchar mimag[6];
uchar mimaID[6]={1,2,3,4,5,6};
uchar out_time=0;
uchar Address1=20,tempx=20;
uchar Address2=20;
uchar data K;
uchar data Key;
uint PageID;
uchar data querenma=11;
uchar sum[2];
int summaf,summas;
uchar xdata UserPassword[2][7]={0};//ÃÜÂë 0ÊǹÜÀíÔ±ÃÜÂ룬1ÊÇ¿ªËøÃÜÂë
uchar xdata DSY_BUFFER[16] ={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;x>0;x--)
for(y=110;y>0;y--);
}
/********************************************************************
* Ãû³Æ : Chack(uchar User_Number)
* ¹¦ÄÜ : µ¥Ò»Óû§ÃÜÂë¼ì²â
* ÊäÈë : User_Number
* Êä³ö : ÃÜÂëÕýÈ·Óë´íÎ󣬴íÎó·µ»Ø0£¬ÕýÈ··µ»Ø1
********************************************************************/
uchar Chack(uchar User_Number)
{
uchar flag, i,temp[6],Address;
Address=User_Number*6;
for(i=0;i<6;i++)
{
temp=x24c02_read(Address);
delayms(10);
Address++;
}
for(i=0;i<6;i++)
{
if(temp==UserPassword[User_Number])
flag=1;
else
{
flag=0;
break;
}
}
// flag=1;
return flag;
}
/********************************************************************
* Ãû³Æ : PassWord_Chack()
* ¹¦ÄÜ : ËùÓÐÓû§ÃÜÂë¼ì²â
* ÊäÈë : ÎÞ
* Êä³ö : ÃÜÂëÕýÈ·Óë´íÎ󣬴íÎó·µ»Ø0£¬ÕýÈ··µ»Ø1
********************************************************************/
/*uchar PassWord_Chack()
{
uchar i=0;
while(i<User)
{
if(Chack(i)==1)
{
Member=i+1;
return 1;
}
i++;
}
return 0;
} */
/********************************************************************
* Ãû³Æ : PassWord_Chack()
* ¹¦ÄÜ : ËùÓÐÓû§ÃÜÂë¼ì²â
* ÊäÈë : ÎÞ
* Êä³ö : ÃÜÂëÕýÈ·Óë´íÎ󣬴íÎó·µ»Ø0£¬ÕýÈ··µ»Ø1
********************************************************************/
/*uchar kaiPassWord_Chack()
{
uchar i=1;
while(i<superUser)
{
if(kaiChack(i)==1)
{
// Member=i+1;
return 1;
}
i++;
}
return 0;
} */
void delay(uint tt)
{ uchar i;
while(tt--)
{
for(i=0;i<125;i++);
}
}
/********************************************************************
* Ãû³Æ : UART_Init()
* ¹¦ÄÜ : µ¥Æ¬»ú´®¿Ú³õʼ»¯
* µ¥Æ¬»ú£º¾§Õñ11.0592MHz ²¨ÌØÂÊΪ9600bps
* Ö¸ÎÆÄ£¿é£º²¨ÌØÂÊΪ9600bps£¬
********************************************************************/
void UART_Init()
{
SCON= 0x50; //´®¿Ú·½Ê½1 //REN=1; ÔÊÐí½ÓÊÕ
PCON=0x00; //SMOD=0
TMOD= 0x21; //¶¨Ê±Æ÷1¶¨Ê±·½Ê½2
TH1= 0xFD; //11.0592MHz Ä£¿éĬÈϲ¨ÌØÂÊΪ9600bps
TL1= 0xFD;
TR1= 1; //Æô¶¯¶¨Ê±Æ÷
TH0=0x4b;
TL0=0xff;
ET0=1;
TR0=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;
BUZZ=0;
delayms(20);
BUZZ=1;
//do{;}
while((P1&0xF0) != 0xF0); //µÈ´ý¼üÊÍ·Å
return ((~rcode) + (~ccode)); // ·µ»Ø¼ü±àÂë
}
else
rcode = (rcode<<1)|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: K=35; break; //Í˳ö
case 0x28: K=0; break;
case 0x48: K=11; break;
case 0x88: break;
default: break;
}
}
}
//*************************************//
void SFG_GetEcho() //ÎÕÊÖ
{
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=0X53;
while(TI==0);
TI=0;
SBUF=0X00;
while(TI==0);
TI=0;
summaf=0x57;
SBUF=summaf;
while(TI==0);
TI=0;
for(i=0;i<9;i++)
{
while(RI==0);
RI=0;}
while(RI==0);
RI=0;
querenma=SBUF;
while(RI==0);
RI=0;
sum[1]=SBUF;
while(RI==0);
RI=0;
sum[0]=SBUF;
summas=(sum[1]<<8)+sum[0];
}
//***************************************//
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;i<9;i++)
{
while(RI==0);
RI=0;}
while(RI==0);
RI=0;
querenma=SBUF;
while(RI==0);
RI=0;
sum[1]=SBUF;
while(RI==0);
RI=0;
sum[0]=SBUF;
summas=(sum[1]<<8)+sum[0];
}
void SFG_genchar(uchar bufferID) //Éú³ÉÌØÕ÷²¢´æÓÚcharbuffer1/2 µ÷ÓÃºóµ¥Æ¬»ú²¨ÌØÂʱ仯@@@
{
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=0X04;
while(TI==0);
TI=0;
SBUF=0X02;
while(TI==0);
TI=0;
SBUF=bufferID;
while(TI==0);
TI=0;
summaf=0x07+bufferID;
sum[0]=summaf;
sum[1]=summaf>>8;
SBUF=sum[1];
while(TI==0)
TI=0;
SBUF=sum[0];
while(TI==0)
TI=0;
for(i=0;i<9;i++)
{
while(RI==0);
RI=0;}
while(RI==0);
RI=0;
querenma=SBUF;
while(RI==0);
RI=0;
sum[1]=SBUF;
while(RI==0);
RI=0;
sum[0]=SBUF;
summas=(sum[1]<<8)+sum[0];
}
void SFG_fastsearch(uchar bufferID) //ËÑË÷Ö¸ÎÆ·µ»ØÖ¸ÎÆIDºÅ sum¡¢pagenum>255¶¼»áʹ³ÌÐò¿¨@@@
{
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;
sum[0]=summaf;
sum[1]=summaf>>8;
SBUF=sum[1];
while(TI==0);
TI=0;
SBUF=sum[0];
while(TI==0);
TI=0;
for(i=0;i<9;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;
sum[1]=SBUF;
while(RI==0);
RI=0;
sum[0]=SBUF;
summas=(sum[1]<<8)+sum[0];
//PageID=ID1;
PageID=(ID1<<8)+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;i<9;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;
sum[1]=SBUF;
while(RI==0);
RI=0;
sum[0]=SBUF;
summas=(sum[1]<<8)+sum[0];
//PageID=ID1;
PageID=(ID1<<8)+ID2;
}
void SFG_deletchar(uint pageID) //ɾ³ýÖ¸ÎÆ УÑéºÍÔÚ2×Ö½ÚµÄÒ³Âë´¦Ó¦·Ö¸ßµÍ×Ö½ÚÏà¼Ó
{
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=0X07;
while(TI==0);
TI=0;
SBUF=0X0c;
while(TI==0);
TI=0;
ID1=pageID;ID2=pageID>>8;
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;
sum[0]=summaf;
sum[1]=summaf>>8;
SBUF=sum[1];
while(TI==0);
TI=0;
SBUF=sum[0];
while(TI==0);
TI=0;
for(i=0;i<9;i++)
{
while(RI==0);
RI=0;}
while(RI==0);
RI=0;
querenma=SBUF;
while(RI==0);
RI=0;
sum[1]=SBUF;
while(RI==0);
RI=0;
sum[0]=SBUF;
summas=(sum[1]<<8)+sum[0];
}
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;i<9;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;
sum[1]=SBUF;
while(RI==0);
RI=0;
sum[0]=SBUF;
summas=(sum[1]<<8)+sum[0];
//PageID=ID1;
PageID=(ID1<<8)+ID2;
}
void shuazhiwen()
{
uchar IDs1,IDs2,IDs3;
LcmClearTXT();
PutStr(1,1,"Çë°´ÊÖÖ¸¿ªËø");
SFG_identify();
count_down=1;
while(querenma==2)
{
SFG_identify();
if(out_time>=10)
{
out_time=0;
count_down=0;
succeed_mm=0;
goto out_fingerprint;
}
}
if(querenma==0)
{
out_time=0;
count_down=0;
ERROR_TIME=0;
BUZZ=1;
alarm=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(5000);
jidianqi=1;
succeed_mm=0;
}
else if(querenma==9)
{
LcmClearTXT();
ERROR_TIME++;
if(ERROR_TIME>=3)
{
alarm=1;
}
PutStr(1,1,"ûËÑË÷µ½Ö¸ÎÆ");
PutStr(2,1,"ÇëÖØÐ°´ÊÖÖ¸");
out_time=0;
count_down=0;
}
else
{
LcmClearTXT();
PutStr(1,1,"½ÓÊÕ°ü³ö´í");
out_time=0;
count_down=0;
}
delay(2000);
out_fingerprint:
LcmClearTXT();
// 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,"ÊäÈëɾȥµÄÖ¸ÎÆºÅ");
PutStr(3,0," BÍ˸ñ DÈ·ÈÏ");
for(i=0;i<5;i++)dz=0;
Key=Keycan();
while(Key!=queren)
{
Key=Keycan();
KeyDeal(Key);
if(K==35) goto out2;
delay(30); //°´¼üÓж¶¶¯@@@
if(Key==0)K=10;
if((K>=0)&&(K<=9))
{
dz[j]=K;
if(j<3)
{
WriteCommand(0x88+j); //Ö¸¶¨µÚÈýÐÐÏÔʾλÖÃ
WriteData(0x30+dz[j]);
}
++j;
if(j==4)
j=3; //@@#yinhuang
} //ÏÔʾLCD12864²¢ÐÐÏÔʾ
if(K==34) //°´ÁËɾ³ý¼ü
{
if(j==0)
{
WriteCommand(0x88); //Ö¸¶¨µÚÈýÐÐÏÔʾλÖÃ
WriteData(0x20);
}
else
{
--j;
WriteCommand(0x88+j); //Ö¸¶¨µÚÈýÐÐÏÔʾλÖÃ
WriteData(0x20);
}
}
}
if(j>=2)
PageID=dz[2]+dz[1]*10+dz[0]*100;
if(j==1)
PageID=dz[1]+dz[0]*10;
if(j==0)
PageID=dz[0];
SFG_deletchar(PageID);
if(querenma==0)
{
LcmClearTXT();
PutStr(1,1,"É¾È¥Ö¸ÎÆºÅ³É¹¦£¡");
}
else
{
LcmClearTXT();
PutStr(1,2,"É¾È¥Ö¸ÎÆºÅʧ°Ü£¡");
}
PutStr(2,0," °´ÈÎÒâ¼ü¼ÌÐø");
while(Keycan()==0);
out2:
LcmClearTXT();
K=0;
}
void gaimima()
{
uchar i,j=0,mima1[6],mima2[6];
uchar k,temp;
resum_modification:
LcmClearTXT();
PutStr(1,1,"ÇëÊäÈëÐÂÃÜÂë");
PutStr(3,0," BÍ˸ñ DÈ·ÈÏ");
for(i=0;i<6;i++)mima1=0;
Key=Keycan();
while(Key!=queren)
{
Key=Keycan();
KeyDeal(Key);
if(K==35) goto out3;
delay(30);
if(Key==0)K=10;
if((K>=0)&&(K<=9))
{
mima1[j]=K;
if(j<6)
{
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,"ÇëÔÙ´ÎÊäÈëÐÂÃÜÂë");
PutStr(3,0," BÍ˸ñ DÈ·ÈÏ");
for(i=0;i<6;i++)mima2=0;
Key=Keycan();
while(Key!=queren)
{
Key=Keycan();
KeyDeal(Key);
delay(30);
if(Key==0)K=10;
if((K>=0)&&(K<=9))
{
mima2[j]=K;
if(j<6)
{
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((mima1[0]==mima2[0])&&(mima1[1]==mima2[1])&&(mima1[2]==mima2[2])&&(mima1[3]==mima2[3])&&(mima1[4]==mima2[4])&&(mima1[5]==mima2[5]))
{
for(i=0;i<6;i++)
mimaID=mima1;
/////////////////////////////////////////////////////
for(i=0;i<6;i++) //ÃÜÂëÏÞÖÆÔÚ6λÒÔÄÚ
{
UserPassword[0]=mima1;
}
temp=(Member-1)*6;
delayms(5);
for(k=0;k<6;k++)
{
x24c02_write(temp,UserPassword[0][k]);
delayms(10);
temp++;
}
//////////////////////////////////////////////////////
PutStr(0,1,"ÃÜÂëÐ޸ijɹ¦");
PutStr(3,0," °´ÈÎÒâ¼ü¼ÌÐø");
while(Keycan()==0);
}
else
{
j=0;
PutStr(0,0," ÃÜÂëÐÞ¸Äʧ°Ü ");
PutStr(1,0,"Á½´ÎÊäÈëµÄÃÜÂë²»");
PutStr(2,0,"Ò»Ö£¬ÇëÖØÐ²Ù×÷");
PutStr(3,0," °´ÈÎÒâ¼ü¼ÌÐø");
while(Keycan()==0);
goto resum_modification;
}
out3:
LcmClearTXT();
K=0;
}
void gaimima_kaisuo()
{
uchar i,j=0,mima1[6],mima2[6];
uchar k,temp;
resum_modification1:
LcmClearTXT();
PutStr(1,1,"ÇëÊäÈëÐÂÃÜÂë");
PutStr(3,0," BÍ˸ñ DÈ·ÈÏ");
for(i=0;i<6;i++)mima1=0;
Key=Keycan();
while(Key!=queren)
{
Key=Keycan();
KeyDeal(Key);
if(K==35) goto out4;
delay(30);
if(Key==0)K=10;
if((K>=0)&&(K<=9))
{
mima1[j]=K;
if(j<6)
{
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,"ÇëÔÙ´ÎÊäÈëÐÂÃÜÂë");
PutStr(3,0," BÍ˸ñ DÈ·ÈÏ");
for(i=0;i<6;i++)mima2=0;
Key=Keycan();
while(Key!=queren)
{
Key=Keycan();
KeyDeal(Key);
delay(30);
if(Key==0)K=10;
if((K>=0)&&(K<=9))
{
mima2[j]=K;
if(j<6)
{
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((mima1[0]==mima2[0])&&(mima1[1]==mima2[1])&&(mima1[2]==mima2[2])&&(mima1[3]==mima2[3])&&(mima1[4]==mima2[4])&&(mima1[5]==mima2[5]))
{
for(i=0;i<6;i++)
mimaID=mima1;
/////////////////////////////////////////////////////
for(i=0;i<6;i++) //ÃÜÂëÏÞÖÆÔÚ6λÒÔÄÚ
{
UserPassword[1]=mima1;
}
temp=(Member-1)*6;
delayms(5);
for(k=0;k<6;k++)
{
x24c02_write(temp,UserPassword[1][k]);
delayms(10);
temp++;
}
//////////////////////////////////////////////////////
PutStr(0,1,"ÃÜÂëÐ޸ijɹ¦");
PutStr(3,0," °´ÈÎÒâ¼ü¼ÌÐø");
while(Keycan()==0);
}
else
{
j=0;
PutStr(0,0," ÃÜÂëÐÞ¸Äʧ°Ü ");
PutStr(1,0,"Á½´ÎÊäÈëµÄÃÜÂë²»");
PutStr(2,0,"Ò»Ö£¬ÇëÖØÐ²Ù×÷");
PutStr(3,0," °´ÈÎÒâ¼ü¼ÌÐø");
while(Keycan()==0);
goto resum_modification1;
}
out4:
LcmClearTXT();
K=0;
}
void zhu()
{
LcmClearTXT();
PutStr(1,2,"ÃÅÒÑ´ò¿ª");
jidianqi=0;
delay(5000);
jidianqi=1;
// PutStr(3,0," °´ÈÎÒâ¼ü¼ÌÐø");
// while(Keycan()==0);
K=35;
}
void xiugaimima()
{
LcmClearTXT();
while(Keycan()!=tuichu)
{
PutStr(0,0,"°´1:Ð޸ĿªËøÃÜÂë");
PutStr(1,0,"°´2:Ð޸ĹÜÀíÃÜÂë");
KeyDeal(Keycan());
if(K==35) goto out5;
switch(K)
{
case 1: Member=2;gaimima_kaisuo(); break;
case 2: Member=1;gaimima(); break;
default: break;
}
}
out5:
LcmClearTXT();
K=0;
}
void guanliyuan()
{ uchar i,j=0,x=1;
uchar Right_flag;
resum_guanliyuan:
LcmClearTXT();
PutStr(1,0,"ÇëÊäÈë¹ÜÀíÔ±ÃÜÂë");
PutStr(3,0," BÍ˸ñ DÈ·ÈÏ");
for(i=0;i<6;i++)mima=0;
Key=Keycan();
while(Key!=queren)
{
Key=Keycan();
if(Key==tuichu) goto out1;
KeyDeal(Key);
delay(30);
if(Key==0)K=10;
if((K>=0)&&(K<=9))
{
mima[j]=K;
if(j<6)
{
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;i<6;i++)
{
UserPassword[0]=mima;
}
if(j==6){Right_flag=Chack(0); }
if (Right_flag==1)
{
Right_flag=0;
ERROR_TIME=0;
alarm=0;
BUZZ=1;
while(Keycan()!=tuichu)
{
PutStr(0,0,"°´1: Ôö¼ÓÖ¸ÎÆ");
PutStr(1,0,"°´2: É¾È¥Ö¸ÎÆ");
PutStr(2,0,"°´3: ÐÞ¸ÄÃÜÂë");
PutStr(3,0,"°´4: ÊÖ¶¯¿ªËø");
KeyDeal(Keycan());
if(K==35) goto out1;
switch(K)
{
case 1: addfinger();K=6; break;
case 2: deletfinger(); break;
case 3: xiugaimima(); break;
case 4: zhu(); break;
default: break;
}
}
}
else
{
j=0;
ERROR_TIME++;
if(ERROR_TIME>=3)
{
alarm=1;
}
PutStr(1,2,"ÃÜÂë´íÎó");
PutStr(2,0," ÇëÖØÐ²Ù×÷£¡");
PutStr(3,0," °´ÈÎÒâ¼ü¼ÌÐø");
while(Keycan()==0);
goto resum_guanliyuan;
}
Key=0;
out1:
LcmClearTXT();
}
void kaisuomm()
{ uchar i,j=0,x=1;
uchar Right_flag;
resume: PutStr(1,0,"ÇëÊäÈë¿ªËøÃÜÂë ");
PutStr(3,0," BÍ˸ñ DÈ·ÈÏ");
for(i=0;i<6;i++)mima_kai=0;
Key=Keycan();
while(Key!=queren)
{
Key=Keycan();
if(Key==tuichu) goto out;
KeyDeal(Key);
delay(30);
if(Key==0)K=10;
if((K>=0)&&(K<=9))
{
mima_kai[j]=K;
if(j<6)
{
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;i<6;i++)
{
UserPassword[1]=mima_kai;
}
if(j==6){Right_flag=Chack(1); }
if (Right_flag==1)
{
Right_flag=0;
succeed_mm=1;
ERROR_TIME=0;
BUZZ=1;
alarm=0;
// while(Keycan()!=tuichu)
{
PutStr(1,0," ÇëË¢ÊÖÖ¸¿ªËø");
PutStr(3,0," ");
}
}
else
{
j=0;
ERROR_TIME++;
if(ERROR_TIME>=3)
{
alarm=1;
}
// PutStr(1,0," ");
PutStr(1,0," ÃÜÂë´íÎó ");
PutStr(2,0," ÇëÖØÐÂÊäÈ룡");
PutStr(3,0," °´ÈÎÒâ¼ü¼ÌÐø ");
while(Keycan()==0);
LcmClearTXT();
goto resume;
}
Key=0;
out:
LcmClearTXT();
}
void fan()
{
if(succeed_mm==0)
{
PutStr(0,2,"»¶ÓʹÓÃ");
PutStr(1,1,"Ö¸ÎÆÊ¶±ðϵͳ");
PutStr(2,0," ");
PutStr(3,0," A¹ÜÀí C¿ªËø");
}
Key=Keycan();
if(Key==0x84)
{
LcmClearTXT();
kaisuomm();
LcmClearTXT();
// K=0;
}
if(/*k2==1&&*/succeed_mm==1) //Ö¸ÎÆË¢»ú
{
LcmClearTXT();
shuazhiwen();
LcmClearTXT();
}
if(Key==0x81) //¹ÜÀíÔ±²Ù×÷
{
LcmClearTXT();
guanliyuan();
LcmClearTXT();
}
}
void main()
{
//PSB=0;
UART_Init(); //´®¿Ú³õʼ»¯
x24c02_init(); //24C02³õʼ»¯
LcmInit(); //LCD12864³õʼ»¯
LcmClearTXT(); //LCD12864ÇåÆÁ
while(1)
{
fan();
delay(100);
}
}
void T0_time() interrupt 1
{
uchar jishi;
TH0=0x4b;
TL0=0xff;
jishi++;
if(jishi%2==0&&alarm==1)
{
BUZZ=!BUZZ;
}
if(jishi>=20)
{
jishi=0;
if(count_down==1)
out_time++;
}
}
|
|