Mostrando las entradas más recientes con la etiqueta PIC16F84 Mostrar las entradas más antiguas

Otro video de practicas con PIC16F84A


Ya habia tardado un buen tiempo sin subir ningun video sobre PICs, debido a que mi programadora antigua funciono entonces aproveche para poder realizar el video de las últimas practicas realizadas con el PIC16F84A:




También les recuerdo que dichas practicas o mini-proyectos contienen simulación, diagrama, video, explicación y código del programa.





Leer Más.....

Contador de 0-9 con PIC16F84A

Introducción

Cuando deseamos hacer un contador simple de 0-9 podemos usar flip-flops o circuitos integrados especiales para contadores, pero de cualquier manera tenemos que usar cierto número de elementos los cuales pueden ir creciendo dependiendo de lo que vamos a usar. Pero cuando usamos PICs todo se resuelve de manera más sencillo en el caso del Hardware los elementos son minimos y por lo tanto el gasto es menor comparado si lo hicieramos con flip-flops y lo bueno es que el PIC lo podemos reprogramar a nuestro antojo.

Descripción

En este pequeño proyecto utilizaremos un Display de 7 Segmentos para desplegar los números de 1 a 9 de manera que haremos un contador. Algo que tenemos que tener en cuenta es que dependiendo si usamos un display anódo común o cátodo común el programa del PIC puede cambiar. En este caso lo veremos con un display de cátodo común, lo que nos dice que para que algún segmento encienda el pin tiene que recibir un 1 lógico. Por lo tanto para saber que es lo que deseamos ver en el display necesitamos que el puerto B del PIC (RB0-RB7) tengan 1 lógicos ó 0 lógicos tal y como se ve en la siguiente tabla.



Funcionamiento


CODIGO DEL PROGRAMA

'DEFINIENDO VARIABLES 1 byte = 8 bits = 8 salidas > RB0-RB7
contador VAR byte
muestra var byte

'INICIANDO
TRISB = 0 'el PORTB como salida

inicio:
contador = 0 'inicializamos el contador a 0
programa:
gosub NUMERO 'se ve el numero elegido en PORTB
PORTB = muestra 'PORTB toma el valor de muestra
contador = contador + 1 'se incrementa contador con 1
pause 1000 'espera 1 segundo
if contador = 10 then inicio 'compara, si llega al #9 reinicia a #0
goto programa

NUMERO:
lookup contador, [63,6,91,79,102,109,125,7,127,111], muestra 'asigna valor
return

END 'fin del programa



Ahora explicaré el codigo del programa;

inicio:
contador = 0 'inicializamos el contador a 0


primero, contador será igual a 0 luego por la instrucción.


programa:
gosub NUMERO 'se ve el numero elegido en PORTB
.
.
.
.

NUMERO:
lookup contador, [63,6,91,79,102,109,125,7,127,111], muestra 'asigna valor
return
END 'fin del programa


con gosub numero nos direcciona a una subrutina (llamada NUMERO)que contiene el comando lookup; el cual puede ser usado para obtener valores de una tabla de constantes de 8 bits, en este caso usaremos contador y si contador es igual a cero, muestra toma el valor de la primera constante ( que seria 63 y así sucesivamente hasta que tome todas las constantes disponibles) luego regresá y toma la siguiente linea,

PORTB = muestra 'PORTB toma el valor de muestra
contador = contador + 1 'se incrementa contador con 1
pause 1000 'espera 1 segundo
if contador = 10 then inicio 'compara, si llega al #9 reinicia a #0
goto programa


luego el valor que tomó muestra es colocado en PORTB y será el valor que se visualizará en el DISPLAY, luego contador tendrá el valor que tenia anteriormente más uno, habra una pausa de 1 segundo para que podamos ver el resultado en el display y si contador es igual a 10 reinicia el programa de lo contrario repetira la secuencia.

En la siguiente tabla se muestra las constantes que se usarón en el comando LOOKUP, usamos decimales, aunque tambien se pueden colocar hexadecimales.


DIAGRAMA explicado
DIAGRAMA

SIMULACIÓN


Leer Más.....

Alimentación de un PIC

Con anterioridad ya habia comentado algo respecto el voltaje que usa un PIC, Suministro de Voltaje de un Micro, incluso recomiendo fuentes de voltaje que pueden armar, pero he estado recibiendo un par de correos en donde me preguntan, fisicamente, ¿como alimento al pic? ¿que patas utilizo para alimentar al pic? entre otras preguntas, otro detalle que me comentan es que en Proteus no se conecta ninguna pata de alimentación, pero la razon es que ya trae por default la alimentacion conectada por esa razon es que no se ve ninguna pata de alimentacion.

Para dejar más claro este pequeño inconveniente, para alimentar un PIC se necesitara lo siguiente:

El segundo punto se explica a continuacion, en los programas de simulacion como PROTEUS esto no es necesario como comente ya viene integrada. Pero aún asi deseamos ver conectadas las patas de alimentación, conoscamos los pines de alimentación de uno de los PICs más conocidos:

alimentacion de un pic

alimentacion pic

Las patas de alimentacion de estos PICs son la numero 5 y 14 para ambos, ¿porque lo se? porque estan identificados como VSS y VDD donde Vss va conectado a Tierra (en otras palabras al lado negativo de la fuente de voltaje) y Vdd va conectado a corriente continua (en otras palabras al lado positivo de la fuente de voltaje) con esas patas conectadas el PIC puede trabajar de lo contrario no hara nada, porque no tendra "vida". Visto en un diagrama:

alimentacion de un pic

En si esa seria la manera de conectar un PIC a una fuente de voltaje o fuente de alimentación, espero haber sido claro, sino comenten para poder ayudarles.

Leer Más.....

Desplazamiento de Luces usando LEDs

Desplazando de izq a derecha y de derecha a izq


Practica:Desplazando LEDs

Descripción: 8 LEDs son conectados al PORTB del PIC. Los LEDs cuentan con una separacion de tiempo de 240ms. El contador empieza de 1 (10000000) y llega a 128 (00000001) y lo repite nuevamente, lo explicare mas detalladamente, contamos con 8 LEDs, los cuales se encenderan de a uno, ¿de que manera? encendiendo los leds hacia la izquierda:

se enciende el led1 equivale a 00000001 en decimal 1
se enciende el led2 equivale a 00000010 en decimal 2
se enciende el led3 equivale a 00000100 en decimal 4
se enciende el led4 equivale a 00001000 en decimal 8
se enciende el led5 equivale a 00010000 en decimal 16
se enciende el led6 equivale a 00100000 en decimal 32
se enciende el led7 equivale a 01000000 en decimal 64
se enciende el led8 equivale a 10000000 en decimal 128

y hacia la derecha es a la inversa. Nuestro programa constara de dos fases inciara desplazando hacia la izquierda (en decimal seria en 1) y comparará si es igual a 64(en decimal) si no es asi pues sigue desplazando hacia la izquierda eso lo hace con el operador aritmetico << si la comparacion sale cierta se salta a inicioDOS (etiqueta utilizada en el programa) el cual coloca el contador en 128 (osea 10000000) con esto empieza el desplazamiento hacia la derecha y realiza nuevamente la comparacion si es igual a 1(en decimal) se pasa al desplazamiendo hacia la izquierda sino sigue igual desplazando hacia la derecha con el operador aritmetico >> para entenderlo chequen el codigo y la simulacion.

Nota: El voltaje consumido por el LED es aproximadamente de 2V. Asumiendo que la corriente que consume el LED es de 10mA, calculando la resistencia:

R=V/I=(5-2)/10mA= 0.3K = 330 Ohms

Materiales:

PIC16F84A
Resistencia de 330Ohms, 4.7K
8 LEDs
Cristal de 4MHZ


Estructura del Programa

'DEFINICIONES
contador var byte
contadorDOS var byte

'DEFINIENDO PUERTO
TRISB = 0

'iniciando programa
'desplazando hacia la izquierda
inicio:
contador = 1
repetir:
PORTB = contador
pause 240
if contador = 64 then inicioDOS
contador = contador <<>

'desplazando hacia la derecha
inicioDOS:
contadorDOS = 128
repetirDOS:
PORTB = contadorDOS
PAUSE 240
if contadorDOS = 2 then inicio
contadorDOS = contadorDOS >> 1
goto repetirDOS

END

DIAGRAMA
Photobucket

SIMULACION


Photobucket

++ DESCARGAR ARCHIVO ++

Photobucket



Leer Más.....

Comuniacion Serial RS232 entre PIC y PC

Esto es algo que no necesita presentacion, Meta, ha realizado algo mas que un proyecto verdaderamente algo muy pero muy util y lo mejor de todo es que esta bien completo, hay explicacion y video asi que podemos verlo funcionar, sin mas que decirles les dejo lo el comenta;

Presento Manual Puerto serie RS232 Con PIC16F84A controlado por Visual C# en el que podrás aprender a controlar un PIC mediante una Interfaz en el PC bajo Visual C# .net.

Aún así, por falta de tiempo no he acabado la parte de MonoDevelop en Linux cosa que haré en el futuro ya en el 2009. Que sepan que también continuaré solo las primeras 200 páginas con Visual Basic .net (depende de la demanda lo haré también con Visual Basic 6) y Visual C++ otras 200.

Por ahora no he encontrado un lugar donde poder descargarlo directamente en PDF.

Ver Manual

Descargar 1ª parte
Descargar 2ª parte

Si estás registrado, hay una opción para bajarlo en PDF.


Pagina del Autor
Blog del Autor

Leer Más.....

Practicas Realizadas con el PIC16F84A

Al fin realice el video las practicas, me costo, el programa de movie make me fallo cuando estaba por finalizar de editar el video, asi que me toco hacerlo en otro programa, pero ya esta. El video de las primeras 4 practicas:

Cada una de las practicas tienen su diagrama, animacion, detalles de la programacion, simulacion y video. Pronto màs.... Espero opiniones respecto a estas primeras practicas... a ver que les parecio....

Leer Más.....

El Encendido de LEDs pares e Impares

PRACTICA 4


Practica: Encendido LEDs pares e impares con intervalos de tiempo.

Descripción: 8 LEDs son conectados al PORTB del PIC. Cuando el se inicia o cuando se pulsa reset, pasara la siguiente secuencia:

Encienden los LEDs impares
Espera 1 segundo
Encienden los LEDs pares
Espera 1 segundo
Encienden los LEDS impares
…………..
…………..
…………..

Se enviara al PORTB un numero hexadecimal, aunque tambien se puede hacer con uno decimal.

Hexadecimal($)-------- Decimal(%)
_____AA____________ 10101010_____ IMPARES
_____55____________ 01010101_____PARES

Donde 0 es un cero logico, y 1 un 1 logico. Para pasar a hexadecimal utilice el programa HEXER. Realmente depende de la persona si usar hexadecimal o decimal.

Nota: El voltaje consumido por el LED es aproximadamente de 2V. Asumiendo que la corriente que consume el LED es de 10mA, calculando la resistencia:
R=V/I=(5-2)/10mA= 0.3K = 330 Ohms

Materiales:

PIC16F84A
Resistencia de 330Ohms, 4.7K
8 LED
Cristal de 4MHZ
Push Botton

Estructura del Programa

'DEFINIENDO PUERTO
TRISB = 0

'iniciando programa
inicio:
PORTB = $AA

pause 1000
PORTB = $55
pause 1000
goto inicio
end

Diagrama


Simulacion


++ Descargar Documentacion y archivos ++
Photobucket

Leer Más.....

LEDs como luces de advertencia

PRACTICA 3

Practica: Encendido de LED como luces de advertencia

Descripción: 2 LEDs están conectados a un pin del puerto del Pic (PORTB (RB0)), y los LEDs encienden alternadamente con 1 segundo de espera.

Nota: El voltaje consumido por el LED es aproximadamente de 2V. Asumiendo que la corriente que consume el LED es de 10mA, calculando la resistencia:
R=V/I=(5-2)/10mA= 0.3K = 330 Ohms

Materiales:
- PIC16F84A
- Resistencia de 330Ohms, 4.7K
- 2 LED
- Cristal de 4MHZ
- Push Botton


Estructura del Programa

Mismo programa Practica 1

DIAGRAMA
Photobucket

SIMULACION
Photobucket

++ Descargar Archivo ++

Photobucket

Leer Más.....

PIC16F84A: Encendiendo un Led con secuencia

PRACTICA 2

Practica: Encendido de un Led a distintos intervalos

Descripción: Un LED es conectado a un pin del puerto del Pic (PORTB (RB0)), y el led enciende con ciertos intervalos como lo muestra la siguiente secuencia:

Enciende 3 veces con intervalos de 300ms en cada encendido.
2 segundos de pausa.
Enciende 3 veces con intervalos de 300ms en cada encendido.
2 segundos de pausa.
Enciende 3 veces con intervalos de 300ms en cada encendido.
2 segundos de pausa.
Y así sucesivamente.


Nota: El voltaje consumido por el LED es aproximadamente de 2V. Asumiendo que la corriente que consume el LED es de 10mA, calculando la resistencia:
R=V/I=(5-2)/10mA= 0.3K = 330 Ohms

Materiales:
- PIC16F84A
- Resistencia de 330Ohms, 4.7K
- LED
- Cristal de 4MHZ
- Push Botton


Estructura del Programa


'Definiendo Variables
contador var byte 'Declara contador como un byte

'Inicio del programa
TRISB=0 'Coloca el puertob como salida

INICIO:
for contador = 1 to 3
PORTB.0=1 'enciende el LED
PAUSE 300 'espera 300ms
PORTB.0=0 'apaga el LED
pause 300 'espera 300ms
next contador 'repite el ciclo 3 veces
pause 2000 'espera 2 segundos
goto INICIO
END
'ver en el foro programa


DIAGRAMA
Photobucket

SIMULACION
Photobucket

++ Descargar Documentacion y archivos ++
Photobucket

Leer Más.....

Encendiendo un LED con PIC16F84A

PRACTICA 1

Practica: Encendido de un Led

Programa: MicroCode Studio y PicBasic Pro

Descripción: Un LED es conectado a un pin del puerto del Pic (PORTB (RB0)), y el led enciende con intervalos de 1 segundo.

El voltaje consumido por el LED es aproximadamente de 2V. Asumiendo que la corriente que consume el LED es de 10mA, calculando la resistencia:

R=V/I=(5-2)/10mA= 0.3K = 330 Ohms

Estructura del Programa:
' Definir variables
LED VAR PORTB.0
' EMPIEZA EL PROGRAMA

TRISB.0 = 0
AGAIN:

LED = 1

PAUSE 1000
LED = 0

PAUSE 1000
GOTO AGAIN

END
'la explicacion del programa la encontraran en el foro

Diagrama:

Simulacion
encendido led con pic

++ Descargar Documentacion y archivos ++
Photobucket

Nota: mas adelante colocare el video

Leer Más.....

Contador de 0-255 en binario

Contador de 0-255 en Binario

Practica: Contador Binario con LEDs

Descripción: 8 LEDs son conectados al PORTB del PIC. Los LEDs cuentan con una separacion de 250ms entre cada conteo. El contador empieza de 0 (00000000) y llega a 255 (11111111) y lo repite nuevamente.

Nota: El voltaje consumido por el LED es aproximadamente de 2V. Asumiendo que la corriente que consume el LED es de 10mA, calculando la resistencia:

R=V/I=(5-2)/10mA= 0.3K = 330 Ohms

Materiales:

PIC16F84A
Resistencia de 330Ohms, 4.7K
8 LED
Cristal de 4MHZ
Push Botton

Estructura del Programa

contador var byte

TRISB = 0
contador = 0

inicio:
PORTB = contador
pause 250
contador = contador + 1
goto inicio
end

Con explicaciones:

'DEFINICIONES
contador var byte 'declara contador como una variable byte para las ocho posiciones
'DEFINIENDO PUERTO
TRISB = 0 'Coloca los pines PORTB como salidas
contador = 0

'iniciando programa
inicio:
PORTB = contador 'manda a contador a PORTB
pause 250 'espera 250 milisegundos
contador = contador + 1 'imcrementa contador
goto inicio 'repite el programa indefinidamente
end

Diagrama

Simulación

Photobucket

++ Descargar archivos ++
Photobucket


Leer Más.....

Iniciando con PICs: PIC16F84

Microcontroladores ó los bien conocidos PIC, según wikipedia;

Los 'PIC' son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de General Instruments.

El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como Peripheral Interface Controller (Controlador de Interfaz Periférico).


Ahora, empezaremos con algo teorico:

• Pines y funciones
• Arquitectura
• Características especiales
• El PIC16C84
• Compatibilidad con otras familias

Este Documento es de inicio rapido, me sirvio para conocer el pic16f84 que es el que con mas frecuencia utilizaremos, por el momento este pdf nos servira, seguire buscando algun documento aun mas extenso sobre el tema para aquellos que desean tener mas informacion sobre este pic.

++ Descargar Documentacion ++
Photobucket


Photobucket

Leer Más.....