HOLA A TODOS, soy nuevo en el foro y no se si estoy publicando en el lugar correcto (mil disculpas). Soy durísimo con este tema y quizás alguno me pueda ayudar. Tengo que simular un teclado y display de un celular, pero no logro siquiera publicar en el display un mensaje de saludo. El profesor nos pide que no se compartan pines, por lo que debo usar diferentes para el teclado y display. Les paso el codigo que he compilado con un rejunte de los que he visto en este foro; esta incompleto y no tiene antirebote, pero por el momento solo quiero ver ALGO en el display. Les adjunto el proteus, si alguien puede ayudar a esta piedra dura, se los voy a agradecer. saludos
#include <TP final teclado-display.h>
#include <stdio.h>
#fuses NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NOPUT,NOMCLR,NODEBUG,HS,NOPBADEN
#define use_porta_lcd TRUE
#define use_portd_kbd TRUE //esto define al puerto d para ser usado por el teclado
#include <lcd.c>
#include <kbd.c>
#use delay(clock= 4000000)
#define LCD_ENABLE_PIN PIN_A5
#define LCD_RS_PIN PIN_A4
#define LCD_DATA4 PIN_A0
#define LCD_DATA5 PIN_A1
#define LCD_DATA6 PIN_A2
#define LCD_DATA7 PIN_A3
#byte PORTA=0xF80
#byte PORTB=0xF81
#byte PORTC=0xF82
int num=0;
unsigned char y;
void main()
{
set_tris_A(0b00000000);//Configuracion de puerto A salida, que va hacia el display
PortA=0;//Limpiamos el pueto
set_tris_B(0xFF);//Configuracion de puertoB entrada, que se accionan send y end
PortB=0;//Limpiamos el pueto
set_tris_C(0b11110000);//Configuracion de puerto C nible alto entrada y bajo salida
PortC=0;//Limpiamos el pueto
lcd_init();//inicio del display
kbd_init();//inicio del teclado
output_high(pin_A4);//RS=1 para que lea datos
output_high(pin_A5);//E=1 para habilitar el display
printf(lcd_putc,"\f");
printf(lcd_putc,"Hola");
delay_ms(5);
// si observa el micro jamas se ponen los puertos A4(RS) y A5(E) en 1
while(TRUE)
{
output_low(pin_D0);
output_high(pin_D1);
output_high(pin_D2);
delay_ms(500);
if(input(pin_D4==0))
num=1;
lcd_putc(num);
output_high(pin_D1);
lcd_putc(num);
printf(lcd_putc,"\f Num=%u",num);
delay_ms(500);
if(input(pin_D5==0))
num=4;
lcd_putc(num);
//delay_ms(500);
if(input(pin_D6==0))
num=7;
lcd_putc(num);
//delay_ms(500);
if(input(pin_D7==0))
num=10;
y="*";
lcd_putc("*");
//delay_ms(500);
output_high(pin_D0);
output_low(pin_D1);
output_high(pin_D2);
delay_ms(500);
if(input(pin_D4==0))
num=2;
lcd_putc(num);
delay_ms(500);
if(input(pin_D5==0))
num=5;
lcd_putc(num);
delay_ms(500);
if(input(pin_D6==0))
num=8;
lcd_putc(num);
delay_ms(500);
if(input(pin_D7==0))
num=0;
lcd_putc(num);
delay_ms(500);
output_high(pin_D0);
output_high(pin_D1);
output_low(pin_D2);
delay_ms(500);
if(input(pin_D4==0))
num=3;
lcd_putc(num);
delay_ms(500);
if(input(pin_D5==0))
num=6;
lcd_putc(num);
delay_ms(500);
if(input(pin_D6==0))
num=9;
lcd_putc(num);
delay_ms(500);
if(input(pin_D7==0))
y="#";
lcd_putc(y);
delay_ms(500);
}
}