Академический Документы
Профессиональный Документы
Культура Документы
PIC16F84
Introduccin.
El C PIC16F84 de Microchip Technology Inc. Es uno de los microcontroladores ms
utilizados en proyectos electrnicos pequeos. A diferencia de versiones ms avanzadas
como el igualmente popular PIC16F87x, el PIC16F84 carece de convertidor A/D, PWM,
comunicacin serial por hardware y tiene menos memoria y puertos (conjuntos de lneas de
datos) disponibles. Sin embargo, su fcil uso, precio reducido, lo han convertido en un C
muy popular y el favorito en un gran rango de aplicaciones. A pesar de que este C no
posee, muchas de las caractersticas que este C no posee pueden ser implementadas por
software. El C PIC16F84, o su versin actual el C PIC16F84A pertenece a la familia de
Microchip de microcontroladores de rango medio de 8 bits con 18 pines. Como se muestra
en la figura, este tiene 13 lneas de entrada/salida (RA0RA5, RB0RB7) con tecnologa
TTL/CMOS, es decir, 5V para un estado lgico 1 y 0V para el estado 0. Requiere un
oscilador externo de hasta 20 MHz. Cambios de estado en las lneas RB4 a RB7 del puerto
B. Flanco de subida o bajada en la lnea RB0/INT del puerto B.
Esfuerzo y dedicacin
Objetivo:
Implementar el circuito mnimo basado en microcontrolador 16F84A para el desarrollo de
varias aplicaciones didcticas. Adems deber leer un dato de 5 bits por el puerto A y
enviarlo a travs del puerto B.
Material:
.- 1 microcontrolador 16F84A.
.- 1 CRYSTAL de 4MHz
.- 6 resistencias de 1k.
.- 5 resistencias de 220.
.- 2 C de 33pF.
.- 1 C de 100 pF.
.- 1 push button.
.- 5 Leds
.- 1 dip swich de 8 lneas.
.- 1 Fuente de voltaje 5 Volts
.-1 Programador de microcontroladores
.-1 software PICC.
Esfuerzo y dedicacin
Componentes:
.- pic16f814a.
.- crystal.
.- cap.
.- dipsw8.
.- led-green.
.- button.
Esfuerzo y dedicacin
Crear una carpeta con el nombre de prctica 1 y guardar el archivo con el nombre de
Binario.
Esfuerzo y dedicacin
Como se puede observar trae preestablecidas las configuraciones, hay que borrar todo y
comenzar a programar.
#include<16f84A.h>.
Con este comando se le est ordenando a compilador que incluya la librera de dicho
C.
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Como la prctica indica que el puerto A ser de entrada y en ella se leern los
bits. El puerto B ser de Salida y en ella se escribirn los bits, el desarrollo de la
programacin queda de la siguiente manera:
#include<16f84a.h>
#fuses NOWDT, XT
#use delay(clock = 4Mhz)
void main(){
while(TRUE){
if(input(pin_A0) == 1){
output_high(pin_B0);
}
else
output_low(pin_B0);
if(input(pin_A1) == 1){
output_high(pin_B1);
}
else
output_low(pin_B1);
Esfuerzo y dedicacin
if(input(pin_A2) == 1){
output_high(pin_B2);
}
else
output_low(pin_B2);
if(input(pin_A3) == 1){
output_high(pin_B3);
}
else
output_low(pin_B3);
if(input(pin_A4) == 1){
output_high(pin_B4);
}
else
output_low(pin_B4);
}
}
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Como se puede observar no existe ningn error, eso quiere decir que hemos programado
bien, en caso de que el compilador marcara un error, habra que revisar nuevamente la
programacin y detectar el error, una vez corregido los errores, compilar nuevamente el
programa.
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Objetivo:
Desarrollar un programa para el microcontrolador 16F84A de tal forma que si en la entrada
del bit A0 hay un 1 lgico (5V), en el puerto B se muestre el conteo de 0 - 9.
Material:
.- 1 microcontrolador 16F84A.
.- 1 CRYSTAL de 4MHz
.- 7 resistencias de 10K.
.- 1 resistencias de 1k.
.- 7 resistencias de 220.
.- 2 C de 33pF.
.- 1 C de 100 pF.
.- 1 push button.
.- display de 7 segmentos ctodo comn.
.- 1 Fuente de voltaje 5 Volts
.-1 Programador de microcontroladores
.-1 software PICC.
Esfuerzo y dedicacin
Ejemplos:
- Si se activan todos los segmentos se forma el nmero "8".
- Si se activan solo los segmentos: "a, b, c, d, e, f," se forma el nmero "0".
- Si se activan solo los segmentos: "a, b, g, e, d," se forma el nmero "2".
- Si se activan solo los segmentos: "b, c, f, g," se forma el nmero "4".
- p.d. representa el punto decimal.
Esfuerzo y dedicacin
En el display nodo comn, todos los nodos de los diodos LED unidos y conectados a
la fuente de alimentacin. En este caso para activar cualquier elemento hay que poner el
ctodo del elemento a tierra a travs de una resistencia para limitar la corriente que pasa
por el elemento.
El display ctodo comn tiene todos los nodos de los diodos LED unidos y conectados
a tierra. Para activar un segmento de estos hay que poner el nodo del segmento a
encender a Vcc (tensin de la fuente) a travs de una resistencia para limitar el paso de
la corriente
Tambin hay display alfanumricos que permiten representar tanto letras como nmeros
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Crear una carpeta con el nombre de prctica 2 y guardar el archivo con el nombre de
Contador 0-9.
Esfuerzo y dedicacin
Como se puede observar trae preestablecidas las configuraciones, hay que borrar todo y
comenzar a programar.
#include<16f84A.h>.
Con este comando se le est ordenando a compilador que incluya la librera de dicho
C.
Esfuerzo y dedicacin
Esfuerzo y dedicacin
#include<16f84a.h>
#fuses NOWDT, XT
#use delay(clock = 4Mhz)
A diferencia de la prctica N1 antes del void main(), hay que declarar un vector
llamado nmero[], dentro del vector debe de ir las siguientes combinaciones.
Estado
1
1
1
1
1
1
0
Binario =
001111111
Estado
0
1
1
0
0
0
0
Esfuerzo y dedicacin
Binario =
00000110
Para dibujar el 2
Diodo led
a
b
c
d
e
f
g
Estado
1
1
0
1
1
0
1
Binario =
01011011
Para dibujar el 3
Diodo led
a
b
c
d
e
f
g
Estado
1
1
1
1
0
0
1
Binario =
01001111
Para dibujar el 4
Diodo led
a
b
c
d
e
f
g
Estado
0
1
1
0
0
1
1
Esfuerzo y dedicacin
Binario =
01100110
Estado
1
0
1
1
0
1
1
Binario =
01101101
Para dibujar el 6
Diodo led
a
b
c
d
e
f
g
Estado
1
0
1
1
1
1
1
Binario =
01111101
Para dibujar el 7
Diodo led
a
b
c
d
e
f
g
Estado
1
1
1
0
0
0
0
Esfuerzo y dedicacin
Binario =
00000111
Estado
1
1
1
1
1
1
0
Binario =
01111111
Para dibujar el 9
Diodo led
a
b
c
d
e
f
g
Estado
1
1
1
1
0
1
1
Binario =
01101111
Combinaciones obtenidas
Nmero
0
1
2
3
4
5
6
7
8
9
Binario
00111111
00000110
01011011
01001111
01100110
01101101
01111101
00000111
01111111
01101111
Esfuerzo y dedicacin
Nmero
0
1
2
3
4
5
6
7
8
9
B7
0
0
0
0
0
0
0
0
0
0
B6
0
0
1
1
1
1
1
0
1
1
B5
1
0
0
0
1
1
1
0
1
1
Puerto B
B4 B3 B2
1
1
1
0
0
1
1
1
0
0
1
1
0
0
1
0
1
1
1
1
1
0
0
1
1
1
1
0
1
1
B1
1
1
1
1
1
0
0
1
1
1
B0
1
0
1
1
0
1
1
1
1
1
Decimal
10
15
Binario
0b00001010
0b00001111
hexadecimal
0x0A
0x0F
Esfuerzo y dedicacin
Decimal
0
1
2
3
4
5
6
7
8
9
Binario
0b00111111
0b00000110
0b01011011
0b01001111
0b01100110
0b01101101
0b01111101
0b00000111
0b01111111
0b01101111
hexadecimal
0x3f
0x06
0x5b
0x4f
0x66
0x6d
0x7d
0x07
0x7f
0x6f
void main(){
while(TRUE){
De acuerdo con la prctica, hay que hacer una condicionante, si en la entrada del
bit A0 hay un 1 lgico (5V), al mismo tiempo abrir una llave {.
if(input(pin_A0) == 1){
Esfuerzo y dedicacin
Finalizar el programa cerrando las llaves del if, while y el voin main().
}
}
}
Esfuerzo y dedicacin
Compilar en programa para ver que no existan errores y se pueda generar el .exe que
llevar grabado el microcontrolador.
Esfuerzo y dedicacin
Como se puede observar no existe ningn error, eso quiere decir que hemos programado
bien, en caso de que el compilador marcara un error, habra que revisar nuevamente la
programacin y detectar el error, una vez corregido los errores, compilar nuevamente el
programa.
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Objetivo:
Controlar del giro de un motor de CD con el microcontrolador 18F84A y el circuito
integrado L293D puente H.
Material:
.- 1 microcontrolador 16F84A.
.- 1 CRYSTAL de 4MHz
.- 4 resistencias de 1k.
.- 2 C de 33pF.
.- 1 C de 100 pF.
.- 4 push button.
.- Motor de CD.
.- CI L293D.
.- 1 Fuente de voltaje 5 Volts
.- 1 Fuente de voltaje de 12Volts
.-1 Programador de microcontroladores
.-1 software PICC.
Esfuerzo y dedicacin
El integrado L293D incluye cuatro circuitos para manejar cargas de potencia media, en
especial pequeos motores y cargas inductivas, con la capacidad de controlar corriente
hasta 600 mA en cada circuito y una tensin entre 4,5
V a 36 V.
Los circuitos individuales se pueden usar de manera
independiente para controlar cargas de todo tipo y, en
el caso de ser motores, manejar un nico sentido de
giro. Pero adems, cualquiera de estos cuatro circuitos
sirve para configurar la mitad de un puente H.
El integrado permite formar, entonces, dos puentes H completos, con los que se puede
realizar el manejo de dos motores. En este caso el manejo ser bidireccional, con
frenado rpido y con posibilidad de implementar fcilmente el control de velocidad.
Diagrama interno
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Al accionar el botn 1 el motor debe de girar en sentido a las manecillas del reloj.
Al accionar el botn 2 el motor debe de girar en sentido contrario a las manecillas
del reloj.
Al accionar el botn 3 el motor debe de quedar inmvil.
.- motor.
.- crystal.
.- L293D.
.- cap.
.- dipsw8.
.- res
.- button.
Esfuerzo y dedicacin
Software PICC
Crear una carpeta con el nombre de prctica 3 y guardar el archivo con el nombre de
motor-L293D.
Esfuerzo y dedicacin
Como se puede observar trae preestablecidas las configuraciones, hay que borrar todo y
comenzar a programar.
#include<16f84A.h>.
Con este comando se le est ordenando a compilador que incluya la librera de dicho
C.
Esfuerzo y dedicacin
Esfuerzo y dedicacin
En esta prctica definiremos los nombres de los bits de entrada (A0, A1 y A2) y
salida (B0, B1, B2), para ello se utiliza el siguiente cdigo.
Como la prctica indica que el puerto A ser de entrada donde estarn los 3
botones. El puerto B ser de Salida, el desarrollo de la programacin queda de la
siguiente manera:
#include<16f84a.h>
#fuses NOWDT, XT
#use delay(clock = 4Mhz)
#DEFINE boton_1 pin_A0
#DEFINE boton_2 pin_A1
#DEFINE boton_3 pin_A2
#DEFINE In1 pin_B0
#DEFINE In2 pin_B1
#DEFINE En1 pin_B2
void main(){
while(TRUE){
Esfuerzo y dedicacin
if(input(boton_1) == 1){
output_high(In1);
output_low(In2);
output_high(En1);
}
Para que el motor gire en sentido contrario a las manecillas del reloj.
if(input(boton_2) == 1){
output_low(In1);
output_high(In2);
output_high(En1);
}
Esfuerzo y dedicacin
if(input(boton_3) == 1){
output_low(In1);
output_low(In2);
output_high(En1);
}
}
}
El programa queda de la siguiente manera
Esfuerzo y dedicacin
Como se puede observar no existe ningn error, eso quiere decir que hemos programado
bien, en caso de que el compilador marcara un error, habra que revisar nuevamente la
programacin y detectar el error, una vez corregido los errores, compilar nuevamente el
programa.
Esfuerzo y dedicacin
Esfuerzo y dedicacin
Oprimir el botn 2 para que el motor comience a girar en sentido contrario a las
manecillas del reloj.
Esfuerzo y dedicacin
Esfuerzo y dedicacin
BIBLIOGRAFIA CONSULTADA
Microcontrolador 16f84
http://akizukidenshi.com/download/PIC16F84A.pdf
Display de 7 segmentos
http://unicrom.com/Tut_display-7-segmentos.asp
L293D
http://robots-argentina.com.ar/MotorCC_L293D.htm
Esfuerzo y dedicacin