Está en la página 1de 3

Laboratorio de Sistemas Microprocesados 1

Universidad Politécnica Salesiana Fecha de entrega: 18/06/2019

“CALCULADORA”
TALLER PRÁCTICO

Caicedo Delgado Luis Fernando


lcaicedod@est.ups.edu.ec

Morales Flores Bryan Roberto


bmoralesf@est.ups.edu.ec

Suquillo Yajamín Henry Ramiro


hsuquilloy@est.ups.edu.ec

RESUMEN: memoria del microcontrolador aun cuando se ha


En el siguiente informe se ilustra el fundamento teórico y
desconectado la alimentación.
experimental acerca del funcionamiento de un teclado
matricial conformador por cuatro filas y cuatro columnas, 2 CODIFICACIÓN
mediante las librerías propias de mikroC, para la
visualización de caracteres en código ASCII (caracteres
char keypadPort at PORTC;
especiales) en una pantalla LCD de 2x16.
unsigned int numeroa=0, numerob=0,t=0,t2=0,i=1;
PALABRAS CLAVE: unsigned short nuevo=0, operacion, nuevo2, n,
cont=1;
Teclado Matricial, código ASCII, caracteres especiales. long respuesta=0;
int tecla=0;
1 OBJETIVOS
char resp [18];
1.1 Objetivo General: sbit LCD_RS at RD0_bit;
Analizar el principio de funcionamiento de un sbit LCD_EN at RD1_bit;
teclado matricial de 4 filas y 4 columnas, para el sbit LCD_D4 at RD4_bit;
ingreso de caracteres especiales en una LCD. sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
1.2 Objetivos Específicos: sbit LCD_D7 at RD7_bit;
Implementar el uso de las librerías keypad,
propias del software de mikroC, para el manejo de sbit LCD_RS_Direction at TRISD0_bit;
un teclado matricial. sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
Analizar el comportamiento de los 16 botones sbit LCD_D5_Direction at TRISD5_bit;
correspondientes al teclado matricial, así mismo de sbit LCD_D6_Direction at TRISD6_bit;
la disposición de filas para facilitar la resolución de sbit LCD_D7_Direction at TRISD7_bit;
operaciones básicas.
int num=0;
Implementar un prototipo que simule una
int LeerTeclado(void){
cerradura electrónica mediante la memoria
EEPROM de tal manera de guardar datos, en la
switch(Keypad_key_Click()){
case 1: num = '1'; return 1; // 1
case 2: num = '2'; return 2; // 2

1
Laboratorio de Sistemas Microprocesados 1

Universidad Politécnica Salesiana Fecha de entrega: 18/06/2019

case 3: num = '3'; return 3; // 3 }


case 4: num = '+'; return 12; // resta if(tecla>11){
case 5: num = '4'; return 4; // 4 nuevo=0;
case 6: num = '5'; return 5; // 5 nuevo2=1;
case 7: num = '6'; return 6; // 6 operacion=tecla;
case 8: num = '-'; return 13; // rmultiplicacion Lcd_Chr_Cp(num);
case 9: num = '7'; return 7; // 7 i=i+1;
case 10: num = '8'; return 8; // 8 t=1;
case 11: num = '9'; return 9; // 9
case 12: num = '/'; return 14; // division
case 13: num = '^'; return 94; // potenciacion }
case 14: num = '0'; return 0; // 0 }
case 15: num = '.'; return 15; // respuesta }
case 16: num = '='; return 11; // suma numerob=0;
default: num=0; return 16; while(nuevo2){
} tecla=LeerTeclado();
} if(tecla!=16){
void main () { if(tecla<10){ t2++;
Lcd_Chr(i,t2,num);
Keypad_Init(); numerob=numerob*10+tecla;
Lcd_Init(); }
delay_ms(100); if(tecla==11){
Lcd_Cmd(_LCD_CLEAR); t2=0,t=0,i=1;
//Lcd_Out(2,1,"0"); if(operacion==12){
Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr_Cp(num);
respuesta=numeroa + numerob;
while(1){ }
nuevo=1; if(operacion==13){
numeroa=0; Lcd_Chr_Cp(num);
while(nuevo){ respuesta=numeroa - numerob;
tecla=LeerTeclado(); }
if(tecla!=16){
if(tecla<10){ t++;
Lcd_Chr(i,t,num); /*if(operacion==15){
numeroa=numeroa*10+tecla; tecla=LeerTeclado();
} if(tecla==1) {
if(tecla==11){ t=0; Lcd_Chr_Cp(num);
Lcd_Out_Cp(num); respuesta=numeroa + numerob;
respuesta=numeroa; }
Lcd_Cmd(_LCD_CLEAR); if(tecla==2) {
FloatToStr(Respuesta,resp); Lcd_Chr_Cp(num);
Lcd_Out(2,1,resp); respuesta=numeroa + numerob;
delay_ms(300); }
Lcd_Cmd(_LCD_RETURN_HOME); } */
nuevo=0;
nuevo2=0; LCD_Cmd(_LCD_CLEAR);

2
Laboratorio de Sistemas Microprocesados 1

Universidad Politécnica Salesiana Fecha de entrega: 18/06/2019

FloatToStr(respuesta,resp); código ASCII, el cual es un código universal a nivel


Lcd_Out(2,1,resp); de máquina, tomando de la memoria CGRAM los
caracteres predfinidos y asignándole un espacio de
delay_ms(300);
memoria en CGROM, y mediante la DDRAM de la
Lcd_Cmd(_LCD_RETURN_HOME); LCD los caracteres se mantienen en cada ejecución
nuevo=1; del sistema. (Suquillo Yajamín Henry Ramiro)
nuevo2=0;
}
}
}
}
}

3 SIMULACIÓN

4 CONCLUSIONES
 El lenguaje mikroC proporciona la librería de
KaypadInit, con la cual solo basta asignarle el puerto
de acceso del microcontrolador y mediante la función
Keypad_Key_Click(), es posible leer los valores de
entrada al pulsar los botones, contando de por medio
con la protección a los rebotes producido por un
pulsador en cada flanco de subida de la señal.
(Caicedo Delgado Luis Fernando)

 Mediante el uso de la memoria EEPROM, la cual es


una memoria de guardado y borrado eléctricamente
se asignó en un espacio de memoria la nueva
contraseña elegida por el usuario según el enunciado
4.2, de tal forma que una vez desconectada la
alimentación del circuito se mantiene la contraseña
hasta el ingreso al sistema y cambio de contraseña,
siendo este proceso muy utilizado actualmente por
las ventajas que implica. (Morales Flores Bryan
Roberto)

 Por cada evento producido por al presionar un botón


del teclado se le asignaron caracteres especiales en