Autor Tema: Tres displays anodo comun  (Leído 3391 veces)

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

Desconectado JAR

  • PIC10
  • *
  • Mensajes: 13
Tres displays anodo comun
« en: 25 de Marzo de 2015, 17:16:43 »
Buenas a todos:
Saqué este código para displays 7 segmentos cátodo común, para hacer unas pruebas de funcionamiento en ánodo común antes de embarcarme en mi proyecto y con la ayuda de varios de vosotros, le hice algunos cambios para ánodo común, pero no me funciona. Me carga el Pic y todo, pero no encienden. Aquí os dejo el código para ver si alguien me puede decir en que estoy fallando. Gracias!!!

; **** Encabezado ****

        list p=16F84
        #include P16F84.inc

;**** Definicion de variables ****

Unidad      equ      0x0C   ; Guardamos conteo unidad
Decena      equ      0x0D   ;
Centena           equ      0x0E   ;
Contador1   equ      0x0F   ; Registro utilizado en demora.-
Contador2   equ      0x10   ; Registro utilizado en demora.-
Contador   equ      0x11   ; Control de Refresco de Display.-
   
MuestroU   equ      2      ; Para control del 1º Display
MuestroD   equ      1      ; Para control del 2º Display
MuestroC   equ      0      ; Para control del 3º Display
   
;**** Inicio del Micro ****

Reset   
      org   0x00      ; Aquí comienza el micro.-
      goto   Inicio      ; Salto a inicio de mi programa.-
   
;**** Tabla de conversion BCD a 7 Segmentos ****

; Se coloca al inicio para asegurar ubicacion en Pagina.-

      org   0x05      ; Origen del código de tabla.-
BCD7SEG      ;retlw b'gfedcba'para display anodo comun
      addwf   PCL,1      ; Se incrementa el contador del programa.-
      DT 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x98      
   
;**** Programa principal ****

;**** Configuracion de puertos ****

Inicio
      bsf   STATUS,RP0    ; Pasamos de Banco 0 a Banco 1.-
      clrf   TRISA      ; PORTA como salida
      clrf   TRISB      ; PORTB   como salida.-
      bcf   STATUS,RP0   ; Paso del Banco 1 al Banco 0
      clrf   PORTA      ; Desactivo todos los Displays
      clrf   Unidad      ; Comienza en cero --> 0 0 0.-
      clrf   Decena
      clrf   Centena
      goto   Actualizo_Display   ; Esta rutina multiplexa los displays.-

;**** Testeo de Pulsador ****

Bucle
      incf   Unidad,1   ; Incremeto Unidad.
      movlw   d'10'      ; Si es 10 reseteo e incremento Decena
      subwf   Unidad,0
      btfss   STATUS,Z
      goto   Actualizo_Display   ; no es 10
      clrf   Unidad      ; Si, reseteo.-      
      incf   Decena,1   ; Incremento Decena.-
      movlw   d'10'      ; Si Decena = 10, reseteo e incremento Centena
      subwf   Decena,0
      btfss   STATUS,Z
      goto   Actualizo_Display   ; No es 10.-
      clrf   Decena      ; Si, reseteo.-
      incf   Centena,1   ; Incremento Centena.-
      movlw   d'10'      ; Si es 10 Reseteo.-
      subwf   Centena,0
      btfss   STATUS,Z
      goto   Actualizo_Display   ; No es 10.-
      clrf   Centena      ; Si, reseto

;**** Se multiplexan los Display ****
   
Actualizo_Display
      movlw   d'20'      ; Cargo Contador = 20
      movwf   Contador   ; Para repeticiones de visualizacion del mismo valor
               ; durante 150 ms.-
Refresco
      movfw   Unidad      ; Obtengo codigo de 7 Segmentos para Unidad.-
      call   BCD7SEG
      bcf   PORTA,MuestroC   ; Apago Display de Centena, Se entiende al mirar rutina.-
      movwf   PORTB         ; Cargo unidad en PORTB.-
      bsf   PORTA,MuestroU   ; Enciendo Display de Unidad.-
      call   Demora_5ms   
      movfw   Decena      ; Obtengo codigo 7 Segmentos para Decena.-
      call   BCD7SEG
      bcf   PORTA,MuestroU   ; Apago Display de Unidad.-
      movwf   PORTB         ; Cargo PORTB con Decena.-   
      bsf   PORTA,MuestroD   ; Enciendo Display de Decena.-
      call   Demora_5ms
      movfw   Centena      ; Obtengo codigo de 7 Segmentos para Centena.-
      call   BCD7SEG
      bcf   PORTA,MuestroD   ; Apago Display   de Decena.-
      movwf   PORTB         ; Cargo PORTB con Centena.-
      bsf   PORTA,MuestroC   ; Enciendo Display Centena.-
      call   Demora_5ms
      decfsz   Contador,1   ; Pregunto si ya se ha repetido 10 veces el ciclo?
      goto   Refresco   ; No, repito.-
      goto   Bucle      ; Si, actualizo cuenta.-

;**** Demora ****

Demora_5ms
      movlw   0xFF
      movwf   Contador1      ; Iniciamos contador1.-
Repeticion1
      movlw   0x05         ;
      movwf   Contador2      ; Iniciamos contador2
Repeticion2
      decfsz   Contador2,1      ; Decrementa Contador2 y si es 0 sale.-      
      goto   Repeticion2      ; Si no es 0 repetimos ciclo.-
      decfsz   Contador1,1      ; Decrementa Contador1.-
      goto   Repeticion1      ; Si no es cero repetimos ciclo.-
      return            ; Regresa de la subrutina.-
   
      end

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Tres displays anodo comun
« Respuesta #1 en: 25 de Marzo de 2015, 17:28:37 »
antes de pensar en que el codigo pueda estar mal, mira a ver el hardware, ten en cuenta que no es el mismo que para catodo comun.

para catodo común se usas transistores NPN y para anodo comun se usa PNP.

¿puedes colgar tu esquemático para descartar fallos de hardware?
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Tres displays anodo comun
« Respuesta #2 en: 25 de Marzo de 2015, 19:08:10 »
Como dice juaperser y apdemas deberias cambiar la logica al activar los transistores

bcf   PORTA,MuestroU   ; Apago Display de Unidad.-

Desconectado JAR

  • PIC10
  • *
  • Mensajes: 13
Re: Tres displays anodo comun
« Respuesta #3 en: 27 de Marzo de 2015, 16:45:05 »
Como dice juaperser y apdemas deberias cambiar la logica al activar los transistores

bcf   PORTA,MuestroU   ; Apago Display de Unidad.-



KILLERJC, las pruebas, las estoy haciendo con un esquema tuyo. lo que cambio es, el transistor. En vez de utilizar el BC557, utilizo el BC547 que segun el datasheet, son similares. Os dejo el esquema.


Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Tres displays anodo comun
« Respuesta #4 en: 27 de Marzo de 2015, 17:04:49 »
De cuanto son las resistencias?
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Tres displays anodo comun
« Respuesta #5 en: 27 de Marzo de 2015, 19:43:36 »
KILLERJC, las pruebas, las estoy haciendo con un esquema tuyo. lo que cambio es, el transistor. En vez de utilizar el BC557, utilizo el BC547 que segun el datasheet, son similares. Os dejo el esquema.

No son ni siquiera similares, uno es PNP y el otro NPN xD

Desconectado Daikataro

  • PIC10
  • *
  • Mensajes: 22
Re: Tres displays anodo comun
« Respuesta #6 en: 31 de Marzo de 2015, 03:35:42 »
Si como a mí, te cae como patada en el hígado la lógica ánodo común (0 = encendido?) utiliza un integrado ULN2003 que son 7 darlingtons sumideros de corriente en un cómodo y conveniente encapsulado DIP. Si necesitas usar el punto decimal, su hermano el ULN2803 tiene 8 canales. Son económicos y te evitas de estar cambiando lógica, simplemente coloca los pines que usas para control a los "trigger" del ULN y los segmentos del display a las salidas, desde luego 0v a 0v y listo, ya tienes control de ánodo común sin cambiar lógica.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Tres displays anodo comun
« Respuesta #7 en: 31 de Marzo de 2015, 09:54:10 »
Con un NPN funciona mejor:
  El emisor debe estar mirando hacia el ánodo común.
  No hace falta resistencia de base
  La alimentación de colector puede ser no estabilizada (el regulador de tensión sufre menos)
  Las resistencias deben ser un poco más pequeñas debido a la caída de tensión Vbe.

Saludos.

Desconectado JAR

  • PIC10
  • *
  • Mensajes: 13
Re: Tres displays anodo comun
« Respuesta #8 en: 03 de Abril de 2015, 14:16:14 »
KILLERJC, las pruebas, las estoy haciendo con un esquema tuyo. lo que cambio es, el transistor. En vez de utilizar el BC557, utilizo el BC547 que segun el datasheet, son similares. Os dejo el esquema.

No son ni siquiera similares, uno es PNP y el otro NPN xD

Llevas toda la razón KILLERJC. No me pare a mirar el datasheet. Gracias por la rectificación. Un error patético!!!!

Desconectado JAR

  • PIC10
  • *
  • Mensajes: 13
Re: Tres displays anodo comun
« Respuesta #9 en: 03 de Abril de 2015, 14:17:39 »
De cuanto son las resistencias?

1K para transistores y 150 Oh. para display!!

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Tres displays anodo comun
« Respuesta #10 en: 03 de Abril de 2015, 15:42:23 »
El esquema no parece k tenga nada raro, las resistencias de 150 ohmios son pequeñas pon las un poco mas grande y las de 1k las pondría de un 1k5, pero no es grave para el funcionamiento, no se de ensamblador como para mirarte el código, pero revisas k tienes los puertos bien configurados revisa k estén como salidas y no como entradas y además k estén en digital. Cuando te asegures de eso olvidarte de pintar ningún numero he intenta pintar un solo segmento de alguno de los displays. Si lo consigues tu problema es de software.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Tres displays anodo comun
« Respuesta #11 en: 03 de Abril de 2015, 15:51:19 »
Citar
  Llevas toda la razón KILLERJC. No me pare a mirar el datasheet. Gracias por la rectificación. Un error patético!!!!

Por cierto no estarás poniendo un bc547 no? Si pones transistores que no sean PNP no te va a funcionar nunca.

Si estas montando bc547 cambialos por un bc55x.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado JAR

  • PIC10
  • *
  • Mensajes: 13
Re: Tres displays anodo comun
« Respuesta #12 en: 03 de Abril de 2015, 16:31:23 »
Con un NPN funciona mejor:
  El emisor debe estar mirando hacia el ánodo común.
  No hace falta resistencia de base
  La alimentación de colector puede ser no estabilizada (el regulador de tensión sufre menos)
  Las resistencias deben ser un poco más pequeñas debido a la caída de tensión Vbe.

Saludos.

Picuino, Gracias por la información. Por fin me han arrancado, aunque tendré que perfeccionarlo ya que centenas y decenas, están siempre en 0 y unidades, solo me cuenta hasta el 6, pero ya hemos conseguido algo.

Mi agradecimiento a todos los que me estais echando una mano!!!!


 

anything