亲 这程序是我自己当时写的,51单片机1602液晶,可以更改密码。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcden=P2^6;
sbit lcdrs=P2^4;
sbit lcdrw=P2^5;
bit flag;
bit flag1;
bit flag2;
bit flag3;
bit flag4;
uchar a[6];
uchar b[6];
uchar c[6];
uchar num,key,zhi,num1,num2,i,temp,ss,num3,num4,num5,num6;
uchar code table[]=" input password: ";
uchar code table1[]="right!";
uchar code table2[]="error!";
uchar code table3[]={'0','1','2','3','4','5','6','7','8','9'};
uchar code table4[]="wrong!";
uchar code table5[]="change password:";
uchar code table6[]="password again: ";
uchar code table7[]="new passwordsure";
uchar password[]={'0','0','0','0','0','0'};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
lcdrw=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<16;num++)
{
write_data(table[num]);
delay(5);
}
//write_com(0x80+0x40);
}
uchar keyscan(void)
{
uchar temp,zhi;
P3=0x7f;
temp=P3&0x7f;
if(temp!=0x7f)
{
delay(1);
P3=0x7f;
temp=P3&0x7f;
if(temp!=0x7f)
{
P3=0x7f;
temp=P3&0x7f;
switch (temp)
{
case 0x7e:zhi=1;break;
case 0x7d:zhi=2;break;
case 0x7b:zhi=3;break;
case 0x77:zhi=4;break;
}
while(temp!=0x7f)
{
P3=0x7f;
temp=P3&0x7f;
}
return zhi;
}
}
//**********
P3=0xbf;
temp=P3&0xbf;
if(temp!=0xbf)
{
delay(1);
P3=0xbf;
temp=P3&0xbf;
if(temp!=0xbf)
{
P3=0xbf;
temp=P3&0xbf;
switch (temp)
{
case 0xbe:zhi=5;break;
case 0xbd:zhi=6;break;
case 0xbb:zhi=7;break;
case 0xb7:zhi=8;break;
}
while(temp!=0xbf)
{
P3=0xbf;
temp=P3&0xbf;
}
return zhi;
}
}
//***********
P3=0xdf;
temp=P3&0xdf;
if(temp!=0xdf)
{
delay(1);
P3=0xdf;
temp=P3&0xdf;
if(temp!=0xdf)
{
P3=0xdf;
temp=P3&0xdf;
switch (temp)
{
case 0xde:zhi=9;break;
case 0xdd:zhi=10;break;
case 0xdb:zhi=11;break;
case 0xd7:zhi=12;break;
}
while(temp!=0xdf)
{
P3=0xdf;
temp=P3&0xdf;
}
return zhi;
}
}
//********
P3=0xef;
temp=P3&0xef;
if(temp!=0xef)
{
delay(1);
P3=0xef;
temp=P3&0xef;
if(temp!=0xef)
{
P3=0xef;
temp=P3&0xef;
switch (temp)
{
case 0xee:zhi=13;break;
case 0xed:zhi=14;break;
case 0xeb:zhi=15;break;
case 0xe7:zhi=16;break;
}
while(temp!=0xef)
{
P3=0xef;
temp=P3&0xef;
}
return zhi;
}
else
{
zhi=0;
return zhi;
}
}
}
void changepassword()
{
uchar j=0,k=0,m=0;
flag2=0;
flag3=0;
flag4=0;
write_com(0x01);
delay(10);
write_com(0x0c);
delay(10);
write_com(0x80);
for(num4=0;num4<16;num4++)
{
write_data(table5[num4]);
}
while(!flag2)
{
key=keyscan();
if(key==1||key==2||key==3||key==4||key==5||key==6||key==7||key==8||key==9||key==10)
{
b[j]=table3[key-1];
write_data(table3[key-1]);
delay(10);
write_com(0x80+0x40+3+j);
delay(10);
write_data('*');
j++;
if(j==6)
{
j=0;
flag2=1;
flag3=1;
write_com(0x01);
delay(10);
write_com(0x80);
for(num5=0;num5<16;num5++)
{
write_data(table6[num5]);
}
}
}
}
while(flag3)
{
key=keyscan();
if(key==1||key==2||key==3||key==4||key==5||key==6||key==7||key==8||key==9||key==10)
{
c[k]=table3[key-1];
write_data(table3[key-1]);
delay(10);
write_com(0x80+0x40+3+k);
delay(10);
write_data('*');
k++;
if(k==6)
{
flag3=0;
write_com(0x01);
if((b[0]==c[0])&&(b[1]==c[1])&&(b[2]==c[2])&&(b[3]==c[3])&&(b[4]==c[4])&&(b[5]==c[5]))
{
flag4=1;
password[0]=b[0];
password[1]=b[1];
password[2]=b[2];
password[3]=b[3];
password[4]=b[4];
password[5]=b[5];
write_com(0x80);
//delay(10);
}
}
}
while(flag4)
{
flag4=0;
write_com(0x80);
for(num6=0;num6<16;num6++)
{
write_data(table7[num6]);
}
delay(2000);
write_com(0x80);
for(num=0;num<16;num++)
{
write_data(table[num]);
delay(5);
}
}
}
}
void main()
{
init();
while(1)
{
key=100;
key=keyscan();
if((!flag)&&(!flag1))
{
if((key==1||key==2||key==3||key==4||key==5||key==6||key==7||key==8||key==9||key==10)&&(i<6))
{
write_com(0x0f);
write_com(0x06);
a[i]=table3[key-1];
write_data(table3[key-1]);
delay(10);
write_com(0x80+0x40+4+i);
delay(50);
write_data('*');
i++;
}
}
if((!flag)&&(!flag1))
{
if(key==11)
{
i=0;
if((a[0]==password[0])&&(a[1]==password[1])&&(a[2]==password[2])&&(a[3]==password[3])&&(a[4]==password[4])&&(a[5]==password[5]))
{
flag1=1;
write_com(0x01);
delay(10);
write_com(0x0c);
delay(10);
write_com(0x80+4);
for(num1=0;num1<6;num1++)
{
write_data(table1[num1]);
}
}
else
{
write_com(0x01);
delay(10);
write_com(0x0c);
delay(10);
write_com(0x80+4);
for(num2=0;num2<6;num2++)
{
write_data(table2[num2]);
}
ss++;
if(ss==3)
{
flag=1;
write_com(0x01);
write_com(0x0c);
write_com(0x80+0x40+4);
for(num3=0;num3<6;num3++)
{
write_data(table4[num3]);
}
}
}
}
}
if(key==12)
{
changepassword();
}
}
}
温馨提示:答案为网友推荐,仅供参考