UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L INGENIERÍA MECATRÓNICA
-
Upload
independent -
Category
Documents
-
view
0 -
download
0
Transcript of UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L INGENIERÍA MECATRÓNICA
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERÍA MECATRÓNICA
Microprocesadores y Microcontroladores
Integrantes:
Chano Diego
Garcés Juan
Medina Ismael
Jiménez Arturo
Curso:
Séptimo “B”
Departamento:
Energía y Mecánica
Docente:
Ing. Pilatágsi
Período Académico:
Abril 2015 - Agosto 2015
TEMA
Manejo de un teclado 3x3 y 3x4 mediante el pic 16F628A y un LCD
OBJETIVOS
Objetivo general
Realizar un circuito para proyectar los números en una LCD al momento de
pulsar un teclado de 3x3 y un teclado de 3x4 realizado con pulsadores.
Objetivos específicos
Realizar el circuito correspondiente al teclado de 3x3 y 3x4.
Proyectar en una LCD los números al momento de pulsar cada uno de los
pulsadores del teclado.
Verificar el correcto funcionamiento del circuito realizado.
MATERIALES
12 pulsadores
3 resistencias 330Ω
1 resistencia de 10Ω
potenciómetro 10k
Cables
Pic16F628A
LCD
Protoboard
Fuente de 5V
MARCO TEORICO
1. PIC 16F628A
El PIC16F628A utiliza un procesador con arquitectura Harvard,
consiguiendo mayor rendimiento en el procesamiento de las
instrucciones, esta arquitectura a diferencia de la Von Neumann, utiliza
dos bloques de memorias independientes, una contiene instrucciones y la
otra sólo datos, cada una con su respectivo sistema de buses de acceso,
8 líneas para los datos y 14 líneas para las instrucciones, con lo que es
posible realizar operaciones de acceso lectura o escritura
simultáneamente en las 2 memorias, a esto se conoce como paralelismo.
Figura 1
Fig. 1 Configuración de pines del pic 16F628 A
El CPU del Microcontrolador 16F6XX emplea una avanzada arquitectura
RISC (computador con juego de instrucciones reducido) con un set de 35
instrucciones poderosas pertenecientes a la gama media de la familia de
los micros controladores PIC, la mayoría de instrucciones se ejecuta en
un ciclo de instrucción a excepción de los saltos que requieren de 2 ciclos.
Características especiales del Microcontrolador:
Opciones de oscilador externo e interno:
Precisión de fábrica del oscilador interno de 4 MHz calibrada a ±
1%
Oscilador de 48 kHz y de bajo consumo interno.
Modo de ahorro de energía en modo sueño.
Resistencias programables PULL-UPS del PORTB.
Multiplexado del pin RESET/ Entrada-pin.
Temporizador Watchdog con oscilador independiente para un
funcionamiento fiable.
2. MANEJO DE UN MÓDULO LCD
Los módulos LCD (Display de Cristal Líquido), son utilizados para mostrar
mensajes que indican al operario el estado de la máquina, o para dar
instrucciones de manejo, mostrar valores, etc. El LCD permite la
comunicación entre las máquinas y los humanos, este puede mostrar
cualquier carácter ASCII, y consumen mucho menos que los displays de
7 segmentos, existen de varias presentaciones por ejemplo de 2 líneas
por 8 caracteres, 2x16, 2x20, 4x20, 4x40, etc. Sin back light (14 pines) o
con backlight (16 pines, iluminado de pantalla), el LCD más popular es el
2x16, 2 líneas de 16 caracteres cada una.
Fig. 2 Representación real del LCD
Tabla 1 Funcionalidad de los pines en el LCD
LA DECLARACIÓN LCDOUT. Sirve para mostrar items en una pantalla
de cristal líquido, se utiliza escribiendo: LCDOUT, luego escribiendo $FE,
y seguido por el comando a utilizar, el siguiente cuadro muestra los
comandos más utilizados:
Tabla 2 Comandos utilizados en el manejo del LCD
3. Teclado
Fig. 3 Configuración del teclado 4x4
En la figura se muestra un teclado como una matriz de 4x4 teclas
configuradas en 4 columnas y 4 renglones. Cuando se oprime una tecla
se hace una conexión entre renglones y columnas
PROCEDIMIENTO
CIRCUITO N°1
1. Armar el circuito de teclado 3x3 e impresión de datos numéricos en lcd.
2. Programación para el PIC 16F628A.
#include <16f628a.h>
#fuses XT,NOWDT
#use delay (clock=4M)
#include <lcd.c>
int x;
void main()
set_tris_b(0x00);
output_b(0x00);
set_tris_a(0b11111000);
lcd_init();
while (TRUE)
lcd_gotoxy(6,1);
lcd_putc("TECLA");
output_a(254);
if (input(PIN_A3)==0)
x=1;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
if (input(PIN_A4)==0)
x=2;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
if(input(PIN_A6)==0)
x=3;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
output_a(253);
if(input(PIN_A3)==0)
x=4;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
if(input(PIN_A4)==0)
x=5;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
if(input(PIN_A6)==0)
x=6;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
output_a(251);
if(input(PIN_A3)==0)
x=7;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
if(input(PIN_A4)==0)
x=8;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
if(input(PIN_A6)==0)
x=9;
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",x);
3. Implementar el circuito en protoboard
CIRCUITO N°2
1. Armar el circuito de teclado 3x3 e impresión de datos en lcd.
2. Programación para el PIC
#include <16f628a.h>
#fuses XT,NOWDT
#use delay (clock=4M)
#include <lcd.c>
int x;
void main()
set_tris_b(0x00);
output_b(0x00);
set_tris_a(0b11111000);
lcd_init();
while(TRUE)
lcd_gotoxy(6,1);
lcd_putc("TECLA");
output_a(254);
if(input(PIN_A3)==0)
x=1;
lcd_gotoxy(8,2);
lcd_putc("1");
if(input(PIN_A4)==0)
x=2;
lcd_gotoxy(8,2);
lcd_putc("2");
if(input(PIN_A6)==0)
x=3;
lcd_gotoxy(8,2);
lcd_putc("3");
output_a(253);
if(input(PIN_A3)==0)
x=4;
lcd_gotoxy(8,2);
lcd_putc("4");
if(input(PIN_A4)==0)
x=5;
lcd_gotoxy(8,2);
lcd_putc("5");
if(input(PIN_A6)==0)
x=6;
lcd_gotoxy(8,2);
lcd_putc("6");
output_a(251);
if(input(PIN_A3)==0)
x=7;
lcd_gotoxy(8,2);
lcd_putc("7");
if(input(PIN_A4)==0)
x=8;
lcd_gotoxy(8,2);
lcd_putc("8");
if(input(PIN_A6)==0)
x=9;
lcd_gotoxy(8,2);
lcd_putc("9");
3. Implementar el circuito en Protoboard
2. Programación del PIC
#include <16f628a.h>
#fuses XT,NOWDT
#use delay (clock=4M)
#include <lcd.c>
int x;
int32 y=0;
void antirebote(void)
while(input(PIN_A4)==0)
while(input(PIN_A6)==0)
while(input(PIN_A7)==0)
delay_ms(30);
y=(y*10)+x;
lcd_gotoxy(8,2);
printf(lcd_putc,"%lu",y);
return;
void main()
set_tris_b(0x00);
output_b(0x00);
set_tris_a(0b11111000);
lcd_init();
while(TRUE)
lcd_gotoxy(6,1);
lcd_putc("TECLA");
output_a(254);
if(input(PIN_A4)==0)
x=1;
antirebote();
if(input(PIN_A6)==0)
x=2;
antirebote();
if(input(PIN_A7)==0)
x=3;
antirebote();
output_a(253);
if(input(PIN_A4)==0)
x=4;
antirebote();
if(input(PIN_A6)==0)
x=5;
antirebote();
if(input(PIN_A7)==0)
x=6;
antirebote();
output_a(251);
if(input(PIN_A4)==0)
x=7;
antirebote();
if(input(PIN_A6)==0)
x=8;
antirebote();
if(input(PIN_A7)==0)
x=9;
antirebote();
output_a(247);
if(input(PIN_A4)==0)
x=0;
antirebote();
if(input(PIN_A6)==0)
x=0;
antirebote();
if(input(PIN_A7)==0)
x=0;
y=0;
lcd_gotoxy(6,2);
lcd_putc(" ");
antirebote();
3. Implementar el circuito en protoboard
ANÁLISIS DE RESULTADOS:
La impresión es distinta si se realiza mediante datos numéricos o como
string, ya que al ser string aparecen líneas al final del dato.
Mediante la implementación del teclado se logra tener un numero grande
de pulsadores utilizando menos número de puertos.
CONCLUSIONES
Debido a las distintas capacidades de control que posee el pic 16F628A
es necesario cambiar la configuración de sus pines, es decir cambiar la
palabra 3F59 a la palabra de configuración 3F18 para poder modificar su
comportamiento logrando adaptarlo para interactuar con teclados tanto de
3x3 y de 3x4.
RECOMENDACIONES
En el proceso de simulación, al representar los caracteres en el LCD se
genera un parpadeo cuando se utiliza un teclado, de debido a esto es
aconsejable armar un teclado con pulsadores tanto en la simulación como
en la práctica
BIBLIOGRAFIA
Microchip. (2012). Recuperado el 18 de junio de 2015, de Características
de Microcontroladores:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en0102
12
Carlos A. Reyes, “Microcontroladores PIC y programación en basic”,
Tercera Edición, Volumen 1, Microchip, 2008, 79-89.