martes, 19 de febrero de 2013

Proyecto 1 - Avance


Avance el proyecto con microcontrolador (PIC)
“CALCULADORA”

Simulación del programa en el Isis Profesional de Proteus


Ejemplo de código

#include "lcd.c"
#include "kbd_LIB.c"
#include 
#include 
#include 

float suma(float num1,float num2);
float resta(float num1,float num2);
long multi(long num1,long num2);
float divi(float num1,float num2);
char xoper();

void main()
{
   lcd_init();
   kbd_init();  
   port_b_pullups(TRUE);
   char nume[10];
   char actual=0;
   char operador;
   int i=0;
   long num1;
   long num2;
   set_tris_c(0xff);
 
   while(true)
   {
   inicio:
      while(actual!='+' && actual!='-' && actual!='*' && actual!='/' &&actual!= '^' && actual!='t')
      {
         if(actual=='.')
         {
            lcd_putc('\f');
            operador=0;
            strcpy(nume, "");
            actual=0;
            i=0;
            goto inicio;
         }
      switch(operador)
      {
         case '+':
            valor=suma(num1,num2);
            printf(lcd_putc,"%f",valor);
         break;
         case '-':
            valor=resta(num1,num2);
            printf(lcd_putc,"%f",valor);
         break;
         case '*':
            valor=multi(num1,num2);
            printf(lcd_putc,"%f",valor);
         break;
         case '/':
            valor=divi(num1,num2);
            printf(lcd_putc,"%f",valor);
         break;
         case '^':
            valor=(num1*num1);
            printf(lcd_putc,"\f%f^2=%f",num1,valor);
         break;
         case 't':
            valor=(tan(num1));
            printf(lcd_putc,"\ftan(%f)=%f",num1,valor);
         break;
      }
      delay_ms(5000);
      num1=0;
      num2=0;
      lcd_putc('\f');
      operador=0;
      strcpy(nume, "");
      actual=0;
      i=0;
}

float suma(float num1,float num2)
{
   return (num1+num2);
}
float resta(float num1,float num2)
{
   return (num1-num2);
}
float multi(float num1,float num2)
{
   return (num1*num2);
}
float divi(float num1, float num2)
{
   if(num2==0)
      return 0;
   else
      return (num1/num2);
}
Detalles:

La plataforma que estamos utilizando para desarrollar la calculadora es PIC CW Compiler, utilizando el lenguaje C como para programar nuestro proyecto.

Se utilizaron algunos recursos para utilizar la pantalla LCD y el teclado 4x4 en el circuito y que el PIC16F887 reconozca las entradas de datos análogas y/o digitales de cada dispositivo.

Se podrán realizar operaciones básicas de una calculadora normal como lo son: sumas, restas, multiplicaciones y divisiones.

El progreso del proyecto irá creciendo en los próximos días.


Algunos problemas presentados:

  • Falla en la comunicación del PIC - LCD
  • Problemas con el Simulador
  • Falta de organización para este proyecto