Red de conocimiento informático - Computadora portátil - Teclado matricial 4X4, puede definir sus propios números de tecla como 0~9, A~F y programar para mover el número mostrado actualmente hacia la izquierda en el tubo digital de varios dígitos después de presionar la tecla y levantarla.

Teclado matricial 4X4, puede definir sus propios números de tecla como 0~9, A~F y programar para mover el número mostrado actualmente hacia la izquierda en el tubo digital de varios dígitos después de presionar la tecla y levantarla.

#include?lt;REGX51.Hgt;

#define?uchar?unsigned?char

#define?uint?unsigned?int

uchar?Bits=0, Diez=0, Cien=0, Mil=0;

uchar?code?ledshow[16]={?0x3F,/*0*/

0x06, /*1*/

0x5B, /*2*/

0x4F, /*3*/

0x66, /*4 */

0x6D, /*5*/

0x7D, /*6*/

0x07, /*7*/

0x7F, /*8*/

0x6F, /*9*/

0x77, /*A*/

0x7C, /*b*/

0x39, /*C*/

0x5E, /*d*/

0x79, /*E*/

0x71 ,/*F*/};?//***Código del tubo Yinji

uchar?code?jz_code[17]={0xff,

0xee, 0xed, 0xeb, 0xe7 ,

0xde, 0xdd, 0xdb, 0xd7,

0xbe, 0xbd, 0xbb, 0xb7,

0x7e, 0x7d, 0x7b, 0x77};?/ / Código de teclado

void?delay(unsigned?char?a) ?//Delay

{

unsigned?char ?i ;

mientras(a--)

for(i=100;igt;0;i--);

}

uchar?kbscan(void)?//Escaneo de teclado

{ unsigned?char?hang, lie, key;

P1=0xf0

retraso(5);

mentira=P1;

P1=0x0f;

retraso(5); >hang=P1;

for(key=16;keygt;0;key--)

{

?if(jz_code[key] == (colgar|mentir))?romper;

}

regresar?(clave);

}

void?data_l (void ) ?//Desplazamiento hacia la izquierda

{ uchar?i; static?keytemp=0; i= kbscan(); if(i!=0) { if(!(keytemp==i)) { keytemp =i; Mil=Cien;?//Mil dígitos Cien=Diez; //Cien dígitos Diez=Bits; //Diez dígitos Bits=i-1; //Un dígito} } else?keytemp=0;

}

void?display(void)//Pantalla de tubo digital,

Método de depuración: en la función de latido del intervalo del tubo digital; cuatro, baje

{ data_l(); P0=ledshow[Thousand]; 1; P0=ledshow[Cientos]; P2_1=0; P2_1=1; P0=ledshow[Diez]; P2_2=1; =0; retraso(5); P2_3=1;

}

?

void?main(void)

{?

P2=0xff;

mientras(1)

{

mostrar();

}

}