Red de conocimiento informático - Computadora portátil - Utilice KEIL C para escribir el programa de bloqueo de contraseña electrónico del microcontrolador 51

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;

}

}

}

}

}

}

}

.