Cuestionario
Cuestionario
Cuestionario
1. ¿Qué error genera MikroC? Escriba el código para eliminar el error y lograr que
el algoritmo funcione.
La definición para cada uno de los pines esta dado de la siguiente manera:
Este código va antes del void main (), para que el algoritmo que se ejecute reconozca los
pines de conexión.
2. ¿Qué función realiza cada línea de código en el algoritmo? Comente cada línea y
explique.
3. ¿Se puede simplificar la función getKey ()? Si la respuesta es afirmativa, escriba el
código.
Si se puede simplificar por medio del uso de una librería “Keypad4x4”, ya que para la
asignación de una variable por cada tecla se lo haría mediante la función de decisión
múltiple.
4. ¿Se puede mostrar el resultado de la tecla presionada en los displays de 7
segmentos? Si la respuesta es afirmativa, escriba el código.
Si se puede realizar mediante una conexión de un decodificador 7447 para ambos display,
ya que para la activación de cada uno de estos se realiza por transistores, en cada uno se
mostrará un valor y se va alternando. Para eso se creó una función obtener_numero () donde
consiste la creación de dos variables, ya que cada una tendrá una asignación
correspondiente mediante la función de decisión múltiple, éstos valores están en un formato
decimal que son para el estado del puerto C que cambiaran de valor cada cierto tiempo.
Lo que también significa que también se modificó en la función while bucle infinito unas
instrucciones para la oscilación de los display.
El codigo quedo de la siguiente forma:
if(state==1 ){
Lcd_cmd(_LCD_CLEAR); //Limpieza de la pantalla
Lcd_cmd(_LCD_CURSOR_OFF); // Apagar el cursor
PORTC=0;
state = 0;
}
if( state==0 && bandera==0){
Lcd_out(1,4,"SYSTEM ON");
delay_ms(1000);
Lcd_cmd(_LCD_CLEAR);
Lcd_cmd(_LCD_CURSOR_OFF);
bandera=1;
return 1;
}
}
void main() { //Función Principal
char keyStr[5]; //Creación de un vector de 5 elementos de 8 bits
TRISA=0XFF; //Configura al puerto como Entrada
ADCON1=0b00001110; //Digitaliza todos los pines desde A1 a A7 excepto el A0
PORTA=0X00; //Estado bajo en el Puerto A
TRISB=0X0F; //Configuración de los pines como 0= Salida y 1=Entrada
PORTB=0X00; //Esta Bajo Inicial de todos los pines del Puerto B
TRISC=0X00;
PORTC=0X00;
Lcd_Init(); //Inicialización de la pantalla LCD
Lcd_cmd(_LCD_CLEAR); //Limpieza de la pantalla
Lcd_cmd(_LCD_CURSOR_OFF); // Apagar el cursor
while(1){ //Bucle infinito
key=0;
key=getKey(); //Asignación de la variable Key por medio de la función getKey()
if(RA1_bit==1){
state=obtener_estado();
}
if(state==1){
Lcd_out(1,8,"KEY"); //Muestra el mensaje "KEY" en la fila 1 y columna 8
if(key==47){
Lcd_out(2,9,"/");
numero1=0;
numero2=0;
}
if(key==42){
Lcd_out(2,9,"*");
numero1=0;
numero2=0;
}
if(key==45){
Lcd_out(2,9,"-");
numero1=0;
numero2=0;
}
if(key==3) {
Lcd_out(2,9,"c");
numero1=0;
numero2=0;
}
if(key==61){
Lcd_out(2,9,"=");
numero1=0;
numero2=0;
}
if(key==43){
Lcd_out(2,9,"+");
numero1=0;
numero2=0;
}
if(key>47 && key<58){
digit=key-48;
ShortToStr(digit,keyStr); //Transformación del tipo de variable Short a String
Lcd_out(2,6,keyStr); //Muestra el valor en la fila 2 y columna 6
obtener_numero(); //Ir a la función
}
PORTC=numero1; //Mostrar la salida mediante e estado de número 1
delay_ms(100); //Pausa 100ms
PORTC=numero2; //Mostrar la salida mediante e estado de número 2
delay_ms(100); //Pausa 100ms
}
}
}