Contador de 0 a 99 con PIC

hola de nuevo no no es molestia estamos aqui para aprender y en esto te puedo enseñar ahora te corrijo como tu dices viendolo desde la espalda viendolo de izquierda a derecha es asi
1 b 2 a 3 comun 4 f 5 g ahora abajo de izquierda a derecha
1 punto 2 c 3 comun 4 d 5 e solamente con un comun no importa si es de arriba o el de abajo si ya has entendido entonces te puedo explicar que hay de dos tipos de display el primero de catodo comun o el segundo de anodo comun te lo explico ????

xodin no para esa serie no no tengo diagrama
hola Garzonnn me complique la exitencia, el circuito que tu sacaste, yo no lo pude hacer correr, no se que tiene, he verificado el cableado como 15 veces y no se que esta mal, por si acaso no modfiscaste algo como agregar o quitar un componente, o en el sofware, por que no me explico por que no me corre, he quemado el pic todo, pero hay algo que me hace`desconfiar, en el transistores estoy utilazando el bc548, y no el que esta en el diagrama pero eso no influira por que la misma pagina lo indica como remplazo, o si influe ya no se que hacer jejejej o a que hora estaras conectado pa que te de cam o fotos de mi circuito, en este foro hay algo parecido ha un chat para interactuar mas rapido o algo asi, por q de mensaje en mensaje ufff ni pa que imaginarrrrrr...... y graciassssssss
 
hola soy de bolivia estare conectado exactamente en 13 horas con treinta minutos a partir de que te llegue este mensaje, y si el circuito por el que pregunto es el que publico pepe chip, y tu en alguna parte parece que pudoste hacerlo correr pero vi en otras paginas del foro que muchos no lo sacaron por que tiene errores, y gracias por ayudarme :):D:LOL:
 
hola si mira pero el circuito de el lo intente y pues no no sirvio efectivamente no funciono asi q intente hacerlo x mi propia cuenta osea un contador 0-9999 y ese fue el que me funciono
 
hola si mira pero el circuito de el lo intente y pues no no sirvio efectivamente no funciono asi q intente hacerlo x mi propia cuenta osea un contador 0-https://www.forosdeelectronica.com/editpost.php?do=editpost&postid=4022679999 y ese fue el que me funciono

y no me lo podes psar por que con el otro circuito ya perdi mucho tiempo, no se si podra, gracias de antemano:)

no se si abusar de amabilidad. sera que me lo podrias a covertir esto a hex es que no puedo, en caso de que no me puedas pasar tu circuito. Gracias!!!
 

Adjuntos

  • 0-99.txt
    1.6 KB · Visitas: 88
Última edición:
hola hasta hoy mire pero ese programa lo abri y me di cuenta que esta en lenguaje c entonces no no te lo puedo convertir pero envio el circuito que yo hice

necesitas un circuito que cuente de 0-9999 es verdad ? si es asi este te sirve pero lo hice con el pic 16f877 adjunto el circuito y el archivo hex y si no sirve me avisas

aqui el hex y el circuito

ah y se me olvidaba si lo vas a presentar en forma real debes colocarle el cristal de 4 MHZ Y CAPACITORES DE 20pf para que lo necesitas ?
 

Adjuntos

  • contador.rar
    13.3 KB · Visitas: 129
Última edición:
hola hasta hoy mire pero ese programa lo abri y me di cuenta que esta en lenguaje c entonces no no te lo puedo convertir pero envio el circuito que yo hice

necesitas un circuito que cuente de 0-9999 es verdad ? si es asi este te sirve pero lo hice con el pic 16f877 adjunto el circuito y el archivo hex y si no sirve me avisas

aqui el hex y el circuito

ah y se me olvidaba si lo vas a presentar en forma real debes colocarle el cristal de 4 MHZ Y CAPACITORES DE 20pf para que lo necesitas ?

hola mil gracias por el interes prestado de verdad que gracias, bueno tu contador esta muy bueno, pero lo llevo aproteus y no corre y si tengo que presentarlo armado, bieno quisera ver la posibilidad si tendras algo armado y que corra, y especificamente no tiene que ser de 4cifras pueden ser con dos pero lo que yo quiero que sea ascendente y descente aunqye sea solo ascendente pero con pulsadores, y lo sieento por molestarte y estare 8pm hora colombia haber si podes entrar y si no importa pero gracias, ahhhhh y enviame en un privado tu correo porque yo no puedo enviar privados, y menos ponerlos aka gracias
 
como asi que lo llevas a proteus y no corre si alli es donde lo pruebo ahora y si sirve le cargaste el programa ?? el hex ??? y si necesitas un contador ascendente o descende lo necesitas solamente con pic ?? osea solamente con pulsadores que cambie el numero ???
 
como asi que lo llevas a proteus y no corre si alli es donde lo pruebo ahora y si sirve le cargaste el programa ?? el hex ??? y si necesitas un contador ascendente o descende lo necesitas solamente con pic ?? osea solamente con pulsadores que cambie el numero ???

bueno si corrrio tu proyecto, y si lo necesito que sea con pic,gracias.
 


yo monte ese pero no me da, cuenta 0000 1111 2222 3333 4444 y asi hasta 9999, yo necesito q cambie 0001 0002 0003 hasta 9999 :( ayudenme por fis



muy bueno si lo pude hacer funcionar, y hasta pude lograr hacer uno que cuente hasta 0- 9999 gracias a su ayuda

ayudame por fis yo necesito hacer lo mismo
 
Última edición:
proba el que te puse ese cuenta 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 asi hasta 9999
 

Adjuntos

  • contador0000 9999.rar
    13.4 KB · Visitas: 71
Última edición:
Buenas:

Te da el valor 1111, 2222, 3333 por que no haz usado técnicas de barrido.
circuito.gif


Te pasa estas cosas porque tienes acticado el cátodo común de cada display activado con el transitor 2N3904.

Si quieres que cuente del 0001, 0002, 0003 hast ael 9999. Tienes que hacer esta técnica.

El PIC controla los transistores 2N3904 como muestra arriba. En el PIC16F84A debe haber como mínimo 4 varianles para cada display con sus datos guardados, por ejemplo:

Si queremos que nos muestre este dato en el display, el 3904, las variables deben quedar como indica abajo.

Variable1 = 3
Variable2 = 9
Variable3 = 0
Variable4 = 4

Los pines del PIC para controlar los transistores son.
Pin 2 para controlar el transaistor 2N3904 del primer display de 7 segmento.
Pin 1 para controlar el transaistor 2N3904 del segundo display de 7 segmento.
Pin 18 para controlar el transaistor 2N3904 del tercero display de 7 segmento.
Pin 17 para controlar el transaistor 2N3904 del cuarto display de 7 segmento.

Lo que hace el PIC16F84A es simplemente activar el pin 2, los demás pines apagados y muestra en la variable1 el dato 3 cargado en el primer display. Ahora se apaga el pin 2, sólo se activa el pin 1 que es el segundo display con la variable2 y muestra su contenido que es el 9, así sucesivamente. Así que sóloun display está activado y los demás apagado. Esto ocurre a una velocidad muy alta para que la sesación del ojo humano, crea que los 4 display están encendido cuando en realidad lo que está conmutando a una velocidad pasmosa.

El ejemplo arriba se puede simplificar más o ordenar mejor el código más entendible.
http://www.pablin.com.ar/electron/circuito/mc/contador/contador.asm

¿Se entiende el concepto?

Un saludo.
 
Bien hecho, muchas veces hay que saber el concepto y tener las ideas claras el porqué ocurre las cosas, como los 1111, 2222, 3333.

Simplemente porque esos 4 display están en paralelo y tiene los 4 cátodos activados al mismo tiempo y no es así.

Saludo.
 
Este es mi montaje, o sea q monto cada display por separado, aunq bueno lo probe y ps tampoc me dio, lo intentare otra vez ;)
 

Adjuntos

  • Captura.PNG
    Captura.PNG
    39.7 KB · Visitas: 44
Ese display que usas en tu esquema es del mismo encapsulado, el de pablín son 4 display independientes y en paralelo.

Parece que el que tienes hace la misma función. Por tu código si no te funciona. Lo analizaremos.

Un saludo.
 
El tuyo lo probe pero ps necesito un pulsador q lo active, no q se active solo



Y SI ENTIENDO EL CONCEPTO, PERO NO, NO ME DA(n)
 
Última edición:
Saludos.
Ese famoso contador de pablin fue uno de los primeros contadores que monte.
Y si funciona contando de 0001 a 9999
Espero que los que lo estan pensando montar, no lo esten haciendo simulandolo como esta el diagrama.
Para simularlo hay que recurrir a un truco de pullups.
Pero así como esta, fisicamente si funciona. Yo lo he armado.
Aqui adjunto el código compilado tal cual esta en la pagina.
Y con su correspondiente simulación en ISIS.

Suerte y hasta luego.



Y SI ENTIENDO EL CONCEPTO, PERO NO, NO ME DA(n)
Recuerda, al de pablin, hay que configurarle los fuses con el programa con el que grabas el PIC.
O con el mismo MPLAB, porque tal cual esta, se compila con osc RC y con el WDT activado.
También puedes colocar estas líneas hasta arriba del programa para hacerlo por software.

list p=16F84A
#include <p16F84A.inc>

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
 

Adjuntos

  • Contador 0-9999 Pablin.rar
    25.6 KB · Visitas: 71
Última edición:
Se refiere algo así:

Código:
list      p=16F84A
    #include <p16F84A.inc>
 
    __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

;Contador de 4 digitos.

indo    equ     00h             ;registro de indireccion
pc      equ     02h             ;contador de programa
status  equ     03h             ;registro de estado
fsr     equ     04h             ;registro de seleccion
ptoa    equ     05h             ;puerto a
ptob    equ     06h             ;puerto b
rota    equ     0fh             ;variable para desplazamiento de display
trisa   equ     85h             ;configuracion puerto a
trisb   equ     86h             ;configuracion puerto b
dig1    equ     10h             ;acumulador miles
dig2    equ     11h             ;acumulador centenas
dig3    equ     12h             ;acumulador decenas
dig4    equ     13h             ;acumulador unidades
loops   equ     1dh             ;variables usadas en retardos
loops2  equ     1eh
z       equ     02h             ;flag de cero
ram     equ     05h             ;bit de seleccion de pagina de memoria
c       equ     00h             ;flag de acarreo
w       equ     00h             ;bit de destino a variable de trabajo

reset   org     00
        goto    inicio
        org     05h

retardo                         ;subrutina de retardo 
        movwf   loops           ;la variable de trabajo contiene la cant.
top2    movlw   d'110'          ;de ms a demorar
        movwf   loops2
top     nop
        nop
        nop
        nop
        nop
        nop
        decfsz  loops2          ;controla si termina 1mS
        goto    top
        decfsz  loops           ;controla si termina el retardo completo
        goto    top2
        retlw   0

s1000                           ;rutina de incremento x 1000
        clrf    dig2            ;pone a cero las centenas
        incf    dig1            ;incrementa el contador de miles   
        movf    dig1, w         ;carga en work el conteo de los miles   
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        clrf    dig1            ;inicializa los miles   
        return
s100                            ;rutina de incremento x 100
        clrf    dig3            ;pone a cero las decenas 
        incf    dig2            ;incrementa el contador de centenas
        movf    dig2, w         ;carga en work el conteo de las centenas
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s1000           ;incrementa los miles   
        return

s10                             ;rutina de incremento x 10
        clrf    dig4            ;pone a cero las unidades
        incf    dig3            ;incrementa el contador de decenas
        movf    dig3, w         ;carga en work el conteo de las decenas
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s100            ;incrementa las centenas
        return

subir                           ;rutina de incremento
        incf    dig4            ;incrementa el contador de unidades
        movf    dig4, w         ;carga en work el conteo de las unidades
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s10             ;incrementa las decenas
        movlw   d'250'          ;retardo de 100ms
        call    retardo
        return

tabla                           ;genera los numeros sobre el display
        addwf   pc              ;agrega al cont. programa el valor de work
        retlw   b'00111111'     ;genera el 0
        retlw   b'00011000'     ;genera el 1
        retlw   b'01110110'     ;genera el 2
        retlw   b'01111100'     ;genera el 3
        retlw   b'01011001'     ;genera el 4
        retlw   b'01101101'     ;genera el 5
        retlw   b'01101111'     ;genera el 6
        retlw   b'00111000'     ;genera el 7
        retlw   b'01111111'     ;genera el 8
        retlw   b'01111101'     ;genera el 9

inicio                          ;programa principal
        bsf     status, ram     ;selecciona el banco de memoria alto
        movlw   b'00010000'     ;configura el puerto a
        movwf   trisa           ;bit 4 entrada, demas bits salidas.
        movlw   00h             ;configura el puerto b
        movwf   trisb           ;como salidas
        bcf     status, ram     ;selecciona el banco de memoria bajo
        clrf    dig1            ;inicializa acumuladores
        clrf    dig2
        clrf    dig3
        clrf    dig4
        movlw   00              ;envia ceros a los transistores para apagar
        movwf   ptoa            ;todos los displays

empe    btfss   ptoa, 4         ;chequea el pulsador
        call    subir           ;llama la rutina de incremento
        movlw   08h             ;iniciar un 1 en el registro de rotacion
        movwf   rota            
        movlw   dig1            ;con el registro selector (fsr) se apunta
        movwf   fsr             ;al primer dato que se va a mostrar
disp    movlw   00h             ;colocar en cero el dato del display
        movwf   ptob            ;para apagarlos
        movf    rota, w         ;pasa rotacion del 1 a la variable work
        movwf   ptoa            ;enciende el transistor (display)
        movf    indo, w         ;lee el dato del registro apuntado por fsr
        call    tabla           ;genera el digito de 7 segmentos
        movwf   ptob            ;envia el digito al puerto b
        movlw   03h             ;retardo de 3ms para visualizacion
        call    retardo
        btfsc   rota, 0         ;controla si terminaron las cuatro rotaciones
        goto    empe            ;si termino, vuelve desde el comienzo
        bcf     status, c       ;carry en cero para no afectar las rotaciones
        rrf     rota            ;desplaza el 1 que enciende los displays
        incf    fsr             ;incrementa el puntero. Apunta el proximo
        goto    disp            ;digito a mostrar

        end
 
Atrás
Arriba