Autor Tema: Calculadora con PIC16F887 en XC8  (Leído 5270 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Calculadora con PIC16F887 en XC8
« en: 20 de Mayo de 2013, 03:08:20 »
Buenas noches a todos, tenia tiempo de no pasar por aca por un problema de la ip que no me dejaba entrar al sitio en fin, bueno comenzare en la universidad estoy llevando la clase de microcontroladores y programamos en MPLAB XC8 con el PIC16F887 y nos dejaron de tarea hacer una calculadora asi es la cosa:
Utilizar 9 botones
6 botones seran para los numeros(0-5)
1 boton sera para la suma y el otro para la resta, el boton sobrante se va a usar para desplegar el valor de la suma o resta en una lcd 16x2.
He estado guerreando buscando como y no me sale...aqui el codigo.
Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include "LCD.h"
#include "LCD4Bit.h"
#pragma config FOSC=HS, WDTE=OFF, LVP=OFF, BOREN=ON, BOR4V=BOR21V, PWRTE=ON
struct LCD lcd;
uint8_t X,Y;

uint8_t GetNum(uint8_t Numero)
{
    if(PORTDbits.RD0==1)
        Numero=0;
    else if(PORTDbits.RD1==1)
        Numero=1;
    else if(PORTDbits.RD2==1)
        Numero=2;
    else if(PORTDbits.RD3==1)
        Numero=3;
    else if(PORTDbits.RD4==1)
        Numero=4;
    else if(PORTDbits.RD5==1)
        Numero=5;
}

void main()
{
    TRISB=0;
    TRISD=1;
    TRISE=1;
    PORTB=0;
    PORTD=0;
    PORTE=0;
    LCD4Bit_init(&lcd, 4, 5, &PORTB);
    LCD_begin(&lcd, 16, 2, LCD_5x8DOTS);
    LCD_home(&lcd);
    LCD_printString(&lcd,"Mini Calculadora!");
    LCD_setCursor(&lcd, 0, 1);
    while(1)
    {
        X=GetNum();
        LCD_printUInt(&lcd,X);
       
    }
}
no consigo ni siquiera que me aparesta el numero en la lcd... si alguien me puede hechar una mano le agradeceria bastante..

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Calculadora con PIC16F887 en XC8
« Respuesta #1 en: 20 de Mayo de 2013, 08:35:12 »
jumu:
         Están bien configurados los pines del lcd? Prueba hacer un display de un "hola mundo" primero para ver si está todo ok lo del LCD.
        Saludos.
            Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Calculadora con PIC16F887 en XC8
« Respuesta #2 en: 20 de Mayo de 2013, 13:01:50 »
Hola jukinch.
ya hice esa prueba y me sale el mensaje y todo, lo que no consigo es que con el GetNum() me devuelva el numero de la tecla que presiono no se que mas hacer ya hice de todo y nada, he buscado por internet y solo encuentro con KeyPad 4X4 y no es eso lo que necesito, puedo usar cualquier puerto con tal y solo sean 9 pines (9 botones).

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Calculadora con PIC16F887 en XC8
« Respuesta #3 en: 20 de Mayo de 2013, 13:31:00 »
Lo estas simulando o utilizas hard real?
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Calculadora con PIC16F887 en XC8
« Respuesta #4 en: 20 de Mayo de 2013, 15:32:13 »
es real tengo la easy pic 6, es la que utilizamos en la universidad

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Calculadora con PIC16F887 en XC8
« Respuesta #5 en: 20 de Mayo de 2013, 16:59:43 »
Tenés el TRISD mal seteado.
Con Valor 1 decimal solo pones como entrada el bit 0.
Debes poner como entrada más valores de bits .
Del bit 0 al bit 5 sería:
TRISD=0b00111111;

Siempre poné los tris en binario así "ves" lo que seteás.

Saludos
Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes