楼主给看下程序怎么存不住密码呢,一复位存储的密码就初始化了!重点看把输入的密码写入数组,把数组写入at24c02这两个程序,还有主程序开头两句
//函数名:显示函数
//功能:显示再次输入新密码的画面
//******************************************
void enter_again(void){uchar j;initinal();
write_1602com(0x80);
for(j=0;j<12;j++){write_1602dat(table7[j]);delay(10);}
write_1602com(0xc0+0x0a);}
//********************************************
//函数名:显示函数
//功能:显示两次输入的密码不一样后的画面
//********************************************
void enter_error(void){uchar j;
write_1602com(0x0c); //显示功能开,无光标
write_1602com(0x80);//显示位置第一行第一列
write_1602com(0x01);
for(j=0;j<12;j++){write_1602dat(table8[j]);delay(10);}}
//******************************************
//函数名:显示函数
//功能:显示更改成功之后的画面
//******************************************
void modify_success(void){ucharj;write_1602com(0x0c);
write_1602com(0x80);write_1602com(0x01);
for(j=0;j<15;j++){write_1602dat(table9[j]);delay(10);}}
//******************************************
//函数名:显示函数
//功能:显示欢迎画面
//******************************************
void welcome(void){
ucharj;
write_1602com(0x0c); //显示功能开,无光标
write_1602com(0x80);//显示位置第一行第4列
write_1602com(0x01);
write_1602com(0x80);
for(j=0;j<13;j++){write_1602dat(table10[j]);delay(10);}}
//**************************************************
//函数名:键盘识别函数
//功能:通过扫描对键盘进行识别
//**************************************************
uchar key_num(){uint temp,b;
while(1){P1=0xfe; //开始扫描第一行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;
if(temp!=0xf0){
while(temp!=0xf0){temp=P1;temp=temp&0xf0;}
switch(b){case0xee: return '4';break;
case0xde: return '3';break;
case0xbe: return '2';break;
case0x7e: return '1';break;}}}
P1=0xfd; //扫描第二行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;
if(temp!=0xf0){
while(temp!=0xf0){temp=P1;temp=temp&0xf0;}
switch(b){case0xed: return '8';break;
case0xdd: return '7';break;
case0xbd: return '6';break;
case0x7d: return '5';break;}}}
P1=0xfb; //扫描第三行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;
if(temp!=0xf0){
while(temp!=0xf0){temp=P1;temp=temp&0xf0;}
switch(b){case 0xeb: return 'b';break;
case0xdb: return 'a';break;
case0xbb: return '0';break;
case0x7b: return '9';break;}}}}}
/****************************************
只扫描第四行,禁止数字键输入
****************************************/
uchar key_gn(){uint temp,b;
while(1){P1=0xf7; //扫描第四行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;
if(temp!=0xf0){
while(temp!=0xf0){temp=P1;temp=temp&0xf0;}
switch(b){case0xe7: return 'f';break;
case0xd7: return 'e';break;
case0xb7: return 'd';break;
case0x77: return 'c';break;}}} }}
/****************************************
密码函数:将输入的密码写放进数组
****************************************/
uchar enter(uchar password[]){ucharm=0,j,back=0;
for(m=0;;){j=key_num();time_50ms=0;time_1s=0;
if(j>='0'&&j<='9'&&m<6){write_1602com(0x06);password[m]=j; m++;
write_1602dat('*');}
if(j=='a'){password[m+1]='\0';return1;} if(j=='b'){if(m>0){write_1602com(0x11);write_1602dat(0x20);
write_1602com(0x11);password[m]='\0';m--;}}}}
//函数名:显示函数
//功能:显示再次输入新密码的画面
//******************************************
void enter_again(void){uchar j;initinal();
write_1602com(0x80);
for(j=0;j<12;j++){write_1602dat(table7[j]);delay(10);}
write_1602com(0xc0+0x0a);}
//********************************************
//函数名:显示函数
//功能:显示两次输入的密码不一样后的画面
//********************************************
void enter_error(void){uchar j;
write_1602com(0x0c); //显示功能开,无光标
write_1602com(0x80);//显示位置第一行第一列
write_1602com(0x01);
for(j=0;j<12;j++){write_1602dat(table8[j]);delay(10);}}
//******************************************
//函数名:显示函数
//功能:显示更改成功之后的画面
//******************************************
void modify_success(void){ucharj;write_1602com(0x0c);
write_1602com(0x80);write_1602com(0x01);
for(j=0;j<15;j++){write_1602dat(table9[j]);delay(10);}}
//******************************************
//函数名:显示函数
//功能:显示欢迎画面
//******************************************
void welcome(void){
ucharj;
write_1602com(0x0c); //显示功能开,无光标
write_1602com(0x80);//显示位置第一行第4列
write_1602com(0x01);
write_1602com(0x80);
for(j=0;j<13;j++){write_1602dat(table10[j]);delay(10);}}
//**************************************************
//函数名:键盘识别函数
//功能:通过扫描对键盘进行识别
//**************************************************
uchar key_num(){uint temp,b;
while(1){P1=0xfe; //开始扫描第一行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;
if(temp!=0xf0){
while(temp!=0xf0){temp=P1;temp=temp&0xf0;}
switch(b){case0xee: return '4';break;
case0xde: return '3';break;
case0xbe: return '2';break;
case0x7e: return '1';break;}}}
P1=0xfd; //扫描第二行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;
if(temp!=0xf0){
while(temp!=0xf0){temp=P1;temp=temp&0xf0;}
switch(b){case0xed: return '8';break;
case0xdd: return '7';break;
case0xbd: return '6';break;
case0x7d: return '5';break;}}}
P1=0xfb; //扫描第三行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;
if(temp!=0xf0){
while(temp!=0xf0){temp=P1;temp=temp&0xf0;}
switch(b){case 0xeb: return 'b';break;
case0xdb: return 'a';break;
case0xbb: return '0';break;
case0x7b: return '9';break;}}}}}
/****************************************
只扫描第四行,禁止数字键输入
****************************************/
uchar key_gn(){uint temp,b;
while(1){P1=0xf7; //扫描第四行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;
if(temp!=0xf0){
while(temp!=0xf0){temp=P1;temp=temp&0xf0;}
switch(b){case0xe7: return 'f';break;
case0xd7: return 'e';break;
case0xb7: return 'd';break;
case0x77: return 'c';break;}}} }}
/****************************************
密码函数:将输入的密码写放进数组
****************************************/
uchar enter(uchar password[]){ucharm=0,j,back=0;
for(m=0;;){j=key_num();time_50ms=0;time_1s=0;
if(j>='0'&&j<='9'&&m<6){write_1602com(0x06);password[m]=j; m++;
write_1602dat('*');}
if(j=='a'){password[m+1]='\0';return1;} if(j=='b'){if(m>0){write_1602com(0x11);write_1602dat(0x20);
write_1602com(0x11);password[m]='\0';m--;}}}}