INSTITUTO POLITECNICO NACIONAL ESIME CULHUACAN 1
Practica 4: Corrimiento con display de 7
segmentos
(Septiembre de 2022)
Flores Farías Daniel, López Mata Dulce María, alumnos ICE ESIME CULHUACÁN
Objetivo: Desarrollar un programa para realizar un shift
utilizando cuatro pantallas multiplexo de 7 segmentos.
I. INTRODUCCION
Es un dispositivo opto-eléctrico el cual permite crear una
visualización de números del 0 al 9. Estos elementos
fueron implementados en los dispositivos electrónicos a
partir de la década de los 70´s y 80´s. en la actualidad este
tipo de elementos se utilizan en proyectos educativos y en
sistemas vintage. Igualmente, por su fácil acceso, costo y
uso se utilizan en relojes o marcadores digitales como por
ejemplo los marcadores de canchas deportivas. Este tipo
de elemento funciona al activar cada uno de los leds
necesarios para formar el numero deseado. MICROCONTROLADOR PIC Los PIC (Controlador de
Interfaz Periférico) son una familia de microcontroladores tipo
Los 7 segmentos están construidos con RISC fabricados por Microchip Technology Inc. Se diseñó para
diodos LED's, pero requieren una corriente máxima. En ser usado con la nueva CPU de 16bitsCP16000.
otras palabras, se necesita integrar un a resistencia para
Se pueden considerar tres grandes gamas de MCU PIC en la
actualidad: Los básicos (Linebase), los de medio rango
limitar el flujo de corriente. Existen dos tipos de displays, (MidRange) y los de alto desempeño (high performance).
los de cátodo común y de ánodo común. Los PIC18 son considerados de alto desempeño y tienen
entre s us miembros a PIC con módulos de comunicación y
Este tipo de display es aquel que tiene el pin común protocolos avanzados (USB,Ethernet,Zigbee por ejemplo). El
conectado a los negativos de los LED´s. por ende, este PIC utilizado es el 18F4550 de 8 bits, cuenta con 35
tipo de display se controla con un “1” lógico o también se Entradas/Salidas programables.
puede controlar con voltaje positivo.
Este tipo de display es aquel que tiene todos los ánodos
conectados al mismo punto. Este tipo de display puede ser
controlado por “0” en otras palabras el microcontrolador
o microprocesador, le asigna un cero lógico al segmento.
INSTITUTO POLITECNICO NACIONAL ESIME CULHUACAN 2
int
di[12]={0x00,0x00,0x00,0x00,0x76,0x3F,0x38,0x77,0x00,0x
00,0x00,0x00};
int
dd[12]={0x00,0x00,0x00,0x00,0x77,0x38,0x3F,0x76,0x00,0x
00,0x00,0x00};
int ent=0;
void main(void)
{
OSCCON=0b01100000;
TRISB=0x01;
LATB=0x00;
TRISD=0x00;
LATD=0x00;
TRISA=0x00;
LATA=0x00;
II. COMPONENTES PARA ARMAR EL CIRCUITO
INTCONbits.INT0IE=1;
• PROTOBOARD [Link]=1;
INTCON2bits.INTEDG0=0;
• PIC 18F4550
• Jumpers while(1)
• 4 display de 7 segmentos {
• 4 transistores BJT NPN if(ent==1)
• Programador de PICs {
• 2 Push Botton LATA=0x08;
• Resistores LATD=di[4];
__delay_ms(20);
LATA=0x04;
LATD=di[5];
III. DESARROLLO __delay_ms(20);
LATA=0x02;
Construir el sistema electrónico de la figura y programar el
LATD=di[6];
microcontrolador.
__delay_ms(20);
LATA=0x01;
LATD=di[7];
__delay_ms(20);
}
else if(ent==2)
{
for(int i=0;i<8;i++)
for(int k=0;k<10;k++)
{
LATA=0x08;
LATD=di[i];
__delay_ms(20);
LATA=0x04;
LATD=di[i+1];
__delay_ms(20);
LATA=0x02;
IV. CODIGO DEL PROGRAMA REALIZADO LATD=di[i+2];
__delay_ms(20);
#include<xc.h> LATA=0x01;
#include"REGISTROS.h" LATD=di[i+3];
#define _XTAL_FREQ 4000000 __delay_ms(20);
void __interrupt() externa(); if(ent!=2)
{
LATD=0x00;
INSTITUTO POLITECNICO NACIONAL ESIME CULHUACAN 3
LATA=0b00000000; VI. CONCLUSIÓN
}
} En esta practica tomamos en cuenta un ejercicio realizado en
}
clase pudimos observar en el modulo de display de 7 segmentos
else if(ent==3)
el corrimiento
{
for(int i=0;i<8;i++)
for(int k=0;k<10;k++) REFERENCES
{ [1] Display 7 Segmentos ([Link])
LATA=0x08; [2] Contador Ascendente 2 Displays 7 Segmentos, PIC18F4550, Pic C
LATD=dd[i+3]; Compiler – Electrónica para todos ([Link])
__delay_ms(20);
LATA=0x04;
LATD=dd[i+2];
__delay_ms(20);
LATA=0x02;
LATD=dd[i+1];
__delay_ms(20);
LATA=0x01;
LATD=dd[i];
__delay_ms(20);
if(ent!=3)
{
LATD=0x00;
LATA=0b00000000;
}
}
}
}
}
void __interrupt() externa()
{
if(INTCONbits.INT0IF==1)
{
ent++;
}
INTCONbits.INT0IF=0;
}
V. RESULTADOS