reporte practica 4

10
21 de octubre 2015 Integrantes Edgar Gabriel Hernández Morales Lady Guadalupe Feliciano Fuentes Microcontroladores y DSPs Practica 4

Upload: leidy-feliciano-fuentes

Post on 03-Dec-2015

2 views

Category:

Documents


0 download

DESCRIPTION

candado microcontrolador

TRANSCRIPT

Page 1: Reporte Practica 4

21 de octubre 2015

Integrantes

Edgar Gabriel Hernández Morales

Lady Guadalupe Feliciano Fuentes

Microcontroladores y DSPs Practica 4

Page 2: Reporte Practica 4

INTRODUCCION:

OBJETIVO GENERAL:

Comprender el funcionamiento y programación de los puertos de entrada analógicos del

microcontrolador PIC18F4550 y utilizar uno de ellos para medir la temperatura ambiental con un

sensor de temperatura LM35. Utilizar las interrupciones del Timer1 para generar una base de

tiempo constante y utilizarla para crear un reloj.

Marco teórico:

Un teclado matricial es un simple arreglo de botones conectados en filas y columnas, de modo que

se pueden leer varios botones con el mínimo número de pines requeridos. Un teclado matricial

4x4 solamente ocupa 4 lineas de un puerto para las filas y otras 4 líneas para las columnas, de este

modo se pueden leer 16 teclas utilizando solamente 8 líneas de un microcontrolador. Si asumimos

que todas las columnas y filas inicialmente están en alto (1 lógico), la pulsación de un botón se

puede detectar al poner cada fila a en bajo (0 lógico) y checar cada columna en busca de un cero,

si ninguna columna está en bajo entonces el 0 de las filas se recorre hacia la siguiente y así

secuencialmente.

INTERRUPCIONES DEL PIC18F4550:

Las interrupciones son mecanismos de llamado de funciones realizadas por hardware en respuesta

a los estímulos importantes de entrada, tal que se evita su pérdida.

Otra función de las interrupciones es para ejecutar procesos en tiempo real: un programa en

tiempo real es capaz de realizar todas sus funciones dentro de un tiempo específico.

Page 3: Reporte Practica 4

-Fuentes de interrupción y sistema de interrupciones

Planteamiento:

Utilizando el microcontrolador PIC18F4550, cree un “sistema de monitoreo de temperatura y

hora” con las siguientes características:

- Teclado matricial conectado al puerto B para la programación de la hora. Alternativa: Push

buttons conectados al puerto B para programar la hora.

-Uno de los canales analógicos del puerto A para adquirir la señal de temperatura proveniente de

un sensor LM35.

- Puerto D para conectar el display de LCD 2x16.

MATERIALES:

-Programa picCcompiler.

-1 Programador de PICs.

-1protoboard

-1PIC18F4550

-1 LCD

Page 4: Reporte Practica 4

-1 teclado matricial 4x4

-1 potenciometro

-2 leds

DESARROLLO PRÁCTICO:

Primero se realizo un diagrama de flujo para considerar las variables y las acciones que realizaría el

programa y así hacer más fácil la programacion:

Programa en c compiler:

#include <CANDADO.h>

#define LCD_ENABLE_PIN PIN_D0

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

#include <lcd.c>

#include <KBD4.c>

#use fast_io(A)

int i,noseg=0,pinerr=0;

char k;

char pinUsr[5];

char clave[5]="1234";

void main(){

SET_TRIS_A(0xFA);

lcd_init();

delay_ms(100);

Page 5: Reporte Practica 4

kbd_init();

port_b_pullups(TRUE);

for(;;){

output_bit( PIN_A1, 1);

output_low(PIN_A0);

output_low(PIN_A2);

lcd_putc("\fINGRESE SU PIN ");

i=0;

while(i<4){

k=kbd_getc();

if(k!=0)

{

pinUsr[i]=k;

i++;

lcd_gotoxy(i,2);

lcd_putc('*')

}

}

delay_ms(500);

if (pinUsr[0]==clave[0] && pinUsr[1]==clave[1] && pinUsr[2]==clave[2] && pinUsr[3]==clave[3])

{

lcd_putc("\fPin correcto! ");

pinerr=0;

lcd_putc("\nBienvenido!! ");

output_high(PIN_A0);

output_low(PIN_A2);

Page 6: Reporte Practica 4

delay_ms(1000);

while ( !input(PIN_A1)&& noseg<10)

{

printf(lcd_putc,"\fPor favor cierre");

printf(lcd_putc,"\nLa puerta :)");

delay_ms(1000);

noseg++;

if (!input(PIN_A1)&&noseg==10)

{

lcd_putc("\fAlerta Roja ");

lcd_putc("\n !!!!-_- !!!!");

output_bit( PIN_A2, 1);

while (true)

{

output_low(PIN_A0);

output_low(PIN_A2);

delay_ms(500);

output_high(PIN_A2);

delay_ms(500);

}

}

}

}

else

Page 7: Reporte Practica 4

{

lcd_putc("\fpin incorecto ");

output_LOW(PIN_A2);

output_low(PIN_A0);

delay_ms(1000);

pinerr++;

if(pinerr==5)

{

lcd_putc("\fTecladoBloqueado ");

lcd_putc("\n -_- ");

output_high(PIN_A2);

while(true)

{

output_low(PIN_A2);

delay_ms(500);

output_high(PIN_A2);

delay_ms(50); }

}

}

}

}

Page 8: Reporte Practica 4

Diagrama de flujo

Page 9: Reporte Practica 4

Descripción del programa en C:

Se comenzó por activar las librerías correspondientes del Teclado de 4x4(<KBD4.c>) que se tuvo

que descargar en internet ya que la que viene por default en pic c compiler es parauno de 3x4, la

del LCD (<lcd.c>). Y declarar los puertos a ocupar.

Posteriormente se declaro que numero seria nuestra contraseña para que se pudiera comparar

mas adelante con lo que se ingresaba en el teclado, se configuro al puerto A para que el pin A0 y

A2 fueran salidas y A1 entrada digital. A continuación se mostraba en el LCD la frase teclee su pin

para que el usuario escribiera un numero de 4 dígitos mediante el teclado y este fuera comparado

con la contraseña que ya se había establecido antes, si el numero teclead era incorrecto solo había

5 oportunidades para ingresar el correcto, de lo contrario se bloqueaba el teclado mediante un

ciclo, y si el pin era el correcto entonces se verificaba que la puerta estuviera cerrada mediante el

PIN A1 que había sido configurado como entrada digital y si este estaba cerrada o sea recibía una

señal positiva se reiniciaba al principio del programa, y si estaba abierta se pedía mediante el

teclado que cerrara la puerta durante 10 segundos, al pasar estos 10 segundos si no se cerraba

pasaba a una alerta roja señalando que la puerta estaba abierta.

Page 10: Reporte Practica 4

RESULTADOS Y CONCLUSIONES

Los resultados fueron los esperados con un retardo en la conclusión de la practica ya que estaban

conectados los pines del teclado matricial de manera inversa y por esta razón no se podía escribir

el PIN correcto, sin embargo este problema fue solucionado y la practica concluyo de manera

exitosa mostrando en el LCD lo esperado y realizando las acciones que se plantearon para esta

practica.

REFERENCIAS:

http://www.circuitoselectronicos.org/2011/03/teclado-matricial-4x4.html

https://www.dropbox.com/s/e33oszeey74i6hu/Unidad%20II%20-%20Interrupciones.pdf?dl=0