Mostrando las entradas más recientes con la etiqueta PIC16F84 Mostrar las entradas más antiguas
Contador de 0-9 con PIC16F84A
Introducción
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
'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
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


Alimentación de un PIC
Para dejar más claro este pequeño inconveniente, para alimentar un PIC se necesitara lo siguiente:
- Fuente de Alimentación.
- Conectar las patas a dicha alimentacion fisicamente.
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:
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.
Desplazamiento de Luces usando LEDs
Practica:Desplazando LEDs
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
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
Comuniacion Serial RS232 entre PIC y PC
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
Practicas Realizadas con el PIC16F84A
Practica 1: Encendiendo un LED
Practica 2: El encendido de un LED con secuencia
Practica 3: Leds como luces de advertencia
Practica 4: LED pares e impares
El Encendido de LEDs pares e Impares
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


LEDs como luces de advertencia
Practica: Encendido de LED como luces de advertencia
Materiales:
- PIC16F84A
- Resistencia de 330Ohms, 4.7K
- 2 LED
- Cristal de 4MHZ
- Push Botton
Mismo programa Practica 1
PIC16F84A: Encendiendo un Led con secuencia
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.
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
Encendiendo un LED con PIC16F84A
Programa: MicroCode Studio y PicBasic Pro
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
' 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
Nota: mas adelante colocare el video
Contador de 0-255 en binario
R=V/I=(5-2)/10mA= 0.3K = 330 Ohms
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
Iniciando con PICs: PIC16F84
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

































