Autor Tema: DISPLAY  (Leído 2075 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado neosud

  • PIC12
  • **
  • Mensajes: 51
DISPLAY
« en: 06 de Marzo de 2006, 15:10:00 »
HOLA AMIGOS COMO ESTAN, QUISIERA HACER UNA CONSULTA EN CUANTO A LOS DISPLAY.
CUANDO QUIERO HACER UN CONTADOR Q CUENTE LOS PULSOS ENTRANTES POR RA0 DE UN PIC16F877A Y  SIENDO EL CONTADOR DE 6 DIGITOS, OBSERVO Q LA VELOCIDAD DE CONTEO ES LENTA YA Q DE UNA TARJETA EXTERNA GENERO LOS PULSOS Y CUANDO ESTOS INGRESAN A LA TARJETA DEL CONTADOR A UNA FRECUENCIA CADA VEZ MAYOR, EL CONTADOR PIERDE DE LEER MUCHOS PULSOS A PESAR DE ESTAR TRABAJANDO A UNA VELOCIDAD DE 20MHZ.

ESTE ES EL PROGRAMA:

DEVICE 16F877A
XTAL=20

DIM _U AS BYTE
DIM _D AS BYTE
DIM _C AS BYTE
DIM _M AS BYTE
DIM UM AS BYTE
DIM DM AS BYTE

DIM CONTADOR AS DWORD


ADCON1=%0110

OUTPUT PORTB
OUTPUT PORTC
TRISA=%000001

DENUEVO:
CONTADOR=0

MAIN:
GOSUB MOSTRAR
IF PORTA.0=0 THEN INCREMENTAR
GOTO MAIN

INCREMENTAR:
INC CONTADOR
IF CONTADOR=1000000 THEN DENUEVO
ESPERA:
GOSUB MOSTRAR
IF PORTA.0=0 THEN ESPERA
GOTO MAIN

MOSTRAR:
_U=DIG CONTADOR,0
_D=DIG CONTADOR,1
_C=DIG CONTADOR,2
_M=DIG CONTADOR,3
UM=DIG CONTADOR,4
DM=DIG CONTADOR,5

LOOKUPL _U,[CERO,UNO,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE],_U
LOOKUPL _D,[CERO,UNO,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE],_D
LOOKUPL _C,[CERO,UNO,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE],_C
LOOKUPL _M,[CERO,UNO,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE],_M
LOOKUPL UM,[CERO,UNO,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE],UM
LOOKUPL DM,[CERO,UNO,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE],DM

PORTC=%11111110
PORTB=_U
DELAYMS 1

PORTC=%11111101
PORTB=_D
DELAYMS 1

PORTC=%11111011
PORTB=_C
DELAYMS 1

PORTC=%11110111
PORTB=_M
DELAYMS 1

PORTC=%11101111
PORTB=UM
DELAYMS 1

PORTC=%11011111
PORTB=DM
DELAYMS 1

RETURN

ESTE PROGRAMA ADEMAS DE NO SER TAN RAPIDO PARA CONTAR TAMBIEN ME GENERA Q EL DISPLAY MAS SIGNIFICATIVO SE VEA MAS ILUMINADO Q LOS DEMAS, Q ES OTRO DE LOS PROBLEMAS Q TENGO.

COMO PUEDO SOLUCIONAR LO DE LA VELOCIDAD Y LA LUMINOSIDAD.
DESDE YA LES AGRADEZCO POR SUS AYUDA.


Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: DISPLAY
« Respuesta #1 en: 06 de Marzo de 2006, 20:56:00 »
Hola, pues por lo que veo tu programa parece bueno... pero te tengo una pregunta, cual es la frecuencia de la señal que quieres contar???

Pues con eso pueden cambiar algunas cosas... A ver revisa eso y nos dices.Sonrisa GiganteSonrisa Gigante
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
RE: DISPLAY
« Respuesta #2 en: 06 de Marzo de 2006, 21:17:00 »
Bueno
Sucede que cuando uno multiplexa.

el voltaje de acuerdoa la frecuencia con que actualices baja.

Pareciendo a menos voltaje, menos intencidad, y mas parpadeo.

Este es un problema solucionable dependiendo de las dimenciones de los displays.

Cuanto mas grandes, mas es el problema.

**************************
trata de bajarle un poco la frecuencia. (Para 9 Displays lo actualizaba de 500us a 900us y se veia bien)

bye

Desconectado poi5on

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 127
RE: DISPLAY
« Respuesta #3 en: 07 de Marzo de 2006, 08:46:00 »
Hola amigo
Baja la frecuencia de actualización para q esten un poco mas brillantes, yo pondria el contador en un timer bien se el 0 o el 1 para que sea el conteo independiente del proceso general del programa, ya que si se genera un pulso mientras lso display se actulizan no lo vas a contar, q frecuencia tienen los pulsos?

Salu2

Desconectado neosud

  • PIC12
  • **
  • Mensajes: 51
RE: DISPLAY
« Respuesta #4 en: 07 de Marzo de 2006, 12:07:00 »
caracteristicas del pulso: 6ms de periodo

el ultimo display es el q se ilumina demasiado en comparacion a los demas.

el contador deberia contar 10000 pulsos por minuto pero pierde mucho muchos pulsos, supongo q debe ser porque mientras ejecuta el codigo de programa llegan los pulsos y el pic no los lee y solo lee algunos a pesar de estar con 20mhz.

lo del timer seria una buena opcion pero no se  como hacerlo ya q eltimer es de 16 bits y solo cuenta hasta 65535, pueden ayudarme al respecto.

desde ya gracias por sus ayuda

Desconectado poi5on

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 127
RE: DISPLAY
« Respuesta #5 en: 07 de Marzo de 2006, 16:07:00 »
Hola

Trabaja con interrupciones, colocas el contador de tres registros en la rutina de interrupción y te garantiza que no pierdas ningun pulso.

Salu2

Desconectado neosud

  • PIC12
  • **
  • Mensajes: 51
RE: DISPLAY
« Respuesta #6 en: 27 de Marzo de 2006, 11:05:00 »
CON ESTE PROGRAMA MEJORO BASTANTE EL MANEJO DE CORRIENTE EN LOS DISPLAY Y AUMENTO LA VELOCIDAD DE CONTEO:

DEVICE 16F876A
XTAL=20

DIM      CONTADOR   AS   DWORD

DIM      _U        AS   BYTE
DIM      _D        AS   BYTE
DIM      _C        AS   BYTE
DIM      _M        AS   BYTE
DIM      UM        AS   BYTE
DIM      DM        AS   BYTE

DIM      __U        AS   BYTE
DIM      __D        AS   BYTE
DIM      __C        AS   BYTE
DIM      __M        AS   BYTE
DIM      _UM        AS   BYTE
DIM      _DM        AS   BYTE

DIM      DIGITO   AS   BYTE
DIM      DIGIT   AS   BYTE

ADCON1=%0110

OUTPUT PORTA
OUTPUT PORTB

CONTADOR=0

INICIO:
FOR CONTADOR=0 TO 999999
GOSUB OBTENER_DIGITO
GOSUB VISUAL
NEXT
CONTADOR=0
GOTO INICIO

OBTENER_DIGITO:
_U=DIG CONTADOR,0
_D=DIG CONTADOR,1
_C=DIG CONTADOR,2
_M=DIG CONTADOR,3
UM=DIG CONTADOR,4
DM=DIG CONTADOR,5

DIGITO=_U
GOSUB TABLA
__U=DIGIT

DIGITO=_D
GOSUB TABLA
__D=DIGIT

DIGITO=_C
GOSUB TABLA
__C=DIGIT

DIGITO=_M
GOSUB TABLA
__M=DIGIT

DIGITO=UM
GOSUB TABLA
_UM=DIGIT

DIGITO=DM
GOSUB TABLA
_DM=DIGIT

RETURN


VISUAL:
PORTA=%000001
PORTB=__U
DELAYUS 300

PORTA=%000010
PORTB=__D
DELAYUS 300

PORTA=%000100
PORTB=__C
DELAYUS 300

PORTA=%001000
PORTB=__M
DELAYUS 300

PORTA=%010000
PORTB=_UM
DELAYUS 300

PORTA=%100000
PORTB=_DM
DELAYUS 300

RETURN


TABLA:
LOOKUPL DIGITO,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],DIGIT
RETURN


AUN NO HE PROBADO HACER CON INTERRUPCIONES YA Q ESTAS NO ME HAN FUNCIONADO EN PIC BASIC PLUSS, SI ALGUIEN PUEDE AYUDARME CON UN EJEMPLO SUPER SENCILLO DE INTERRUPCIONES, POR EJEMPLO POR INTERRUPCION EXTERNA POR RB0 PARA EL PIC16F84A U OTRO LE AGRADECERIA.

SALUDOS.