Red de conocimiento informático - Computadora portátil - Programación de escaneo de teclado matricial 4*4, en línea, etc.

Programación de escaneo de teclado matricial 4*4, en línea, etc.

#includelt;reg52.hgt;

#includelt;intrins.hgt;

#define uchar unsigned char

#define uint tabla de códigos int sin firmar

uchar[]={0xc0, 0xf9, 0xa4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x90, 0x88, 0x83,

0xc6, 0xa1 , 0x86, 0x8e};

/****Codificación de tubo digital Yang, si es ***Yin, puede cambiar el contenido de la matriz a 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71*/

retraso nulo(uint i){ //Función de retardo

uint j ;

uint j;

retraso nulo(uint i){ p>

for(;igt;0;i--)

for( j=112;jgt;0;j--);

}

void keycan(){

uchar num, key=0, i; /p>

for(i=0; ilt; 4; i ){

P2=~(0x01lt;lt;i);

num=P2;

num=P2amp;0xf0;

if(num!=0xf0) {

retraso(5);

num=P2amp;0xf0 ;

if(num!=0xf0){

switch( num){

caso 0xe0: clave=1 4*i; >

caso 0xd0: clave=2 4*i;

caso 0xb0: clave=3 4*i;

caso 0x70: clave=4 4* i; romper;

}

}

if(clave){

P0=tabla[clave-1]; p>

retraso(10);

}

más P0=0xff;

}

}

}

void main()

{

while(1)

keyscan();

}