Código para controlar una matriz de puntos de 8*8 utilizando 51 microcontroladores
No sé qué efecto de visualización quieres lograr, pero el método básico es el mismo. Tengo un programa 8*8 listo para usar aquí, puedes modificarlo de acuerdo con esto:
Muestra la columna en el LED de matriz de puntos 8X8 y deja que se mueva suavemente de izquierda a derecha tres veces, y luego de derecha a izquierda Muévalo tres veces, luego muévalo de arriba a abajo tres veces y finalmente muévalo de abajo hacia arriba tres veces, y así sucesivamente. (Implementación de un método de iluminación de columna: una columna vertical, la fila correspondiente se establece en 1 y la fila se realiza mediante escaneo. Una columna horizontal, la fila correspondiente se establece en 0 y la columna se realiza mediante escaneo.
)
Programa fuente de ensamblaje:
Organización 00H
Inicio: NOP
MOV R3, tercer clasificado
Segundo lugar: MOV·R4, octavo lugar
MOV R2, #0
LOP1: MOV P1, #0FFH
MOV DPTR, #TABA
R2 MOV
MOVC A, @A DPTR
MOV·P3, AINC·R2
Retardo LCALL
DJNZ R4, LOP1
DJNZ R3, LOP2
MOV R3, tercero
Cuarto puesto: MOV·R4, octavo
p>MOV·R2, séptimo puesto
LOP3: MOV P1, #0FFH
MOV DPTR, #TABA
R2 MOV
MOVC A , @A DPTR
MOV·P3
Diciembre R2
LCALL retrasado
DJNZ R4, LOP3
DJNZ R3, LOP4
MOV R3, tercero
Distrito 6: MOV·R4, octavo
MOV R2, #0
LOP5: MOV P3, #00H
MOV DPTR, #TABB
R2 MOV
MOVC A, @A DPTR
MOV P1 , A
Compañía R2
Retraso LCALL
DJNZ R4, LOP5
DJNZ R3, LOP6
MOV R3, tercero
Distrito 8: MOV·R4, octavo
MOV·R2, séptimo
LOP7: MOV P3, #00H
MOV DPTR, #TABB
R2 MOV
MOVC A, @A DPTR
MOV P1, A
Diciembre R2
LCALL retrasada
DJNZ R4, LOP7
DJNZ R3, LOP8
Inicio LJMP
Retraso: MOV R5, #10
D2: MOV·R6, No. 20
D1: MOV R7, #248
DJNZ R7, USD
DJNZ R6, D1
DJNZ R5
Remojado en agua para suavizar
TABA: DB 0FEH, 0FDH, 0FBH, 0F7H, 0EFH, 0DFH , 0BFH, 07FH
TABB: DB 01H, 02H, 04H, 08H, 10H, 20H, 40H, 80H
Fin
Programa fuente en lenguaje C51 p>
# incluye ltAT89X52.
H gt
Código de caracteres sin firmar taba[]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
Código de caracteres sin firmar tabb[]= {0x01 , 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x 80};
void DELAY(void) { unsigned CHAR i, j; for (I = 10; i gt0; I-) for( j = 248; j gt0; j-);}
retraso nulo 1(void){ unsigned CHAR I, j, k; for(k = 10; k gt0; k-)for( i = 20; i gt0; i-) para (j = 248; j gt0; j- }
control vacío(void)
{unsigned char i, j ; p>
while(1)
{ for(j = 0;j lt3;j)//De izquierda a derecha 3 veces
{ for(I = 0; i lt8; i ) { P3 = taba[i]; p 1 = 0x ff; retraso 1(); } }
for(j = 0; j lt3; j )// 3 veces desde la derecha a la izquierda
{ for(I = 0; i lt8; i ){ P3 = taba[7-I]; p 1 = 0x ff; retraso 1(); >for(j = 0;j lt3;j)//3 veces de arriba a abajo
{ for(I = 0;i lt8;i){ P3 = 0x 00; p 1 = tabb[ 7-I]; retraso 1(); }}
for(j = 0; j lt3; j )//3 veces de abajo hacia arriba
{ for(I = 0;ilt8;i){ P3 = 0x 00;p 1 = tabb[I];retraso 1();}}
}
}