Red de conocimiento informático - Material del sitio web - Ejercicio basado en el microcontrolador AT89C51 Presione los 16 teclados matriciales para mostrar los cuadrados del 1 al 16 en el tubo digital en secuencia.

Si presiona el primero, mostrará 1, y el segundo mostrará 4...

Ejercicio basado en el microcontrolador AT89C51 Presione los 16 teclados matriciales para mostrar los cuadrados del 1 al 16 en el tubo digital en secuencia.

Si presiona el primero, mostrará 1, y el segundo mostrará 4...

#include?lt;REGX51.Hgt;

#define?uchar?unsigned?char

#define?uint?unsigned?int

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

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

0x06, /*1*/

0x5B, /*2*/

0x4F, /*3*/

0x66, /*4 */

0x6D, /*5*/

0x7D, /*6*/

0x07, /*7*/

0x7F, /*8*/

0x6F, /*9*/} ;?//***Código del tubo Yinji

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

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

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

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

p>

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

uint?code?Data_square[]={0, 1, 4, 9, 16,

?25, 36, 49, 64,

?81, 100, 121, 144,

?169, 196, 225, 256} ?//Cuadrado

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

{

unsigned?char?i ;

p>

while(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);

colgar= P1;

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

{

?if(jz_code[clave] ==(colgar| mentira))?romper;

}

regresar?(clave);

}

void?data_bcd (void) ?/ /Resultado después de descomponer el cuadrado

{ uchar?i; i= kbscan(); if(i!=0) { Bits=Data_square[i]10; =(Data_square[i ]100)/10; //Diez dígitos Cien=(Data_square[i]1000)/100; //Cien dígitos Mil=Datos_cuadrado[i]/1000;?//Mil dígitos}

}

void?display(void)//Pantalla de tubo digital, método de depuración: intervalo de tubo digital

¿En la función de paliza? (5); cuatro, baje

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

}

?

void?main(void)

{?

P2=0xff;

mientras(1)

{

mostrar();

}

}