1. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M07 MICROCONTROLADORES II
Laboratorio: D-19
Duración: 3 Hs DISPLAY CONTROL
3.4. Matriz de LEDs
Objetivos
1. Configurar el ATMEGA128 para controlar una matriz de LEDs.
3.4.1. Hardware
El Hardware de la matriz de LED se ve en la Figura 3.1.
NEWTC
http://www.New
DM H/W 구성
넥터 핀 배열
ROW_0
ROW_1
ROW_8ROW_8
ROW_9
COL_0
COL_1
COL_8
COL_9
Figura 3.1: Matriz de LED
3.4.2. Conectores/Interfaces
Los conectores J1 y J2 se conectan con la placa del Microcontrolador ATMEGA128.
Los detalles de cada pin están dados en la Figura 3.2.
5 4 3 2
ROW_0
ROW_2
ROW_4
ROW_6
ROW_1
ROW_3
ROW_5
ROW_7
ROW_8 ROW_9
BCD_0
BCD_2
BCD_1
BCD_3
BCD_0
BCD_1
BCD_2
BCD_3
COL_0
COL_1
COL_2
COL_3
COL_4
COL_5
COL_6
COL_7
COL_8
COL_9
0
0
VCC
VCC
J2
1 2
3 4
5 6
7 8
9 10
J1
1 2
3 4
5 6
7 8
9 10
74HC42
Y0
1
Y1
2
Y2
3
Y3
4
Y4
5
Y5
6
Y6
7
Y7
9
Y8
10
Y9
11
A
15
B
14
C
13
D
12
Figura 3.2: Diagrama de pines de los conectores J1 y J2.
Pedro Ramírez <pedroramirez22@gmail.com> 1
2. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M07 MICROCONTROLADORES II
Laboratorio: D-19
Duración: 3 Hs DISPLAY CONTROL
Básicamente para encender LEDs de la matriz se selecciona una COLUMNA y se envían
los bits (0/1) para apagar/encender los LED de todas las FILAS que le corresponden.
3.4.3. Pines del conector - Registro del PUERTO
Los pines del conector se corresponden con el PUERTO al cual será conectado. Por
lo tanto el LSB corresponde al PIN1 y el MSB al PIN8. Como nuestra matriz de LED
es 10x10, un conector (J1) no será suficiente pues tiene solo 8 pines, por lo tanto para
enviar los datos desde el microcontrolador se van a utilizar dos puertos (Row0 al Row9).
2 / 5
컨넥터 핀 배열
J1
1 3 5 7 9
Row0 Row2 Row4 Row6 VCC
2 4 6 8 10
Row1 Row3 Row5 Row7 GND
J2
1 3 5 7 9
Row8 BCD0 BCD2 VCC
2 4 6 8 10
Row9 BCD1 BCD3 GND
*BCD : Column ( BCD to Decimal Decoder )
Figura 3.3: Detalle del Conector J1
2 / 5
컨넥터 핀 배열
J1
1 3 5 7 9
Row0 Row2 Row4 Row6 VCC
2 4 6 8 10
Row1 Row3 Row5 Row7 GND
J2
1 3 5 7 9
Row8 BCD0 BCD2 VCC
2 4 6 8 10
Row9 BCD1 BCD3 GND
*BCD : Column ( BCD to Decimal Decoder )
Figura 3.4: Detalle del Conector J2
Fíjese que el MSN (Nibble más significativo) de J2 tiene el valor BCD que se conec-
tará al Decoder 7442, Por lo tanto, en este conector estarán combinados dos valores, en
el Nibble inferior los dos LEDs faltantes y en el Nibble superior el código BCD.
Pedro Ramírez <pedroramirez22@gmail.com> 2
3. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M07 MICROCONTROLADORES II
Laboratorio: D-19
Duración: 3 Hs DISPLAY CONTROL
3.4.4. Ejemplo de uso
Supongamos que conectamos el J1 al puerto E y el J2 al puerto F (Figura 3.5). Visitar
la página https://www.riyas.org/2013/12/online-led-matrix-font-generator-with.html y
generar una .
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
unsigned int SMILE[] = {
0b0000000000,
0b0101001010,
0b0111001110,
0b0010000100,
0b0000000000,
0b1000000001,
0b0100000010,
0b0010000100,
0b0001111000,
0b0000000000};
int main(){
DDRE = 0xFF;//conectar al J1
DDRF = 0xFF;// conectar al J2
unsigned int fila;
while(1){
for(fila = 0; fila < 10; fila++){
PORTE = ~SMILE[fila];//con 0 se encienden los LEDs
PORTF = (fila << 4) | (~(SMILE[fila] >> 8) & 0x0F);
_delay_ms(1);
}
}
}
Explicación:
PORTE = ∼SMILE[fila]; copia los 8 primeros bits al puerto A (J1).
PORTF = (fila << 4) | (∼SMILE[fila] >> 8); Primero hace correr 4 lugares
a la izquierda el valor de fila para tener el BCD en el Nibble superior, luego agrega
(OR) los 2 bits restantes en el Nibble inferior.
Obs: Los LEDs se encienden con valor bajo (LOW).
Pedro Ramírez <pedroramirez22@gmail.com> 3
4. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M07 MICROCONTROLADORES II
Laboratorio: D-19
Duración: 3 Hs DISPLAY CONTROL
PE0/RXD0/PDI 2
PE1/TXD0/PDO 3
PE2/XCK0/AIN0 4
PE3/OC3A/AIN1 5
PE4/OC3B/INT4 6
PE5/OC3C/INT5 7
PE6/T3/INT6 8
PE7/ICP3/INT7 9
PB0/SS10
PB1/SCK11
PB2/MOSI12
PB3/MISO13
PB4/OC014
PB5/OC1A15
PB6/OC1B16
PB7/OC2/OC1C17
PG3/TOSC2 18
PG4/TOSC1 19
RESET20
XTAL223
XTAL124
PD0/SCL/INT0 25
PD1/SDA/INT1 26
PD2/RXD1/INT2 27
PD3/TXD1/INT3 28
PD4/ICP1 29
PD5/XCK1 30
PD6/T1 31
PD7/T2 32
PG0/WR 33
PG1/RD 34
PC0/A835
PC1/A936
PC2/A1037
PC3/A1138
PC4/A1239
PC5/A1340
PC6/A1441
PC7/A1542
PG2/ALE 43
PA7/AD744
PA6/AD645
PA5/AD546
PA4/AD447
PA3/AD348
PA2/AD249
PA1/AD150
PA0/AD051
PF7/ADC7/TDI 54
PF6/ADC6/TDO 55
PF5/ADC5/TMS 56
PF4/ADC4/TCK 57
PF3/ADC3 58
PF2/ADC2 59
PF1/ADC1 60
PF0/ADC0 61
AREF62
AVCC64 PEN 1
ATMEGA128
A15
B14
C13
D12
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 9
8 10
9 11
7442
ROW0
ROW1
ROW2
ROW3
ROW4
ROW5
ROW6
ROW7
COL0
COL1
COL2
COL3
COL4
COL5
COL6
COL7
COL8
COL9
ROW8
ROW9
Figura 3.5: Diagrama de conexión del Microcontrolador con la matriz de LED
3.4.5. Práctica
1. Visitar la página https://www.riyas.org/2013/12/online-led-matrix-font-generator-
with.html y generar una . Desplegarlo en la matriz de LED.
2. Generar Ω. Desplegarlo en la matriz de LED.
3. Generar ♥. Desplegarlo en la matriz de LED.
4. Generar . Desplegarlo en la matriz de LED.
5. Generar ♣. Desplegarlo en la matriz de LED.
6. Generar ♠. Desplegarlo en la matriz de LED.
7. Generar ∞. Desplegarlo en la matriz de LED.
3.4.6. Conclusión
Pedro Ramírez <pedroramirez22@gmail.com> 4