Red de conocimiento informático - Problemas con los teléfonos móviles - Programación ascendente

Programación ascendente

Le brinda un programa de referencia, pantalla de tubo digital de escaneo dinámico, el teclado es un teclado matricial de 4 * 4, usando el modo de escaneo de filas y columnas, puede presionar los números en el teclado para mostrarlos en el tubo digital.

PD: Aunque es posible que este programa no se ejecute en su placa de desarrollo sin modificaciones, puede usarlo como plantilla y modificarlo usted mismo para lograr competencia. Cuando aprendes a programar por primera vez, estás constantemente imitando programas escritos por otros.

//Escáner de líneas y columnas, usted mismo puede definir el puerto y el método de escaneo. Aquí hay una breve introducción.

# include ltreg52.h gt//Incluir archivo de encabezado

#Definir carácter uchar sin signo

#Definir uint entero sin signo

Sin signo char const dofly[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,

0x77, 0x7c, 0x39, 0x5e, 0x79, 0x 71 } //; 0-F

escaneo de clave uchar (void);

Retraso no válido (uint I);

void main()

{

uchar key;

P2 = 0x 00; //1 El tubo digital mostrará los caracteres de la tecla cuando presione la tecla correspondiente.

while(1)

{

key = key scan(); //Llamar al escaneo del teclado,

Cambiar (tecla)

{

Caso 0x7e: P0 = do fly[0]; Break; //0 Presione la tecla correspondiente para mostrar el valor del código correspondiente.

Caso 0x7d: P0 = volar[1]; //1

Caso 0x7b: P0 = volar[2];

Caso 0x 77: P0 = volar[3]; //3

Caso 0x ser: P0 = volar[4]; //4

Caso 0x BD: P0 = volar[5]; //5

Caso 0x bb: P0 = volar[6]; //6

Caso 0xb 7: P0 = volar[7]; romper; //7

Caso 0x de: P0 = volar[8]; //8

Caso 0x DD :P0 = volar[9]; //9

Caso 0x db: P0 = volar[10]; //a

Caso 0xd 7: P0 = volar[11]; romper; //b

Caso 0x ee: P0 = hacer volar; //c

Caso 0x ed: P0 = hacer volar[13]; romper; //d

caso 0xeb: P0 = hacer volar[14]; //e

Caso 0xe 7: P0 = hacer volar[15] ]; break; //f

}

}

}

Uchar teclascan(void)//Función de escaneo de teclado, usando Modo de escaneo de fila e inversión de fila.

{

uchar cord_h, cord_l; //Valores de filas y columnas

P3 = 0x0f; //Las salidas de filas y líneas son todas 0.

P3 amp; 0x0f //Leer los valores de columna y fila

if(cord_h!=0x0f) //Primero verifique si el botón está presionado.

{

Delay(100); //Ve a agitar

if(cord_h!=0x0f)

{

P3 amp; 0x0f //Leer el valor de la línea de la columna

P3 = cord_h |

P3 amp; 0xf0//Lee el valor de la línea

return(cord _ h cord _ l //El último valor del código de combinación del teclado

}

} return(0x ff); //Valor de retorno.

}

Retraso nulo(uint i)//función de retardo

{

mientras(I-);

}