Red de conocimientos turísticos - Conocimientos sobre calendario chino - Usando lenguaje c para implementar un reloj digital usando un microcontrolador Se ha proporcionado la imagen.

Usando lenguaje c para implementar un reloj digital usando un microcontrolador Se ha proporcionado la imagen.

#include lt;reg51.hgt;

código de carácter sin firmar DSY_CODE[]={

0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82 , 0xf8, 0x80, 0x90,

//Número 0 1 2 3 4 5 6 7 8 9

0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, 0xff};

// A b C d E F Destrucción total 16

código de carácter sin firmar DSY_WEI[]={0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80} ;

//Código de posición, el número 0 está todo apagado, 1, 2, 3,... corresponden a los tubos digitales de izquierda a derecha

unsigned char DSY_BUFFER[]={ 0, 0, 0xBF, 0, 0, 0xBF, 0, 0}; //0xBF muestra "-"

carácter sin firmar DSY_IDX, Key_State, hh, mm, ss, s20;

sbit K1=P1^0;

sbit K2=P1^1;

sbit K3=P1^2;

retrasos vacíos (car ms sin firmar )

{

carácter sin firmar i;

while(ms--) for(i=0;ilt;120;i);

}

void Aumentar_hora()

{

if( hhgt; 23)

{

hh =0;

}

DSY_BUFFER[0]=DSY_CODE[hh/10]

DSY_BUFFER[1]=DSY_CODE[hh10]; /p >

}

void Incremento_Minuto()

{

if( mmgt; 59)

{

mm=0;

Aumento_Hora();

}

DSY_BUFFER[3]=DSY_CODE[mm/10];

DSY_BUFFER[4]=DSY_CODE[mm10];

}

void Guarantee_Second()

{

if( ssgt 59 )

{

ss=0;

Incrementar_Minuto();

}

DSY_BUFFER[ 6] =DSY_CODE[ss/10];

DSY_BUFFER[7]=DSY_CODE[ss10];

if(cnt_Bufflt;12)cnt_Buff;

}

p>

void T0_INT() interrupción 1

{

TH0=(65536-2000)/256;

T

L0=(65536-2000)256;

P2=DSY_WEI[0];

P0=DSY_BUFFER[DSY_IDX];

P2=DSY_WEI[DSY_IDX 1 ];

DSY_IDX

DSY_IDX=8

}

anular T1_INT() interrupción 3

{

TH1=(65536-(50000-Val_ADJ))/256;

TL1=(65536-(50000-Val_ADJ))256 //Corrección de tiempo Val_ADJ número sin signo <; /p>

if( s20==20)

{

s20=0

Incrementar_segundo(); }

}

void main()

{

carácter sin firmar i;

TMOD=0x11 ;

TH1=(65536-50000-Val_ADJ)/256;

TL1=(65536-50000-Val_ADJ)256;

TH0=(65536-2000; )/256;

TL0=(65536-2000)256;

TCON=0x01; //IT0=1, interrupción externa 0 disparador de flanco descendente

EA=1;

ET0=1;

ET1=1;

hh=12; p>

ss=0;

DSY_BUFFER[0]=DSY_CODE[hh/10];

DSY_BUFFER[1]=DSY_CODE[hh10]; p>DSY_BUFFER[3]=DSY_CODE[mm/10];

DSY_BUFFER[4]=DSY_CODE[mm10];

DSY_BUFFER[6]=DSY_CODE[ss/10] ;

DSY_BUFFER[7]=DSY_CODE[ss10];

DSY_IDX=0;

TR0=1;

TR1=1 ;

Key_State=0xff;

while(1)

{

if(P1^Key_State)

{

demorams(10);

if(P1^Key_State)

{

//EA=0;

p>

Key_State=P1;

if(!K1)

{

Incrementar_hora();

}

p>

if(!K2)

{

if( mmgt; 59) mm=0

DSY_BUFFER[ 3]=DSY_CODE[mm /10];

DSY_BUFFER[4]=DSY_CODE[mm10]

}

si(!K3)

{

si

(ssgt;59) ss=0;

DSY_BUFFER[6]=DSY_CODE[mm/10];

DSY_BUFFER[7]=DSY_CODE[mm10];

}

}

EA=1

}

if(cnt_Buff==10)

{

DSY_BUFFER[0]=DSY_CODE[hh/10]

DSY_BUFFER[1]=DSY_CODE[hh10];

DSY_BUFFER[3]= DSY_CODE[mm/10];

DSY_BUFFER[4]=DSY_CODE[mm10];

DSY_BUFFER[6]=DSY_CODE[ss/10];

DSY_BUFFER[7]=DSY_CODE[ss10];

}

}

}

/tongji.js">