Diseño de una CalculadoraDiseño de una Calculadora González, Pedro C.I: 25920721 Duque, Andrés C.I: 25698695 Opción para colocar “coma”. Mostrar el resultado por pantalla LCD. Se tiene que al mostrar el resultado se debe mostrar el primer número, signo, el segundo número 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 básicas tales como suma, resta, multiplicación y división entre números de un máximo de 4 dígitos 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 interpretación del teclado así como el control para mostrar los resultados por pantalla LCD; permitiendo, mediante una debida programación, su respectivo funcionamiento. III. DIAGRAMA DE FLUJO DE LA OPERACIÓN PALABRAS CLAVE Programación, Lenguaje C, CCS, Calculadora, Microcontroladores, Microprocesadores, LCD, KEYPAD. M I. Diseño, INTRODUCTION Uchas veces, durante el desarrollo de nuestra vida cotidiana, requerimos el uso de una calculadora que nos facilita la obtención de algunas operaciones básicas tales como suma, resta, multiplicación y división; tanto en enteros como con números decimales. Básicamente, se tiene el diseño de una calculadora la cual, basándose en el modelo convencional, se implementan sus operaciones básica así como la disposición de un teclado el cual permite introducir los números así como también, el encendido y apagado de la misma. Se tiene que para ello, se disponen de ciertos parámetros que permitirán llevar a cabo la realización de dicho control. Se tiene que, mediante un PIC, se realizará la simulación de dicho proceso, permitiendo mediante un teclado la interacción 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 operación. Cabe destacar que se tienen dos botones adicionales los cuales se encargan de borrar y de apagar la calculadora. Se tiene que para la programación del PIC, se cuenta con la programación C, específicamente CCS, la cual no es más que una variación de dicho lenguaje. Mediante simples líneas de código y llamado de algunas librerías, se obtiene el control de la pantalla LCD, así como el del teclado 4x4 requerido para la simulación. II. REQUERIMIENTOS A. Requerimientos para el Proceso Para el diseño de la calculadora, se tienen los siguientes requerimientos: Introducción de los dígitos mediante un teclado 4x4. Máximo de 4 dígitos enteros y 2 decimales, por lo que el número mayor a introducir será 9999.99. Fig. 1. Representación 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 práctica. Se tiene que inicialmente, se hace declaración de los siguientes parámetros: Watch Dog: se tiene que el perro guardián 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 estarán ubicados los botones destinados para ON/OFF y CLEAR. Puerto B: se declara como entrada ya que en él, irán conectados los pines correspondientes al teclado. Dicho teclado permitirá al usuario introducir los números y la operación 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 habilitación. PULL UP: resistencias internas del PIC, conectadas a VCC. Se encuentran exclusivamente en el puerto B. CLK: declaración del reloj. Declaración de las diferentes variables. Para efectos prácticos, se realiza la asignación de diferentes variables las cuales contendrán una función específica y permitirán el desarrollo del proceso de forma más idónea. Luego de haber realizado la configuración del PIC, se procede a realizar el estado inicial de la calculadora la cual consiste en la inicialización por pantalla dando la bienvenida. Se tiene que a su vez. también se cumple si N1 es menor a 4 ya que esta nos permitirá ingresar exclusivamente los 4 dígitos requeridos. Se tiene que la condición del decimal. Para la obtención del decimal. se realiza la operación deseada. este botón es usado para enviar al inicio e inicializar nuevamente las variables empleadas. para ello. impidiendo realizar algún tipo de operación o mostrar algo en ella. a su vez. N1 incrementa su valor y al ser superior a 4. Posterior a ello. Sin embargo. 2. se emplean otras condiciones las cuales permiten tener número decimal siendo el número entero cero. Se manda un mensaje escrito por medio de la pantalla. Se imprime en pantalla. El mensaje se mantiene en pantalla hasta que sea introducido algún valor. el valor de la variable coma = 1. estas poseen la misma estructura. Inicialización del Proceso. sumado con el número entero para obtener el decimal. se tiene que enviará un cero el cual. Se hace una toma del botón presionado y se guarda en la variable K. Fig. indicando la bienvenida al sistema y la introducción de los números. Se mantiene la fase inicial del programa. se sale de dicha condición y enciende la calculadora. Se tienen 4 condiciones las cuales varían dependiendo el signo. el pin de CLEAR llega ser presionado. es utilizado para la puesta de la coma que indica que al ser presionado.Diseño de una Calculadora Se tiene: Se inicializa la pantalla y el teclado. A su vez. Simplemente el número presionado se divide entre 10 y 100. En lenguaje C. Se tiene que el número debe contar única y exclusivamente con dos decimales por lo que para ello. El espacio en blanco. sin embargo. se muestra un mensaje que deben ser ingresados los valores. se cumpla de manera satisfactoria y muestre en pantalla el resultado deseado. se da la bienvenida a la calculadora. deja de cumplir la condición. dependiendo de la operación seleccionada anteriormente. La variación que estas poseen es que. Si sobre pasa. se imprimen los valores y el signo de la operación y muestra el resultado tal y como es debido. pudiendo notar que se tiene un número tal y como los requerimientos. Por otra parte. no es más que simplemente realizar una operación y dicho resultado guardarlo en una variable para luego ser impreso por pantalla. se presiona el signo. Esto se hace para evitar que hayan datos cargados anteriormente y afecte el resultado. 3. se tiene que sale de la condición. Se tiene una condición la cual se cumplirá siempre y cuando el valor de Val1=0 y se haya presionado alguna tecla. mientras eso sea verdad. B. Se observa que al inicializar el programa. Si. dependiendo de la operación. se tiene algo muy parecido con respecto a lo utilizado para los enteros. Se imprimen dichos valores por pantalla. se tiene que emplear la librería matemática la cual permite el uso de potencias. se cuenta con un botón de encendido y apagado. Si dicho botón es presionado. Siempre y cuando esta sea menor a 2. Inicialización del Proceso (2). se cumple cuando existe un valor entero y cuando ese valor entero es cero. permitiendo entrar en una condición. dentro de su condición tendrán una variable cuyo nombre posee relación con la operación esto con la finalidad de posteriormente. FUNCIONAMIENTO A. Se tiene que a medida que se presione un número. Inicialmente se define una etiqueta inicio. Se introduce el Valor 1 . se mantendrá la pantalla apagada. Inicialización del Proceso Fig. Se tiene una variable N2 la cual incrementará conforme se pulsen los números correspondientes a los decimales. IV. donde se declaran todas las variables empleadas en el sistema como 0. se tiene que al presionar el botón igual. Listo el número deseado. mostrado en la LCD. siendo el resultado de esto. C. se le incluyen directamente los 4 dígitos correspondientes al límite aceptado. Primer Dígito Entero Al presionarse alguno de los botones correspondientes a un número. se procede a introducir los valores correspondientes a la coma. Fig. se marque el número correspondiente al valor 2. Se Introduce el valor 2 Al igual que el valor 1. permitiendo que entre en la condición y se muestren los decimales que el usuario desee colocar. se borra la pantalla esto para que a continuación. . se muestran en pantalla. el número límite para los enteros fuera 9999. Decimal Uno de los requerimientos para el debido funcionamiento de la calculadora. 7. si se presiona algún otro número. Segundo Dígito Entero Al ir presionando los números que el usuario desea emplear para efectuar la operación. Fig. se tiene que aparecerán en pantalla los valores correspondientes al segundo valor. la pantalla se borra y muestra de manera inmediata el número que fue presionado. conservando el número presionado anteriormente. Puesta en pantalla del dato 2 el cual. 6. 8. Se tiene que al ser presionado dicho botón. Tercer y Cuarto Dígito Entero Se tiene que al introducir el cuarto dígito entero. Se tiene que al presionar cualquiera de las operaciones. al presionar el botón del KEYPAD que dice “ON/C”. Fig.Diseño de una Calculadora Fig. el valor 2 cuenta con la misma condición y es que solo cuenta con 4 números enteros. Esto se debe a que uno de los requerimientos propuestos para la elaboración de la calculadora es que. se procede a pulsar la operación deseada. no se mostrará en pantalla. era el uso de dos decimales para ello. Selección de Operación Luego de haber introducido el valor del número 1 deseado. una variable llamada igual a la operación a cumplir. 4. E. 5. cambia su estado a uno. Fig. Limpia pantalla al presionar cualquiera de las operaciones aritméticas a realizar. Al presionar un botón luego de haber presionado la operación a realizarse. D. teniendo como resultado lo siguiente #include <18f2550.c> #include <stdlib. Cabe destacar que se muestra el dato1 y el dato2. 10. División entre dos números. PROGRAMACIÓN DEL PIC A. 13. Programación en CCS Fig. Puesta del primer Decimal. Resultado de la Operación Suma. lo cual indica el primer dígito requerido para el primer valor del número decimal. Fig. Resultado de la Resta. Se tiene que al ser presionado un número. se efectúa partiendo del diagrama de bloques del proceso. su respectivo resultado. El código a emplear.Diseño de una Calculadora Fig. se tiene el resultado de la operación seleccionada. 12. Fig.h> #use delay(clock=4M) #include <Pedroo. Otras Operaciones Para la programación de cada una de las funciones del PIC se requirió del lenguaje C el cual. esto representa el segundo número requerido para los decimales.c> 1. Se puede observar que no existe ningún problema si se es presionado el botón para insertar decimal sin antes haber colocado algún entero. este primeramente será dividido por 10. Puesta del segundo Decimal. 11. Fig. suma. no es más que un lenguaje en alto nivel. F. 9. Al presionarse otro. 12. Ingresado el número deseado por el usuario. se tiene que este es dividido por 100 ya que. Producto de dos números.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.h> #include <math. se procede a presionar la igualdad. Fig. Para este caso. Se tiene que presionar el botón correspondiente al =. V. Descripción de las líneas de Código . así como el signo correspondiente a la operación que se seleccionó. c>: inclusión de la librería de la LCD. else if((kbd & ROW1)==0) row=1. kbd=~COL0&ALL_PINS. kchar='\0'. byte row. se hace modificación de la librería del teclado.h>: inclusión de la librería correspondiente al PIC a utilizar. se requirió el uso de un teclado 4x4. .c> librería modificada para la inclusión del teclado matricial 4x4. #include <stdlib. kbd=~COL3&ALL_PINS. {'1'.'-'}.'5'. static char last_key.'='.'9'. break.'+'}}. #define LCD_DATA5 PIN_C5: declaración del pin de Data de la LCD. static byte col. #include <Pedroo. break. mplab tiene una librería para controlar teclados de 4x3.'x'}. if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) { switch (col) { case 0 : set_tris_kbd(ALL_PINS&~COL0). para ello. kchar=last_key.h> inclusión de la librería matemática. para la elaboración de la calculadora.'8'. } } else { if((kbd & (ALL_ROWS))!=(ALL_ROWS)) { if((kbd & ROW0)==0) row=0. case 3 : set_tris_kbd(ALL_PINS&~COL3).'6'. kbd=~COL1&ALL_PINS. static short int kbd_down.h> librería empleada para introducir caracteres. #include <math. case 2 : set_tris_kbd(ALL_PINS&~COL2). break. kbd=~COL2&ALL_PINS. case 1 : set_tris_kbd(ALL_PINS&~COL1). #use delay (clock=4M): declaración del reloj oscilador.'. #define LCD_DATA7 PIN_C7: declaración del pin de Data de la LCD. else if((kbd & ROW2)==0) row=2.'3'. #include <lcd. last_key =KEYS[row][col]. #define LCD_RW_PIN PIN_C1: declaración del pin de escritura de la LCD en el pin C1 del PIC. #define LCD_RS_PIN PIN_C0: declaración del pin de lectura de la LCD en el pin C0 del PIC. #define LCD_ENABLE_PIN PIN_C2: declaración del pin de habilitación de la LCD en el pin C2 del PIC. } if(kbd_down) { if((kbd & (ALL_ROWS))==(ALL_ROWS)) { kbd_down=false. else if((kbd & ROW3)==0) row=3.'2'. Librería Pedroo De forma predeterminada.'0'. 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'. #define LCD_DATA4 PIN_C4: declaración del pin de Data de la LCD. sin embargo. {'. B. byte kchar.'/'}. #define LCD_DATA6 PIN_C6: declaración del pin de Data de la LCD. break. last_key='\0'. {'4'. #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.Diseño de una Calculadora #include <18F2550. n2=0. Se tiene que las \n sirven para dar salto de línea y \r para indicar que el carro finalizó. delay_ms(1000). imprime por la LCD el mentaje entre comillas."\f").p. . Descripción de las líneas de Código While (true): mientras la condición sea verdadera. printf(lcd_putc. y N1 sea menor que 4 y se presione alguno de los botones correspondientes a uno de los números. se encarga de borrar todo lo que estaba mostrándose en la pantalla LCD. simboliza que sí el val1=0. m=k-48."BIENVENIDO A LA\n\r CALCULADORA"). permitiendo que solo se cumpla la condición de que se muestren tan solo 4 dígitos para los números enteros. mul=0. printf(lcd_putc. Lcd_init(): inicializa la pantalla LCD.val1. float m. se encarga de dar una pausa de 1segundo. } else { ++col. Inicialmente es cero y a medida que se pulsen los números incrementará. delay_ms(1000). coma=0.n1. Cuerpo del Programa void main(){ char k. La siguiente instrucción. div=0. if(col==4) col=0."BIENVENIDO A LA\n\r CALCULADORA"). N1=N1+1: esta instrucción permite incrementar N1. E. printf(lcd_putc. lcd_gotoxy(1.mul. Float: declara variables del tipo flotante. Descripción de las líneas de Código } kbd_call_count=0. H=h*10+m: habiendo pasado todo a código ASCII. indica que el lugar donde se va a escribir la pantalla LCD.n2.Diseño de una Calculadora kbd_down = true.div. M=k-48: se encarga de restarle a 48 a la variable K para llevarlo a código ASCII. declara variables del tipo carácter.res.val2. están subrayadas en Negrita. } 1. val1=0. Se puede observar que simplemente se agrega la columna necesaria y se le asigna cada uno de los operadores aritméticos a utilizar para poder relacionarlos mejor durante la ejecución del programa. } 1.sum. x.1 printf(lcd_putc. 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. Int: declara variables del tipo entero. } Se tiene que las modificaciones empleadas en la librería. h=h*10+m. D. Ciclo While y Comienzo de la Programación while(true) { k=kbd_getc(). h=0. Port_b_pullups(true): declara las resistencias a pull-up del puerto B. Etiqueta Inicio Inicio: lcd_gotoxy(1.signo.1). lcd_gotoxy(1. C. n1=0. 1."\f"). printf(lcd_putc. lcd_init(). res=0. printf(lcd_putc. lcd_gotoxy(1. port_b_pullups(true).”%f”. se entrará en dicha condición. Kbd_init(): inicializa el teclado. } set_tris_kbd(ALL_PINS). int coma. K=kbd_getc(): se encarga de tomar los valores obtenidos del teclado y guardarlos en la variable K. return(kchar).1)."\f"). se procede a llevarlo a int. correspondiente al if.1).h. sum=0. se cumplirá. Descripción de las líneas de Código Char.resultado."INGRESE SUS\n\r VALORES"). x=0.1). kbd_init(). val2=0. Asignación de un cero a todas las variables del sistema para evitar que estas contengan algo y se pueda afectar a un determinado individuo. es en la posición 1.h). p=0. printf(lcd_putc. lcd_gotoxy(1."%f". printf(lcd_putc. esto para poder guardar el signo que se presionó en ese momento. } 1. que en este caso no será mayor a dos veces. n2=0. signo=k. h=h+(m/(pow(10. se puede separar cada operación y pueda ser efectuada sin interferir entre sí. m=k-48. signo=k. } else if(k=='/'){ n1=0. coma=0. printf(lcd_putc. el usuario se encargará de introducir los decimales los cuales. el valor introducido. 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. ese número pulsado será equivalente a la división de él mismo entre 10 (efectos del primer decimal) y él mismo entre 100 (efectos del segundo decimal). m=k-48.p). printf(lcd_putc. Descripción de las líneas de Código Descripción de las líneas de Código Dependiendo de la operación que se decida efectuar. p=p+(m/pow(10. res=1. G. printf(lcd_putc. printf(lcd_putc. Como se quiere que se muestren solo dos decimales. esto se debe ya que mediante esto. } else if(k=='x'){ n1=0. se tiene que hará la . n2=0. } 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. se tiene la condición la cual establece que Sí coma=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. se le asigna a la variable Val1 y se crea una variable signo la cual tomará el valor de K.n2))). printf(lcd_putc. printf(lcd_putc. se tiene que el valor de N2 será menor a 2 para evitar tener más de la cuenta. n2=0. mul=1. m=k-48. Val1=0. sum=1.n2)). coma=0. y dependiendo de cuantas veces sea pulsado N2. corresponde al valor h el cual no es más que el número entero introducido con anterioridad. luego de haber introducido el número que se desea. Se tiene que cada operación.h).1). } else if(k=='-'){ n1=0."\f")."\f"). Primeramente. Ahora. coma=0. N2 y coma. signo=k. N2 es menor de 2. se tiene que se reinician los valores para N1.Diseño de una Calculadora F. h=h+(m/(pow(10. val1=h. val1=h. n2=0. p=p*10+m. siendo esta igual a 1."\f").1). y se presiona alguna de las teclas correspondientes a uno de los números. printf(lcd_putc. signo=k.p). Decimales else if(k==' '){ printf(lcd_putc. se entra en la condición la cual imprimirá en pantalla en valor en decimal correspondiente al número que el usuario desee. A su vez. lcd_gotoxy(1. 1."\f").1). tiene una variable interna que tiene relación con el nombre de su operación. coma = 1. lcd_gotoxy(1."\f"). val1=h. Operaciones else if(k=='+'){ n1=0. div=1. Se utiliza la función de potencia ya que necesitamos elevar nuestra base (en este caso 10) al valor de N2. se borra todo lo que estaba en pantalla y se establece que el valor de coma=1.n2))): se tiene que la variable h. } Se tiene que al ser presionado el espacio en blanco."%f". val1=h."\f"). coma=0."%f". lcd_gotoxy(1. p=0. resultado= val1 . Se tiene que se borrará lo que muestra en pantalla y todas las variables utilizadas. lcd_gotoxy(1. } else if((k=='=') && (res==1)){ val2=p+0.MPLAB IDE Para la programación del PIC. Se tiene que al presionarse la tecla = y cumplirse que dicha variable mantenga un valor igual a 1. div=0. lcd_gotoxy(1. se había declarado una variable. } } } 1. resultado= val1 * val2. printf(lcd_putc.val1. lcd_gotoxy(1. printf(lcd_putc."%f %c %f". serán igual a cero. res=0.val2).resultado). Esquemático de las conexiones del diseño de la calculadora. printf(lcd_putc. h=0. los siguientes pasos: 1.resultado). printf(lcd_putc. Se tiene que se crea una variable la cual contendrá el resultado de la operación a efectuar. Para ello. mul=0. es bastante fácil. } else if((k=='=') && (mul==1)){ val2=p+0.val1."%f". } 1.2). tener el resultado tanto en entero y decimal esperado. VII. en la segunda fila se imprime el resultado. n2=0. resultado= val1 / val2.val2). haciendo su valor igual a 1. El siguiente if. sin importar que se pulse algún botón del teclado.val1. printf(lcd_putc. n1=0. sum=0."\f"). se emplea esta parte del código y así."%f %c %f". lcd_gotoxy(1.2). Se imprimirá en pantalla primeramente los valores introducidos. se efectuará la operación deseada. indica que a la entrada correspondiente del pinA1.val1. se requirió del MPLAB IDE el cual.val2).val2). Su entorno es bastante básico y sencillo por lo que la ejecución de proyectos en él. se cumple la condición por lo que. se deben llevar a cabo.val2. se establecen cuando el valor de Val1 es distinto de cero. Botón para Encender y Apagar la Calculadora if (!input(pin_A1)){ goto Inicio."%f %c %f". este se debe conservar y colocar a su vez. lcd_gotoxy(1. } else if((k=='=') && (sum==1)){ val2=p+0. separados por el signo. se devuelve al inicio.. SIMULACIÓN Fig. I.Diseño de una Calculadora división trayendo consigo el primer y segundo decimal. Para ello.resultado). la cual tenía relación con la operación a cumplir.signo. Posterior. VI. Mientras esto sea verdad.2). val1=0. Descripción de las líneas de Código Anteriormente. if (!input(pin_A0)){ while (input(pin_A1)){ printf(lcd_putc. printf(lcd_putc. Esto se empleó si el usuario no desea introducir ese número y desea reiniciar todo. printf(lcd_putc. 14. la pantalla no mostrará nada. lcd_gotoxy(1. en su parte entera. val2=0.signo. Se tiene que si el usuario al introducir el valor de Val1. se entra en un ciclo While el cual se cumplirá siempre y cuando lo que se está leyendo en el PinA1 sea un 1. Descripción de las líneas de Código Se tiene que al ser presionado el botón correspondiente al PinA0. resultado= val1 + val2. coma=0. lcd_gotoxy(1. Las otras dos condiciones. Abrir el MPLAB ."%f"."%f %c %f".2). no más que un software empleado para la programación."%f".signo.signo. ser cero."%f". el número decimal correspondiente al pulsado. printf(lcd_putc.1). } } H.1).resultado).1). Resultado de la Operación else if((k=='=') && (div==1)){ val2=p+0.1). Selección del PIC. Posterior a ello. Seleccionamos el PIC y le damos continuar. Agregar archivos existentes a nuestro programa . indicando que esto nos ayuda a crear o configurar un nuevo proyecto en MPLAB. 16. 20. el cual nos permitirá abrir la ruta de acceso donde se encuentra instalado nuestro compilador. nos da la bienvenida. nos muestra la siguiente interfaz la cual nos permite seleccionar el PIC a utilizar. Selección del Lenguaje CCS. Selección del dispositivo a utilizar Fig.Diseño de una Calculadora Fig. Fig. Buscamos. notamos que el entorno mostrado es bastante simple. 17. se tiene que aparecerá el siguiente entorno: 4. Se puede observar que el compilador para compilar programas en C está previamente seleccionado por lo que. Selección del Lenguaje a utilizar Fig. 3. Selección del PROJECT WIZARD. para la creación de un nuevo proyecto. se pulsa sobre el botón BROWSE. Luego de haber dado clic sobre éste. 15. De no presentarse nada. nos dirigimos hacia la pestaña PROJECT y damos clic sobre la opción PROJECT WIZARD… Fig. 19. 5. cliqueamos en el botón NEXT. Creación de un nombre de proyecto Fig. Entorno principal de MPLAB. 6. nos indica que pulsemos el botón de NEXT. Entorno luego de cliquear sobre PROJECT WIZARD. ahí nos desplazamos hasta encontrar el requerido por nosotros. Luego de abrir MPLAB. Por lo que. 7. En este entorno. el PIC 18F2550. 18. Creación de un nombre para nuestro proyecto. Se puede observar que hay un menú desplegable que contiene cada uno de los dispositivos. 2. Luego de haber presionado el botón NEXT. de ser así. En nuestro caso. seleccionamos y le damos continuar. Al igual que al comenzar a introducir los números. al hacerse inclusión de la librería matemática. se cuentan con ciertos detalles tales como: al presionarse el botón para la coma. Luego. volvemos a seleccionar con clic el recuadro mencionado anteriormente. se muestra el nombre de nuestro proyecto. cliqueando sobre el botón BUILD. se tenía una sucesión de números. Esto indica que la compilación de nuestro programa. la ruta donde será guardado y la herramienta de compilación. En este paso. se utilizó la potencia para poder obtener el resultado deseado ya que. aparece de una vez una coma con dos ceros como decimal. 21. seleccionamos en la pestaña que dice CONFIGURE y posterior a ello. Buscamos los que requerimos. Configuración de los BITS de Configuración. que durante el desarrollo. Escritura y Compilación del código Una vez se hayan configurado cada uno de los bits del programa y se hayan realizado cada una de las configuraciones antes mencionadas. Pequeños errores a lo largo de la programación que podrían ser mejorados. aparece nuevamente con lo antes introducido. Selección de archivos existentes para la creación de nuestro proyecto. múltiplos de 9. cliqueamos sobre la opción que dice CONFIGURATION BITS SET IN CODE. más indispensables para la formación de una carrera tal y como lo puede ser ingeniería. Código Empleado. cliqueamos donde dice CONFIGURE BITS. Esto nos permite modificar estos bits. Fig. 23. Para ello. Una vez. 8. 22. Sumario. 24. se haya completado esto. se apaga la pantalla y al ser presionado el número. Aquí se muestran todos los bits de configuración de nuestro PIC donde. 9. fue un éxito. . nos aparecerá una ventana como la siguiente: Fig. principalmente nos encargaremos de desactivar el WATCH DOG y establecer el cristal de nuestro oscilador. Se tiene que para su respectivo diseño. Finalización de la Creación 10.Diseño de una Calculadora Fig. se mostrará un cuadro de diálogo que nos indicará BLUID SUCCESS. Fig. de lo contrario. sin embargo. esto. VIII. Una vez escrito nuestro código. se originaron ciertos problemas con respecto al decimal. Se tiene. CONCLUSIÓN Se tiene que para el diseño de la calculadora. Para la configuración de los BITS de configuración del PIC. se procede a escribir el código. uno de las herramientas en la actualidad. procedemos a compilarlo. los ajustamos y nuevamente.