Está en la página 1de 10

Diseo de una Calculadora

Diseo de una Calculadora


Gonzlez, Pedro C.I: 25920721
Duque, Andrs C.I: 25698695

Opcin para colocar coma.


Mostrar el resultado por pantalla LCD. Se tiene que
al mostrar el resultado se debe mostrar el primer
nmero, signo, el segundo nmero y su respectivo
resultado.

RESUMEN
El uso de una calculadora puede resultar tan esencial para el
desarrollo de nuestra vida cotidiana. Tener el resultado de
operaciones bsicas tales como suma, resta, multiplicacin y divisin
entre nmeros de un mximo de 4 dgitos enteros y dos decimales;
puede resultar algo tan til como a su vez provechoso. Se dispone del
uso de un microcontrolador el cual permitir el desarrollo de todas las
operaciones y la interpretacin del teclado as como el control para
mostrar los resultados por pantalla LCD; permitiendo, mediante una
debida programacin, su respectivo funcionamiento.

III. DIAGRAMA DE FLUJO DE LA OPERACIN

PALABRAS CLAVE
Programacin, Lenguaje C, CCS, Calculadora,
Microcontroladores, Microprocesadores, LCD, KEYPAD.

I.

Diseo,

INTRODUCTION

Uchas veces, durante el desarrollo de nuestra vida


cotidiana, requerimos el uso de una calculadora
que nos facilita la obtencin de algunas
operaciones bsicas tales como suma, resta, multiplicacin y
divisin; tanto en enteros como con nmeros decimales.
Bsicamente, se tiene el diseo de una calculadora la cual,
basndose en el modelo convencional, se implementan sus
operaciones bsica as como la disposicin de un teclado el
cual permite introducir los nmeros as como tambin, el
encendido y apagado de la misma. Se tiene que para ello, se
disponen de ciertos parmetros que permitirn llevar a cabo la
realizacin de dicho control. Se tiene que, mediante un PIC, se
realizar la simulacin de dicho proceso, permitiendo
mediante un teclado la interaccin de ser humano con l. Esto,
a su vez, mostrara los valores ingresado mediante una pantalla
LCD, la cual a su vez mostrar el resultado de la operacin.
Cabe destacar que se tienen dos botones adicionales los cuales
se encargan de borrar y de apagar la calculadora.
Se tiene que para la programacin del PIC, se cuenta
con la programacin C, especficamente CCS, la cual no es
ms que una variacin de dicho lenguaje. Mediante simples
lneas de cdigo y llamado de algunas libreras, se obtiene el
control de la pantalla LCD, as como el del teclado 4x4
requerido para la simulacin.
II.

REQUERIMIENTOS

A. Requerimientos para el Proceso


Para el diseo de la calculadora, se tienen los siguientes
requerimientos:
Introduccin de los dgitos mediante un teclado
4x4.
Mximo de 4 dgitos enteros y 2 decimales, por lo
que el nmero mayor a introducir ser 9999.99.

Fig. 1. Representacin del Diagrama de Flujo del Proceso


En el diagrama de flujo, se puede apreciar el proceso
detallado a cumplir para el cumplimiento de los
requerimientos establecidos para la prctica. Se tiene que
inicialmente, se hace declaracin de los siguientes parmetros:
Watch Dog: se tiene que el perro guardin estar
desactivado. Consiste en, al entrar en un ciclo
repetitivo, este resetee el programa por lo que, para
evitar ello, se declara como apagado.
Puerto A: se declara como entrada ya que, en l
estarn ubicados los botones destinados para
ON/OFF y CLEAR.
Puerto B: se declara como entrada ya que en l, irn
conectados los pines correspondientes al teclado.
Dicho teclado permitir al usuario introducir los
nmeros y la operacin que desea realizar.
Puerto C como salida ya que este se encargar de
cumplir el protocolo de salida para la escritura y
lectura de la pantalla LCD, as como su
habilitacin.
PULL UP: resistencias internas del PIC, conectadas
a VCC. Se encuentran exclusivamente en el puerto
B.
CLK: declaracin del reloj.
Declaracin de las diferentes variables.
Para efectos prcticos, se realiza la asignacin de
diferentes variables las cuales contendrn una
funcin especfica y permitirn el desarrollo del
proceso de forma ms idnea.
Luego de haber realizado la configuracin del PIC, se
procede a realizar el estado inicial de la calculadora la cual
consiste en la inicializacin por pantalla dando la bienvenida.

Diseo de una Calculadora


Se tiene:
Se inicializa la pantalla y el teclado.
Inicialmente se define una etiqueta inicio, donde se
declaran todas las variables empleadas en el sistema
como 0. Esto se hace para evitar que hayan datos
cargados anteriormente y afecte el resultado.
Se manda un mensaje escrito por medio de la
pantalla, indicando la bienvenida al sistema y la
introduccin de los nmeros.
Se hace una toma del botn presionado y se guarda
en la variable K.
Se tiene una condicin la cual se cumplir siempre y cuando
el valor de Val1=0 y se haya presionado alguna tecla, a su vez,
tambin se cumple si N1 es menor a 4 ya que esta nos
permitir ingresar exclusivamente los 4 dgitos requeridos. Se
imprimen dichos valores por pantalla. Se tiene que a medida
que se presione un nmero, N1 incrementa su valor y al ser
superior a 4, deja de cumplir la condicin.
Posterior a ello, se presiona el signo. Se tienen 4
condiciones las cuales varan dependiendo el signo, sin
embargo, estas poseen la misma estructura. La variacin que
estas poseen es que, dentro de su condicin tendrn una
variable cuyo nombre posee relacin con la operacin esto con
la finalidad de posteriormente, dependiendo de la operacin,
se cumpla de manera satisfactoria y muestre en pantalla el
resultado deseado.
El espacio en blanco, es utilizado para la puesta de la coma
que indica que al ser presionado, el valor de la variable coma
= 1, permitiendo entrar en una condicin.
Se tiene que el nmero debe contar nica y exclusivamente
con dos decimales por lo que para ello, se tiene algo muy
parecido con respecto a lo utilizado para los enteros. Se tiene
una variable N2 la cual incrementar conforme se pulsen los
nmeros correspondientes a los decimales. Siempre y cuando
esta sea menor a 2. Si sobre pasa, se tiene que sale de la
condicin. Para la obtencin del decimal, se tiene que emplear
la librera matemtica la cual permite el uso de potencias.
Simplemente el nmero presionado se divide entre 10 y 100,
siendo el resultado de esto, sumado con el nmero entero para
obtener el decimal. Se imprime en pantalla, pudiendo notar
que se tiene un nmero tal y como los requerimientos.
Se tiene que la condicin del decimal, se cumple cuando
existe un valor entero y cuando ese valor entero es cero, para
ello, se emplean otras condiciones las cuales permiten tener
nmero decimal siendo el nmero entero cero.
Listo el nmero deseado, se tiene que al presionar el botn
igual, dependiendo de la operacin seleccionada
anteriormente, se realiza la operacin deseada. En lenguaje C,
no es ms que simplemente realizar una operacin y dicho
resultado guardarlo en una variable para luego ser impreso por
pantalla. Se tiene que a su vez, se imprimen los valores y el
signo de la operacin y muestra el resultado tal y como es
debido.
Por otra parte, se cuenta con un botn de encendido y
apagado. Si dicho botn es presionado, se tiene que enviar un

cero el cual, mientras eso sea verdad, se mantendr la pantalla


apagada, impidiendo realizar algn tipo de operacin o
mostrar algo en ella. Si, el pin de CLEAR llega ser
presionado, se sale de dicha condicin y enciende la
calculadora. A su vez, este botn es usado para enviar al inicio
e inicializar nuevamente las variables empleadas.
IV.

FUNCIONAMIENTO

A. Inicializacin del Proceso

Fig. 2. Inicializacin del Proceso.


Se observa que al inicializar el programa, se da la bienvenida
a la calculadora, mostrado en la LCD.

Fig. 3. Inicializacin del Proceso (2).


Se mantiene la fase inicial del programa. Sin embargo, se
muestra un mensaje que deben ser ingresados los valores. El
mensaje se mantiene en pantalla hasta que sea introducido
algn valor.

B. Se introduce el Valor 1

Diseo de una Calculadora

Fig. 4. Primer Dgito Entero


Al presionarse alguno de los botones correspondientes a un
nmero, la pantalla se borra y muestra de manera inmediata el
nmero que fue presionado.

Fig.
7.
Limpia pantalla al
presionar cualquiera de las operaciones aritmticas a realizar.
D.

Fig. 5. Segundo Dgito Entero


Al ir presionando los nmeros que el usuario desea emplear
para efectuar la operacin, se muestran en pantalla,
conservando el nmero presionado anteriormente.

Se Introduce el valor 2

Al igual que el valor 1, el valor 2 cuenta con la misma


condicin y es que solo cuenta con 4 nmeros enteros. Al
presionar un botn luego de haber presionado la operacin a
realizarse, se tiene que aparecern en pantalla los valores
correspondientes al segundo valor.

Fig. 8. Puesta en pantalla del dato 2 el cual, se le incluyen


directamente los 4 dgitos correspondientes al lmite aceptado.

Fig. 6. Tercer y Cuarto Dgito Entero


Se tiene que al introducir el cuarto dgito entero, si se
presiona algn otro nmero, no se mostrar en pantalla. Esto
se debe a que uno de los requerimientos propuestos para la
elaboracin de la calculadora es que, el nmero lmite para los
enteros fuera 9999.

C. Seleccin de Operacin
Luego de haber introducido el valor del nmero 1 deseado,
se procede a pulsar la operacin deseada. Se tiene que al
presionar cualquiera de las operaciones, se borra la pantalla
esto para que a continuacin, se marque el nmero
correspondiente al valor 2.

E. Decimal
Uno de los requerimientos para el debido funcionamiento de
la calculadora, era el uso de dos decimales para ello, al
presionar el botn del KEYPAD que dice ON/C, se procede
a introducir los valores correspondientes a la coma. Se tiene
que al ser presionado dicho botn, una variable llamada igual
a la operacin a cumplir, cambia su estado a uno, permitiendo
que entre en la condicin y se muestren los decimales que el
usuario desee colocar.

Diseo de una Calculadora

Fig. 12. Resultado

de la Resta.

Fig. 9. Puesta del primer Decimal.


Se tiene que al ser presionado un nmero, este primeramente
ser dividido por 10, lo cual indica el primer dgito requerido
para el primer valor del nmero decimal. Al presionarse otro,
se tiene que este es dividido por 100 ya que, esto representa el
segundo nmero requerido para los decimales.

Fig. 12. Producto de dos nmeros.


Se puede observar que no existe ningn problema si se es
presionado el botn para insertar decimal sin antes haber
colocado algn entero.

Fig. 10. Puesta del segundo Decimal.


Ingresado el nmero deseado por el usuario, se procede a
presionar la igualdad.

Fig. 13. Divisin entre dos nmeros.


V. PROGRAMACIN DEL PIC
A. Programacin en CCS

Fig. 11. Resultado de la Operacin Suma.


Se tiene que presionar el botn correspondiente al =, se tiene
el resultado de la operacin seleccionada. Para este caso,
suma. Cabe destacar que se muestra el dato1 y el dato2, as
como el signo correspondiente a la operacin que se
seleccion, su respectivo resultado.

F.

Otras Operaciones

Para la programacin de cada una de las funciones del PIC


se requiri del lenguaje C el cual, no es ms que un lenguaje
en alto nivel. El cdigo a emplear, se efecta partiendo del
diagrama de bloques del proceso, teniendo como resultado lo
siguiente
#include <18f2550.h>
#use delay(clock=4M)
#include <Pedroo.c>
#include <stdlib.h>
#include <math.h>
#define LCD_ENABLE_PIN
PIN_C2
#define LCD_RW_PIN
PIN_C1
#define LCD_RS_PIN
PIN_C0
#define LCD_DATA4
PIN_C4
#define LCD_DATA5
PIN_C5
#define LCD_DATA6
PIN_C6
#define LCD_DATA7
PIN_C7
#include <lcd.c>

1.

Descripcin de las lneas de Cdigo

Diseo de una Calculadora

#include <18F2550.h>: inclusin de la librera


correspondiente al PIC a utilizar.

#use delay (clock=4M): declaracin del reloj


oscilador.
#include <Pedroo.c> librera modificada para la
inclusin del teclado matricial 4x4.
#include <stdlib.h> librera empleada para
introducir caracteres.
#include <math.h> inclusin de la librera
matemtica.
#define LCD_ENABLE_PIN
PIN_C2:
declaracin del pin de habilitacin de la LCD en el
pin C2 del PIC.
#define LCD_RW_PIN
PIN_C1: declaracin
del pin de escritura de la LCD en el pin C1 del
PIC.
#define LCD_RS_PIN
PIN_C0: declaracin
del pin de lectura de la LCD en el pin C0 del PIC.
#define LCD_DATA4
PIN_C4: declaracin
del pin de Data de la LCD.
#define LCD_DATA5
PIN_C5: declaracin
del pin de Data de la LCD.
#define LCD_DATA6
PIN_C6: declaracin
del pin de Data de la LCD.
#define LCD_DATA7
PIN_C7: declaracin
del pin de Data de la LCD.
#include <lcd.c>: inclusin de la librera de la
LCD.
B. Librera Pedroo

De forma predeterminada, mplab tiene una librera para


controlar teclados de 4x3, sin embargo, para la elaboracin de
la calculadora, se requiri el uso de un teclado 4x4, para ello,
se hace modificacin de la librera del teclado, teniendo como
resultado lo siguiente:
#define use_portb_kbd TRUE
// Make sure the port used has pull-up resistors (or the LCD) on
// the column pins
#if defined(__PCH__)
#if defined use_portb_kbd
#byte kbd = 0xF81
// This puts the entire structure
#else
#byte kbd = 0xF83
// This puts the entire structure
#endif
#else
#if defined use_portb_kbd
#byte kbd = 6
// on to port B (at address 6)
#else
#byte kbd = 8
// on to port D (at address 8)
#endif
#endif
#if defined use_portb_kbd
#define set_tris_kbd(x) set_tris_b(x)
#else

#define set_tris_kbd(x) set_tris_d(x)


#endif
//Keypad connection: (for example column 0 is B0)
#define COL0 (1 << 0) // PIN_B0
#define COL1 (1 << 1) // PIN_B1
#define COL2 (1 << 2) // PIN_B2
#define COL3 (1 << 3) // PIN_B3
#define ROW0 (1 << 4) // PIN_B4
#define ROW1 (1 << 5) // PIN_B5
#define ROW2 (1 << 6) // PIN_B6
#define ROW3 (1 << 7) // PIN_B7
#define ALL_ROWS (ROW0|ROW1|ROW2|ROW3)
#define ALL_PINS (ALL_ROWS|COL0|COL1|COL2|COL3)
// Keypad layout:
char const KEYS[4][4] = {{'7','8','9','/'},
{'4','5','6','x'},
{'1','2','3','-'},
{'.','0','=','+'}};
#define KBD_DEBOUNCE_FACTOR 33 // Set this number to apx n/333
where
// n is the number of times you expect
// to call kbd_getc each second
void kbd_init() {
}
char kbd_getc( ) {
static byte kbd_call_count;
static short int kbd_down;
static char last_key;
static byte col;
byte kchar;
byte row;
kchar='\0';
if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) {
switch (col) {
case 0 : set_tris_kbd(ALL_PINS&~COL0);
kbd=~COL0&ALL_PINS;
break;
case 1 : set_tris_kbd(ALL_PINS&~COL1);
kbd=~COL1&ALL_PINS;
break;
case 2 : set_tris_kbd(ALL_PINS&~COL2);
kbd=~COL2&ALL_PINS;
break;
case 3 : set_tris_kbd(ALL_PINS&~COL3);
kbd=~COL3&ALL_PINS;
break;
}
if(kbd_down) {
if((kbd & (ALL_ROWS))==(ALL_ROWS)) {
kbd_down=false;
kchar=last_key;
last_key='\0';
}
} else {
if((kbd & (ALL_ROWS))!=(ALL_ROWS)) {
if((kbd & ROW0)==0)
row=0;
else if((kbd & ROW1)==0)
row=1;
else if((kbd & ROW2)==0)
row=2;
else if((kbd & ROW3)==0)
row=3;
last_key =KEYS[row][col];

Diseo de una Calculadora


kbd_down = true;
} else {
++col;
if(col==4)
col=0;
}

1.

Descripcin de las lneas de Cdigo

}
kbd_call_count=0;
}
set_tris_kbd(ALL_PINS);
return(kchar);
}

Se tiene que las modificaciones empleadas en la librera, estn


subrayadas en Negrita. Se puede observar que simplemente se
agrega la columna necesaria y se le asigna cada uno de los
operadores aritmticos a utilizar para poder relacionarlos
mejor durante la ejecucin del programa.

lcd_gotoxy(1,1); indica que el lugar donde se va a


escribir la pantalla LCD, es en la posicin 1,1
printf(lcd_putc,"BIENVENIDO
A
LA\n\r
CALCULADORA"); imprime por la LCD el
mentaje entre comillas. Se tiene que las \n sirven
para dar salto de lnea y \r para indicar que el carro
finaliz.
delay_ms(1000); se encarga de dar una pausa de
1segundo.
printf(lcd_putc,"\f"); se encarga de borrar todo lo
que estaba mostrndose en la pantalla LCD.
Asignacin de un cero a todas las variables del
sistema para evitar que estas contengan algo y se
pueda afectar a un determinado individuo.

C. Cuerpo del Programa


void main(){
char k,signo;
float m,h,p,val1,val2,resultado, x;
int coma,n1,n2,mul,div,sum,res;
port_b_pullups(true);
lcd_init();
kbd_init();
1.

Descripcin de las lneas de Cdigo

Char; declara variables del tipo carcter.


Float: declara variables del tipo flotante.
Int: declara variables del tipo entero.
Port_b_pullups(true): declara las resistencias a
pull-up del puerto B.
Lcd_init(): inicializa la pantalla LCD.
Kbd_init(): inicializa el teclado.
D. Etiqueta Inicio

Inicio:
lcd_gotoxy(1,1);
printf(lcd_putc,"BIENVENIDO A LA\n\r CALCULADORA");
delay_ms(1000);
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"INGRESE SUS\n\r VALORES");
h=0;
p=0;
x=0;
coma=0;
val1=0;
val2=0;
sum=0;
res=0;
mul=0;
div=0;
n1=0;
n2=0;

E. Ciclo While y Comienzo de la Programacin


while(true) {
k=kbd_getc();
if((val1==0) && (n1<4) && (coma==0) && ((k=='0')||
(k=='1')||(k=='2')||(k=='3')||(k=='4')||(k=='5')||(k=='6')||(k=='7')||
(k=='8')||(k=='9'))) {
n1=n1+1;
m=k-48;
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
h=h*10+m;
printf(lcd_putc,%f,h);
}

1.

Descripcin de las lneas de Cdigo

While (true): mientras la condicin sea verdadera,


se cumplir.
K=kbd_getc(): se encarga de tomar los valores
obtenidos del teclado y guardarlos en la variable K.
La siguiente instruccin, correspondiente al if,
simboliza que s el val1=0, y N1 sea menor que 4 y
se presione alguno de los botones correspondientes
a uno de los nmeros, se entrar en dicha
condicin.
N1=N1+1: esta instruccin permite incrementar
N1. Inicialmente es cero y a medida que se pulsen
los nmeros incrementar, permitiendo que solo se
cumpla la condicin de que se muestren tan solo 4
dgitos para los nmeros enteros.
M=k-48: se encarga de restarle a 48 a la variable K
para llevarlo a cdigo ASCII.
H=h*10+m: habiendo pasado todo a cdigo
ASCII, se procede a llevarlo a int.

Diseo de una Calculadora


F.

Operaciones

else if(k=='+'){
n1=0;
n2=0;
coma=0;
val1=h;
signo=k;
sum=1;
printf(lcd_putc,"\f");
}
else if(k=='/'){
n1=0;
n2=0;
coma=0;
val1=h;
signo=k;
div=1;
printf(lcd_putc,"\f");
}
else if(k=='x'){
n1=0;
n2=0;
coma=0;
val1=h;
signo=k;
mul=1;
printf(lcd_putc,"\f");
}
else if(k=='-'){
n1=0;
n2=0;
coma=0;
val1=h;
signo=k;
res=1;
printf(lcd_putc,"\f");
}

1.

else if((coma==1) && (n2<2) && (val1==0) &&


((k=='0')||(k=='1')||(k=='2')||(k=='3')||(k=='4')||(k=='5')||(k=='6')||
(k=='7')||(k=='8')||(k=='9'))){
n2=n2+1;
m=k-48;
lcd_gotoxy(1,1);
h=h+(m/(pow(10,n2)));
printf(lcd_putc,"%f",h);
}
else if((val1!=0) && (n1<4) && (coma==0) &&
((k=='0')||(k=='1')||(k=='2')||(k=='3')||(k=='4')||(k=='5')||(k=='6')||
(k=='7')||(k=='8')||(k=='9'))){
n1=n1+1;
m=k-48;
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
p=p*10+m;
printf(lcd_putc,"%f",p);
}
else if((coma==1) && (n2<2) && (val1!=0) &&
((k=='0')||(k=='1')||(k=='2')||(k=='3')||(k=='4')||(k=='5')||(k=='6')||
(k=='7')||(k=='8')||(k=='9'))){
n2=n2+1;
m=k-48;
lcd_gotoxy(1,1);
p=p+(m/pow(10,n2));
printf(lcd_putc,"%f",p);

1.

Descripcin de las lneas de Cdigo

Descripcin de las lneas de Cdigo

Dependiendo de la operacin que se decida efectuar, luego


de haber introducido el nmero que se desea, se tiene que se
reinician los valores para N1, N2 y coma. A su vez, el valor
introducido, se le asigna a la variable Val1 y se crea una
variable signo la cual tomar el valor de K, esto para poder
guardar el signo que se presion en ese momento. Se tiene que
cada operacin, tiene una variable interna que tiene relacin
con el nombre de su operacin, siendo esta igual a 1, esto se
debe ya que mediante esto, se puede separar cada operacin y
pueda ser efectuada sin interferir entre s.
G.

Decimales

else if(k==' '){


printf(lcd_putc,"\f");
coma = 1;
}

Se tiene que al ser presionado el espacio en blanco,


se borra todo lo que estaba en pantalla y se
establece que el valor de coma=1.
Primeramente, se tiene la condicin la cual
establece que S coma=1, N2 es menor de 2,
Val1=0, y se presiona alguna de las teclas
correspondientes a uno de los nmeros, se entra en
la condicin la cual imprimir en pantalla en valor
en decimal correspondiente al nmero que el
usuario desee. Como se quiere que se muestren
solo dos decimales, se tiene que el valor de N2 ser
menor a 2 para evitar tener ms de la cuenta.
h=h+(m/(pow(10,n2))): se tiene que la variable h,
corresponde al valor h el cual no es ms que el
nmero entero introducido con anterioridad.
Ahora, el usuario se encargar de introducir los
decimales los cuales, ese nmero pulsado ser
equivalente a la divisin de l mismo entre 10
(efectos del primer decimal) y l mismo entre 100
(efectos del segundo decimal). Se utiliza la funcin
de potencia ya que necesitamos elevar nuestra base
(en este caso 10) al valor de N2, y dependiendo de
cuantas veces sea pulsado N2, que en este caso no
ser mayor a dos veces, se tiene que har la

Diseo de una Calculadora

divisin trayendo consigo el primer y segundo


decimal.
Las otras dos condiciones, se establecen cuando el
valor de Val1 es distinto de cero. Se tiene que si el
usuario al introducir el valor de Val1, en su parte
entera, este se debe conservar y colocar a su vez, el
nmero decimal correspondiente al pulsado. Para
ello, se emplea esta parte del cdigo y as, tener el
resultado tanto en entero y decimal esperado.

I.

if (!input(pin_A0)){
while (input(pin_A1)){
printf(lcd_putc,"\f");
h=0;
p=0;
coma=0;
val1=0;
val2=0;
sum=0;
res=0;
mul=0;
div=0;
n1=0;
n2=0;
}
}

H. Resultado de la Operacin
else if((k=='=') && (div==1)){
val2=p+0;
resultado= val1 / val2;
lcd_gotoxy(1,1);
printf(lcd_putc,"%f %c %f",val1,signo,val2);
lcd_gotoxy(1,2);
printf(lcd_putc,"%f",resultado);
}
else if((k=='=') && (mul==1)){
val2=p+0;
resultado= val1 * val2;
lcd_gotoxy(1,1);
printf(lcd_putc,"%f %c %f",val1,signo,val2);
lcd_gotoxy(1,2);
printf(lcd_putc,"%f",resultado);
}
else if((k=='=') && (sum==1)){
val2=p+0;
resultado= val1 + val2;
lcd_gotoxy(1,1);
printf(lcd_putc,"%f %c %f",val1,signo,val2);
lcd_gotoxy(1,2);
printf(lcd_putc,"%f",resultado);
}
else if((k=='=') && (res==1)){
val2=p+0;
resultado= val1 - val2;
lcd_gotoxy(1,1);
printf(lcd_putc,"%f %c %f",val1,signo,val2);
lcd_gotoxy(1,2);
printf(lcd_putc,"%f",resultado);
}

1.

Botn para Encender y Apagar la Calculadora

if (!input(pin_A1)){
goto Inicio;
}
}

1.

Descripcin de las lneas de Cdigo

Se tiene que al ser presionado el botn correspondiente al


PinA0, se entra en un ciclo While el cual se cumplir siempre
y cuando lo que se est leyendo en el PinA1 sea un 1. Se tiene
que se borrar lo que muestra en pantalla y todas las variables
utilizadas, sern igual a cero. Mientras esto sea verdad, la
pantalla no mostrar nada, sin importar que se pulse algn
botn del teclado.
El siguiente if,, indica que a la entrada correspondiente del
pinA1, ser cero, se devuelve al inicio. Esto se emple si el
usuario no desea introducir ese nmero y desea reiniciar todo.
VI.

SIMULACIN

Fig. 14. Esquemtico de las conexiones del diseo de la


calculadora.

Descripcin de las lneas de Cdigo

Anteriormente, se haba declarado una variable, la cual


tena relacin con la operacin a cumplir, haciendo su valor
igual a 1. Se tiene que al presionarse la tecla = y cumplirse que
dicha variable mantenga un valor igual a 1, se cumple la
condicin por lo que, se efectuar la operacin deseada. Se
tiene que se crea una variable la cual contendr el resultado de
la operacin a efectuar. Se imprimir en pantalla primeramente
los valores introducidos, separados por el signo. Posterior, en
la segunda fila se imprime el resultado.

VII.MPLAB IDE
Para la programacin del PIC, se requiri del MPLAB IDE
el cual, no ms que un software empleado para la
programacin. Su entorno es bastante bsico y sencillo por lo
que la ejecucin de proyectos en l, es bastante fcil. Para ello,
se deben llevar a cabo, los siguientes pasos:
1.

Abrir el MPLAB

Diseo de una Calculadora

Fig. 15. Entorno principal de MPLAB.


2. Luego de abrir MPLAB, notamos que el entorno
mostrado es bastante simple. Por lo que, para la
creacin de un nuevo proyecto, nos dirigimos hacia
la pestaa PROJECT y damos clic sobre la opcin
PROJECT WIZARD

Fig. 16. Seleccin del PROJECT WIZARD.


3.

Luego de haber dado clic sobre ste, se tiene que


aparecer el siguiente entorno:

4.

Seleccin del dispositivo a utilizar

Fig. 18. Seleccin del PIC.


Luego de haber presionado el botn NEXT, nos muestra la
siguiente interfaz la cual nos permite seleccionar el PIC a
utilizar. En nuestro caso, el PIC 18F2550. Se puede observar

que hay un men desplegable que contiene cada uno de los


dispositivos, ah nos desplazamos hasta encontrar el requerido
por nosotros. Seleccionamos el PIC y le damos continuar.
5.

Seleccin del Lenguaje a utilizar

Fig. 19. Seleccin del Lenguaje CCS.


Se puede observar que el compilador para compilar
programas en C est previamente seleccionado por lo que, de
ser as, cliqueamos en el botn NEXT. De no presentarse nada,
se pulsa sobre el botn BROWSE, el cual nos permitir abrir
la ruta de acceso donde se encuentra instalado nuestro
compilador. Buscamos, seleccionamos y le damos continuar.
6.

Creacin de un nombre de proyecto

Fig. 20. Creacin de un nombre para nuestro proyecto.


7.
Fig. 17. Entorno luego de cliquear sobre PROJECT
WIZARD.
En este entorno, nos da la bienvenida, indicando que esto
nos ayuda a crear o configurar un nuevo proyecto en MPLAB.
Posterior a ello, nos indica que pulsemos el botn de NEXT.

Agregar archivos existentes a nuestro programa

Diseo de una Calculadora


Fig. 21. Seleccin de archivos existentes para la creacin de
nuestro proyecto.
8.

Finalizacin de la Creacin

10. Escritura y Compilacin del cdigo


Una vez se hayan configurado cada uno de los bits del
programa y se hayan realizado cada una de las configuraciones
antes mencionadas, se procede a escribir el cdigo. Una vez
escrito nuestro cdigo, procedemos a compilarlo, esto,
cliqueando sobre el botn BUILD. Una vez, se haya
completado esto, se mostrar un cuadro de dilogo que nos
indicar BLUID SUCCESS. Esto indica que la compilacin de
nuestro programa, fue un xito.

Fig. 22. Sumario.


En este paso, se muestra el nombre de nuestro proyecto, la
ruta donde ser guardado y la herramienta de compilacin.
9.

Para la configuracin de los BITS de configuracin


del PIC, seleccionamos en la pestaa que dice
CONFIGURE y posterior a ello, cliqueamos donde
dice CONFIGURE BITS. Luego, nos aparecer una
ventana como la siguiente:

Fig. 24. Cdigo Empleado.

VIII.

Fig. 23. Configuracin de los BITS de Configuracin.


Aqu se muestran todos los bits de configuracin de nuestro
PIC donde, principalmente nos encargaremos de desactivar el
WATCH DOG y establecer el cristal de nuestro oscilador. Para
ello, cliqueamos sobre la opcin que dice CONFIGURATION
BITS SET IN CODE. Esto nos permite modificar estos bits.
Buscamos los que requerimos, los ajustamos y nuevamente,
volvemos a seleccionar con clic el recuadro mencionado
anteriormente.

CONCLUSIN

Se tiene que para el diseo de la calculadora, uno de las


herramientas en la actualidad, ms indispensables para la
formacin de una carrera tal y como lo puede ser ingeniera.
Se tiene que para su respectivo diseo, se cuentan con ciertos
detalles tales como: al presionarse el botn para la coma, se
apaga la pantalla y al ser presionado el nmero, aparece
nuevamente con lo antes introducido. Al igual que al
comenzar a introducir los nmeros, aparece de una vez una
coma con dos ceros como decimal. Pequeos errores a lo largo
de la programacin que podran ser mejorados.
Se tiene, que durante el desarrollo, se originaron ciertos
problemas con respecto al decimal, sin embargo, al hacerse
inclusin de la librera matemtica, se utiliz la potencia para
poder obtener el resultado deseado ya que, de lo contrario, se
tena una sucesin de nmeros, mltiplos de 9.

También podría gustarte