Está en la página 1de 5

Clase 2

Ejemplo 5 display de 7 segmentos


================================
A B C D E F G DECIMAL
0 0 0 0 0 0 1 0
1 0 0 1 1 1 1 1
0 0 1 0 0 1 0 2
0 0 0 0 1 1 0 3
1 0 0 1 1 0 0 4
0 1 0 0 1 0 0 5
0 1 0 0 0 0 0 6
0 0 0 1 1 1 1 7
0 0 0 0 0 0 0 8
0 0 0 0 1 0 0 9
0 0 0 1 0 0 0 A
1 1 0 0 0 0 0 B
0 1 1 0 0 0 1 C
1 0 0 0 0 1 0 D
0 1 1 0 0 0 0 E
0 1 1 1 0 0 0 F

#include <REGX52.H>
#include "delay.c"
char tabla[16]={0X01,0X4F, 0X12, 0X06, 0X4C, 0X24, 0X20, 0X0F, 0X00, 0X04, 0X08,
0X60, 0X31, 0X42, 0X30, 0X38};
void main ()
{
char a;
while (1!=0)
{
for (a=0; a<16; a++)
{
P2=tabla[a];
delay_ms(500);
}
}

Ejemplo 6 con regulacion de retraso


===================

#include <REGX52.H>
#include "delay.c"
sbit pulso=P0^0;
char tabla[16]={0X01,0X4F, 0X12, 0X06, 0X4C, 0X24, 0X20, 0X0F, 0X00, 0X04, 0X08,
0X60, 0X31, 0X42, 0X30, 0X38};
void my_delay()
{
while(pulso==0);
while(pulso==1);
}
void main ()
{
char a;
while (1!=0)
{
for (a=0; a<16; a++)
{
P2=tabla[a];
delay_ms(500);
}
}
}

Ejemplo 7 multiplexacion de displays


====================================
#include <REGX52.H>
#include "delay.c"
char tabla[16]={0X01,0X4F, 0X12, 0X06, 0X4C, 0X24, 0X20, 0X0F, 0X00, 0X04, 0X08,
0X60, 0X31, 0X42, 0X30, 0X38};
void mostrar (char D1, char D2)
{
char a;
P1=tabla[D2];
P2=1;
delay_ms(2);
P2=0;
P1=tabla[D1];
P2=2;
delay_ms (2);
P2=0;
}
void main ()
{
while(1!=0)
{
mostrar(6,9);
}
}

contador con dos displays multiplexados


======================================

#include <REGX52.H>
#include "delay.c"
char tabla[16]={0X01,0X4F, 0X12, 0X06, 0X4C, 0X24, 0X20, 0X0F, 0X00, 0X04, 0X08,
0X60, 0X31, 0X42, 0X30, 0X38};
void mostrar (char D1, char D2)
{
char a;
for (a=0; a<50;a++)
{
P1=tabla[D2];
P2=1;
delay_ms(2);
P2=0;
P1=tabla[D1];
P2=2;
delay_ms (2);
P2=0;
}
}
void main ()
{
char a, b;
while(1!=0)
{
mostrar (a, b);
if(b++>=9)
{
b=0;
if(a++>=9)
{
a=0;
b=0;
}
}
}
}

ejemplo 8 contador en display multiplexado con pulsador


=======================================

#include <REGX52.H>
#include "delay.c"
sbit boton=P3^0;
char tabla[16]={0X01,0X4F, 0X12, 0X06, 0X4C, 0X24, 0X20, 0X0F, 0X00, 0X04, 0X08,
0X60, 0X31, 0X42, 0X30, 0X38};
void mostrar (char D1, char D2)
{
P1=tabla[D2];
P2=1;
delay_ms(2);
P2=0;
P1=tabla[D1];
P2=2;
delay_ms (2);
P2=0;
}
void main ()
{
char a, b;
while(1!=0)
{
mostrar (a, b);
if(boton==0)
{
if(b++>=9)
{
b=0;
if(a++>=9)
{
a=0;
b=0;
}
}
}
while(boton==0) mostrar (a,b);
}
}

ejemplo 9 display de 8 digitos de 16 segmentos


==============================================

7733 H
FF00 O
FF0F L
7730 A
FA33 M
FF03 U
EE33 N
DDC0 D
FF00 O
FF0F L
FF00 O
FF0C C
FF00 O
FFFF _
#include <REGX52.H>
#include "delay.c"
const int tabla[16]={0X7733, 0XFF00, 0XFF0F, 0X7730, 0XFFFF, 0XFA33, 0XFF03, 0XE
E33, 0XDDC0, 0XFF00, 0XFFFF, 0XFF0F, 0XFF00, 0XFF0C, 0XFF00};
int disp [8]={0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF};
void my_port (int d)
{
P2=d;
P3=d>>8;
}
void mostrar ()
{
char c;
P1=1;
for(c=0; c<8; c++)
{
my_port(disp[c]);
delay_ms(2);
P1=P1<<1;
}
P1=0;
}
void nuevo()
{
char a;
for(a=0; a<8; a++)
{
disp[a]=disp[a+1];
}
}
void main()
{
char c, d;
while(1!=0)
{
for(c=0; c<16; c++)
{
disp [7]=tabla[c];
for(d=0; d<10; d++)
{
mostrar();
}
nuevo();
}
}
}

También podría gustarte