Autor Tema: multiplexar 2 display de 7 segmentos con pic  (Leído 16464 veces)

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

Desconectado 300

  • PIC10
  • *
  • Mensajes: 10
multiplexar 2 display de 7 segmentos con pic
« en: 16 de Noviembre de 2010, 01:06:01 »
hola estoy tratando de hacer una simulacion en proteus de como multiplexar dos display de 7 segmentos segui los pasos que dice el libro pero al simularlo lo unico que hace es repetir  el numero que tiene el primer display osea debe mostrar el numero 57 y solo muestra el 5 no se cual es el error

   
     INCLUDE       <P16F873.INC>
            
      
      
      
         LIST P=16F873, R = HEX
      

REG1      EQU         20H
R12       EQU         21H
VALOR1       EQU       22H
VALOR2       EQU       23H
      
         ORG         0X00
         GOTO      INICIO
         ORG         0X05


INICIO      MOVLW       .0
         TRIS       PORTB ;CONFIGURAR EL PERTO B TODO COMO SALIDA.
         MOVLW       .0
         TRIS       PORTC ;CONFIGURA EL PUERTO C COMO SALIDA.
         MOVLW       .7 ;CARGA W CON 7.
         MOVWF       VALOR2 ;LLEVA 7 A VALOR 2.
         MOVLW       .5 ;CARGA W CON 5.
         MOVWF       VALOR1 ;LLEVA 5 A VALOR 1.
         
LOOP1       MOVF       VALOR1,W ;LLEVA VALOR 1 A W.
      
         CALL       TABLA ;LLAMA A TABLA PARA ENCONTRAR EL VALOR         7 SEGMENTOS DEL NUMERO 5.
         MOVWF      PORTB ;LLEVA EL VALOR 7 SEG AL PUERTO B.
         MOVLW       .0
         MOVWF       PORTC  ;HABILITA EL TRANSISTORCORRESPONDIENTE A VALOR1 (RC0)
      
         CALL       RETARDO
         MOVF       VALOR2,W ;LLEVA VALOR 2 A W.
         CALL       TABLA ;CONVIERTE VALOR 2 A CODIGO 7SEGMENTOS.
         MOVWF      PORTB  ;SACA AL PUERTO B EL VALOR 2.
         MOVLW       .0
      
         MOVWF       PORTC ;HABILITA EL TRANSISTOR DE VALOR2 (RC1).
         CALL       RETARDO
      
         GOTO      LOOP1
RETARDO    MOVLW       .255 ;RETARDO DE 1 mS APROX.
         MOVWF       R12
REP       DECFSZ       R12,F
         GOTO       REP
TABLA       ADDWF       PCL,F ; PCL + W
         RETLW       B'00111111' ; CODIGO PARA EL 0
         RETLW       B'00000110' ; CODIGO PARA EL 1
         RETLW       B'01011011' ; CODIGO PARA EL 2
         RETLW       B'01001111' ; CODIGO PARA EL 3
         RETLW       B'01100110' ; CODIGO PARA EL 4
         RETLW       B'01101101' ; CODIGO PARA EL 5
         RETLW       B'01111100' ; CODIGO PARA EL 6
         RETLW       B'00000111' ; CODIGO PARA EL 7
         RETLW       B'01111111' ; CODIGO PARA EL 8
         RETLW       B'01100111' ; CODIGO PARA EL 9
         MOVLW       .255
         MOVWF       REG1
RET1       DECFSZ       REG1,F
         GOTO       RET1
         RETURN
         END ;FIN DEL PROGRAMA
                       

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: multiplexar 2 display de 7 segmentos con pic
« Respuesta #1 en: 16 de Noviembre de 2010, 09:58:21 »
Hola 300, no deshabilitas los transistores en ningún momento, osea, siempre muestras lo mismo en los dos displays,prueba a hacer esto,

Citar
     CALL       TABLA ;LLAMA A TABLA PARA ENCONTRAR EL VALOR         7 SEGMENTOS DEL NUMERO 5.
         MOVWF      PORTB ;LLEVA EL VALOR 7 SEG AL PUERTO B.
         MOVLW       .2;00000010<- rc0 =0, Rc1=1; habilitamos display 1 negado.
         MOVWF       PORTC  ;HABILITA EL TRANSISTORCORRESPONDIENTE A VALOR1 (RC0)
     
         CALL       RETARDO
         MOVF       VALOR2,W ;LLEVA VALOR 2 A W.
         CALL       TABLA ;CONVIERTE VALOR 2 A CODIGO 7SEGMENTOS.
         MOVWF      PORTB  ;SACA AL PUERTO B EL VALOR 2.
         MOVLW       .1;00000001<-rc0=1,rc1=0; habilitamos display 2 negado;
     
         MOVWF       PORTC ;HABILITA EL TRANSISTOR DE VALOR2 (RC1).
         CALL       RETARDO

Si cargas 0 en port C siempre tendrás los dos display activos, y mostraran siempre el mismo numero, por persistencia de visión, el primero en introducirse.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.

Desconectado 300

  • PIC10
  • *
  • Mensajes: 10
Re: multiplexar 2 display de 7 segmentos con pic
« Respuesta #2 en: 16 de Noviembre de 2010, 15:28:32 »
estan cambiados ya y si tienes razon pero me acaba de hacer lo mismo solo se ve el cinco y no manda para nada el 7 cual es el error lo lo encuentro te adjunto los archivosa ver si lo puedes correr

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: multiplexar 2 display de 7 segmentos con pic
« Respuesta #3 en: 16 de Noviembre de 2010, 19:41:54 »
Haber te faltan las resistencias de pull-up a los transistores, tienes mal colocado el bloque de temporizador, seguramente por el copi and paste, te he puesto limpieza de los displays. te lo incluyo para que lo veas. ;-)
Citar
         INCLUDE       <P16F873.INC>
            
      
      
      
         LIST P=16F873, R = HEX
      

REG1      EQU         20H
R12       EQU         21H
VALOR1       EQU       22H
VALOR2       EQU       23H
      
         ORG         0X00
         GOTO      INICIO
         ORG         0X05


INICIO      MOVLW       .0
         TRIS       PORTB ;CONFIGURAR EL PERTO B TODO COMO SALIDA.
         MOVLW       .0
         TRIS       PORTC ;CONFIGURA EL PUERTO C COMO SALIDA.
         MOVLW       .7 ;CARGA W CON 7.
         MOVWF       VALOR2 ;LLEVA 7 A VALOR 2.
         MOVLW       .5 ;CARGA W CON 5.
         MOVWF       VALOR1 ;LLEVA 5 A VALOR 1.
         
LOOP1          MOVLW       .0;paramos los displays
         MOVWF       PORTC ;HABILITA EL TRANSISTOR DE

         MOVF       VALOR1,W ;LLEVA VALOR 1 A W.
      
         CALL       TABLA ;LLAMA A TABLA PARA ENCONTRAR EL VALOR         7 SEGMENTOS DEL NUMERO 5.
         MOVWF      PORTB ;LLEVA EL VALOR 7 SEG AL PUERTO B.
         MOVLW       .1;00000001<- rc0 =0, Rc1=1; habilitamos display 1 negado.

         MOVWF       PORTC  ;HABILITA EL TRANSISTORCORRESPONDIENTE A VALOR1 (RC0)
      
         CALL       RETARDO
         MOVLW       .0;paramos los displays  para que no titile
         MOVWF       PORTC ;HABILITA EL TRANSISTOR DE

         MOVF       VALOR2,W ;LLEVA VALOR 2 A W.

         CALL       TABLA ;CONVIERTE VALOR 2 A CODIGO 7SEGMENTOS.
         MOVWF      PORTB  ;SACA AL PUERTO B EL VALOR 2.
         MOVLW       .2;00000010<-rc0=1,rc1=0; habilitamos display 2 negado;
         MOVWF       PORTC ;HABILITA EL TRANSISTOR DE VALOR2 (RC1).
         CALL       RETARDO
      
         GOTO      LOOP1
RETARDO    MOVLW       .255 ;RETARDO DE 1 mS APROX.
         MOVWF       R12
REP       DECFSZ       R12,F
         GOTO       REP

         MOVLW       .255
         MOVWF       REG1
RET1       DECFSZ       REG1,F
         GOTO       RET1
         RETURN
; ahora si tenias la TABLA incrustada en el retardo;
TABLA       ADDWF       PCL,F ; PCL + W
         RETLW       B'00111111' ; CODIGO PARA EL 0
         RETLW       B'00000110' ; CODIGO PARA EL 1
         RETLW       B'01011011' ; CODIGO PARA EL 2
         RETLW       B'01001111' ; CODIGO PARA EL 3
         RETLW       B'01100110' ; CODIGO PARA EL 4
         RETLW       B'01101101' ; CODIGO PARA EL 5
         RETLW       B'01111100' ; CODIGO PARA EL 6
         RETLW       B'00000111' ; CODIGO PARA EL 7
         RETLW       B'01111111' ; CODIGO PARA EL 8
         RETLW       B'01100111' ; CODIGO PARA EL 9
         END ;FIN DEL PROGRAMA
« Última modificación: 17 de Noviembre de 2010, 08:27:10 por bmfranky »
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.

Desconectado 300

  • PIC10
  • *
  • Mensajes: 10
Re: multiplexar 2 display de 7 segmentos con pic
« Respuesta #4 en: 17 de Noviembre de 2010, 00:37:10 »
guau eres grande no tenia idea que debia de llevar esas resistencias el libro no lo dice ni viene en el diagrama pero ya corre muy bien muchas gracias te vas a ir al cielo con todo y zapatos y espero te dejen llevar una compu porque creeme esto es lo tuyo.

P.D. agradecimientos especiales a bmfranky

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: multiplexar 2 display de 7 segmentos con pic
« Respuesta #5 en: 17 de Noviembre de 2010, 07:41:42 »
Hola, 300, el cambio sustancial, no son las resistencias, revisa el código ASM que te adjunto y veras que hay una diferencia, tenias un fallo en la rutina de retardo, se te había mezclado con la de asignación de 7 segmentos, lee lo que te adjunto, pues en el código te explico los cambios.

En este gran foro, todos intentamos ayudarnos, yo no soy grande , solo un aficionadillo, el código  que te adjunto se puede refinar muchísimo, en tamaño y eficiencia, pero eso debes intentarlo tu, suerte y gracias a todos los compañeros del foro por su ayuda desinteresada.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.


 

anything