Anda di halaman 1dari 4

ESCUELA POLITECNICA NACIONAL

ESCUELA DE FORMACIN DE TECNLOGOS


CONTROL CON MICROPROCESADORES
NOMBRE: Lenin Loachamn
Fecha: 22/12/2014
//Nombre de programa: CONEXION DEL KEYPAD EN EL PIC 16F870 Y VISUALIZACION EN UN
LCD
//Descripcin del programa. INGRESAR 2 VALORES DE 3 DIGITOS, SE IDENTIFIQUEN LAS
UNIDADES, DECENAS Y CENTENAS Y TAMBIEN SE UBIQUEN EN EL ORDEN CORRECTO
//Autor: LENIN ALEXANDER LOACHAMIN MUZO
//CONTROL CON MICROPROCESADORES
//DEBER: COMENTAR EL PROGRAMA
// DEFINICION DE VARIABLES
unsigned short kp, cnt, oldstate = 0;
char txt[6],struni[7],strdec[7],strcent[7],struni2[7],strdec2[7],strcent2[7];
int uni, dec, cent, uni2, dec2, cent2, operador, primero;
// Conexiones del mdulo Keypad
char keypadPort at PORTC;

// Keypad conectado en el Puerto C

// Conexiones del mdulo LCD (LCD conectado en el Puerto B)


sbit
sbit
sbit
sbit
sbit
sbit

LCD_RS at RB4_bit;
LCD_EN at RB5_bit;
LCD_D4 at RB0_bit;
LCD_D5 at RB1_bit;
LCD_D6 at RB2_bit;
LCD_D7 at RB3_bit;

sbit
sbit
sbit
sbit
sbit
sbit

LCD_RS_Direction at TRISB4_bit;
LCD_EN_Direction at TRISB5_bit;
LCD_D4_Direction at TRISB0_bit;
LCD_D5_Direction at TRISB1_bit;
LCD_D6_Direction at TRISB2_bit;
LCD_D7_Direction at TRISB3_bit;

// Fin de Conexiones del mdulo LCD


//Funcin principal
void main() {
// Instrucciones del programa. CONFIGURACIONES
cnt = 0;

// Resetear el contador

Keypad_Init();
adcon1=0B0110;
digitales
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Primero=1;

// Inicializar el Keypad
//configura las entradas y salidas como seales
// Iniciar el LCD
// Borrar el display
// Apagar el Cursor
// El valor 1 se almacena en la variable Primero

while (1) { // Primer while revisa la condicin y luego ejecuta la instruccin.


kp = 0;
// Resetear el cdigo de la variable de la tecla x la estructura del programa (kp
tiene un valor inicial de cero)
// Esperar que la Tecla sea presionada y publicada
//(do...while)
//Permite ejecutar un grupo de instrucciones de manera repetitiva, mientras una condicin
sea verdadera.
//Primero se ejecutan las instrucciones y luego se revisa la condicin.
do

// Ejecuta la Instruccin kp = Keypad_Key_Press

// kp = Keypad_Key_Press ();
Keypad

// la variable Kp es igual a la tecla presionada del

kp = Keypad_Key_Click();
// Se carga el cdigo de la tecla en la variable Kp
while (!kp);
// CONDICION MIENTRAS Kp est en 0 se mantiene en el lazo y
si est en 1 sale del lazo
// Si Kp tiene valores distintos de 0 Realiza lo siguiente
// Preparar valor para la salida, clave transformada a su valor ASCII
switch (kp) {
// Permite la ejecucin de un grupo de instrucciones de varios
grupos posibles, dependiendo del valor de una variable.
// Evala el valor de kp, entre los valores 1 al 16 y le da un valor ascii dependiendo del
valor de kp
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case

1: kp = 1; break; // 1
2: kp = 2; break; // 2
3: kp = 3; break; // 3
4: kp = 10; break; // A
5: kp = 4; break; // 4
6: kp = 5; break; // 5
7: kp = 6; break; // 6
8: kp = 11; break; // B
9: kp = 7; break; // 7
10: kp = 8; break; // 8
11: kp = 9; break; // 9
12: kp = 12; break; // C
13: kp = 14; break; // *
14: kp = 0; break; // 0
15: kp = 15; break; // #
16: kp = 13; break; // D

// caso 1 ejecuta Kp = 1
// caso 2 ejecuta Kp = 2
// caso 3 ejecuta Kp = 3
// caso 4 ejecuta Kp = 10
// caso 5 ejecuta Kp = 4
// caso 6 ejecuta Kp = 5
// caso 7 ejecuta Kp = 6
// caso 8 ejecuta Kp = 11
// caso 9 ejecuta Kp = 7
// caso 10 ejecuta Kp = 8
// caso 11 ejecuta Kp = 9
// caso 12 ejecuta Kp = 12
// caso 13 ejecuta Kp = 14
// caso 14 ejecuta Kp = 0
// caso 15 ejecuta Kp = 15
// caso 16 ejecuta Kp = 13

}
// INGRESO DE VALORES
//PRIMER VALOR
if (primero == 1)
// Si la variable Primero es igual a 1 Ingresar el primer valor
{
// Presentar los valores en cada variable
cent=dec;
dec=uni;
uni=kp;

// El valor de la variable dec se almacena en la variable cent


// El valor de la variable uni se almacena en la variable dec
// El valor de la variable Kp se almacena en la variable uni

inttostr (uni,struni);
Lcd_out(1, 10, struni);
if (dec!=0)
{
inttostr (dec,strdec);
Lcd_out(1, 9, strdec);
}
if (cent!=0)
{
inttostr (cent,strcent);
Lcd_out(1, 8, strcent);
}
}
// SEGUNDO VALOR

// cambiar el valor de uni a tipo string


// Imprimir unidades en el Lcd en la posicin 1,10

// Cambiar el valor de dec a tipo strig


// Imprimir decenas en el Lcd en la posicin 1,9

// Cambiar el valor de cent a tipo strig


// Imprimir centenas en el Lcd en la posicin 1,8

if (primero == 0)
// Si la variable Primero es igual a 0 Ingresar el segundo valor
{
// Presentar los valores en cada variable
cent2=dec2;
dec2=uni2;
uni2=kp;
inttostr (uni2,struni2);
Lcd_out(1, 10, struni2);
1,10
if (dec2!=0)
{
inttostr (dec2,strdec2);
Lcd_out(1, 9, strdec2);
1,9
}
if (cent2!=0)
{
inttostr (cent2,strcent2);
Lcd_out(1, 8, strcent2);
1,8
}

// El valor de la variable dec2 se almacena en la variable cent2


// El valor de la variable uni2 se almacena en la variable dec2
// El valor de la variable Kp se almacena en la variable uni2
// cambiar el valor de uni2 a tipo string
// Imprimir unidades del segundo valor en el Lcd en la posicin

// Cambiar el valor de dec2 a tipo strig


// Imprimir decenas del segundo valor en el Lcd en la posicin

// Cambiar el valor de cent2 a tipo strig


// Imprimir centenas del segundo valor en el Lcd en la posicin

}
if(kp>=10);
operador=kp;
}
}

// si el valor de Kp es mayor o igual a 10 realizar


// Kp se almacena en la variable operador

Anda mungkin juga menyukai