PANEL ELECTRONICO DE LED´S MATERIA: CIRCUITOS DIGITALES I PRESENTADO POR: MENDOZA YARESI ESTER C. RODRIGUEZ PINO VICTOR H. 063817 QUISPE HUGO J. SEMESTRE IV
Dec 05, 2015
PANEL ELECTRONICO DE LED´S
MATERIA: CIRCUITOS DIGITALES I
PRESENTADO POR:
MENDOZA YARESI ESTER C.RODRIGUEZ PINO VICTOR H. 063817QUISPE HUGO J.
SEMESTRE IV
PUNO - PERU
2009
2
INTRODUCCION
El presente trabajo es el resultado de la colaboración de todos los miembros del grupo que contribuyeron con dicho proyecto en forma continua.
Los resultados del proyecto serán analizados en este informe de forma matemática y practica
INDICE
Objetivos…………………………………………………………………..4
Materiales………………………………………………………………….4
Circuito Electrónico………….……….……………………………………5
Análisis del Circuito...……………………………………………………..9
1.- PIC……………………..……………………………………...9
2.- MAX 232…………..…………..………………………….……..16
3.- ULN2803….…………………………..……………….……..16
4.-Registros y transistores.……….………………………………..17
Conclusiones………………………………………………………………13Bibliografía……………………………………………..…………………13
3
I.- OBJETIVOS
Crear un panel de leds de 64x7 .
Realizar el análisis de dicho panel
II.- MATERIALES
4
III.- CIRCUITO ELECTRONICO
Construcción Del esquema de la matriz.Colocando los cátodos y ánodos en serie según su polarización el esquema queda de la siguiente manera:
5
ETAPA DE CONTROL:
6
ETAPA DE POTENCIA:
7
CIRCUITO DEL PANEL CONECTADO CON LAS FORMAS BASICAS DE LA ETAPA DE POTENCIA Y DE CONTROL
CLK
D81
D88
D82
D83
D84
D85
D87
D86
D81
D82
D83
D84
D85
D86
D87
D88
CLK
DATA D11
D12
D13
D14
D15
D16
D17
D18
CLK
D18
CLK
D21
D22
D23
D24
D25
D26
D27
D28
CLK
D28 D31
D32
D33
D34
D35
D36
D38
D37
CLK CLK CLK CLK
D71
D72
D73
D74
D75
D76
D77
D78
D78D61
D62
D63
D64
D65
D66
D67
D68
D68D58D48D38 D41
D42
D43
D44
D45
D46
D47
D48
D51
D52
D53
D54
D55
D56
57
D58
D11
D12
D13
D14
D15
D16
D17
D18
D21
D22
D23
D26
D27
D28
D24
D25
D78
D77
D76
D75
D74
D73
D72
D71
D68
D67
D66
D65
D64
D63
D62
D61
D57
D56
D55
D54
D53
D52
D51
D48
D47
D46
D45
D43
D42
D41
D44
D38
D37
D36
D35
D34
D33
D32
D31
D58
DATA
SRG8R
C1/->
& 1D1 32
4
5
6
10
8
11
12
9
13
U2
74LS164
SRG8R
C1/->
& 1D1 32
4
5
6
10
8
11
12
9
13
U3
74LS164
SRG8R
C1/->
& 1D1 32
4
5
6
10
8
11
12
9
13
U4
74LS164
SRG8R
C1/->
& 1D1 32
4
5
6
10
8
11
12
9
13
U5
74LS164
RA7/OSC1/CLKIN16
RB0/INT6
RB1/RX/DT7
RB2/TX/CK8
RB3/CCP19
RB410
RB511
RB6/T1OSO/T1CKI12
RB7/T1OSI13
RA0/AN017
RA1/AN118
RA2/AN2/VREF1
RA3/AN3/CMP12
RA4/T0CKI/CMP23
RA6/OSC2/CLKOUT15
RA5/MCLR4
U1
PIC16F628A
SRG8R
C1/->
& 1D1 32
4
5
6
10
8
11
12
9
13
U8
74LS164
SRG8R
C1/->
& 1D1 32
4
5
6
10
8
11
12
9
13
U9
74LS164
SRG8R
C1/->
& 1D1 32
4
5
6
10
8
11
12
9
13
U7
74LS164
SRG8R
C1/->
& 1D1 32
4
5
6
10
8
11
12
9
13
U10
74LS164
RXD
RTS
TXD
CTS
VT1
U11NOT
U12NOT
U13NOT
U15NOT
U16NOT
U17NOT
U18NOT
U6NOT
8
IV.- ANALISIS DEL CIRCUITO
Por orden de conexión el siguiente circuito presenta el siguiente análisis:
1.- PIC:
Para nuestro caso se uso el PIC16F628A teniendo las siguientes Características:
Usando a la vez para propósitos del panel el siguiente lenguaje de programación 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
9
#BYTE tris_a = 0x0f92#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 funcionesvoid 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 simpleunsigned int8 letramay[26][5]={ {0b10000000, 0b01110111, 0b01110111, 0b01110111, 0b10000000},//A {0b00000000, 0b01101110, 0b01101110, 0b01101110, 0b10010001},//B {0b10000001, 0b01111110, 0b01111110, 0b01111110, 0b10111101},//C {0b00000000, 0b01111110, 0b01111110, 0b01111110, 0b10000001},//D {0b00000000, 0b01101110, 0b01101110, 0b01101110, 0b01101110},//E {0b00000000, 0b01110111, 0b01110111, 0b01110111, 0b01110111},//f
{0b10000001, 0b01111110, 0b01000010, 0b01101110, 0b10110001},//G {0b00000000, 0b11101111, 0b11101111, 0b11101111, 0b00000000},//H {0b01111110, 0b01111110, 0b00000000, 0b01111110, 0b01111110},//I {0b01111111, 0b01111111, 0b00000000, 0b01111110, 0b01110001},//J {0b00000000, 0b11101111, 0b11101111, 0b11010011, 0b00111100},//K {0b00000000, 0b11111110, 0b11111110, 0b11111110, 0b11111100},//L
{0b00000000, 0b10111111, 0b11011111, 0b10111111, 0b00000000},//M {0b00000000, 0b10011111, 0b11100111, 0b11111001, 0b00000000},//N {0b10000001, 0b01111110, 0b01111110, 0b01111110, 0b10000001},//O {0b00000000, 0b01110111, 0b01110111, 0b01110111, 0b10001111},//P {0b10000001, 0b01111110, 0b01111010, 0b01111101, 0b10000010},//Q {0b00000000, 0b01110111, 0b01110111, 0b01110011, 0b10001100},//R
10
{0b10011101, 0b01101110, 0b01101110, 0b01101110, 0b10110001},//S {0b01111111, 0b01111111, 0b00000000, 0b01111111, 0b01111111},//T {0b00000001, 0b11111110, 0b11111110, 0b11111110,
0b00000001},//U {0b00000011, 0b11111101, 0b11111110, 0b11111101, 0b00000011},//V {0b00000000, 0b11111101, 0b11110011, 0b11111101, 0b10000000},//W {0b00111100, 0b11011011, 0b11000111,
0b11011011, 0b00111100},//X {0b00111111, 0b11011111, 0b11100000, 0b11011111, 0b00111111},//Y {0b00111000, 0b01110110, 0b01101110, 0b01011110, 0b00111100}//Z };
//letra minuscula en realidad muestra Letra mayuscula de doble grosorunsigned int8 letramin[26][5]={ {0b10000000, 0b00000000, 0b00110011, 0b00000000, 0b10000000},//A {0b00000000, 0b00000000, 0b00101100, 0b00000000, 0b10010001},//B {0b10000001, 0b00000000, 0b00111100, 0b00111100, 0b10011001},//C {0b00000000, 0b00000000, 0b00111100, 0b00000000, 0b10000001},//D {0b00000000, 0b00000000, 0b00100100, 0b00100100, 0b00100100},//E {0b00000000, 0b00000000, 0b00110011, 0b00110011, 0b00110011},//f {0b10000001, 0b00000000, 0b00100100, 0b00101100,
0b10010001},//G {0b00000000, 0b00000000, 0b11100111, 0b00000000, 0b00000000},//H {0b00111100, 0b00000000, 0b00000000, 0b00111100, 0b00111100},//I {0b00111111, 0b00000000, 0b00000000, 0b00111100, 0b00110001},//J {0b00000000, 0b00000000, 0b11000111, 0b10010011, 0b00111100},//K {0b00000000, 0b00000000, 0b11111100, 0b11111100, 0b11111100},//L {0b00000000, 0b10000000, 0b11001111, 0b10000000, 0b00000000},//M {0b00000000, 0b10000000, 0b11100111,
0b00000001, 0b00000000},//N {0b10000001, 0b00000000, 0b00111100, 0b00000000, 0b10000001},//O {0b00000000, 0b00000000, 0b01110011, 0b00000111, 0b10001111},//P {0b10000001, 0b00000000, 0b01111010, 0b00000001, 0b10000010},//Q {0b00000000, 0b00000000, 0b01110111, 0b00000000, 0b10001100},//R {0b10011101, 0b00001100, 0b00100100, 0b00100000, 0b10110001},//S {0b00111111, 0b00000000, 0b00000000, 0b00111111, 0b00111111},//T {0b00000001, 0b00000000,
11
0b11111100, 0b00000000, 0b00000001},//U {0b00000011, 0b00000001, 0b11111100, 0b00000001, 0b00000011},//V {0b00000000, 0b00000001,
0b11100111, 0b00000001, 0b10000000},//W {0b00111100, 0b10011001, 0b11000011, 0b10011001, 0b00111100},//X {0b00011111, 0b11000000,
0b11100000, 0b11001111, 0b00111111},//Y {0b00111000, 0b00110000, 0b01100110, 0b00001100, 0b00011100}//Z };
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,
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);
12
if(caracter==13) { 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)
13
return ; 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); } //--------------------------------------------------
14
/*produce reseteo en los registros de desplazamiento (toda sus salidas ceros) 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 líneas de un puerto serie RS232 a niveles TTL y viceversa. Lo interesante es que sólo necesita una alimentación de 5V, ya que genera internamente algunas tensiones que son necesarias para el estándar RS232. Otros integrados que manejan las líneas 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 más 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 diseñado para ser compatible con entradas TTL, mientras que el modelo ULN2804 está optimizado para voltajes entre 6 y 15 volt, típicos de la familia CMOS.
En la construcción del panel hemos utilizado este integrado en el panel, como Módulo Reles x 8 que forma parte del PIC16F628A.
16
LOS TRANSISTORES:
Hemos utilizado los TIP para propósitos de amplificación de señal
17
V.- CONCLUSIONES
Se ha visto la construcción del panel en su forma esquemática y los resultados en su forma práctica vistos en su exposición
VI.- BIBLIGRAFIA
www.foroselectronica.com
www.electronicafacil.com
18