Red de conocimiento informático - Conocimiento de la instalación - ¡Por favor ayuda con el diagrama de conexión del programa de diseño de reloj digital en lenguaje C para microcontrolador! ! ! !

¡Por favor ayuda con el diagrama de conexión del programa de diseño de reloj digital en lenguaje C para microcontrolador! ! ! !

Reloj digital〔★〕Aquí se utilizan dos métodos de escritura (es decir, lenguaje ensamblador y lenguaje C)

(1. Al encender la computadora, la hora de las 12:00:00 se muestra y comienza el tiempo ;

(2. P0.0/AD0 controla el ajuste de "segundos", cada pulsación añade 1 segundo;

(3. P0.1/ AD1 controla el ajuste de "minutos", cada pulsación suma 1 punto;

(4. P0.2/AD2 controla el ajuste de "hora", cada pulsación añade 1 hora;

2. Principio del circuito Figura

3. Conexión de hardware en la placa del sistema

(1. Conecte los puertos P1.0-P1.7 en el área "Sistema MCU" a el " En los puertos A-H en el área "Pantalla digital dinámica";

(2. Conecte los puertos P3.0-P3.7 en el "Sistema MCU: Área" a la "Pantalla digital dinámica" área con un cable de 8 núcleos "En los puertos S1-S8 del área;

(3. Conecte los puertos P0.0/AD0, P0.1/AD1 y P0.2/AD2 en el área "Sistema MCU" con cables respectivamente Vaya a los puertos SP3, SP2 y SP1 en el área "Teclado independiente"

Conocimientos básicos relacionados

(1. Dinámico; método de visualización digital

(2. Proceso de reconocimiento de clave independiente

(3. Método de procesamiento de visualización y envío de datos de "hora", "minuto", "segundo"

5. Diagrama de bloques del programa

6.Programa fuente de ensamblaje

SEGUNDO EQU 30H

MINITE EQU 31H

HORA EQU 32H

HORA BIT P0.0

MINITEK BIT P0.1

SEGUNDA BIT P0.2

DISPBUF EQU 40H

DISPBIT EQU 48H

T2SCNTA EQU 49H

T2SCNTB EQU 4AH

TEMP EQU 4BH

ORG 00H

LJMP INICIO

ORG 0BH

LJMP INT_T0

INICIO: MOV SEGUNDO,#00H

MOV MINITE,#00H

HORA MOV,#12

p>

DISPBIT MOV,#00H

MOV T2SCNTA,#00H

MOV T2SCNTB,#00H

MOV TEMP,#0FEH

LCALL DISP

MOV TMOD,#01H

MOV TH0,#(65536-2000) / 256

MOV TL0,#(65536-2000 ) MOD 256

SETB TR0

SETB ET0

SETB EA

WT : JB SECONDK,NK1

LCALL DELY10MS

JB SEGUNDOK,NK1

INC SEGUNDO

MOV A,SEGUNDO

CJNE A,#60,NS60

MOV SEGUNDO,#00H

NS60: LCALL DISP

JNB SECONDK,$

NK1: JB MINITEK,NK2

LCALL DELY10MS

JB MINITEK,NK2

INC MINITE

MOV A,MINITE

CJNE A,#60,NM60

MOV MINITE,# 00H

NM60: LCALL DISP

JNB MINITEK,$

NK2: JB HOURK,NK3

LCALL DELY10MS

HORA JB,NK3

HORA INC

HORA MOV A

CJNE A,#24,NH24

HORA MOV, #00H

NH24: LCALL DISP

JNB HORA,$

NK3: LJMP PESO

DELY10MS:

MOV R6,#10

D1: MOV R7,#248

DJNZ R7,$

DJNZ R6,D1

RET

DISP:

MOV A,#DISPBUF

AÑADIR A,#8

DEC A

MOV R1,A

MOV A,HORA

MOV B,#10

DIV AB

MOV @R1,A

DEC R1

MOV A,B

MOV @R1,A

DEC R1

MOV A,#10

MOV @R1,A

DEC R1

MOV A,MINITE

MOV B,#10

DIV AB

MOV @R1,A

DEC R1

MOV A,B

MOV @R1,A

DEC R1

MOV A,#10

MOV @R1,A

DE

C R1

MOV A,SEGUNDO

MOV B,#10

DIV AB

MOV @R1,A

DEC R1

MOV A,B

MOV @R1,A

DEC R1

RET

INT_T0:

MOV TH0,#(65536-2000) / 256

MOV TL0,#(65536-2000) MOD 256

MOV A, #DISPBUF

AÑADIR A,DISPBIT

MOV R0,A

MOV A,@R0

MOV DPTR,#TABLE p>

MOVC A,@A+DPTR

MOV P1,A

MOV A,DISPBIT

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P3,A

INC DISPBIT

MOV A,DISPBIT

CJNE A ,#08H,KNA

MOV DISPBIT,#00H

KNA: INC T2SCNTA

MOV A,T2SCNTA

CJNE A ,# 100,HECHO

MOV T2SCNTA,#00H

INC T2SCNTB

MOV A,T2SCNTB

CJNE A,#05H, HECHO

MOV T2SCNTB,#00H

INC SEGUNDO

MOV A,SEGUNDO

CJNE A,#60,SIGUIENTE

MOV SEGUNDO,#00H

INC MINITE

MOV A,MINITE

CJNE A,#60,NEXT

MOV MINITE ,#00H

HORA INC

MOV A,HORA

CJNE A,#24,NEXT

MOV HORA,# 00H

SIGUIENTE: LCALL DISP

HECHO: RETI

TABLA: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FH, 40H

TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH

FIN

7. Programa fuente en lenguaje C

#include

código de caracteres sin firmar dispcode[]={0x3f,0x06,0x5b,0x4f,

0x66, 0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x00}

código de bit de caracteres sin firmar[; ]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

char dispbuf[8]= sin firmar; char dispbitcnt;

segundo char sin firmar;

minite char sin firmar;

hora char sin firmar

tcnt sin firmar; >

carácter sin firmar mstcnt;

carácter sin firmar i,j

void main(void)

{

TMOD= 0x02;

TH0=0x06;

TL0=0x06;

TR0=1;

EA=1;

mientras(1)

{

si(P0_0==0)

{ p>

for(i=5;i>0;i--)

for(j=248;j>0;j--); if( P0_0==0)

{

segundo++;

if(segundo==60)

{

segundo=0;

}

dispbuf[0]=segundo%10;

dispbuf[1]=segundo/10; >

mientras(P0_0==0);

}

}

si(P0_1==0)

{

for(i=5;i>0;i--)

for(j=248;j>0;j--); if( P0_1==0)

{

minite++;

if(minite==60)

{

minite=0

}

dispbuf[ 3]=minita%10;

dispbuf[4]=minita/10

while(P0_1==0

}

);

}

if(P0_2==0)

{

for(i=5;i>0;i--)

for(j=248;j>0;j--);

if(P0_2==0)

{

hora++;

if(hora==24)

{

hora=0

}

dispbuf[ 6]=hora%10;

dispbuf[7]=hora/10

mientras(P0_2==0

}

);

}

}

}

void t0(void) interrupción 1 usando 0

{

mstcnt++;

if(mstcnt==8)

{

mstcnt=0

P1=dispcode[dispbuf[dispbitcnt; ]];

P3=dispbitcode[dispbitcnt];

dispbitcnt++;

if(dispbitcnt==8)

{

dispbitcnt=0;

}

}

tcnt++;

if(tcnt==4000)

p>

p>

{

tcnt=0

segundo++;

if(segundo==60)

{

segundo=0

minite++;

if(minite==60)

{

minita=0

hora++;

if(hora==24)

{

p>

hora=0;

}

}

}

dispbuf[0]=segundo%10; /p>

dispbuf[1]=segundo/10;

dispbuf[3]=minite%10

dispbuf[4]=minite/10; >

dispbuf[6]=hora%10;

dispbuf[7]=hora/10;