Novato!
Hola buenas noches.
Tengo problemas al simular un teclado numérico 16x2 en proteus (ver Prot7.8 SP2Portable) con el PIC18F2550. He tomado como base para el programa, el ejemplo que trae el compilador PICC para lcd y teclado en la página 77 del libro del compilador en la figura 24 "LCD y el teclado compartiendo los mismos puertos". Pero en fin, al hacer el montaje en el Proteus, el puerto B1 de microcontrolador 18f2550, no me funciona o no da el uso que yo esperaba.
¿ qué se puede deber esto?
¿Necesito ser más específico?
GRACIAS!
Datos: Compilador:
#include <18f2550.h>//Declaro el PIC.
#use delay(clock=4000000)//Use un retardo de reloj de 4Mhz.
#define use_portb_lcd true//Definir el uso del puerto.
#define use_portb_kbd true//Definir el uso del puerto.
#include <lcd.c>//1. Definir el uso del puerto 2.Incuya el driver de la librería de la LCD.
#include <kbd.c>//1. Igual que arriba 2.Incluye el driver de la librería del teclado.
void main (void)//Programa principal.
{
char t;//1. Variable tipo "car"ácter 2.Se da una letra como nombre -cualquiera-.
int y;//1. Variable tipo entera 2.Igual que arriba.
lcd_init();//Inicializar o encender la LCD.
kbd_init();
port_b_pullups(TRUE);//pullup Resistores de protección del puerto B.
lcd_putc("\fListo...!=D\n");//Voy a escibir en el LED lo que está dentro: ej. ("José").
while (TRUE)//Repetiión de la ejecución.
{
t=kbd_getc();//Lee la tecla pulsada.
y=t-48;//Conversión numérica (la que dice qué tecla presionamos (0, a, <)).
if(t!=0)//Si la teclado es diferente.
{
if(t=='*')//Si la tecla es *
lcd_putc('\f');//Limpie a LCD.
else//Sino...
lcd_putc(t);//Imprime carácter.
delay_ms(500);//Retardo de medio segundo para ejecutar el siguiente comando.
printf(lcd_putc,"\f Car=%c",t);//Imprime carácter.
delay_ms(500);
printf(lcd_putc,"\f Code=%u",t);//Imprime valo ASCII
delay_ms(500);
printf(lcd_putc,"\f Num=%u",y);//Imprime valor numérico.
delay_ms(500);
lcd_putc("\fListo...!=D\n");
}}}
El problema es el siguiente, al pulsar cualquiera de las teclas debería notificarme:
1. El número pulsado, 2. El valor ASCII y un tercero.
Pero el B1 no funciona y fue algo inesperado, no me esperaba eso, ¿es normal?