Você está na página 1de 18

PANEL ELECTRONICO DE LEDS

MATERIA: CIRCUITOS DIGITALES I


PRESENTADO POR:
MENDOZA YARESI ESTER C.
RODRIGUEZ PINO VICTOR H.
QUISPE HUGO J.
SEMESTRE IV
PUNO

2009

PERU

063817

INTRODUCCION
El presente trabajo es el resultado de la
colaboracin de todos los miembros
del grupo que contribuyeron con dicho
proyecto en forma continua.
Los resultados del proyecto sern
analizados en este informe de forma
matemtica y practica

INDICE
Objetivos..4
Materiales.4
Circuito Electrnico..5
Anlisis del Circuito.....9
1.- PIC.....9
2.- MAX 232.......16

3.- ULN2803......16
4.-Registros y transistores....17
Conclusiones13
Bibliografa..13

I.-

OBJETIVOS

Crear un panel de leds de 64x7 .

Realizar el anlisis de dicho panel

II.-

MATERIALES

III.-

CIRCUITO ELECTRONICO

Construccin Del esquema de la matriz.


Colocando los ctodos y nodos en serie segn su polarizacin el esquema
queda de la siguiente manera:

ETAPA DE CONTROL:

ETAPA DE POTENCIA:

CIRCUITO DEL PANEL CONECTADO CON LAS FORMAS BASICAS DE LA ETAPA


DE POTENCIA Y DE CONTROL

U11
D11
D12
D13
D14
D15
D16
D17
D18
D21
D22
D23
D24
D25
D26
D27
D28
D31
D32
D33
D34
D35
D36
D37
D38
D41
D42
D43
D44
D45
D46
D47
D48
D51
D52
D53
D54
D55
D56
D57
D58
D61
D62
D63
D64
D65
D66
D67
D68
D71
D72
D73
D74
D75
D76
D77
D78
D81
D82
D83
D84
D85
D86
D87
D88

NOT

U12
NOT

U13
NOT

CLK
8

9
CLK
8

C1/->

1D

1
2

CLK
8

&

3 D21
1D

D281
2

C1/->

&

CLK
8

SRG8

1D

4 D22

4 D32

5 D13

5 D33

6 D14

6 D24

6 D34

10 D15

10 D25

10 D35

11 D16

11 D26

11 D36

12 D17

12 D27

12 D37

D38
1
2

&

3 D41
1D
4
5
6

D48
1
2

SRG8

11
12

74LS164

9
CLK
8

C1/->

&

3 D51
1D

D58
1
2

SRG8

9
CLK
8

C1/->

&

3 D61
1D

4 D52

5 D53

5 D63

D68
1
2

U10
SRG8

9
CLK
8

C1/->

&

3 D71
1D

D78
1
2

SRG8

U6
NOT

C1/->

&

4 D82
5 D83

D64

6 D74

6 D84

10 D55

10 D65

10 D75

10 D85

11 D56

11 D66

11 D76

11 D86

12 57

12 D67

12 D77

12 D87

13 D58

13 D68

13 D78

13 D88

D54

NOT

1D

5 D73

D62

U15

D81

4 D72

13 D48
74LS164

U9

U5

10 D45

13 D38

13 D28

9
CLK8

C1/->

3 D31

4 D12

13

U8

U3

SRG8

D23

&

3 D11

C1/->

D18

DATA
1
2

SRG8

D44 D43 D42

SRG8

D18

U7

U2

D47 D46

U4

U16
NOT

U17
NOT

U18

74LS164
74LS164

74LS164

74LS164

74LS164

NOT

74LS164

VT1
RXD
TXD
RTS
CTS

U1
13
12
11
10
9
8
7
6
3
2
DATA1
CLK18
17

RB7/T1OSI
RB6/T1OSO/T1CKI
RB5
RB4
RB3/CCP1
RB2/TX/CK
RB1/RX/DT
RB0/INT
RA4/T0CKI/CMP2
RA3/AN3/CMP1
RA5/MCLR
RA2/AN2/VREF
RA1/AN1
RA6/OSC2/CLKOUT
RA0/AN0
RA7/OSC1/CLKIN
PIC16F628A

4
15
16

IV.-

ANALISIS DEL CIRCUITO

Por orden de conexin el siguiente circuito presenta el siguiente anlisis:

1.- PIC:
Para nuestro caso se uso el PIC16F628A teniendo las siguientes Caractersticas:

Usando a la vez para propsitos del panel el siguiente lenguaje de programacin en lenguaje C

#include <18F452.h>
#include letrero.h>
#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, BROWNOUT, BORV20,
NOPUT, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC,
NOCPD, NOCPB, NOEBTR, NOEBTRB
#use delay(clock=20000000)
#use rs232(baud=57600,xmit=PIN_C6,rcv=PIN_C7)
//Defines-----------------------------------------#BYTE port_a = 0x0f80
#BYTE port_b = 0x0f81
#BYTE port_c = 0x0f82
#BYTE port_d = 0x0f83
#BYTE port_e = 0x0f84
#BYTE tris_a = 0x0f92
9

#BYTE tris_b = 0x0f93


#BYTE tris_c = 0x0f94
#BYTE tris_d = 0x0f95
#BYTE tris_e = 0x0f96
#DEFINE CLOCK PIN_E0
#DEFINE DATA PIN_E1
#DEFINE CLR PIN_E2
//Definicion de funciones
void fConfigurar_puertos(void);
void fdata(void);
void fclock(void);
void freset(void);
unsigned int8 virtualwindow(int8,int8);
void Barrido(void);
int8 i,longitud = 128, posicion=0,tempo,ApuntaCaracter=0,IndiceByte=0,Indice;
//letra mayuscula de grosor simple
unsigned int8 letramay[26][5]={
{0b10000000,
0b01111110,
0b11011111,
0b01110111,
0b01000010,
0b10111111,
0b01110111,
0b01101110,
0b00000000},//M
0b01110111,
0b10110001},//G
{0b00000000,
0b10000000},//A
{0b00000000,
0b10011111,
{0b00000000,
0b11101111,
0b11100111,
0b01101110,
0b11101111,
0b11111001,
0b01101110,
0b11101111,
0b00000000},//N
0b01101110,
0b00000000},//H
{0b10000001,
0b10010001},//B
{0b01111110,
0b01111110,
{0b10000001,
0b01111110,
0b01111110,
0b01111110,
0b00000000,
0b01111110,
0b01111110,
0b01111110,
0b10000001},//O
0b01111110,
0b01111110},//I
{0b00000000,
0b10111101},//C
{0b01111111,
0b01110111,
{0b00000000,
0b01111111,
0b01110111,
0b01111110,
0b00000000,
0b01110111,
0b01111110,
0b01111110,
0b10001111},//P
0b01111110,
0b01110001},//J
{0b10000001,
0b10000001},//D
{0b00000000,
0b01111110,
{0b00000000,
0b11101111,
0b01111010,
0b01101110,
0b11101111,
0b01111101,
0b01101110,
0b11010011,
0b10000010},//Q
0b01101110,
0b00111100},//K
{0b00000000,
0b01101110},//E
{0b00000000,
0b01110111,
{0b00000000,
0b11111110,
0b01110111,
0b01110111,
0b11111110,
0b01110011,
0b01110111,
0b11111110,
0b10001100},//R
0b01110111,
0b11111100},//L
{0b10011101,
0b01110111},//f
{0b00000000,
0b01101110,
{0b10000001,
0b10111111,
0b01101110,

10

0b01101110,
0b11111101,
0b00111100},//X
0b10110001},//S
0b11111110,
{0b00111111,
{0b01111111,
0b11111101,
0b11011111,
0b01111111,
0b00000011},//V
0b11100000,
0b00000000,
{0b00000000,
0b11011111,
0b01111111,
0b11111101,
0b00111111},//Y
0b01111111},//T
0b11110011,
{0b00111000,
{0b00000001,
0b11111101,
0b01110110,
0b11111110,
0b10000000},//W
0b01101110,
0b11111110,
{0b00111100,
0b01011110,
0b11111110,
0b11011011,
0b00111100}//Z
0b00000001},//U
0b11000111,
};
{0b00000011,
0b11011011,
//letra minuscula en realidad muestra Letra mayuscula de doble grosor
unsigned int8 letramin[26][5]={
{0b10000000,
{0b00000000,
{0b10000001,
0b00000000,
0b00000000,
0b00000000,
0b00110011,
0b11100111,
0b00111100,
0b00000000,
0b00000000,
0b00000000,
0b10000000},//A
0b00000000},//H
0b10000001},//O
{0b00000000,
{0b00111100,
{0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00101100,
0b00000000,
0b01110011,
0b00000000,
0b00111100,
0b00000111,
0b10010001},//B
0b00111100},//I
0b10001111},//P
{0b10000001,
{0b00111111,
{0b10000001,
0b00000000,
0b00000000,
0b00000000,
0b00111100,
0b00000000,
0b01111010,
0b00111100,
0b00111100,
0b00000001,
0b10011001},//C
0b00110001},//J
0b10000010},//Q
{0b00000000,
{0b00000000,
{0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00111100,
0b11000111,
0b01110111,
0b00000000,
0b10010011,
0b00000000,
0b10000001},//D
0b00111100},//K
0b10001100},//R
{0b00000000,
{0b00000000,
{0b10011101,
0b00000000,
0b00000000,
0b00001100,
0b00100100,
0b11111100,
0b00100100,
0b00100100,
0b11111100,
0b00100000,
0b00100100},//E
0b11111100},//L
0b10110001},//S
{0b00000000,
{0b00000000,
{0b00111111,
0b00000000,
0b10000000,
0b00000000,
0b00110011,
0b11001111,
0b00000000,
0b00110011,
0b10000000,
0b00111111,
0b00110011},//f
0b00000000},//M
0b00111111},//T
{0b10000001,
{0b00000000,
{0b00000001,
0b00000000,
0b10000000,
0b00000000,
0b00100100,
0b11100111,
0b11111100,
0b00101100,
0b00000001,
0b00000000,
0b10010001},//G
0b00000000},//N
0b00000001},//U

11

{0b00000011,
0b00000001,
0b11111100,
0b00000001,
0b00000011},//V
{0b00000000,
0b00000001,
0b11100111,
0b00000001,
unsigned int8 simbolos[17][5]={
{0b10000001,
0b01110110,
0b01101110,
0b01011110,
0b10000001},//0
{0b11011110,
0b10111110,
0b01111110,
0b00000000,
0b11111110},//1
{0b10110000,
0b01100000,
0b01101100,
0b00011100,
0b10011100},//2
{0b10111101,
0b01101110,
0b01101110,
0b00000000,
0b10011001},//3
{0b11000111,
0b10110111,
0b01110111,
0b00000000,
0b00000000},//4
{0b00001101,
0b00001100,
0b01101110,
0b01100000,

0b10000000},//W
{0b00111100,
0b10011001,
0b11000011,
0b10011001,
0b00111100},//X
{0b00011111,
0b11000000,
0b11100000,

0b11001111,
0b00111111},//Y
{0b00111000,
0b00110000,
0b01100110,
0b00001100,
0b00011100}//Z
};

0b01110001},//5
{0b10000001,
0b00000000,
0b01101110,
0b00100000,
0b10110001},//6
{0b00111111,
0b01111111,
0b01110000,
0b00000000,
0b00011111},//7
{0b10010001,
0b01101110,
0b01101110,
0b01101110,
0b10010001},//8
{0b10011101,
0b01101110,
0b01101110,
0b01101110,
0b10000001},//9
{0b00000000,
0b11101111,
0b11101111,
0b11010011,
0b00111100},//K
{0b00000000,
0b11111110,
0b11111110,

0b11111110,
0b11111100}//L
{0b00000000,
0b11101111,
0b11101111,
0b11010011,
0b00111100},//K
{0b00000000,
0b11111110,
0b11111110,
0b11111110,
0b11111100}//L
{0b00000000,
0b11101111,
0b11101111,
0b11010011,
0b00111100},//K
{0b00000000,
0b11111110,
0b11111110,
0b11111110,
0b11111100}//L
{0b00000000,
0b11101111,
0b11101111,
0b11010011,
0b00111100}//K
};

#INT_RDA //aqu llega cuando el flanco es izquierdo


void inter_rxserial()
{char caracter;
do{
caracter=getchar();
//espera un caracter
write_eeprom(posicion,caracter);
printf("%C %U",read_eeprom(posicion), posicion);
if(caracter==13)

12

{
tempo++;
write_eeprom(posicion,'\0');
printf("%C%Cfin de mensaje %U",13,10,tempo);
}
posicion++;
if(posicion==255)
{
write_eeprom(posicion,'\0');
printf("%C%Cla memoria ha sido excedida",13,10);
}
}while(caracter!=13&&posicion<255);
/*enciende un LED de fin de escritura si es q se retorno de lainterrupcion*/
printf("%C%Cfin de escritura de datos",13,10);
}
//-------------------------------------------------//Main---------------------------------------------//-------------------------------------------------void main()
{ int8 j;
fConfigurar_puertos();
output_high(CLOCK); //pin RELOJ = alto
output_low(DATA); //pin dataDATA bajo
output_high(CLR); //se prohibe reset en los registros
/*habilita la interrupcion externa y luego las globales*/
enable_interrupts(INT_RDA);
enable_interrupts(global);
barrido();
}
//-------------------------------------------------//-BARRIDO ESTATICO//-------------------------------------------------/*La siguiente duncion configura los puertos de acuerdo a lo requerido*/
void Barrido(void)
{
freset(); //se resetea los registros borrando antes los puertos
//condiciones de inicio de barrido
ApuntaCaracter=0;
IndiceByte=0;
tempo=virtualwindow(ApuntaCaracter,Indice);
if(tempo==255)//ve si es fin de linea
return ;
for(i=1;i<longitud;i++)//empieza en 1 por que ya se encuentra en la posicion 1
{
port_b=tempo;
port_d=tempo;
delay_ms(1000);// hace que se pueda ver el barrido se debe calibrar
tempo=virtualwindow(ApuntaCaracter,Indice);
if(tempo==255)
return ;

13

if(Indice==0)
{//espacio
port_b=255;
port_d=255;
fclock();
fclock();
fclock();
}
port_b=255;//con esto evito que se mande un dato
port_d=255;
fclock();
}
//-------------------------------------------------//- FUNCIONES//-------------------------------------------------/*La siguiente duncion configura los puertos de acuerdo a lo requerido*/
void fConfigurar_puertos(void){
tris_a = 0b11000000; //PORTA salida
tris_b = 0b00000000; //PORTB salida
//tris_c se dfine en el progrrama
tris_d = 0b00000000; //PORTD salida
// tris_e = 0b11111000; //PORTE se configura cada vez que se usa
}
//-------------------------------------------------/*carga el primer registro con un 1*/
//-------------------------------------------------void fdata(void)
{
output_high(DATA); //se pone data a alto
output_low(CLOCK); //estas dos lineas hacen un clock
output_high(CLOCK);
output_low(DATA); //aseguramos cargar los reg con un pulso
}
//-------------------------------------------------/*manda un pulso de reloj a los registros*/
//-------------------------------------------------void fclock(void)
{
output_low (CLOCK);
output_high(CLOCK);
}
//-------------------------------------------------/*produce reseteo en los registros de desplazamiento (toda sus salidas ceros)

14

y carga la primera salida con un 1*/


//-------------------------------------------------void freset(void)
{
port_b = 255;//con estos valores se borran los puertos
port_d = 255;//aunque no es muy necesario
output_low (CLR);
output_high(CLR);
fdata();
}
//-------------------------------------------------//**********************VirtualWindow***************************************
*****************
// FUNCION: lee un byte correspondiente a la ventana virtual ,si se vuelve a llamar lee
el sig byte
//
puede desplazarse la ventana sobre el mensaje, empezando en cualquier parte de la
eeprom
//
como punteros, es optima, no importa la longitud del mensaje.
// PRECOND: ApuntaCaracter(a)= indice del caracter dentro de la eeprom(se incrementa
automaticamente)
//
IndiceByte(b)= [0,4](se incrementa automaticamente)
// POSCOND: retorna el byte correspondiente a un caracter, si es fin de linea retorna 0
//-------------------------------------------------unsigned int8 virtualwindow(int8 a, int8 b)
{
tempo=read_eeprom(a);
//si es fin de linea retorna 0
if(tempo=='\0')
return 255;
Indice=IndiceByte;
//si el indice de byte es 4 a la siguiente accion sera 0 si es menor se incrementara
if(IndiceByte<4)
IndiceByte++;
else{
ApuntaCaracter++;
IndiceByte=0;}
if(tempo>='A'&&tempo<='Z')
return letramay[tempo-'A'][Indice];
if(tempo>='a'&&tempo<='z')
return letramin[tempo-'a'][Indice];
//if()falta deducir para los simbolos
}

15

EL MAX 232
El MAX232 es un circuito integrado que convierte los niveles de las lneas de un puerto
serie RS232 a niveles TTL y viceversa. Lo interesante es que slo necesita una
alimentacin de 5V, ya que genera internamente algunas tensiones que son necesarias
para el estndar RS232. Otros integrados que manejan las lneas RS232 requieren dos
voltajes, +12V y -12V.

EL ULN2803:
Dentro del ULN2803 se encuentran 8 transistores NPN Darlington. Es un circuito integrado
ideal para ser empleado como interfaz entre las salidas de un PIC o cualquier integrante de
las familias TTL o CMOS y dispositivos que necesiten una corriente ms elevada para
funcionar.
Todas sus salidas son a colector abierto y se dispone de un diodo para evitar las corrientes
inversas. El modelo ULN2803 esta especialmente diseado para ser compatible con entradas
TTL, mientras que el modelo ULN2804 est optimizado para voltajes entre 6 y 15 volt,
tpicos de la familia CMOS.
En la construccin del panel hemos utilizado este integrado en el panel, como Mdulo Reles
x 8 que forma parte del PIC16F628A.

16

LOS TRANSISTORES:
Hemos utilizado los TIP para propsitos de amplificacin de seal

17

V.-

CONCLUSIONES
Se ha visto la construccin del panel en su forma esquemtica y los resultados en
su forma prctica vistos en su exposicin

VI.-

BIBLIGRAFIA

www.foroselectronica.com
www.electronicafacil.com

18

Você também pode gostar