Visualizacin de Datos usando Display 7 segmentos
Decodificador de Display 7 Segmentos
Un display 7 segmentos es un conjunto de 7 leds conectados y posicionados apropiadamente. Encendiendo algunos de ellos y apagando otros podemos ir formando diferentes nmeros
Cada segmento esta designado con una letra. El punto decimal se denomina P. A la derecha vemos una representacin del encapsulado con los pines para conectarlo a un circuito. A cada pin o pata del encapsulado le asignamos la letra correspondiente del segmento. Esto significa que, por ejemplo, con el pin "a" podemos controlar el estado del segmento "a"(encenderlo o apagarlo).
Tipos de Display 7 Segmentos
Existen dos tipos de Display: nodo Comn: es aquel donde los nodos de todos los leds se conectan internamente al punto de unin U y los ctodos se encuentran disponibles desde afuera del integrado.
2) Ctodo Comn: es aquel donde los ctodos de todos los leds se conectan internamente al punto de unin U y los nodos se encuentran disponibles desde afuera del integrado.
Tablas de Decodificacin de Display 7 Segmentos
Anodo
Anodo
Ejemplo1: Decodificacin de un display Anado comn usando un Decodificado 74LS47 y un PIC18F4550
#include <18f4550.h> #fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOBROWNOUT, USBDIV,PLL5,CPUDIV1,VREGEN,PUT,MCLR #use delay(clock=20000000) #Byte PORTD = 0xF83 #Byte TRISD = 0xF95
Void Main () { int i; TRISD=0X00; Port_b_pullups(True); PORTD=0; CICLO: FOR(i=0;i<=9;i++) { PORTD=i; delay_ms(500); }
Si se utiliza un decodificador de BCD a 7Segmentos Como el 74LS47, el programa que se implementa en el Micro enva los datos de 0 a 9 de forma directa al puerto
goto ciclo; }
Ejemplo 2 decodificacin de un display Anado comn sin usar Decodificador PIC18F4550
#include <18f4550.h> #fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOBROWNOUT,US BDIV,PLL5,CPUDIV1,VREGEN,PUT,MCLR #use delay(clock=20000000) #Byte PORTD = 0xF83 #Byte TRISD = 0xF95 BYTE CONST DISPLAY[16] ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18,0x08, 0x03,0x46,0x21,0x06,0x0E}; Void Main () { int i; TRISD=0X00; Port_b_pullups(True); PORTD=display[0]; CICLO: FOR(i=0;i<=9;i++) { PORTD=DISPLAY[i]; delay_ms(500); } i=0; goto ciclo; }
Si NO se utiliza un decodificador de BCD a 7Segmentos , el programa que se implementa en el Micro enva los datos al puerto de 0 a 9 de forma decodificada usando para ello un vector que este ejemplo se llama DIPLAY[16]
Ejemplo 3. Visualizacin usando display 7 Segmentos Ctodo Comn
Realizar la decodificacin del dato capturado por el PORTC y mostrarlo en un display 7 segmentos de ctodo Comn conectado en el PORTB.
#include <16f877.h> #byte PORTB = 0X06 #byte TRISB = 0X86 #byte PORTC = 0X07
/* direccin del puerto B */
/*tabla de los valores correspondientes en 7 segmentos ctodo comn */ BYTE CONST DISPLAY[16] = {63,6,91,79,102,109,125,7,127,103,119,124,57,94,121,113}; int PUNTERO; void main() { TRISB= 0x00 ; PORTB = 0;
/* puerto B como salida */
DO{ PUNTERO = PORTC; PORTB = DISPLAY[PUNTERO]; } while (TRUE) ; }
Ejemplo 4. Visualizacin usando display 7 Segmentos
nodo Comn
Realizar la decodificacin del dato capturado por el PORTC y mostrarlo en un display 7 segmentos de nodo Comn conectado en el PORTB.
#include <16f877.h> #byte PORTB = 0X06 #byte TRISB = 0X86 #byte PORTC = 0X07
/* direccin del puerto B */
/*tabla de los valores correspondientes en 7 segmentos nodo comn */ BYTE CONST DISPLAY[16] = {64,121,36,48,25,18,2,120,0,24,8,3,70,33,6,14}; int PUNTERO; void main() { TRISB= 0x00 ; PORTB = 0;
/* puerto B como salida */
DO{ PUNTERO = PORTC; PORTB = DISPLAY[PUNTERO]; } while (TRUE) ; }
Ejercicio 1: Configuracin de numero de conmutacin con Visualizacin en Diplay 7 Segmentos
Ejercicio 1.
Al circuito del Ejercicio 1a anexe un Display 7 segmentos nodo Comn como se indica en la figura. Escriba un programa que controle el sistema, segn los siguientes requerimientos: a. Cuando se enciende el sistema el led D1 se encuentra apagado. b. Usando las entradas conectadas en el PORTD se puede introducir un valor en binario de 0 a 15 dicho valor indica el numero de veces que debe conmutar el led D1. a. En el display 7 segmentos se debe visualizar el numero programado en el PORTD (0,1,2,3,A,B..F) b. Cuando se presione El interruptor S1 el led D1 debe iniciar la conmutacin tantas veces como se haya programado en el PORTD , dicha conmutacin debe ser por periodos de 1 segundo, es decir 500ms apagado y 500 ms encendido. Adems por cada conmutacin en el display se debe generar un conteo descendente. c. Cuando el led termine de conmutar el numero de veces programado, debe apagarse y el sistema regresa a su estado inicial.
S1
Evidencias: Debe realizar el diagrama de flujo, escribir el cdigo y compilarlo usando CCS compiler y simularlo usando Proteus.
Ejemplo 5: Visualizacin de 2 dgitos usando display 7 Segmentos nodo Comn de forma multiplexada
El siguiente programa visualiza de forma multiplexada en dos display 7 segmentos el contenido de una variable interna que cambia de 0 a 99
#include <18f4550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP, NODEBUG,NOBROWNOUT,USBDIV, PLL5,CPUDIV1,VREGEN,PUT,MCLR #use delay(clock=20000000) #Byte PORTA = 0xF80 #Byte TRISA = 0xF92 #Byte PORTB = 0xF81 #Byte TRISB = 0xF93 #Byte PORTC = 0xF82 #Byte TRISC = 0xF94 #Byte PORTD = 0xF83 #Byte TRISD = 0xF95 #Byte PORTE = 0xF84 #Byte TRISE = 0xF96 #bit RB0 = PORTB.0 #bit RB1 = PORTB.1 Void Main () { int i,j,decena,unidad; TRISD=0X00; TRISB=0X00; Port_b_pullups(True); PORTD=display[0]; CICLO: FOR(i=0;i<=99;i++) { Decena=i/10; Unidad=i%10; for(j=0;j<50;j++) { PORTD=DISPLAY[Decena]; RB0=1; RB1=0; delay_ms(25); PORTD=DISPLAY[Unidad]; RB0=0; RB1=1; delay_ms(25); } } goto CICLO; }
BYTE CONST DISPLAY[16]={0x40,0x79,0x24,0x30, 0x19,0x12,0x02,0x78,0x00,0x18,0x 08,0x03,0x46,0x21,0x06,0x0E};
Ejercicio 2: Visualizacin de 2 dgitos usando display 7 Segmentos nodo Comn
Escriba un programa que realice un incremento una variable interna de 0 a 99 y visualice en los display 7 segmentos como se muestra en la figura . Compilar en CCSC y simular en Proteus.
Visualizacin de 4 dgitos usando display 7 Segmentos nodo Comn de forma multiplexada con el modulo 7SEG_Board
Se pueden conectar varios display 7 segmentos de forma multiplexada Optimizando los pines de conexin. En la figura de la izquierda se muestra el sistema 7SEG_BOARD V1.0, que permite la manipulacin de 4 display 7 segmentos anudo comn, usando el registro de corrimiento HC4094 que permite convertir datos de 8 bis seriales en un dato paralelo. El modulo 7SEG_Board es un accesorio diseado para trabajar con sistema de entrenamiento PIC_TRAINER. Para este modulo se tiene a disposicin Una librera para el compilador CCSC #include <ac7seg.c> Las funciones disponibles en esta librera son las siguiente: DISPLAY_7SEG (int16 valor); esta librera permite visualizar en el modulo un entero de 16 bits de 0 a 9999. DISPLAY_MSG(MENSAJE); esta librera permite visualizar un mensaje conformado por cuatro letras validas para Este tipo de display. Donde MENSAJE es un vector de 4 valores en cdigo ASCII.
Ejemplo 6: Visualizacin de 4 dgitos de forma multiplexada usando el Modulo 7SEG_BOARD V1.0 y el sistema de entrenamiento PICTRAINER V1.3
El siguiente programa visualiza de forma multiplexada en 4 display 7 segmentos el contenido de una variable interna que cambia de 0000 a 9999
#include <18f4550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG, NOBROWNOUT,USBDIV,PLL5,CPUDIV1,VREGEN,PUT,MCLR #use delay(clock=20000000) #include <ac7seg.c> Void Main () { int j; int16 i;
CICLO: for(i=0;i<=9999;i++) { for(j=0;j<=10;j++) { DISPLAY_7SEG(i); } } goto ciclo; }
Ejercicio 3 : Visualizacin de 4 dgitos de forma multiplexada usando el Modulo 7SEG_BOARD V1.0 y el sistema de entrenamiento PICTRAINER V1.3
Escriba un programa que permita controlar el incremento de una variable interna que vare entre 0000 y 9999. Inicialmente la variable debe estar en 0000 y Visualizar en el arreglo de los display. Si se presiona el interruptor START el incremento se inicia. Si se presiona PAUSE el incremento se detiene n el valor actual. Si se presiona STOP la variable regresa a cero (0000) y regresa nuevamente a espera un START.