TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: micro_pepe en 18 de Mayo de 2005, 11:55:00

Título: display 7 segmentos
Publicado por: micro_pepe en 18 de Mayo de 2005, 11:55:00
Hola, estoy pensando en un proyecto con cuatro displays de 7 segmentos, y me pregunto cual es el tiempo adecuado para pasar de actualizar un display, al siguiente.
Un tiempo que me viene bien, es de unos 4msg, pero no se si será muy grande, y se verán parpadear los displays.

Saludos, y gracias.
Título: RE: display 7 segmentos
Publicado por: roc364 en 18 de Mayo de 2005, 13:06:00
Creo que el ojo humano comienza a juntar las imagenes cuando estas se suceden mas rapido que 20 hertz (imagenes por segundo), eso te da que el mismo display debe prenderse por lo menos cada 1/20 seg o sea 0.05 segs (50 mseg). Dicho de otra manera, en 50 mseg hay que prender y apagar los cuatro digitos. Entonces tenemos 50 mseg / 4 digitos = 12.5 mseg por cada digito!
Seria mas o menos asi:  Prender un digito, esperar 12 mseg, apagar y prender el siguiente, esperar 12 mseg, y asi hasta el cuarto y volver a empezar.
Asi tendrias un refresco de 20 Hertz en los displays.!!!Sonrisa
O sea que con 4 mseg estas mas que bien!
Título: Re: display 7 segmentos
Publicado por: microcom en 10 de Noviembre de 2006, 20:30:26
amigos tengo una inquietud sobre el multiplexado de display estoy probando el contador hasta 10000  al momento de visualizacion los numeros o se corren demasiado o todos se ven n los displays he intentado con multiplis ms y nada que se ven de manera perfecta.
en conteo se debe hacer a 1seg lo estoy simulando en proteus.

como dice roc364 le coloco 12.5 ms y nada se ven en .......... aprisa pardadean etc..

este es la rutina de visualizacion y multipexaje

tal ves este mal la rutina?

VISU    BCF   STATUS,0
          CLRF  PORTC       
        MOVF UNIDADES,0
     CALL TABLA
   MOVWF PORTB
BSF  PORTC,0
   CALL RETARDO

          BCF    PORTC,0
        MOVF DECENAS,0
     CALL TABLA
   MOVWF PORTB
    RLf   PORTC,1
   CALL RETARDO
               MOVF CENTENAS,0
     CALL TABLA
   MOVWF PORTB
   RLF  PORTC,1
   call  RETARDO
   MOVF UNIDAD_MIL,0
     CALL TABLA
   MOVWF PORTB
   ;Rlf PORTC,1
   CALL RETARDO
   CLRF  PORTC
                 



este es el programa
RRRR      INCF  UNIDADES,1
     MOVLW .10
     XORWF  UNIDADES,w
     BTFSS   STATUS,2
     GOTO   VISU
     CLRF UNIDADES
    INCF   DECENAS,1
     MOVLW  .10
     XORWF  DECENAS,0
     BTFSS   STATUS,2
     GOTO   VISU
     CLRF  DECENAS
        INCF   CENTENAS,1
     MOVLW  .10
     XORWF  CENTENAS,0
     BTFSS   STATUS,2
     GOTO   VISU
        CLRF CENTENAS
        INCF   UNIDAD_MIL,1
     MOVLW  .10
     XORWF  UNIDAD_MIL,0
     BTFSS   STATUS,2
     GOTO   VISU
         GOTO  INICIO
                end

saludos y gracias
Código: ASM
  1.  
Título: Re: display 7 segmentos
Publicado por: microcom en 10 de Noviembre de 2006, 20:45:55
adjunto el circuito
Título: Re: display 7 segmentos
Publicado por: ESTECA55 en 10 de Noviembre de 2006, 20:54:36
En teoria con un periodo de hasta 20 mseg el hojo humano no detecta el cambibio, el tiempo que dejas encendido cada display va a depender de la cantidad que tengas, por ejemplo si tienes 10 display,  podras detenerte en cada uno hasta 2 mseg, ya que sino ccada uno estara mas de 20 mseg apagado.

Yo personalemte simpre uso 2mseg mas o menos por cada display, y anda muy bien, simepre y cuando  sean menos de 10 jejeje

Recuerda que la cantidad de corriente aumenta con la cantidad de display multiplexados, si tienes 4 display debes amimentar cada led con 4 veces mas la corriente normal, no se va a quemar ya que solo esta encendido por pequeños periodos.


Título: Re: display 7 segmentos
Publicado por: microcom en 10 de Noviembre de 2006, 21:01:24
esteca 555 gracias por contestar le pongo 3ms ,2ms  y nada no se me ven como dices
será el problema de encender y apagar los displays?
gracias y saludos y para un segundo como se aria.
Título: Re: display 7 segmentos
Publicado por: ESTECA55 en 10 de Noviembre de 2006, 21:46:25
no entiendo bien cuale es el problema.

Si se ve en todos los display el mismo valor o algo por el estilo el error esta en el encendido del comun de cada display.

Por lo que aprecio en el circuito te hago los siguientes comentarios:

Tenes display anodo comun, 
el acionamiento justamente del anodo comun deverias hacerlo con un "1" desde el pic
pero en el puerto b dodne estan conectados los anodos para encender cada led deves sacar un "0" desde el pic

Esto te lo comento ya que una vez me paso algo similar y teia invertido el estado de unas de las señales
Título: Re: display 7 segmentos
Publicado por: ESTECA55 en 10 de Noviembre de 2006, 21:52:07
AAAAAA, una cosa, donde te anda mal en el protus o montaste el circuito

Si te parece subite el asm y el hex asi pruebo simularlo

Título: Re: display 7 segmentos
Publicado por: micro_cadaver en 11 de Noviembre de 2006, 02:40:23
aca te pongo parte de tu codigo donde añado simplemente el retardo q proponia esteca555 de 2milisegundos, y tambienel esquemtico aunque no he cambiado nada, y funciona bien a ver si lo simulas y ves q parte de tu codigo no esta corecto.
 
Código: ASM
  1. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  2. ;***************************************************************************************************
  3. ;
  4. ;                                                                               Emcabezado del PIC
  5. ;
  6.                 LIST            P=16F873
  7.                 #INCLUDE        "P16F873.INC"
  8.                 __CONFIG _CP_ALL & _DEBUG_OFF & _PWRTE_ON & _CPD_OFF & _WDT_OFF & _BODEN_OFF & _LVP_OFF & _XT_OSC
  9.                 ERRORLEVEL -302,-306
  10.                 RADIX           HEX
  11. ;
  12. ;
  13. ;
  14. ;***************************************************************************************************
  15. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  16. ;
  17.                 CBLOCK  20
  18. TEMP
  19.                 ENDC
  20. ;
  21. ;***************************************************************************************************
  22. ;***************************************************************************************************
  23. ;
  24.                 ORG     0         ; El programa comienza en la dirección 0.
  25.                 GOTO    INICIO
  26.                 ORG     5
  27. ;
  28. ;***************************************************************************************************
  29. ;***************************************************************************************************
  30. ;
  31. INICIO  ;BANCO 1
  32.                 bsf     STATUS,RP0      ; Acceso al Banco 1.
  33.                 movlw   0X06
  34.                 movwf   ADCON1
  35.                 CLRF    TRISA      ;PUERTO A como salida
  36.                 CLRF    TRISB
  37.                 CLRF    TRISC
  38.                 BCF     STATUS,RP0
  39.                 CLRF    PORTC
  40. ;***************************************************************************************************
  41. VISU
  42.                 MOVLW   0X00;8
  43.                 MOVWF   PORTB
  44.                 MOVLW   0X01
  45.                 MOVWF   PORTC
  46.                 CALL    RETARDO
  47.  
  48.                 CLRF    PORTC
  49.                 MOVLW   0X79;1
  50.                 MOVWF   PORTB
  51.                 MOVLW   0X02
  52.                 MOVWF   PORTC
  53.                 CALL    RETARDO
  54.  
  55.                 CLRF    PORTC
  56.                 MOVLW   0X40;0
  57.                 MOVWF   PORTB
  58.                 MOVLW   0X04
  59.                 MOVWF   PORTC
  60.                 CALL    RETARDO
  61.  
  62.                 CLRF    PORTC
  63.                 MOVLW   0X30;3
  64.                 MOVWF   PORTB
  65.                 MOVLW   0X08
  66.                 MOVWF   PORTC
  67.                 CALL    RETARDO
  68.                 CLRF    PORTC
  69.                 GOTO    VISU   
  70. ;***************************************************************************************************
  71. ;***************************************************************************************************
  72. RETARDO
  73.                 CLRF    TEMP    ;2 MILISEGUNDOS
  74.                 NOP
  75.                 DECFSZ  TEMP,F
  76.                 GOTO    $-2
  77.                 NOP
  78.                 DECFSZ  TEMP,F
  79.                 GOTO    $-2
  80.                 RETURN
  81. ;***************************************************************************************************
  82. ;***************************************************************************************************
  83. ;***************************************************************************************************
  84. ;***************************************************************************************************
  85.                 END            ; Fin del programa.

(http://img225.imageshack.us/img225/3890/ayuda2gv5.png)
Título: Re: display 7 segmentos
Publicado por: ESTECA55 en 11 de Noviembre de 2006, 09:32:41
Tambien lo simule y anda bien
jaja que al pedo que estoy un sabado por la mañana
Título: Re: display 7 segmentos
Publicado por: PalitroqueZ en 11 de Noviembre de 2006, 12:09:51
Hola amigos, en este post (http://www.todopic.com.ar/foros/index.php?topic=8427.0) yo dejé un reloj multiplexado que hice algún tiempo.

yo tomé un tiempo de 2.7mS, la razón: me basé en los 60Hz que usan los radios despertadores (1/60hz)/6 displays ~ 2.7mS (alguién me dijo una vez eso de lo la frec. de referencia de los radios despertadores así que me fuí por ahí :))

Salu2
Título: Re: display 7 segmentos
Publicado por: microcom en 20 de Noviembre de 2006, 17:31:32
esteca55 ;micro_cadaver; PalitroqueZ
amigos del foro discilcupas por la tardanza en contestar y miren la hora en que lo hago :-).


boy a seguir la rutina de microcadaver y despues les cuento.

gracias y saludos
Título: Re: display 7 segmentos
Publicado por: micro_cadaver en 20 de Noviembre de 2006, 23:36:41
 :-)  como dice el dicho mas vale tarde q nunca, exitos!  :-/ siempre hay q terminar lo q comenzamos
Título: Re: display 7 segmentos
Publicado por: microcom en 28 de Noviembre de 2006, 18:16:08
;
Código: ASM
  1. este es un contador de 0 a 10000.  
  2. ;prueva este.
  3.  list    p=16f873A
  4.          include"p16f873A.INC"
  5.  
  6.                
  7.  
  8. PORTA           EQU     05
  9. PORTB           EQU     06
  10. PORTC           EQU     07
  11. STATUS          EQU     03
  12. MEMORIA         EQU     20
  13. REG1            EQU     21
  14. REG2            EQU     22
  15. REG3            EQU     23
  16. VALOR1          EQU     24
  17. VALOR2          EQU     25
  18. UNIDAD_MIL      EQU     26
  19. DECENAS         EQU     27
  20. UNIDADES        EQU     28
  21. CENTENAS      EQU     31
  22. ADCON1         EQU    9F
  23. PDel0     EQU        29
  24.  PDel1      EQU        30
  25. PDel2      EQU        32
  26. TEMP            EQU       33
  27.   ORG  00
  28.   GOTO  INICIO
  29.  
  30.  
  31.  
  32. RETARDO1  
  33. ; Code generated by PDEL  ver 1.0  on 22/11/2006 at 21:01:34
  34. ; Description: Waits 250000 cycles
  35. ;-------------------------------------------------------------
  36. PDelay  movlw     .197      ; 1 set number of repetitions (B)
  37.         movwf     PDel0     ; 1 |
  38. PLoop1  movlw     .253      ; 1 set number of repetitions (A)
  39.         movwf     PDel1     ; 1 |
  40. PLoop2  clrwdt              ; 1 clear watchdog
  41.         clrwdt              ; 1 cycle delay
  42.         decfsz    PDel1, 1  ; 1 + (1) is the time over? (A)
  43.         goto      PLoop2    ; 2 no, loop
  44.         decfsz    PDel0,  1 ; 1 + (1) is the time over? (B)
  45.         goto      PLoop1    ; 2 no, loop
  46. PDelL1  goto PDelL2         ; 2 cycles delay
  47. PDelL2  
  48.         return              ; 2+2 Done
  49. RETARDO
  50.                         CLRF    TEMP    ;2 MILISEGUNDOS
  51.                         NOP
  52.                         DECFSZ  TEMP,F
  53.                         GOTO    $-2
  54.                         NOP
  55.                         DECFSZ  TEMP,F
  56.                         GOTO    $-2
  57.                         CLRF    TEMP    ;2 MILISEGUNDOS
  58.                         NOP
  59.                         RETURN
  60. TABLA  
  61.         ADDWF   PCL,1
  62.         RETLW   B'11000000'
  63.         RETLW   B'11111001'
  64.         RETLW   B'10100100'
  65.         RETLW   B'10110000'
  66.         RETLW   B'10011001'
  67.         RETLW   B'10010010'
  68.         RETLW   B'10000010'
  69.         RETLW   B'11111000'
  70.         RETLW   B'10000000'
  71.         RETLW   B'10011000'
  72.         RETLW   B'10111111'
  73.  
  74.  
  75.  
  76.        
  77.  
  78.  
  79. INICIO  BSF  STATUS,5
  80.         BCF     STATUS,6
  81.         CLRF  PORTC
  82.         CLRF  PORTB
  83.         MOVLW  07
  84.         MOVWF ADCON1
  85.         BCF  STATUS,5
  86.         CLRF  PORTB
  87.         CLRF  UNIDADES
  88.         CLRF  DECENAS
  89.         CLRF  CENTENAS
  90.         CLRF    UNIDAD_MIL
  91.        
  92.                
  93. VISU    
  94.                         MOVF UNIDADES,0
  95.                         CALL   TABLA
  96.                         MOVWF   PORTB
  97.                         MOVLW   0X01
  98.                         MOVWF   PORTC
  99.                         CALL    RETARDO1
  100.          
  101.                         CLRF    PORTC
  102.                         MOVF    DECENAS,0
  103.                         CALL   TABLA
  104.                         MOVWF   PORTB
  105.                         MOVLW   0X02
  106.                         MOVWF   PORTC
  107.                         CALL    RETARDO
  108.  
  109.                         CLRF    PORTC
  110.                         MOVF    CENTENAS,0
  111.                         CALL   TABLA
  112.                         MOVWF   PORTB
  113.                         MOVLW   04
  114.                         MOVWF   PORTC
  115.                         CALL    RETARDO
  116.          
  117.                         CLRF    PORTC
  118.                         MOVF    CENTENAS,0
  119.                         CALL   TABLA
  120.                         MOVWF   PORTB
  121.                         MOVLW   0X08                   
  122.                         MOVWF   PORTC
  123.                         CALL    RETARDO
  124.                         CLRF    PORTC
  125.                         CLRF    PORTB
  126. RRRR    INCF  UNIDADES,1
  127.                 MOVLW .10
  128.                 XORWF  UNIDADES,w
  129.                 BTFSS   STATUS,2
  130.         GOTO   VISU
  131.         CLRF UNIDADES
  132.         INCF   DECENAS,1
  133.         MOVLW  .10
  134.         XORWF  DECENAS,0
  135.         BTFSS   STATUS,2
  136.         GOTO   VISU
  137.         CLRF  DECENAS
  138.         INCF   CENTENAS,1
  139.         MOVLW  .10
  140.         XORWF  CENTENAS,0
  141.         BTFSS   STATUS,2
  142.         GOTO   VISU
  143.         CLRF CENTENAS
  144.         INCF   UNIDAD_MIL,1
  145.         MOVLW  .10
  146.         XORWF  UNIDAD_MIL,0
  147.         BTFSS   STATUS,2
  148.         GOTO   VISU
  149.          GOTO  INICIO
  150.                 end


caballeros he intentado hacer que funcione el contador y no me esta contando como quiero
lo ideal es que el conteo se haga de 1 seg y he intentado de otra manera y nada.
como la secuencia que me dio micro_cad el contador apenas se ven destellos en las unidades y los numeros se ven iguales en todos los display.

lo estoy simulando en proteus 6.7

saludos y gracias por la atencion
Código: ASM
  1.  
.



Título: Re: display 7 segmentos
Publicado por: Zaphyrus en 28 de Noviembre de 2006, 18:44:28
Yo he usado el integrado CD4511 para los display de 7 segmentos ya que tienen latch que mantienen los valores y es un decodificador de BCD a 7 segmentos.
Ahora si solo quieren usar el PIC pueden usar los timers.

Saludos.

Martín
Título: Re: display 7 segmentos
Publicado por: BrunoF en 28 de Noviembre de 2006, 19:03:57
Hola.
Mira, yo simule el programa y anda bien. El problema es que cuenta demasiado rapido.
Aca te lo modifique para que se incremente cada 1 seg aproximadamente(si necesitas 1 segundo exacto deberas recurrir a usar un timer como ya te ha mencionado Zaphyrus).
Como tengo Proteus 6.9 RC4 te adjunto la imagen de la conexion:

Saludos.

Título: Re: display 7 segmentos
Publicado por: microcom en 29 de Noviembre de 2006, 18:22:26
Zaphyrus BrunoF  muchas gracias por la contestacion boy a simular el programa brunoF y despues le cuento los resultados .

saludos y gracias.
Título: Re: display 7 segmentos
Publicado por: microcom en 02 de Diciembre de 2006, 18:10:48
mira lo que aparece brunof y no me esta funcionando

saludos y gracias.
Título: Re: display 7 segmentos
Publicado por: BrunoF en 02 de Diciembre de 2006, 20:18:31
Hola microcom.

Quita toda la parte del oscilador y MCLR y volve a probar. En las propiedades del uC pon 4Mhz.

Lo he vuelto a simular y el programa funciona bien

Asegurate que el 7segx4 sea ánodo común.

Saludos.
Título: Re: display 7 segmentos
Publicado por: PalitroqueZ en 04 de Diciembre de 2006, 12:54:30
Amigos, si van a simular un multiplexado de 7-seg usando en proteus, puede que vaya un poco lento y no se vea bien el barrido, y mas aún si usan transistores, una sugerencia: sustituyan los transistores por inversores ó buffer dependiendo el tipo de transistor, así irá rapido y podran ajustar el tiempo para cada encendido y apagado de los displays. Después en el protoboard pueden usar los transistores normalmente.

nota: mientras menos componentes esten usando en proteus, la simulación correrá mejor.
Salu2
Pedro
Título: Re: display 7 segmentos
Publicado por: microcom en 09 de Diciembre de 2006, 18:21:20
amigos del foro muchas gracias por contestar boy a seguir sus sugerencias y despues les cuento disculpen la tardanza en las contestaciones.
saludos y gracias
Título: Re: display 7 segmentos
Publicado por: microcom en 20 de Diciembre de 2006, 18:06:20
caballeros que han tenido el esmero en colaborarme en este inconveniente  les agradesco y haciendo lo que me aconcejo brunof el conteo es esepcional pero al momento de cambiar de 0099 a 0100  pasa a 1100 y sigue 1101..
1102..1003 o sea tambien se está incrementando las unidades de mil y en el programa de asm todo esta bien.

tambien elimine los vcc de los transisitores 3904.

para pedirle el favor bruno de darme un explicacion sobre el .121 del por que? o sea de como hacer temporizaciones y que se vean todos los display en un segundo ¿cual es la logica?
viejo bruno disculpas por las contestaciones tan largas .

saludos y que estes bien.



saludos y gracias
Título: Re: display 7 segmentos
Publicado por: BrunoF en 20 de Diciembre de 2006, 19:58:19
Hola microcom.
El asunto que pase de 099 a 1100 en lugar de a 0100 es algun detalle en el programa. nada mas.

A los calculos los hice utilizando el MPLAB SIM y la herramienta StopWatch para calcular los tiempos con la mayor precision posible.

Saludos.
Título: Re: display 7 segmentos
Publicado por: microcom en 23 de Diciembre de 2006, 13:42:20
gracias amigo aqui lo seguire molestando
gracias por todo.

felicidades en estas navidades
y prospero año nuevo 2007.