Red de conocimiento informático - Conocimiento del nombre de dominio - Buscamos ansiosamente un programa de reloj digital multifuncional basado en el microcontrolador 8051

Buscamos ansiosamente un programa de reloj digital multifuncional basado en el microcontrolador 8051

#include lt; AT89X51.Hgt;

unsigned char second=0, minute=0, hour=0, max=23; //segundo segundo, minuto minuto, hora hora, tiempo máximo

//función principal

main ()

{

tabla de códigos de caracteres sin firmar[]={0xdd, 0x84, 0xe9, 0xec, 0xb4, 0x7c, 0x7d, 0xc4, 0xfd, 0xfc};

unsigned int i;

void good();

TMOD=0X11; Modo de temporización 1, utilizado para temporización; T1 funciona en modo de temporización 1, utilizado para escanear botones

IE=0X8a; //Activa las interrupciones T0 y T1

IP=0X80; / T1 tiene mayor prioridad que T0 y hay un botón para detener el cronometraje

TH0=0X3c //Establece el valor inicial de T0, cronometraje 5MS

TL0=0Xb0;

TH1=0x3c; // Botón de escaneo del temporizador 250 ms

TL1=0xb0

TR1=1; good();

while(1) // Visualización de rotación de escaneo

{

i=minuto/10 //visualización en decenas

P0_5=0;

P0_4=1;

P0_6=1;

P0_7=1; [i];

for(i=0;ilt;500;i);

i=minuto10; //Muestra el número de minutos

P0_5 =1;

P0_4=0;

P0_6=1;

P0_7=1;

P2=tabla[i];

for (i=0; ilt; 500; i );

i=hora10; //Mostrar dígitos individuales

P0_5=1; >

P0_4=1 ;

P0_6=0

P0_7=1

P2=tabla[i]; > for(i=0; ilt; 500; i );

i=hora/10; //décimo dígito al mostrar

P0_5=1; > P0_4=1;

p>

P0_6=1;

if(i! =0)P0_7=0;

P2=tabla[i];

for(i=0;ilt; 500;i);

}

}

//Programa de interrupción de tiempo

void abc() interrupción 1 //subrutina de interrupción t0 (tiempo)

p>

{

static char a=0;

TH0=0X3c; //Reasignar valor inicial

TL0=0Xb0;

a ;

si (a==20

) //cuando a==20 segundos pasan

{a=0;

P1_7=~P1_7; //tubo secundario invertido parpadeando

segundo ; // el segundo aumenta en 1

if (minuto==0)

{if(segundolt;2*hora)P1_4=~P1_4;

else P1_4 =1; }

if(segundo==60){segundo=0; minuto;}//Los segundos cuentan hasta 60, los segundos se borran y los minutos se incrementan en 1

{ int i , j=0,k;

unsigned char a[]={0x00, 0x00, 0x00, 0x84, 0x00, 0x19, 0x2d, 0x0d, 0x79, 0x00, 0xbc, 0x2d, 0x9d}; // Colocando 0~9

while(TR0==0 amp; amp; minuto==0amp; amp; hora==0)

{ if( k==60) { k =0;j;if(j==13) j=0;}

P0_5=1; /p>

P0_4 =1;

P0_6=1

si(a[j13]==0x00) P0_7=1

P0_7=0;

P2=a[j13];

para(i=0; ilt; 500; i

<); p> //muestra el sub -ten

if(a[(j 1) 13]==0x00) P0_6=1

else P0_6=0;

P0_4=1;

P0_5=1;

P0_7=1;

P2=a[(j 1)13]; >

for(i =0; ilt; 500; i );

//Visualización de bits

P0_4=1; >

P0_6=1 ;

if(a[(j 2)13]==0x00) P0_5=1;

si no P0_5=0;

P0_7=1;

P2=a[(j 2)13];<

for(i=0;ilt;500;i);

// Mostrar bit sub-0

P0_5=1

if(a[(j 3)13; ]==0x00) P0_4=1 ;

más P0_4=0

P0_6=1

P0_7=1; P2=a[(j 3) 13];

for(i=0; ilt; 500; i

k

}}<; /p>

Por escrito Hay algunas cosas a tener en cuenta al realizar este procedimiento.

Debido a los diferentes métodos de conexión del digitalizador. El código para 0~9 de la matriz a[] también debe cambiarse. De lo contrario, cuando escribas, la pantalla será un desastre

porque los tubos nixie están conectados de manera diferente.