1. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M07 MICROCONTROLADORES II
Laboratorio: D-19
Duración: 2 Hs DISPLAY CONTROL
3.1. Display 7 segmentos
Objetivos
1. Configurar el ATMEGA128 para utilizar un display 7 segmentos.
3.1.1. Hardware
El módulo AM-FND1 V1.0 es un display 7 segmento, Figura 3.1.
Figura 3.1: Módulo 7 Segmentos
3.1.2. Pines del conector - Registro del PUERTO
7 6 5 4 3 2 1 0
Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0]
Cuadro 3.1: Pines del Conector
Data[7] - A Segment
Data[6] - B Segment
Data[5] - C Segment
Data[4] - D Segment
Data[3] - E Segment
Data[2] - F Segment
Data[1] - G Segment
Data[0] - Dot
A
B
C
D
E
F
G
DP
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: 2 Hs DISPLAY CONTROL
3.1.3. Configuración del Display
El display es Cátodo Común, por lo tanto con un 1 lógico los segmentos se
encienden y con un 0 lógico los segmentos se apagan.
3.1.4. Valores de Segmentos
㈜뉴티씨 (NEWTC)
http://www.newtc.co.kr
5 / 7
◈ 7-세그먼트 출력 데이터
D7 D6 D5 D4 D3 D2 D1 D0 Data
DP G F E D C B A 16진수
0 0 1 1 1 1 1 1 0X3f
0 0 0 0 0 1 1 0 0X06
0 1 0 1 1 0 1 1 0X 5b
0 1 0 0 1 1 1 1 0X4f
0 1 1 0 0 1 1 0 0X66
0 1 1 0 1 1 0 1 0X6d
0 1 1 1 1 1 0 0 0X7c
0 0 1 0 0 1 1 1 0X27
0 1 1 1 1 1 1 1 0X7f
0 1 1 0 0 1 1 1 0X67
1 0 0 0 0 0 0 0 0X80
0 1 1 1 0 1 1 1 0X77
0 1 1 1 1 1 0 0 0X7c
0 0 1 1 1 0 0 1 0X39
0 1 0 1 1 1 1 0 0X5e
0 1 1 1 1 0 0 1 0X79
0 1 1 1 0 0 0 1 0X71
※ Common Anode형 7-세그먼트는 위 데이터를 반전하여 출력하면 됩니다.
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: 2 Hs DISPLAY CONTROL
3.1.5. Esquemático Proteus
Montar el circuito de la Figura 3.2 en el Proteus, utilizar un display cátodo común.
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
U1
ATMEGA128
R2
10k
Figura 3.2: Circuito a simular en el Proteus
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: 2 Hs DISPLAY CONTROL
3.1.6. Ejemplo de uso
El siguiente ejemplo es un contador ascendente de 0-9.
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
//ARRAY DONDE ESTARAN LOS VALORES A MOSTRAR EN EL DISPLAY
int DISPLAY[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x27,0x7F,0x67};
int main(void)
{
DDRE = 0xFF; //PUERTO E COMO SALIDA
int counter; //VARIABLE CONTADOR
while (1){
for(counter=0; counter<10; counter++){
PORTE = DISPLAY[counter];//CARGO EL VALOR EN EL PUERTO
_delay_ms(1000);//ESPERO 1 SEGUNDO
}//FIN FOR
}//FIN WHILE
}//FIN MAIN
3.1.7. Practica
1. Modificar el ejemplo de uso para realizar un contador descendente 9-0.
2. Realizar un contador descendente de 9-0. Cuando el contador llegue a 0, activar un
LED por 3 segundos, luego reiniciar el conteo.
3. Realizar un contador ascendente/descendente automático, que cuente de 0-9 y luego
de 9-0 sucesivamente.
4. Realiza un contador ascendente 0-9 que disponga de un switch para iniciar el conteo.
5. Realizar un contador ascendente/descendente con dos switches (up, down), un
switch será para contar de manera ascendente (up) y el otro para contar de manera
descendente (down).
6. Realizar un contador ascendente/descendente automático con dos switches (run,
stop), de tal manera que cuando se pulsa run se realiza el conteo, cuando se pulsa
stop el conteo se detiene hasta pulsar de nuevo run.
3.1.8. Conclusión
Pedro Ramírez <pedroramirez22@gmail.com> 4