Entrenador Pic 16f84A - 16f628A



Actualmente la electrónica está avanzando a pasos grandes cada día, de tal forma que es muy difícil mantenerse al tanto de todas las novedades que aparecen y que los fabricantes ponen a nuestra disposición, tal es el caso de los  Microcontroladores PIC, de  Microchip.
Cuando uno se inicia en el mundo de  la programación de Microcontroladores, rápidamente se da  cuenta de que disponer de una tarjeta entrenadora le ayudaría mucho en su aprendizaje.
Por varios motivos, no pudimos comprar una. Algunos modelos que eran realmente interesantes estaban fuera de nuestro presupuesto, o no podíamos comprarlo desde mi país.
Entonces decidimos hacer un entrenador con mis compañeros, la idea era poder realizar un entrenador básico, pues recién nos estábamos iniciando en la programación de Microcontroladores, y uno de ellos fue el 16F84A que es muy conocido y hay mucha información de este. Es así que uno de nuestros compañeros trajo el diseño pero no estaba completo, entonces decidimos terminarlo totalmente con los esquemas y los macros y hacerlo físicamente.

Y ahora lo publicamos para usted, un entrenador para este tipo de PIC, cuya fotografía puede verse arriba, pero no significa que esta tarjeta es de uso exclusivo para este PIC, también podrá usarse para el 16F628A; le invitamos a que entre en el fabuloso mundo de los Microcontroladores PIC, con esta tarjeta de desarrollo.

Ceo en

Industrial Automation Professional graduate with experience in the field of automated systems (electrical, DCS , SCADA , PLC , electronic , hydraulic, pneumatic , optical , etc.)

31 comentarios :

  1. Me gustaria ver el diagrama para ver si lo puedo montar, soy un aficionadooo!!!

    ResponderEliminar
  2. Ya esta Oscar, cualquier duda has tu consulta.

    ResponderEliminar
  3. que tal...tal vez mi duda sea algo tonta...pero para q me sirve el teclado y los Jumpers no los veo en el circuito

    ResponderEliminar
  4. Para el teclado de 16 pulsadores un ejemplo, para hacer un circuito donde pida la clave de acceso y muchas aplicaciones más.
    Los pulsadores RA0....RA4 son para darle la señal al Microcontrolador, tanto en lógica positiva o negativa, esto depende de la configuración de los Jumpers que estan designados en el circuito como J5,J2,J4.

    ResponderEliminar
  5. hola...oye.. decidí armar el circuito,ya lo tengo físicamente...pero no funciona,no realiza ninguna función y lo conecte exactamente como lo indicas, le puse que el micro realizara un contador hexadecimal, dependiendo de la combinación que le meta por el porta a del micro...pero ni siquiera prende el display..no se si tenga algo mal o algo...lo alimento con 12V...ayudame porfa?

    ResponderEliminar
  6. Hola Joel recuerda que los display son de cátodo común, por lo tanto estos se deben de activar desde el programa para que encienda, esto los hace mediante los puertos RA1 Y RA3, y no es necesario jumpear nada.
    Aquí te dejo un ejemplo de un contador ascendente y descendente de 0 a 99.


    ; CONFIGURACION DEL DISPOSITIVO
    ;**********************************************************

    LIST P=16f84a ;Seleccionamos el tipo de procesador
    #include ;Incluimos el archivo p16f84a

    __CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC


    ; ASIGNAMOS LAS VARIABLES DE LOS REGISTROS DE RAM
    ;**********************************************************

    DECENAS EQU 0X0C ;REGISTRO PARA DISPLAY1
    UNIDADES EQU 0X0D ;REGISTRO PARA DISPLAY2
    PDel0 EQU 0X0E ;REGISTRO PARA DELAY
    CONTADOR EQU 0X0F ;REGISTRO PARA CONTADOR
    CONTADOR_U EQU 0X10 ;REGISTRO PARA UNIDADES
    CONTADOR_D EQU 0X11 ;REGISTRO PARA DECENAS


    ; ESCRITURA DEL PROGRAMA DEL PIC
    ;**********************************************************

    org 0x00 ;Vector de Reset
    goto INICIO ;vamos a la etiqueta Main


    ; CONFIGURAMOS PUERTOS DEL PIC
    ;**********************************************************


    INICIO
    BSF STATUS,RP0 ;SELECCIONAMOS EL BANCO 1
    CLRF TRISB ;LIMPIAMOS EL REGISTRO TRISB
    MOVLW B'11110101' ;ENTRADAS RA, SALIDAS RA4-RA3
    MOVWF TRISA ;PONEMOS EL VALOR DE W EN TRISA
    BCF STATUS,RP0 ;SELECCIONAMOS EL BANCO 0
    BCF PORTA,1 ;PONEMOS A 0 EL RA1
    BCF PORTA,3 ;PONEMOS A 0 EL RA3
    BUCLE
    CALL UP ;LLAMAMOS A LA RUTINA DOWN 9-0
    CALL DOWN
    GOTO BUCLE ;GENERAMOS UN BUCLE INFINITO


    ; EMPEZAMOS CON EL PROGRAMA 7SEG
    ;**********************************************************

    DOWN
    MOVLW .10 ;NUMERO 10 A DECENAS
    MOVWF DECENAS

    RESETU
    MOVLW .10 ;NUMERO 10 A UNIDADES
    MOVWF UNIDADES

    RESETC
    MOVLW .250 ;NUMERO 250 A CONTADOR
    MOVWF CONTADOR

    REFRESCO
    MOVF DECENAS,W ;MOVEMOS DECENAS A W
    CALL DISPLAY7SEG ;LLAMAMOS AL NUMERO
    MOVWF PORTB ;LO MOSTRAMOS POR EL DISPLAY
    BSF PORTA,1 ;ENCENDEMOS DISPLAY_DECENAS
    CALL DOS_MILISEGUNDOS ;2ms ENCENDIDO
    BCF PORTA,1 ;APAGAMOS DISPLAY
    MOVF UNIDADES,W ;MOVEMOS UNIDADES A W
    CALL DISPLAY7SEG ;LLAMAMOS AL NUMERO
    MOVWF PORTB ;LO MOSTRAMOS POR EL DISPLAY
    BSF PORTA,3 ;ENCENDEMOS DISPLAY_UNIDADES
    CALL DOS_MILISEGUNDOS ;2ms ENCENDIDO
    BCF PORTA,3 ;APAGAMOS DISPLAY
    DECFSZ CONTADOR,F ;DECREMENTAMOS CONTADOR DE REFRESCO
    GOTO REFRESCO ;REFRESCAMOS LA IMAGEN TODO EL RATO DURANTE 1 SEG
    DECFSZ UNIDADES,F ;DECREMENTAMOS UNIDADES
    GOTO RESETC ;RESETEAMOS EL CONTADOR DE REFRESCO
    DECFSZ DECENAS,F ;SI UNIDADES ES 0 DECREMENTAMOS DECENAS
    GOTO RESETU ;UNA VEZ DECREMENTADA DECENAS, RESETEAMOS UNIDADES
    RETURN ;VOLVEMOS A LA DONDE NOS HAN LLAMADO

    ResponderEliminar
  7. UP
    MOVLW .1 ;NUMERO 1 A DECENAS
    MOVWF DECENAS
    MOVLW .10 ;NUMERO 10 A CONTADOR DECENAS
    MOVWF CONTADOR_D

    RESETU1
    MOVLW .1 ;NUMERO 1 A UNIDADES
    MOVWF UNIDADES
    MOVLW .10 ;NUMERO 10 A CONTADOR UNIDADES
    MOVWF CONTADOR_U

    RESETC1
    MOVLW .250 ;NUMERO 250 A CONTADOR
    MOVWF CONTADOR

    REFRESCO1

    MOVF DECENAS,W ;MOVEMOS DECENAS A W
    CALL DISPLAY7SEG ;LLAMAMOS AL NUMERO
    MOVWF PORTB ;LO MOSTRAMOS POR EL DISPLAY
    BSF PORTA,1 ;ENCENDEMOS DISPLAY_DECENAS
    CALL DOS_MILISEGUNDOS ;2ms ENCENDIDO
    BCF PORTA,1 ;APAGAMOS DISPLAY
    MOVF UNIDADES,W ;MOVEMOS UNIDADES A W
    CALL DISPLAY7SEG ;LLAMAMOS AL NUMERO
    MOVWF PORTB ;LO MOSTRAMOS POR EL DISPLAY
    BSF PORTA,3 ;ENCENDEMOS DISPLAY_UNIDADES
    CALL DOS_MILISEGUNDOS ;2ms ENCENDIDO
    BCF PORTA,3 ;APAGAMOS DISPLAY
    DECFSZ CONTADOR,F ;DECREMENTAMOS CONTADOR DE REFRESCO
    GOTO REFRESCO1 ;REFRESCAMOS LA IMAGEN DURANTE 1 SEG
    INCF UNIDADES,F ;INCREMENTAMOS UNIDADES
    DECFSZ CONTADOR_U ;COMPROVAMOS QUE NO SE HA ECHO 9 VECES
    GOTO RESETC1 ;RESETEAMOS CONTADOR DE REFRESCO
    INCF DECENAS,F ;ECHO 9 VECES, INCREMENTAMOS DECENAS
    DECFSZ CONTADOR_D ;COMPROVAMOS QUE NO SE HAYA ECHO 9 VECES
    GOTO RESETU1 ;RESETEAMOS UNIDADES
    RETURN ;VOLVEMOS A DONDE NOS HAN LLAMADO

    DISPLAY7SEG
    ADDWF PCL,F ;SUMAMOS EL DATO DE W AL REGISTRO PCL
    ;QUE SIRVE PARA EJECUTAR UNA DE LAS INSTRUCCIONES
    ;QUE SE SITUAN MÁS ABAJO
    NOP
    RETLW B'00111111' ;NUMERO 0
    RETLW B'00000110' ;NUMERO 1
    RETLW B'01011011' ;NUMERO 2
    RETLW B'01001111' ;NUMERO 3
    RETLW B'01100110' ;NUMERO 4
    RETLW B'01101101' ;NUMERO 5
    RETLW B'01111101' ;NUMERO 6
    RETLW B'00000111' ;NUMERO 7
    RETLW B'01111111' ;NUMERO 8
    RETLW B'01100111' ;NUMERO 9


    DOS_MILISEGUNDOS movlw .250 ; 1 set numero de repeticion
    movwf PDel0 ; 1 |
    PLoop0 clrwdt ; 1 clear watchdog
    PDelL1 goto PDelL2 ; 2 ciclos delay
    PDelL2 goto PDelL3 ; 2 ciclos delay
    PDelL3
    decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ?
    goto PLoop0 ; 2 no, loop
    PDelL4 goto PDelL5 ; 2 ciclos delay
    PDelL5 clrwdt ; 1 ciclo delay
    return ; 2+2 Fin.
    END

    ResponderEliminar
    Respuestas
    1. COPIO TODO ESO Y LO PONGO EN EL PC COMPILER

      Eliminar
  8. buenas tardes quisiera saber si a esto le puedo colocar otro tipo de pic 16f877 gracias y cuales serian los pines a usar

    ResponderEliminar
  9. Hola Edwin, lamentamos decirte que no puedes usar el Pic 16f877, el entrenador es solo para 16f84A - 16f628A. Gracias por seguirnos.

    ResponderEliminar
  10. buenos días quisiera saber como le podía adaptar a 4 display, y si le puedo poner un zócalo zif para el pic?

    ResponderEliminar
  11. Hola Alejandro. Si podrías adaptarlo viendo el circuito que esta en la descarga. Las conexiones que salen de RB0 a RB6 pasando por las resistencias. El tercer display será igual al segundo y así también al cuarto. Recuerda que los display son de cátodo común, entonces para activarlas tendrías que ponerlas los transistores de la misma manera que los otros displays, pero ya de otras salidas del Pic, podría ser de de algún puerto RA.

    ResponderEliminar
  12. Con respecto del zócalo zif. No se puede, ya que esos zócalos son mas grandes.

    ResponderEliminar
  13. hola, yo pude instalar un zocalo zif de 18 pines y pude instalar tambien conectores auxiliares en cada puerto RA y RB para poder fabircar modulos externos e instalar en un futuro otras aplicaciones mas complejas, como por ejemplo conectar un motor paso a paso o una matriz de led de 5 x 7,tambien hice la modificacion de mi pantalla LCD 2x16 porque la que yo tengo los pines de 1 al 14 estan en paralelo en el siguiente orden del 1 al 7 en una fila y 8 al 14 en la otra fila y la alimentacion del LED pines 15 y 16 de la pantalla es por un conector distinto, tambien pude reducir el tamanio de la placa, ahore es de 4" x 7" , cambie los pulsadores del teclado a unos que son 3mm*6mm*4.3mm. tambien cambie los jumper de J2,J3 y J4 por switch de 3 pines 1 polo 2 posiciones. ahora solo falta empezar a realizar los firmware para mis pic, agradeceria si pudieran enviarme algun programa asi sea basico en HEX para poder probar mi entrenador.

    muchas gracias por la informacion y el entrenador que colocaron en su pagina WEB, es bastante sencillo pero a la vez bastante versatil!!!!

    ResponderEliminar
  14. hola ,queria saber si pudieran enviarme algun programa sencillo para probar algunas de las funciones de su entrenador

    muchas gracias

    ResponderEliminar
  15. Hola Rapapaz en el comentario marzo 19, 2012 10:54 a.m. esta, contador ascendente y descendente de 0 a 99.

    ResponderEliminar
  16. Hola Rapapaz, nos gustaría ver tu modelo modificado y si gustas lo podríamos publicar. Escríbenos a : contacto@weautomation.net , y también te enviaremos un HEX por esa dirección. Gracias.

    ResponderEliminar
  17. Hola, We Automation. Me alegra mucho que esten interesador en la modificacion que le hice a su circuito original, en estos momentos estoy trabajando en esa placa, para que puedan tenerla completa, es decir como modifique y añadi conectores y switches, necesito colocar a esta placa los nuevos puentes ( jumpers ).

    Por otro lado, no tengo ningun problema en enviarles todo lo referente a este circuito entrenador y son libres de publicarlo, quizas pronto tambien les envie los modulos extras que mencione en mensajes anteriores.

    Muchas Gracias

    ResponderEliminar
  18. Ok Rapapaz , estaremos atentos a tu envió.
    Muchas gracias por compartir.

    ResponderEliminar
  19. Hola Sres. de WE AUTOMATION:
    Implemente su tarjeta de entrenamiento, y después de voltear el regulador de tensión LM7805 (el PCB no coincide con la posición real), este encendió sin problemas, probé con un contador en el display 7SEG. y funciona sin problemas; mi pregunta es;¿ como implementar un sistema que lleve el LCD y teclado a la vez? puesto que, revisando en la web, la mayoría de los esquemas conectan los pines ENABLE y RS del LCD hacia las patillas del PORTA del PIC y si es posible , por favor publiquen un programa ejemplo; por mi parte hace una modificación al sistema colocando JUMPER a los pines antes mencionados del LCD asi como también a las pistas de la salidas RA1 y RA3 que llegan al transistor BC548 de los display's de modo que le coloque un puente y que estos sean los que activen y envíen la configuración al LCD, agradezco de antemano su pronta respuesta.

    ResponderEliminar
  20. hola, quería hacer una pregunta yo e echo una programación para el LCD pero no me sale nada en la pantalla y e programado según las conexiones que están en la placa, aquí te dejo mi programación: ▼

    define osc 4
    define lcd_bits 4 'tamaño del bus de datos:4 o 8
    define lcd_dreg portb 'puerto de datos del LCD
    define lcd_dbit 1 'inicio de datos del bit 0 o 4

    define lcd_ereg portb 'puerto del pin de habilitación (enable)
    define lcd_ebit 3 'pin de enable
    define lcd_rsreg portb 'selección del puerto del registro
    define lcd_rsbit 2 'selección del bit de registro
    PAUSE 200
    espera:
    lcdout $fe,1
    lcdout $fe,2
    lcdout "ELECTRONICA"

    lcdout $fe,$c0
    lcdout "INDUSTRIAL"
    pause 2000
    goto espera
    END

    ResponderEliminar
  21. Amigo nos podrías ayudar con el código de tu proyecto y/o asesorarnos? es de suma urgencia porfavor

    ResponderEliminar
  22. Hola Alejando,
    Al parecer te faltan los macros para LCD.

    ResponderEliminar
  23. Hola Joshue,
    La pregunta de el código. ¿Para quien es ?

    ResponderEliminar
  24. Hola Cristian,
    Gracias por la sugerencia, ¿serias tan amable te enviarnos tu esquema?.

    ResponderEliminar
    Respuestas
    1. Buenas noches.
      eh encontrado en la web una pagina en donde eh visto la misma tarjeta con una ligera modificación, en la entrada de alimentación ahora figura los pines de programación directamente a la tarjeta, como es casi similar me reguntaba si alguien tiene el esquema para fabricarlo ya que es mas ventajoso por que ya no se necesita retirar el pic,
      aqui dejo el enlace de dicha trajeta, si alguien sabe algo de ello por favor hagamelo saber, gracias.
      http://3.bp.blogspot.com/-jccitOcLZiI/UavXFZCqFeI/AAAAAAAAAUc/lOxcdzgjEGE/s1600/pic-16f84.jpg

      Eliminar
    2. Hola Christian,
      la modificación esta bien, retiraron la fuente alterna para colocar los pines para la programación.
      El esquema esta en el archivo adjunto para descargarlo. Seria genial si lo modificas y lo compartes con nosotros. Cualquier duda o ayuda has tu consulta.
      Saludos.

      Eliminar
    3. We Automation ,buenas noches el diagrama con el ICSP seria bueno enves de la fuente ,no tendras el esquema con el ICSP amigo ,y si no me podrias brindar el circuito para abrirlo en proteus para yo mismo modificarlo de ante mano gracias mi correo es ventura_zion@hotmail.com

      Eliminar
  25. HOLA señores de We Automation me prodrian ayudar con la programacion de marzo 19, 2012 10:54 a. m. por que no la entiendo y no
    puedo compilarla en PIC C Compiler o si me podrian ayudar en que programa puedo programarla bien ayudenme gracias

    ResponderEliminar
  26. hola tengo una duda como van conectados los jumpers numero cinco de antemano muchas gracias

    ResponderEliminar
  27. Este comentario ha sido eliminado por el autor.

    ResponderEliminar

 

All rights resevered. We Automation ©