TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jumu 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.
#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..
-
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
-
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).
-
Lo estas simulando o utilizas hard real?
-
es real tengo la easy pic 6, es la que utilizamos en la universidad
-
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