Utilice KEIL C para escribir el programa de bloqueo de contraseña electrónico del microcontrolador 51
He hecho algo similar para otros antes
#include
#include
#include "lcd.c"
uchar key;
uchar num;
sbit alarm=P2^4; open =P2^1;
tabla de códigos uchar[]={' ','1','2','3',
'4','5', ' 6', '7',
'8', '9', '0'};
void teclascan();
uchar hptable[ 10 ];
uchar contraseña[6];
uchar wordbuf[6];
uchar fom[]="introducir contraseña:";
cambio de uchar[]="establecer máscara:";
estado de uchar1[]="derecho";
estado de uchar2 []="error";
uchar sflag;
uchar dflag,cnt;
uchar setf,fset;
uchar flag;
void main ( )
{
uchar hp;
alarma=0
flag=0
setf; = 0;
fset=0;
dflag=0;
lcden=0; >
lcdrs=1;
P3= 0x0f;
for(hp=0;hp<6;hp++)
{
contraseña[hp]='8';
}
write(0x38,0);//0 es el retraso del comando de escritura
(9 );
escribir(0x08,0);
escribir(0x01,0);
escribir(0x06,0);
escribir(0x0c,0);
escribir(0x80,0);
for(hp=0;hp<15;hp++)
{
escribir(fom[hp],1);
}
mientras(1)
{
//alarma=! alarma;
keyscan();;.
if(setf==0)
{
if(num>=1&&num <=10)
{
escribir(0x80x4cnt,0);
escribir('*',1);
wordbuf[cnt]=tabla[núm];
cnt++;
núm=0;
}
}
}
else
{
escribir(0x01,0);
escribir(0x80,0) ;
for(hp=0;hp<9;hp++)
{
escribir(cambiar[hp],1);
}
f
set=1;
cnt=0;
mientras(fset)
{
keyscan();
if(num>=1&&num<=10)
{
escribir(0x80x4cnt,0);
escribir('*' ,1);
contraseña[cnt]= tabla[núm];
cnt++;
núm=0;
}
if(num==11)
{
escribir(0x80x4cnt-1,0);
escribir( '\0',1);
cnt--;
num=0;
}
if(num== 13)
{
bandera=1;
num=0;
setf=0;
setf=0;
// ir a chuz;
}
}
cnt=0;
}
if(bandera==1)
{
escribir(0x01,0);
escribir(0x80,0) ;
for(hp=0;hp<15;hp ++)
{
escribir(fom[hp],1);
}
flag=0;
}
if(num==11)
{
escribir(0x80x4cnt-1,0);
escribir('\0',1);
cnt--;
núm=0;
}
si(núm==12)
{
si(dflag==1)
setf=1;
num=0;
}
if(num==13)
{
num=0;
escribir(0x80x410,0);
if(wordbuf[0]==contraseña[0]&& wordbuf[1]==contraseña[ 1]&&wordbuf[2]==contraseña[2]&&wordbuf[3]==contraseña[3]&&wordbuf[4]==contraseña[4]&&wordbuf[5]== contraseña[ 5])
{
for(hp=0;hp<5;hp++)
{
escribir(estado1[hp ],1);
}
sflag=0;
dflag=1;
}
else
{
for(hp=0;hp<5;hp++)
{
escribir(estado2[hp], 1);
}
sflag++;
}
}
if(sflag==3)
{
alarma=! alarma;
//retraso(9);
}
if(num==14)
{
num=0;
cnt=0;
escribir (0x01,0);
escribir(0x80,0);
for(hp=0;hp<15;hp++)
{
escribir(de[hp],1) ;
}
}
if(num==15)
{
if(dflag= =1)
{
open=0;
dflag=0;
}
}
}
}
}
anulación de teclas nulas ()
{
uchar tem,temp;
P3=0xfe;
temp=P3;
tem=temp&0xf0;
si (tem!=0xf0 ) //Si no se presiona ninguna tecla, su valor no cambia, es decir, sigue siendo 0XF0;
Si no se presiona ninguna tecla, su valor permanece sin cambios, es decir, sigue siendo 0XF0, sigue siendo 0XF0, si cuando se presiona una tecla, se debe cambiar
{<
delay(5); //retraso para desestabilizar
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0) // Confirma que un botón está presionado
{
temp=P3 ;
tem=temp&0xf0;?
cambiar (tem)
{
caso 0xe0: num=0;
caso 0xd0: num=1; ;
caso 0xb0: num=2; romper;
caso 0x70: num=3; }
while(tem!=0xf0) //esperar lanzamiento
{
temp=P3;
tem=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
retraso(5);
temp= P3;
tem=temp&0xf0;
tem=temp&0xf0;
si (tem!=0xf0)
{
temp =P3;
tem=temp&0xf0;
interruptor (tem)
{
caso 0xe0: num=4;
caso 0xd0: num=5; romper;
caso 0xb0: num=6; romper;
caso 0x70: num=7; >
predeterminado: ?break
}
mientras(tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;
}
}
}
}
P3=0xfb;
temp=P3;
tem=
temp&0xf0;
if (tem!=0xf0)
{
retraso(5);
temp=P3;
tem=temp&0xf0;
si (tem!=0xf0)
{
temp=P3;
tem= temp&0xf0;
interruptor (tem)
{
caso 0xe0: num=8;
caso 0xd0.num=9 ; romper;
caso 0xb0: num=10; romper;
caso 0x70: num=11; romper;
predeterminado: ? >
}
mientras(tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;
}
}
}
}
}
P3=0xf7;
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
retraso(5);
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;
interruptor (tem)
{
caso 0xe0 : num=12; romper;
caso 0xd0.num=13; romper;
caso 0xb0: num=14; romper;
caso 0x70: num =15; romper;
predeterminado: ? p>
temp=P3;
tem=temp&0xf0;
}
}
}
}
}
}
}
.